[Pkg-xfce-commits] r306 - in desktop/trunk: . thunar thunar/branches thunar/branches/upstream thunar/branches/upstream/current thunar/branches/upstream/current/docs thunar/branches/upstream/current/docs/design thunar/branches/upstream/current/docs/papers thunar/branches/upstream/current/docs/reference thunar/branches/upstream/current/docs/reference/thunar-vfs thunar/branches/upstream/current/docs/reference/thunar-vfs/html thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl thunar/branches/upstream/current/docs/reference/thunar-vfs/xml thunar/branches/upstream/current/docs/reference/thunarx thunar/branches/upstream/current/docs/reference/thunarx/html thunar/branches/upstream/current/docs/reference/thunarx/images thunar/branches/upstream/current/docs/reference/thunarx/tmpl thunar/branches/upstream/current/docs/reference/thunarx/xml thunar/branches/upstream/current/examples thunar/branches/upstream/current/examples/open-terminal-here thunar/branches/upstream/current/icons thunar/branches/upstream/current/icons/24x24 thunar/branches/upstream/current/icons/48x48 thunar/branches/upstream/current/pixmaps thunar/branches/upstream/current/po thunar/branches/upstream/current/tdb thunar/branches/upstream/current/tests thunar/branches/upstream/current/tests/data thunar/branches/upstream/current/thunar thunar/branches/upstream/current/thunar-vfs thunar/branches/upstream/current/thunarx
Yves-Alexis Perez
corsac-guest at costa.debian.org
Thu Nov 17 13:48:37 UTC 2005
Author: corsac-guest
Date: 2005-11-17 13:47:07 +0000 (Thu, 17 Nov 2005)
New Revision: 306
Added:
desktop/trunk/thunar/
desktop/trunk/thunar/branches/
desktop/trunk/thunar/branches/upstream/
desktop/trunk/thunar/branches/upstream/current/
desktop/trunk/thunar/branches/upstream/current/AUTHORS
desktop/trunk/thunar/branches/upstream/current/COPYING
desktop/trunk/thunar/branches/upstream/current/COPYING.LIB
desktop/trunk/thunar/branches/upstream/current/ChangeLog
desktop/trunk/thunar/branches/upstream/current/FAQ
desktop/trunk/thunar/branches/upstream/current/HACKING
desktop/trunk/thunar/branches/upstream/current/INSTALL
desktop/trunk/thunar/branches/upstream/current/Makefile.am
desktop/trunk/thunar/branches/upstream/current/Makefile.in
desktop/trunk/thunar/branches/upstream/current/NEWS
desktop/trunk/thunar/branches/upstream/current/README
desktop/trunk/thunar/branches/upstream/current/THANKS
desktop/trunk/thunar/branches/upstream/current/TODO
desktop/trunk/thunar/branches/upstream/current/Thunar.desktop.in
desktop/trunk/thunar/branches/upstream/current/aclocal.m4
desktop/trunk/thunar/branches/upstream/current/compile
desktop/trunk/thunar/branches/upstream/current/config.guess
desktop/trunk/thunar/branches/upstream/current/config.h.in
desktop/trunk/thunar/branches/upstream/current/config.sub
desktop/trunk/thunar/branches/upstream/current/configure
desktop/trunk/thunar/branches/upstream/current/configure.in
desktop/trunk/thunar/branches/upstream/current/depcomp
desktop/trunk/thunar/branches/upstream/current/docs/
desktop/trunk/thunar/branches/upstream/current/docs/Makefile.am
desktop/trunk/thunar/branches/upstream/current/docs/Makefile.in
desktop/trunk/thunar/branches/upstream/current/docs/design/
desktop/trunk/thunar/branches/upstream/current/docs/design/Makefile.am
desktop/trunk/thunar/branches/upstream/current/docs/design/Makefile.in
desktop/trunk/thunar/branches/upstream/current/docs/design/mime.xmi
desktop/trunk/thunar/branches/upstream/current/docs/design/overview.xmi
desktop/trunk/thunar/branches/upstream/current/docs/papers/
desktop/trunk/thunar/branches/upstream/current/docs/papers/HackingOnThunar.odt
desktop/trunk/thunar/branches/upstream/current/docs/papers/Makefile.am
desktop/trunk/thunar/branches/upstream/current/docs/papers/Makefile.in
desktop/trunk/thunar/branches/upstream/current/docs/reference/
desktop/trunk/thunar/branches/upstream/current/docs/reference/Makefile.am
desktop/trunk/thunar/branches/upstream/current/docs/reference/Makefile.in
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/Makefile.am
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/Makefile.in
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/ThunarVfsGroup.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/ThunarVfsMimeDatabase.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/ThunarVfsMonitor.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/ThunarVfsUser.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/ThunarVfsUserManager.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/ThunarVfsVolume.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/ThunarVfsVolumeManager.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/filesystem-monitoring.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/fundamentals.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/home.png
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/index.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/index.sgml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/introduction.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/ix01.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/left.png
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/mime-types.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/right.png
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/style.css
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/thunar-vfs-Basic-Types.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/thunar-vfs-Initialization-and-Shutdown.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/thunar-vfs-ThunarVfsInfo.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/thunar-vfs-ThunarVfsMimeApplication.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/thunar-vfs-ThunarVfsMimeInfo.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/thunar-vfs-ThunarVfsPath.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/thunar-vfs-Utility-Functions.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/thunar-vfs.devhelp
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/up.png
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/users-and-groups-handling.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/volume-handling.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/thunar-vfs-docs.sgml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/thunar-vfs-overrides.txt
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/thunar-vfs-sections.txt
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/thunar-vfs.types
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-group.sgml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-info.sgml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-init-shutdown.sgml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-interactive-job.sgml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-job.sgml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-mime-application.sgml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-mime-database.sgml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-mime-info.sgml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-monitor.sgml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-operations.sgml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-path.sgml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-thumb-factory.sgml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-thumb.sgml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-trash-info.sgml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-trash-manager.sgml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-trash.sgml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-types.sgml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-unused.sgml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-uri.sgml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-user-manager.sgml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-user.sgml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-util.sgml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-volume-manager.sgml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-volume.sgml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/version.xml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/version.xml.in
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-group.xml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-info.xml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-init-shutdown.xml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-interactive-job.xml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-job.xml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-mime-application.xml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-mime-database.xml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-mime-info.xml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-monitor.xml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-operations.xml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-path.xml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-thumb-factory.xml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-thumb.xml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-trash-info.xml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-trash-manager.xml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-trash.xml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-types.xml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-uri.xml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-user-manager.xml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-user.xml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-util.xml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-volume-manager.xml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-volume.xml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/Makefile.am
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/Makefile.in
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/ThunarxFileInfo.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/ThunarxMenuProvider.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/ThunarxPropertyPage.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/ThunarxPropertyPageProvider.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/abstraction.png
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/home.png
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/index.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/index.sgml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/ix01.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/left.png
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/menu-provider.png
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/right.png
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/say-hello.png
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/style.css
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx-Variables-and-functions-to-check-the-library-version.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx-abstraction-layer.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx-fundamentals.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx-overview.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx-providers.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx-writing-extensions-advanced-topics.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx-writing-extensions-getting-started.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx-writing-extensions.html
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx.devhelp
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/up.png
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/images/
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/images/abstraction.png
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/images/menu-provider.png
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/images/say-hello.png
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/thunarx-docs.sgml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/thunarx-overrides.txt
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/thunarx-sections.txt
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/thunarx.types
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/tmpl/
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/tmpl/thunarx-file-info.sgml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/tmpl/thunarx-menu-provider.sgml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/tmpl/thunarx-property-page-provider.sgml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/tmpl/thunarx-property-page.sgml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/tmpl/thunarx-unused.sgml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/tmpl/thunarx-version-information.sgml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/version.xml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/version.xml.in
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/xml/
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/xml/thunarx-file-info.xml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/xml/thunarx-menu-provider.xml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/xml/thunarx-property-page-provider.xml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/xml/thunarx-property-page.xml
desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/xml/thunarx-version-information.xml
desktop/trunk/thunar/branches/upstream/current/examples/
desktop/trunk/thunar/branches/upstream/current/examples/Makefile.am
desktop/trunk/thunar/branches/upstream/current/examples/Makefile.in
desktop/trunk/thunar/branches/upstream/current/examples/open-terminal-here/
desktop/trunk/thunar/branches/upstream/current/examples/open-terminal-here/Makefile.am
desktop/trunk/thunar/branches/upstream/current/examples/open-terminal-here/Makefile.in
desktop/trunk/thunar/branches/upstream/current/examples/open-terminal-here/README
desktop/trunk/thunar/branches/upstream/current/examples/open-terminal-here/open-terminal-here.c
desktop/trunk/thunar/branches/upstream/current/gtk-doc.make
desktop/trunk/thunar/branches/upstream/current/icons/
desktop/trunk/thunar/branches/upstream/current/icons/24x24/
desktop/trunk/thunar/branches/upstream/current/icons/24x24/Makefile.am
desktop/trunk/thunar/branches/upstream/current/icons/24x24/Makefile.in
desktop/trunk/thunar/branches/upstream/current/icons/24x24/Thunar.png
desktop/trunk/thunar/branches/upstream/current/icons/48x48/
desktop/trunk/thunar/branches/upstream/current/icons/48x48/Makefile.am
desktop/trunk/thunar/branches/upstream/current/icons/48x48/Makefile.in
desktop/trunk/thunar/branches/upstream/current/icons/48x48/Thunar.png
desktop/trunk/thunar/branches/upstream/current/icons/Makefile.am
desktop/trunk/thunar/branches/upstream/current/icons/Makefile.in
desktop/trunk/thunar/branches/upstream/current/install-sh
desktop/trunk/thunar/branches/upstream/current/intltool-extract.in
desktop/trunk/thunar/branches/upstream/current/intltool-merge.in
desktop/trunk/thunar/branches/upstream/current/intltool-update.in
desktop/trunk/thunar/branches/upstream/current/ltmain.sh
desktop/trunk/thunar/branches/upstream/current/missing
desktop/trunk/thunar/branches/upstream/current/mkinstalldirs
desktop/trunk/thunar/branches/upstream/current/pixmaps/
desktop/trunk/thunar/branches/upstream/current/pixmaps/Makefile.am
desktop/trunk/thunar/branches/upstream/current/pixmaps/Makefile.in
desktop/trunk/thunar/branches/upstream/current/pixmaps/Thunar-about-logo.png
desktop/trunk/thunar/branches/upstream/current/po/
desktop/trunk/thunar/branches/upstream/current/po/ChangeLog
desktop/trunk/thunar/branches/upstream/current/po/Makefile.in.in
desktop/trunk/thunar/branches/upstream/current/po/POTFILES.in
desktop/trunk/thunar/branches/upstream/current/po/de.gmo
desktop/trunk/thunar/branches/upstream/current/po/de.po
desktop/trunk/thunar/branches/upstream/current/po/el.gmo
desktop/trunk/thunar/branches/upstream/current/po/el.po
desktop/trunk/thunar/branches/upstream/current/po/es.gmo
desktop/trunk/thunar/branches/upstream/current/po/es.po
desktop/trunk/thunar/branches/upstream/current/po/hu.gmo
desktop/trunk/thunar/branches/upstream/current/po/hu.po
desktop/trunk/thunar/branches/upstream/current/po/ja.gmo
desktop/trunk/thunar/branches/upstream/current/po/ja.po
desktop/trunk/thunar/branches/upstream/current/tdb/
desktop/trunk/thunar/branches/upstream/current/tdb/Makefile.am
desktop/trunk/thunar/branches/upstream/current/tdb/Makefile.in
desktop/trunk/thunar/branches/upstream/current/tdb/README
desktop/trunk/thunar/branches/upstream/current/tdb/spinlock.c
desktop/trunk/thunar/branches/upstream/current/tdb/spinlock.h
desktop/trunk/thunar/branches/upstream/current/tdb/tdb.c
desktop/trunk/thunar/branches/upstream/current/tdb/tdb.h
desktop/trunk/thunar/branches/upstream/current/tdb/tdbconfig.h
desktop/trunk/thunar/branches/upstream/current/tdb/tdbconfig.h.in
desktop/trunk/thunar/branches/upstream/current/tdb/tdbspeed.c
desktop/trunk/thunar/branches/upstream/current/tdb/tdbtool.c
desktop/trunk/thunar/branches/upstream/current/tdb/tdbtorture.c
desktop/trunk/thunar/branches/upstream/current/tests/
desktop/trunk/thunar/branches/upstream/current/tests/Makefile.am
desktop/trunk/thunar/branches/upstream/current/tests/Makefile.in
desktop/trunk/thunar/branches/upstream/current/tests/data/
desktop/trunk/thunar/branches/upstream/current/tests/data/Makefile.am
desktop/trunk/thunar/branches/upstream/current/tests/data/Makefile.in
desktop/trunk/thunar/branches/upstream/current/tests/data/test-thunar-vfs-volume-bsd.fstab
desktop/trunk/thunar/branches/upstream/current/tests/test-thunar-vfs-path.c
desktop/trunk/thunar/branches/upstream/current/tests/test-thunar-vfs-volume-bsd.c
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/Makefile.am
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/Makefile.in
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/abicheck.sh
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/make-thunar-vfs-alias.pl
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-1.pc.in
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-alias.h
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-aliasdef.c
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-config.c
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-config.h
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-config.h.in
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-enum-types.c
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-enum-types.h
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-exec.c
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-exec.h
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-info.c
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-info.h
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-interactive-job.c
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-interactive-job.h
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-job.c
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-job.h
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-link-job.c
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-link-job.h
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-listdir-job.c
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-listdir-job.h
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-marshal.c
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-marshal.h
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-marshal.list
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-application.c
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-application.h
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-cache.c
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-cache.h
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-database.c
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-database.h
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-info.c
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-info.h
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-legacy.c
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-legacy.h
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-parser.c
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-parser.h
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-provider.c
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-provider.h
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-sniffer.c
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-sniffer.h
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mkdir-job.c
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mkdir-job.h
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-monitor.c
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-monitor.h
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-path.c
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-path.h
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-scandir.c
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-scandir.h
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-thumb-jpeg.c
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-thumb-jpeg.h
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-thumb.c
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-thumb.h
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-transfer-job.c
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-transfer-job.h
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-types.h
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-unlink-job.c
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-unlink-job.h
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-user.c
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-user.h
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-util.c
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-util.h
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-volume-bsd.c
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-volume-bsd.h
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-volume-impl.c
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-volume-impl.h
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-volume-sysv.c
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-volume-sysv.h
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-volume.c
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-volume.h
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-xfer.c
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-xfer.h
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs.c
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs.h
desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs.symbols
desktop/trunk/thunar/branches/upstream/current/thunar/
desktop/trunk/thunar/branches/upstream/current/thunar/Makefile.am
desktop/trunk/thunar/branches/upstream/current/thunar/Makefile.in
desktop/trunk/thunar/branches/upstream/current/thunar/main.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-application.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-application.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-chooser-dialog.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-chooser-dialog.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-chooser-model.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-chooser-model.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-clipboard-manager.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-clipboard-manager.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-create-dialog.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-create-dialog.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-details-view.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-details-view.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-dialogs.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-dialogs.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-dnd.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-dnd.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-emblem-chooser.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-emblem-chooser.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-extension-manager.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-extension-manager.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-fallback-icon.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-fallback-icon.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-fallback-icon.png
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-favourites-model.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-favourites-model.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-favourites-pane.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-favourites-pane.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-favourites-view.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-favourites-view.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-file.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-file.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-folder.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-folder.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-gdk-pixbuf-extensions.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-gdk-pixbuf-extensions.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-gobject-extensions.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-gobject-extensions.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-gtk-extensions.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-gtk-extensions.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-history.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-history.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-icon-factory.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-icon-factory.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-icon-renderer.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-icon-renderer.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-icon-view-ui.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-icon-view-ui.xml
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-icon-view.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-icon-view.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-launcher.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-launcher.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-list-model.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-list-model.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-location-bar.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-location-bar.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-location-buttons.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-location-buttons.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-location-dialog.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-location-dialog.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-location-entry.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-location-entry.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-marshal.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-marshal.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-marshal.list
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-metafile.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-metafile.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-navigator.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-navigator.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-open-with-action.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-open-with-action.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-path-entry.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-path-entry.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-preferences.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-preferences.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-progress-dialog.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-progress-dialog.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-properties-dialog.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-properties-dialog.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-side-pane.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-side-pane.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-standard-view-ui.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-standard-view-ui.xml
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-standard-view.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-standard-view.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-statusbar.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-statusbar.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-text-renderer.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-text-renderer.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-thumbnail-frame.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-thumbnail-frame.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-thumbnail-frame.png
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-thumbnail-generator.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-thumbnail-generator.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-view.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-view.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-window-ui.h
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-window-ui.xml
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-window.c
desktop/trunk/thunar/branches/upstream/current/thunar/thunar-window.h
desktop/trunk/thunar/branches/upstream/current/thunarx/
desktop/trunk/thunar/branches/upstream/current/thunarx/Makefile.am
desktop/trunk/thunar/branches/upstream/current/thunarx/Makefile.in
desktop/trunk/thunar/branches/upstream/current/thunarx/abicheck.sh
desktop/trunk/thunar/branches/upstream/current/thunarx/make-thunarx-alias.pl
desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-1.pc.in
desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-alias.h
desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-aliasdef.c
desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-config.c
desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-config.h
desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-config.h.in
desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-file-info.c
desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-file-info.h
desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-menu-provider.c
desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-menu-provider.h
desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-property-page-provider.c
desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-property-page-provider.h
desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-property-page.c
desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-property-page.h
desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx.h
desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx.symbols
desktop/trunk/thunar/tags/
Log:
[svn-inject] Installing original source of thunar
Added: desktop/trunk/thunar/branches/upstream/current/AUTHORS
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/AUTHORS 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/AUTHORS 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,9 @@
+Benedikt Meurer <benny at xfce.org>
+Jeffs Franks <jcfranks at xfce.org>
+
+The tdb library, which is included with the Thunar distribution, was originally
+written as part of the Samba suite. My understanding is that the majority of
+the code was written by Andrew Trigell <tridge at linuxcare.com> with the help of
+Paul "Rusty" Russell <rusty at linuxcare.com>. Luke Kenneth Casson Leighton
+<luke at samba.org> also contributed a few patches. Sorted freelist merge code
+added by Jeremy Allison <jeremy at valinux.com>.
Added: desktop/trunk/thunar/branches/upstream/current/COPYING
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/COPYING 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/COPYING 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
Added: desktop/trunk/thunar/branches/upstream/current/COPYING.LIB
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/COPYING.LIB 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/COPYING.LIB 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,437 @@
+ GNU LIBRARY GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the library GPL. It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it. You can use it for
+your libraries, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if
+you distribute copies of the library, or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link a program with the library, you must provide
+complete object files to the recipients so that they can relink them
+with the library, after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library. If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, so that any problems introduced by others will not reflect on
+the original authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software. To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+ Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs. This
+license, the GNU Library General Public License, applies to certain
+designated libraries. This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+ The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it. Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program. However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+ Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries. We
+concluded that weaker conditions might promote sharing better.
+
+ However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves. This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them. (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.) The hope is that this
+will lead to faster development of free libraries.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, while the latter only
+works together with the library.
+
+ Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+ GNU LIBRARY GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+General Public License (also called "this License"). Each licensee is
+addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also compile or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ c) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ d) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the source code distributed need not include anything that is normally
+distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Library General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
Added: desktop/trunk/thunar/branches/upstream/current/ChangeLog
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/ChangeLog 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/ChangeLog 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,2917 @@
+2005-11-14 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-xfer.c: Return G_FILE_ERROR_INTR when the copy
+ operation is explicitly cancelled by the user.
+ * thunar-vfs/thunar-vfs-transfer-job.c
+ (thunar_vfs_transfer_job_copy_pair): Don't delete the source file when
+ moving unless the target file was written successfully and the job
+ wasn't cancelled. This fixes a bug reported by Jari Rahkonen.
+
+2005-11-14 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-standard-view.{c,h}: Register "Delete" as key binding
+ for the ThunarStandardView class, rather than registering it as
+ accelerator for the "delete" action. This fixes bug #1226.
+ * thunar/thunar-marshal.list: Add BOOLEAN:VOID marshaller.
+
+2005-11-14 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-exec.c(thunar_vfs_exec_on_screen): Fix invalid
+ calculation of the number of environment variables.
+
+2005-11-14 Benedikt Meurer <benny at xfce.org>
+
+ * configure.in.in: Bump version to 0.1.4svn and depend on
+ libexo 0.3.1.1.
+
+2005-11-14 Benedikt Meurer <benny at xfce.org>
+
+ * po/*.po: Update translations.
+ * po/ChangeLog: Didn't mean to revert this file.
+ * README: Mention gconf, libjpeg and libstartup-notification as optional
+ dependencies.
+
+2005-11-14 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-list-model.c: Don't need to remember the "changed"
+ signal handler id per row, as g_signal_handlers_disconnect_matched()
+ using G_SIGNAL_MATCH_ID and G_SIGNAL_MATCH_CLOSURE is nearly as fast
+ as g_signal_handler_disconnect().
+ * thunar/thunar-folder.c(thunar_folder_finalize): Specify both
+ G_SIGNAL_MATCH_ID and G_SIGNAL_MATCH_CLOSURE when disconnecting
+ "destroy" signals from files.
+ * thunar/thunar-preferences.c, thunar/thunar-window.c: Remember the last
+ active view as default for now.
+ * thunar/thunar-create-dialog.c(thunar_create_dialog_text_changed): Use
+ G_IS_DIR_SEPARATOR() rather than hardcoding the slash character.
+
+2005-11-13 Benedikt Meurer <benny at xfce.org>
+
+ * FAQ, thunar/thunar-icon-view.c: Add initial support for mouse gestures
+ to the icon view component.
+
+2005-11-13 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-window.c, thunar/thunar-preferences.c: Rename
+ "window-location-bar" to "last-location-bar" and "window-side-pane"
+ to "last-side-pane" to make clear that it's the last selected
+ setting.
+ * thunar/thunar-metafile.h: Drop THUNAR_METAFILE_KEY_SHOWHIDDEN.
+ * thunar/Makefile.am, thunar/thunar-gobject-extensions.{c,h}: Add
+ additional GValue transformation functions.
+ * thunar/thunar-preferences.c: Register additional transformation
+ functions provided by the GObject extensions in the class_init()
+ function. Add new preference "default-show-hidden", which tells
+ whether hidden files are shown by default in new windows.
+ * thunar/thunar-view.{c,h}: Add the "show-hidden" property to the
+ ThunarView interface.
+ * thunar/thunar-standard-view-ui.xml, thunar/thunar-standard-view.c:
+ Implement the "show-hidden" property from the ThunarView interface,
+ rather than adding an action to the UI manager.
+ * thunar/thunar-preferences.c: Add "default-show-hidden" property, which
+ tells whether hidden files should be shown in newly opened windows.
+ * thunar/thunar-window-ui.xml, thunar/thunar-window.c: Add the
+ "show-hidden" action here, which starts with the default value queried
+ from the preferences, and uses the new ThunarView API to sync the
+ selected setting.
+
+2005-11-13 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-preferences.c(thunar_preferences_set_property): No need
+ to call g_object_notify() here, as object_set_property() does that
+ implictly once the set_property() call returns.
+
+2005-11-13 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-file.{c,h}, thunar/thunar-metafile.{c,h}: Remove the
+ default value handling from the ThunarMetafile class and leave it up
+ to the caller to specify the default value when fetching/storing
+ metadata.
+ * thunar/thunar-folder.{c,h}, thunar/thunar-standard-view.c: Remove
+ the error parameter from the thunar_folder_get_for_file() method, as
+ this call cannot fail. If a loading error occurs, it will be reported
+ asynchronously by the listdir job.
+ * thunar/thunar-preferences.c(thunar_preferences_set_property): Issue
+ a warning if a required transformation function is not available to
+ the GLib Type System, as this is effectively a bug in our application.
+
+2005-11-12 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-folder.c, thunar/thunar-list-model.c,
+ thunar/thunar-standard-view.c: Forward ThunarVfsListdirJob loading
+ errors to the ThunarStandardView and display an error dialog to the
+ user.
+ * thunar/thunar-preferences.c, FAQ: Use a tdb database to store the
+ preferences, while not saving defaults to the database file.
+ * thunar/thunar-preferences.c: Add initial preferences
+ "window-location-bar" and "window-side-pane".
+ * thunar/thunar-window.c: Always remember the last selected location
+ bar and side pane setting in the preferences.
+
+2005-11-11 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-list-model.c(thunar_list_model_get_statusbar_text):
+ Display symbolic links properly just like the MIME type field in
+ the properties dialog.
+
+2005-11-11 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-standard-view.c(thunar_standard_view_action_duplicate):
+ Use thunar_standard_view_get_selected_paths() instead of
+ thunar_standard_view_get_selected_files().
+ * po/POTFILES.in: Add new source files.
+ * po/*.po: Merge new strings.
+ * thunar/thunar-dialogs.{c,h}, thunar/Makefile.am: Add new function
+ thunar_dialogs_show_error(), which takes care of displaying an error
+ message dialog to the user.
+ * thunar/thunar-application.c, thunar/thunar-chooser-dialog.c,
+ thunar/thunar-clipboard-manager.c, thunar/thunar-dnd.c,
+ thunar/thunar-favourites-view.c, thunar/thunar-launcher.c,
+ thunar/thunar-properties-dialog.c, thunar/thunar-standard-view.c,
+ thunar/thunar-window.c: Use thunar_dialogs_show_error() whenever
+ possible to reduce code duplication.
+ * thunar-vfs/thunar-vfs-info.h, docs/reference/thunar-vfs/: Update the
+ Thunar-VFS documentation.
+
+2005-11-10 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-standard-view.c(thunar_standard_view_new_files): Grab
+ focus for the view widget after selecting newly created files.
+ * thunar-vfs/thunar-vfs-mkdir-job.{c,h}, thunar-vfs/Makefile.am: Import
+ new class ThunarVfsMkdirJob, which is used to asynchronously create
+ a bunch of directories.
+ * thunar-vfs/thunar-vfs.{c,h}, thunar-vfs/thunar-vfs.symbols: Add new
+ methods thunar_vfs_make_directory() and thunar_vfs_make_directories()
+ as public interface to the newly imported ThunarVfsMkdirJob.
+ * thunar-vfs/thunar-vfs-mime-database.c
+ (thunar_vfs_mime_database_get_info_for_data_locked),
+ (thunar_vfs_mime_database_get_info_for_file): Consider empty
+ files to be text/plain, so users can easily open newly created (empty)
+ files in their favourite text editor.
+ * thunar-vfs/thunar-vfs-mime-sniffer.{c,h}, thunar-vfs/Makefile.am,
+ thunar-vfs/thunar-vfs-mime-database.c, configure.in.in: Add function
+ thunar_vfs_mime_sniffer_looks_like_text(), which performs some smart
+ checks to determine if a given data block looks like plain text. Plain
+ text means either UTF-8 - and thereby also ASCII - or valid multi-byte
+ if the platform supports multi-byte strings. In both cases, even
+ truncated data blocks will be recognized.
+ * thunar/thunar-application.{c,h}: Add thunar_application_mkdir() as
+ frontend to the thunar_vfs_make_directories() function.
+ * thunar/thunar-create-dialog.{c,h}, thunar-vfs/Makefile.am: Add class
+ ThunarCreateDialog, which is used to query the user for the filename
+ that should be used for a new file/folder.
+ * TODO: Add todo item.
+ * thunar/thunar-standard-view-ui.xml, thunar/thunar-standard-view.c,
+ thunar/thunar-window-ui.xml: Add "Create Folder" action, which uses
+ thunar_application_mkdir() to create a new subfolder in the current
+ folder.
+ * thunar/thunar-window.c: Rename thunar_window_action_location() to
+ thunar_window_action_open_location() to get consistent naming.
+ * thunar/thunar-window-ui.xml, thunar/thunar-window.c: Add "Home" action
+ whose primary purpose is to be able to open the home folder using a
+ keyboard shortcut.
+
+2005-11-10 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-monitor.c, thunar-vfs/thunar-vfs-thumb.c: Apply
+ patch from Erik Harrison <erikharrison at gmail.com> to fix unused
+ variables when FAM/Gamin and/or GConf aren't available.
+
+2005-11-10 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-standard-view.c(thunar_standard_view_init): Be sure to
+ update the actions whenever the current folder is changed.
+
+2005-11-10 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-window.c(thunar_window_notify_loading): Don't force a
+ round-trip to the Xserver when setting/unsetting the watch cursor.
+ Set/unset the cursor only if the window is already realized.
+ * thunar/thunar-list-model.c(thunar_list_model_get_value): Don't need to
+ check the result of thunar_file_get_date_string() and
+ thunar_file_get_size_string() as they are garantied to be non-NULL.
+ * thunar/thunar-list-model.c(thunar_list_model_file_changed): Use
+ gtk_tree_path_new_from_indices() instead of gtk_tree_path_new() and
+ gtk_tree_path_append_index().
+ * thunar/thunar-list-model.c(thunar_list_model_set_folder): Use
+ g_object_freeze_notify()/g_object_thaw_notify() for multiple property
+ change notification.
+ * thunar/thunar-list-model.c(thunar_list_model_get_statusbar_text):
+ Don't need to verify the result of thunar_file_get_size_string(), as
+ it's garantied to be non-NULL.
+
+2005-11-09 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-location-buttons.c
+ (thunar_location_buttons_set_current_directory): Be a bit smarter here
+ and try to reuse existing buttons whenever possible.
+
+2005-11-09 Benedikt Meurer <benny at xfce.org>
+
+ * configure.in.in: Depend on GLib 2.6.4 or above.
+ * tdb/Makefile.am: Add _XOPEN_SOURCE=500 workaround for glibc to make
+ pread()/pwrite() visible to the compiler.
+
+2005-11-09 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-history.{c,h}, thunar/Makefile.am: Import new class
+ ThunarHistory, which handles back/forward history for a ThunarWindow.
+ * thunar/thunar-window-ui.xml, thunar/thunar-window.c: Use the newly
+ imported class ThunarHistory to manage the navigational history for
+ the ThunarWindow.
+
+2005-11-09 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-window.c: Display the tooltip of the currently selected
+ menu item in the statusbar.
+ * thunar/thunar-icon-render.c(thunar_icon_renderer_render): Render up
+ to 4 emblems for icon sizes from 48px on and up to 2 emblems for icon
+ sizes lower than 48px.
+ * thunar/thunar-icon-render.c(thunar_icon_renderer_render): Use the
+ proper icon factory for the target drawable, rather than the default
+ icon factory.
+
+2005-11-09 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-xfer.{c,h}: Add function thunar_vfs_xfer_link(),
+ which creates a symbolic link to a file.
+ * thunar-vfs/thunar-vfs-link-job.{c,h}, thunar-vfs/Makefile.am: Import
+ new class ThunarVfsLinkJob, which can be used to symlink a bunch of
+ files.
+ * thunar-vfs/thunar-vfs.{c,h}, thunar-vfs/thunar-vfs.symbols: Add
+ thunar_vfs_link_file() and thunar_vfs_link_files() as public interface
+ to the ThunarVfsLinkJob class.
+ * po/POTFILES.in: Add thunar-vfs-link-job.c here.
+ * thunar/thunar-application.{c,h}: Add thunar_application_link_into() as
+ interface to the thunar_vfs_link_files() method. Restructure the code
+ to further reduce the code duplication.
+ * thunar/thunar-dnd.c: Use thunar_application_link_into() to implement
+ the "Link here" Drag&Drop action.
+ * thunar-vfs/thunar-vfs-transfer-job.c
+ (thunar_vfs_transfer_job_copy_pair): Don't access pairs outside the
+ current pair list.
+ * thunar-vfs/thunar-vfs-xfer.c(thunar_vfs_xfer_next_path): Also detect
+ the "%uth copy of %s" pattern when duplicating a file.
+ * thunar/thunar-standard-view.c: Use upper case for substantives in
+ action titles where appropriate.
+ * thunar/thunar-standard-view-ui.xml, thunar/thunar-standard-view.c:
+ Add "duplicate" and "make-link" actions, for duplicating/linking
+ files easily.
+ * po/*.po: Merge new strings.
+
+2005-11-08 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-transfer-job.c(thunar_vfs_transfer_job_new):
+ Verify that we don't ever try to transfer the root directory.
+ * thunar/thunar-file.{c,h}: Make thunar_file_cache_lookup() a public
+ function.
+ * thunar-vfs/thunar-vfs-interactive-job.{c,h}: Add a new signal
+ "new-files", which can be invoked by derived jobs for their new files.
+ The application can use this signal to get notified when a job added
+ new files to a folder (e.g. select them in a folder view, etc.).
+ * thunar-vfs/thunar-vfs-transfer-job.c: Collect the newly created paths
+ and emit the "new-files" signal when the execution finishes.
+ * thunar-vfs/thunar-vfs-monitor.{c,h}, thunar-vfs/thunar-vfs.symbols:
+ Add new method thunar_vfs_monitor_wait(), which can be used by helper
+ threads to wait until the ThunarVfsMonitor has processed all pending
+ notifications.
+ * thunar-vfs/thunar-vfs-interactive-job.c
+ (thunar_vfs_interactive_job_new_files): Use thunar_vfs_monitor_wait()
+ to delay the "new-files" emission until the application has processed
+ all pending notifications.
+ * thunar-vfs/thunar-vfs-monitor.c: Lower the notification interval to
+ 250 milliseconds.
+ * thunar-vfs/thunar-vfs-transfer-job.c(thunar_vfs_transfer_job_execute):
+ Don't use g_rename() for now, as it causes too much trouble right now.
+ * thunar/thunar-application.{c,h}, thunar/thunar-dnd.{c,h},
+ thunar/thunar-clipboard-manager.{c,h}: Allow the consumers to pass
+ a "new-files" closure when starting a transfer job.
+ * thunar/thunar-list-model.{c,h}: Add new method
+ thunar_list_model_get_paths_for_files(), which returns the list of
+ tree paths for a given list of ThunarFiles.
+ * thunar/thunar-standard-view.c: Supply a "new-files" closure when
+ starting transfer jobs, and select the files that are passed to the
+ "new-files" callback when the job finishes.
+ * docs/reference/thunar-vfs/: Update the documentation bits affected
+ by the latest changes.
+
+2005-11-08 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-file.h: Add method thunar_file_is_symlink() to check
+ whether a given ThunarFile is a symbolic link.
+ * thunar/thunar-list-model.c, thunar/thunar-properties-dialog.c: Display
+ symbolic links properly for the MIME Type fields.
+ * thunar-vfs/thunar-vfs-transfer-job.{c,h}, thunar-vfs/thunar-vfs.{c,h},
+ thunar-vfs/thunar-vfs.symbols: Adjust the asynchronous operations API
+ again to make it more constistent with the requirements of the file
+ manager.
+ * po/*.po: Merge new strings.
+ * thunar-vfs/thunar-vfs-monitor.c: Add tags to notifications to make
+ sure (slow) FAM events don't override properly feeded events, as
+ afterall we know best what we did.
+ * thunar-vfs/thunar-vfs-transfer-job.c
+ (thunar_vfs_transfer_job_copy_pair): Fix a typo, where the result
+ of thunar_vfs_transfer_job_overwrite() was not negated properly.
+ * thunar-vfs/thunar-vfs-xfer.c, thunar-vfs/thunar-vfs-transfer-job.c,
+ TODO: Automatically duplicate files when copying and the source and
+ target paths refer to the same file.
+ * thunar/thunar-application.{c,h}, thunar/thunar-standard-view.c,
+ thunar/thunar-clipboard-manager.{c,h}, thunar/thunar-dnd.c: Rework
+ the ThunarApplication API and internals to reduce the amount of
+ duplicated code, and make the API more consistent.
+ * thunar-vfs/thunar-vfs-xfer.{c,h}, thunar-vfs/thunar-vfs.c: Feed events
+ into the VFS monitor from the xfer module.
+ * thunar-vfs/thunar-vfs-transfer-job.c
+ (thunar_vfs_transfer_job_copy_pair): No need to feed a "created" event
+ into the VFS monitor, as that's done by the xfer module directly (with
+ the correct target path).
+ * docs/reference/thunar-vfs/thunar-vfs-sections.txt,
+ docs/reference/thunar-vfs/tmpl/thunar-vfs-operations.sgml: Update
+ documentation bits affected by the latest changes to the public API.
+
+2005-11-07 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-list-model.c: Use an alloc-only memory chunk to reduce
+ the overhead.
+ * thunar/thunar-icon-factory.c(thunar_icon_factory_load_from_file): Add
+ the thumbnail frame after scaling down the thumbnail to the desired
+ size.
+ * thunar/thunar-icon-factory.c(thumbnail_needs_frame): Inline this
+ function if possible.
+
+2005-11-07 Benedikt Meurer <benny at xfce.org>
+
+ * tdb/tdbtool.c: Make gcc4 happy.
+ * thunar/thunar-dnd.c(thunar_dnd_ask): Add icons to the "move" and
+ "copy" actions.
+ * thunar/thunar-folder.c(thunar_folder_monitor): Be sure to process
+ monitor events properly in either case.
+ * thunar-vfs/thunar-vfs-monitor.c
+ (thunar_vfs_monitor_queue_notification): Schedule only one
+ notification per handle, where "deleted" events have the highest
+ priority.
+ * docs/reference/thunar-vfs/: Update documentation.
+ * thunar-vfs/Makefile.am, thunar-vfs/thunar-vfs-xfer.{c,h}: Add module
+ to copy various kinds of file system entities (basicly everything that
+ a normal user is permitted to create, e.g. no device nodes).
+ * thunar-vfs/thunar-vfs-transfer-job.{c,h}: Add new ThunarVfsTransferJob
+ class based on the thunar-vfs-xfer module.
+ * thunar-vfs/thunar-vfs.c: Use new ThunarVfsTransferJob class.
+ * thunar/thunar-progress-dialog.c: Improve the progress dialog.
+ * po/POTFILES.in, po/*.po: Update the file list and the translations.
+
+2005-11-04 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-transfer-job.{c,h}, thunar-vfs/thunar-vfs.{c,h},
+ thunar-vfs/thunar-vfs.symbols: Update the Thunar-VFS transfer API.
+ * thunar/thunar-application.c: Use the new Thunar-VFS transfer API.
+
+2005-11-04 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-file.{c,h}: Add "renamed" signal and emit it whenever
+ the file is renamed by the user.
+ * thunar/thunar-folder.c: Use the "ThunarFile::renamed" to re-register
+ with the file alteration monitor under the new path.
+ * thunar/thunar-window.c: Update the window icon and title whenever the
+ current-directory is changed (e.g. the user renamed the directory
+ file).
+ * thunar-vfs/thunar-vfs-monitor.c: Place the timeout into a preprocessor
+ define.
+ * tdb/, AUTHORS, FAQ, configure.in.in, Makefile.am: Import the tdb - the
+ Trivial Database - engine from the Samba suite, which will be used to
+ store file metadata in a lightweight and efficient way.
+ * thunar/thunar-metafile.{c,h}, thunar/Makefile.am: Add ThunarMetafile
+ class, which handles metadata for files based on a tdb database.
+ * thunar/thunar-file.{c,h}: Add methods to access metadata for a given
+ ThunarFile.
+ * thunar/thunar-file.c: Query additional emblems from the file's
+ metadata (in addition to the special emblems that are set
+ automcatically).
+ * thunar/thunar-emblem-chooser.{c,h}, thunar/Makefile.am: Add
+ ThunarEmblemChooser widget class, to edit the list of additional
+ emblems for a ThunarFile.
+ * thunar/thunar-standard-view.c: Synchronize the show-hidden property.
+ * thunar/thunar-properties-dialog.c: Add a notebook tab for the Emblems.
+
+2005-11-02 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-file.c: Use THUNAR_FILE_IN_DESTRUCTION as destruction
+ flag rather than GTK_IN_DESTRUCTION.
+
+2005-11-01 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-unlink-job.c(thunar_vfs_unlink_job_remove):
+ Also remove thumbnails when successfully deleting a regular file.
+ * thunar-vfs/thunar-vfs-thumb-jpeg.{c,h}, thunar-vfs/Makefile.am,
+ configure.in.in: Add fast JPEG loader, which is able to scale down
+ the data while loading it.
+ * thunar-vfs/thunar-vfs-thumb.c: Use the fast JPEG loader to generate
+ thumbnails for JPEG files (if supported).
+
+2005-11-01 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-info.{c,h}, thunar-vfs/thunar-vfs.symbols: Add
+ attribute custom_icon to the ThunarVfsInfo struct instead of the hints
+ framework and a new method thunar_vfs_info_get_custom_icon() to query
+ the custom icon from a ThunarVfsInfo.
+ * thunar-vfs/thunar-vfs-thumb.c
+ (thunar_vfs_thumb_factory_store_thumbnail): Fix invalid check for
+ valid pixbuf.
+ * thunar-vfs/thunar-vfs-info.c(_thunar_vfs_info_new_internal): Be sure
+ to remove any file extension (e.g. '.png') from themed icon names, so
+ GtkIconTheme is able to locate the icon.
+ * thunar-vfs/thunar-vfs-info.c: Don't treat .directory files like other
+ .desktop files, as that's confusing for the casual user.
+ * thunar/thunar-file.{c,h}: Add method thunar_file_get_custom_icon()
+ to return the custom icon set for the associated ThunarVfsInfo.
+ * thunar/thunar-file.c(thunar_file_get_icon_name): Don't return the
+ custom icon here.
+ * thunar/thunar-icon-factory.c(thunar_icon_factory_load_file_icon):Check
+ first if the ThunarFile specifies a custom icon and try to load it,
+ falling back to thumbnails and regular (mime) icons.
+
+2005-10-31 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-file.h: Add thunar_file_is_regular() to check whether a
+ ThunarFile is a regular file.
+ * thunar/thunar-file.h: Add thunar_file_get_info() to query the
+ ThunarVfsInfo for a given ThunarFile.
+ * thunar-vfs/thunar-vfs-info.{c,h}, thunar-vfs/thunar-vfs.symbols: Add
+ new method thunar_vfs_info_copy(), which takes a deep copy of a
+ ThunarVfsInfo.
+ * thunar-vfs/thunar-vfs-job.{c,h}, thunar-vfs/thunar-vfs.symbols: Turn
+ thunar_vfs_job_cancelled() into an inline function.
+ * thunar-vfs/thunar-vfs-thumb.{c,h}, thunar-vfs/thunar-vfs.symbols,
+ thunar-vfs/Makefile.am: Readd the ThunarVfsThumbFactory class and
+ adjust it to use ThunarVfsInfo's instead of ThunarVfsURI's.
+ * configure.in.in, thunar-vfs/Makefile.am,
+ thunar-vfs/thunar-vfs-thumb.{c,h}: Add optional support for GNOME
+ thumbnailers, which requires GConf.
+ * thunar/thunar-thumbnail-generator.{c,h}, thunar/Makefile.am: Add new
+ class ThunarThumbnailGenerator, which is used to asynchronously
+ generate and store thumbnails for files.
+ * thunar/thunar-icon-factory.{c,h}: Add support for loading thumbnails.
+ Add support for generating thumbnails using the new
+ ThunarThumbnailGenerator class.
+ * configure.in.in: Bump version to 0.1.3.
+
+2005-10-30 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-listdir-job.c(thunar_vfs_listdir_job_execute):
+ Don't immediately terminate the second collector task.
+
+2005-10-30 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-scandir.c: Don't report EMLINK at all.
+
+2005-10-30 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-scandir.c(thunar_vfs_scandir): Treat EMLINK
+ like ENOTDIR, since there's no GFileError to represent EMLINK.
+
+2005-10-29 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-mime-cache.c(cache_node_lookup_suffix): Always
+ check the return value to avoid guessing invalid mime types just
+ because of misleading stopchars.
+ * thunar/thunar-file.c(thunar_file_get_icon_name): Try to be smart when
+ looking up the icon name for binaries.
+
+2005-10-29 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-clipboard-manager.{c,h}: Use ThunarFile to copy/cut to
+ the clipboard and monitor the files for deletion.
+ * thunar/thunar-clipbard-manager.{c,h}: Add new method
+ thunar_clipboard_manager_has_cutted_file() to check whether a certain
+ file was cutted to the clipboard.
+ * thunar/thunar-gdk-pixbuf-extensions.{c,h}: Add new function
+ thunar_gdk_pixbuf_lucent() when generates a translucent pixbuf.
+ * thunar/thunar-standard-view.c: Use the new clipboard manager
+ interface.
+ * thunar/thunar-icon-renderer.c(thunar_icon_renderer_render): Render
+ translucent icons for files previously cutted to the clipboard.
+ * thunar/thunar-window.c: Queue a draw on the window whenever the
+ clipboard contents change to be sure to always display correct
+ state.
+
+2005-10-28 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-monitor.c(thunar_vfs_monitor_feed): Be sure to
+ schedule directory events only for handles that were registered as
+ directory.
+ * thunar-vfs/thunar-vfs-unlink-job.c(thunar_vfs_unlink_job_execute):
+ Ignore ENOTDIR errors when collecting the files to delete.
+ * thunar-vfs/thunar-vfs-exec.c(tvsn_startup_timeout),
+ (thunar_vfs_exec_on_screen): Don't use libsn functions outside the
+ GDK lock.
+ * thunar/thunar-file.{c,h}: Inline the most trivial methods.
+ * thunar-vfs/thunar-vfs-user.{c,h}: Implement ThunarVfsUser and
+ ThunarVfsGroup directly for local user/group management.
+
+2005-10-28 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-clipboard-manager.c
+ (thunar_clipboard_manager_paste_path_list): Fix possible segmentation
+ fault.
+
+2005-10-27 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-interactive-job.{c,h}: Add a VFS monitor pointer
+ to the interactive job, which will be used by the derived classes to
+ communicate fs changes to the application.
+ * thunar-vfs/thunar-vfs-unlink-job.c(thunar_vfs_unlink_job_remove): Feed
+ deleted events into the VFS monitor whenever a file was successfully
+ unlinked from the file system, so the application can be updated even
+ if no file system monitoring mechanism like FAM or Gamin is available.
+ * thunar/thunar-standard-view-ui.xml, thunar/thunar-standard-view.c: Add
+ the "Delete file(s)" operation to the user interface.
+
+2005-10-27 Benedikt Meurer <benny at xfce.org>
+
+ * configure.in.in: Add optional check for libstartup-notification-1.0.
+ * thunar-vfs/thunar-vfs-exec.{c,h}, thunar-vfs/Makefile.am: Add optional
+ support for startup notification.
+ * thunar-vfs/thunar-vfs-info.c,
+ thunar-vfs/thunar-vfs-mime-application.c: Use the thunar-vfs-exec
+ module.
+ * thunar-vfs/thunar-vfs-transfer-job.c: Don't include
+ thunar-vfs-sysdep.h anymore.
+ * po/POTFILES.in: Remove thunar-vfs-sysdep and add thunar-vfs-exec.
+
+2005-10-22 Benedikt Meurer <benny at xfce.org>
+
+ * thunarx/thunarx-config.c: Fix typo.
+ * thunar-vfs/thunar-vfs-config.{c,h.in}, thunar-vfs/Makefile.am,
+ thunar-vfs/thunar-vfs.symbols, thunar-vfs/abicheck.sh,
+ thunar-vfs/thunar-vfs.h, configure.in.in: Add support for version
+ checking to the Thunar-VFS library.
+ * thunar-vfs/*.[ch], thunar-vfs/Makefile.am,
+ thunar-vfs/thunar-vfs.symbols: Replace ThunarVfsURI with ThunarVfsPath
+ for the first version and thereby limit the functionality to local
+ files, which in turn means there's no trash and no computer folder.
+ This will increase the chance that Thunar will be ready for the Xfce
+ 4.4.0 release.
+ * thunar/*.[ch], thunar/Makefile.am: Use ThunarVfsPath instead of
+ ThunarVfsURI.
+ * tests/test-thunar-vfs-path.c, tests/test-thunar-vfs-uri.c,
+ tests/Makefile.am: Replace the ThunarVfsURI test case with a new
+ ThunarVfsPath test case.
+ * tests/test-thunar-vfs-volume-bsd.c: Properly initialize and shutdown
+ the Thunar-VFS library.
+ * po/POTFILES.in: Update the file list.
+ * docs/: Sync the documentation with the changes.
+ * configure.in.in: Don't use -fvisibility=hidden as that causes trouble
+ with inline functions that are also implemented and exported by the
+ library. Instead we explicitly mark internal functions with
+ G_GNUC_INTERNAL.
+
+2005-10-03 Benedikt Meurer <benny at xfce.org>
+
+ * THANKS, configure.in.in, po/es.po: Add spanish translations, thanks
+ to Pablo Hernández-M. Saiz <homeless3d at gmail.com>.
+
+2005-10-02 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-monitor.c: Fire notifications asynchronously, so
+ events can be injected from threads other than the main thread. This
+ also fixes problems with Gamins kqueue/inotify backends.
+
+2005-10-02 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-properties-dialog.c(thunar_properties_dialog_update):
+ Don't update the name label/window title unless the file name has
+ changed.
+
+2005-09-28 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-launcher.c(thunar_launcher_update): Use mnemonics for
+ the "Open"/"Execute" action.
+ * po/de.po: Add initial, incomplete translations.
+
+2005-09-27 Benedikt Meurer <benny at xfce.org>
+
+ * configure.in.in: Substitute platform flags properly.
+ * thunar/Makefile.am: Don't delete thunar-thumbnail-frame.h.
+ * thunar/thunar-standard-view.c(thunar_standard_view_selection_changed):
+ Use ngettext() for the Cut/Copy File(s) actions.
+ * thunar/thunar-file.{c,h}: Add new virtual method get_actions(), which
+ is used to support custom actions for certain files (e.g. the Empty
+ Trash Bin action for the trash file).
+ * thunar/thunar-application.{c,h}: Add thunar_application_delete_uris()
+ to be able to easily delete arbitrary files.
+ * thunar/thunar-trash-file.c(thunar_trash_file_new): Use
+ thunar_file_destroy() instead of gtk_object_destroy().
+ * thunar/thunar-trash-folder.c: Implement the get_actions() method with
+ the "Empty Trash Bin" action.
+ * thunar/thunar-standard-view-ui.xml, thunar/thunar-standard-view.c:
+ Extend the extension menu merge mechanism to also load custom actions
+ provided by ThunarFile implementations.
+ * thunar/thunar-file.c(thunar_file_accepts_uri_drop): Fix typo.
+ * thunar/thunar-trash-folder.c: Watch files for changes.
+ * thunar/thunar-favourites-view.c
+ (thunar_favourites_view_button_press_event): Add custom actions to the
+ favourite context menu.
+ * TODO: Drop completed item.
+ * configure.in.in: Disable strict aliasing if debugging is enabled and
+ the compiler supports the -fno-strict-aliasing switch.
+ * po/*.po: Update translations.
+ * main.c(main): Initialize file properly.
+ * thunar/thunar-file.c(thunar_local_file_is_renameable): Don't permit
+ users to rename root nodes.
+ * thunar/thunar-open-with-action.c(thunar_open_with_action_menu_mapped):
+ Use "Other Application..." instead of just "Other...".
+
+2005-09-23 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-details-view.c(thunar_details_view_button_press_event),
+ thunar/thunar-icon-view.c(thunar_icon_view_button_press_event): Open
+ folders in new windows on double middle-click events.
+
+2005-09-22 Benedikt Meurer <benny at xfce.org>
+
+ * configure.in.in: Fix typo.
+
+2005-09-22 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-*.c: Documentation tweaks.
+ * configure.in.in, docs/reference/Makefile.am,
+ docs/reference/thunar-vfs/: Prepare Thunar-VFS reference manual.
+ * thunar/thunar-list-model.c(thunar_list_model_get_statusbar_text):
+ Use ngettext() for the statusbar text.
+ * thunar/thunar-launcher.c(thunar_launcher_update): Use ngettext() for
+ the "Open in n New Windows" menu label.
+ * thunar/thunar-launcher.c(thunar_launcher_open_new_windows): Use
+ ngettext() for the question whether to open n separate windows.
+ * thunar/thunar-launcher.c(thunar_launcher_open_uris): Use ngettext()
+ to format the error message when opening multiple URIs at once
+ failes.
+ * po/*.po: Update po files.
+ * configure.in.in, examples/open-terminal-here/Makefile.am,
+ thunar-vfs/Makefile.am, thunar/Makefile.am, thunarx/Makefile.am:
+ Don't add debugging and visibility flags to CFLAGS, CPPFLAGS and
+ LDFLAGS, but use PLATFORM_CFLAGS, PLATFORM_CPPFLAGS and
+ PLATFORM_LDFLAGS instead to avoid trouble with certain conftests
+ when checking the distribution.
+
+2005-09-22 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-trash.h: Fix typo.
+ * thunar/thunar-chooser-dialog.c(thunar_chooser_dialog_response): Handle
+ absolute paths properly for custom commands.
+
+2005-09-20 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-mime-application.{c,h},
+ thunar-vfs/thunar-vfs.symbols: Load the supported mime types for the
+ applications.
+ * thunar-vfs/thunar-vfs-mime-application.{c,h},
+ thunar-vfs/thunar-vfs.symbols: Add a new constructor
+ thunar_vfs_mime_application_new_from_file() for the special case
+ where a particular file should be loaded by path.
+ * thunar-vfs/thunar-vfs-mime-application.c
+ (thunar_vfs_mime_application_equal): Properly initialize the
+ application variables.
+ * thunar-vfs/thunar-vfs-mime-application.c
+ (thunar_vfs_mime_application_lookup_icon_name): Permit applications
+ to specify absolute paths for the icon name.
+ * thunar-vfs/thunar-vfs-mime-database.{c,h},
+ thunar-vfs/thunar-vfs.symbols: Extend the mime database by a new
+ method thunar_vfs_mime_database_set_default_application(), which is
+ used to set the default application for a given mime type.
+ * thunar-vfs/thunar-vfs-sysdep.c(_thunar_vfs_sysdep_parse_exec): Fix
+ typo to properly execute applications that require a terminal.
+ * thunar-vfs/thunar-vfs-mime-database.c
+ (thunar_vfs_mime_database_get_applications): Always prepend the
+ default applications for the given mime info to the list returned
+ from this method.
+ * thunar/thunar-favourites-model.c(thunar_favourites_model_save): Use
+ g_mkstemp() to create the temporary file.
+ * thunar-vfs/thunar-vfs-mime-application.{c,h},
+ thunar-vfs/thunar-vfs.symbols: Add public flags to the mime
+ applications.
+ * thunar-vfs/thunar-vfs-mime-application.c
+ (thunar_vfs_mime_application_new_from_file): Strip off known suffixes
+ for image files if a themed icon is specified. This way we can
+ work-around quite a few broken .desktop files.
+ * thunar-vfs/thunar-vfs-mime-database.{c,h},
+ thunar-vfs/thunar-vfs.symbols: Support the addition of custom
+ applications using thunar_vfs_mime_database_add_application() in
+ a way compatible to what Nautilus does (which is actually quite a
+ mess).
+ * thunar/thunar-chooser-dialog.{c,h}, thunar/thunar-chooser-model.{c,h},
+ thunar/Makefile.am: Import the "Open With" dialog based on the two
+ classes ThunarChooserDialog and ThunarChooserModel, which in turn are
+ based on the new functionality provided by Thunar-VFS, and thereby
+ permit the user to associate applications with files (actually mime
+ types) and add new applications.
+ * thunar/thunar-launcher.c: Connect the "Open With Other" action to
+ the new ThunarChooserDialog.
+ * thunar/thunar-favourites-model.c: Document the drag source functions.
+ * README: Add a list of dependencies for Thunar.
+ * TODO: Drop completed items.
+
+2005-09-17 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-mime-database.c: Include exo/exo.h.
+
+2005-09-15 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-volume-bsd.c,
+ thunar-vfs/thunar-vfs-volume-sysv.c: Include thunar-vfs-alias.h.
+
+2005-09-15 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-progress-dialog.c: Use GObject for the job instead of
+ ExoObject.
+
+2005-09-15 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-interactive-job.{c,h},
+ thunar-vfs/thunar-vfs-job.{c,h},
+ thunar-vfs/thunar-vfs-listdir-job.{c,h},
+ thunar-vfs/thunar-vfs-transfer-job.{c,h},
+ thunar-vfs/thunar-vfs-unlink-job.{c,h}: Allocate a new main loop for
+ every running job so we can terminate them properly and be sure to
+ run the finalize method in the main thread. This enables us to use
+ arbitrary GObjects within a job without having to worry about the
+ reference counting problem in GLib 2.6. The jobs are GObjects as well
+ now to easily support language bindings and allow us to drop the
+ problematic ExoObject class.
+
+2005-09-14 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-launcher.c(thunar_launcher_open_files): Use
+ g_object_unref() instead of exo_object_unref().
+
+2005-09-14 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-mime-application.{c,h},
+ thunar-vfs/thunar-vfs-mime-database.c, thunar-vfs/thunar-vfs.symbols,
+ thunar/thunar-launcher.c, thunar/thunar-marshal.list,
+ thunar/thunar-open-with-action.c: Turn ThunarVfsMimeApplication into
+ a boxed type.
+ * thunar/thunar-window.c: Apply Daichis patch to make the dynamic
+ actions titles translatable (#1153).
+
+2005-09-13 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-info.c, thunar-vfs/thunar-vfs-mime-database.c,
+ thunar-vfs/thunar-vfs-mime-info.{c,h}, thunar-vfs/thunar-vfs-thumb.c,
+ thunar-vfs/thunar-vfs.symbols: Turn ThunarVfsMimeInfo into a boxed
+ type.
+ * thunar-vfs/thunar-vfs-mime-provider.c: No need to provide fallback
+ implementations for the virtual methods, as both providers implement
+ all virtual methods.
+ * thunar-vfs/thunar-vfs-mime-provider.{c,h},
+ thunar-vfs/thunar-vfs-mime-cache.c,
+ thunar-vfs/thunar-vfs-mime-legacy.c,
+ thunar-vfs/thunar-vfs-mime-database.c: Derive the MIME providers from
+ GObject instead of ExoObject.
+ * thunar-vfs/thunar-vfs-mime-database.c, thunar-vfs/thunar-vfs-info.c,
+ thunar-vfs/thunar-vfs-thumb.c, thunar-vfs/thunar-vfs.c,
+ thunar/thunar-computer-folder.c, thunar/thunar-file.c,
+ thunar/thunar-open-with-action.c, thunar/thunar-trash-folder.c:
+ Derive ThunarVfsMimeDatabase from GObject instead of ExoObject.
+
+2005-09-13 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-sysdep.h: Add inline atomic operations.
+ * thunar-vfs/thunar-vfs-info.c, thunar-vfs/thunar-vfs-listdir-job.c,
+ thunar-vfs/thunar-vfs-mime-application.c,
+ thunar-vfs/thunar-vfs-mime-database.c,
+ thunar-vfs/thunar-vfs-monitor.c,
+ thunar-vfs/thunar-vfs-sysdep.c, thunar-vfs/thunar-vfs-thumb.c,
+ thunar-vfs/thunar-vfs-transfer-job.c, thunar-vfs/thunar-vfs-trash.c,
+ thunar-vfs/thunar-vfs-uri.{c,h}, thunar-vfs/thunar-vfs.c,
+ thunar-vfs/thunar-vfs.symbols, thunar/thunar-clipboard-manager.c,
+ thunar/thunar-computer-folder.c, thunar/thunar-favourites-model.c,
+ thunar/thunar-favourites-view.c, thunar/thunar-file.c,
+ thunar/thunar-icon-factory.c, thunar/thunar-local-file.c,
+ thunar/thunar-local-folder.c, thunar/thunar-location-buttons.c,
+ thunar/thunar-path-entry.c, thunar/thunar-standard-view.c,
+ thunar/thunar-statusbar.c, thunar/thunar-trash-file.c,
+ thunar/thunar-trash-folder.c: Turn ThunarVfsURI into a boxed type
+ to make language bindings easier and reduce the overhead. Drop the
+ foreign host support code, as we can't use it anyways, since nearly
+ every other existing application that handles file URIs is broken
+ when it comes to file URIs with authorities. Simplify the
+ thunar_vfs_uri_to_string() method again and return only escaped
+ versions of the URI.
+ * thunar/thunar-path-entry.c(thunar_path_entry_set_current_file):
+ Display file URIs for non-UTF8 paths.
+ * tests/test-thunar-vfs-uri.c, tests/test-thunar-vfs-volume-bsd.c:
+ Update the tests.
+ * thunar-vfs/Makefile.am, thunar-vfs/thunar-vfs-info.h,
+ thunar-vfs/thunar-vfs-types.h: Move the system-dependent types to
+ thunar-vfs-types.h.
+ * thunar-vfs/thunar-vfs-info.{c,h}, thunar-vfs/thunar-vfs.symbols:
+ Turn ThunarVfsInfo into a boxed type.
+
+2005-09-11 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-standard-view.c: Sort the extension actions by their
+ names instead of their labels.
+ * thunar/thunar-extension-manager.c(thunar_extension_class_init):
+ Properly initialize the parent class reference.
+ * examples/open-terminal-here/Makefile.am: Don't specify CLEANFILES
+ explicitly.
+ * thunar/thunar-file.c(thunar_file_get_mime_info): Documentation fix.
+ * thunar-vfs/thunar-vfs-mime-database.c
+ (thunar_vfs_mime_database_get_info_for_file): When generating an
+ application/x-extension-<EXT> mime type and no valid extension is
+ found for the file name, fallback to the whole filename as suggested
+ by jrb. This way we can make sure that we will never return
+ application/octet-stream from this method and thereby allow the
+ program chooser to set default applications for every mime type
+ used in the file manager.
+ * thunar/Makefile.am: Add $(top_builddir) to INCLUDES.
+
+2005-09-11 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-standard-view.c: Sort the extension actions by their
+ labels prior to adding them to the UI manager.
+
+2005-09-11 Benedikt Meurer <benny at xfce.org>
+
+ * examples/open-terminal-here/open-terminal-here.c
+ (open_terminal_here_activate): Remove unused debug statement.
+
+2005-09-09 Benedikt Meurer <benny at xfce.org>
+
+ * configure.in.in: Substitute version information.
+ * thunar/thunar-window.c(thunar_window_action_about): Escape the
+ copyright sign.
+ * thunar/thunar-gdk-pixbuf-extensions.{c,h},
+ thunar/thunar-gtk-extensions.{c,h}, thunar/thunar-desktop-view.c,
+ thunar/thunar-icon-factory.c, thunar/thunar-icon-renderer.c,
+ thunar/thunar-standard-view.c, thunar/thunar-window.c,
+ thunar/Makefile.am: Merge the GdkPixbuf and GTK+ extensions into
+ the thunar namespace.
+ * configure.in.in, thunarx/: Import the initial extensions library.
+ * configure.in.in, docs/Makefile.am, Makefile.am, docs/reference/:
+ Import the reference manual for the extensions library.
+ * thunar/thunar-file.c: Implement the ThunarxFileInfo interface.
+ * thunar/thunar-extension-manager.{c,h}, thunar/Makefile.am: Import the
+ ThunarExtensionManager class.
+ * thunar/thunar-standard-view-ui.xml, thunar/thunar-standard-view.c: Add
+ support for context menu providers to the standard views.
+ * po/POTFILES.in: Add thunarx/thunarx-property-page.c here.
+ * thunar/thunar-properties-dialog.c: Add support for property page
+ providers here.
+ * Makefile.am, configure.in.in, examples/Makefile.am,
+ examples/open-terminal-here/: Add "Open Terminal Here" menu provider
+ example.
+
+2005-09-06 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-list-model.c: Don't emit the "row-inserted" and
+ "row-deleted" signals when changing folders unless somebody
+ is actually interested in these signals.
+ * thunar/thunar-list-model.c(thunar_list_model_set_folder): Actually
+ specify the correct path when deleting the previous items from the
+ model.
+ * thunar/thunar-local-folder.c(thunar_local_folder_file_destroy): No
+ need to request a new list from GLib here.
+ * thunar/thunar-local-folder.c(thunar_local_folder_infos_ready): Don't
+ add new files to two lists. Instead add them to one temporary list
+ and append the temporary list to the internal list later.
+ * thunar/thunar-local-file.c(thunar_local_file_get_for_info): Fix an
+ invalid instance cast check.
+ * thunar/thunar-file.c: Manage the file cache directly without using
+ weak references to avoid problems and save memory (weak references
+ are allocated in the GObject dataset).
+
+2005-09-06 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-local-file.c: Store the VFS monitor handle in the
+ GObject dataset as it's used only for explicit file monitoring (e.g.
+ for the properties dialog).
+ * thunar/thunar-list-model.c(thunar_list_model_get_iter): Skip every
+ second comparison for iter lookups.
+ * icons/, configure.in.in, Makefile.am: Add the Thunar icon.
+
+2005-09-06 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-uri.c: Invoke the parent's finalize method, as
+ that will be required for language bindings once we have weak/toggle
+ references for ExoObject.
+ * thunar/thunar-local-file.c(thunar_local_file_rename): Re-register with
+ the VFS monitor if the rename succeeds.
+ * thunar-vfs/thunar-vfs-uri.c(thunar_vfs_uri_hash): Don't hash the
+ hostname if it's NULL.
+ * thunar-vfs/thunar-vfs-uri.c(thunar_vfs_uri_equal): We don't need to
+ query the hostname string here, as local files will always have host
+ set to NULL.
+ * tests/test-thunar-vfs-uri.c(main): Extend the ThunarVfsURI test.
+ * pixmaps/, Makefile.am, configure.in.in, thunar/thunar-window.c,
+ thunar/Makefile.am: Initial idea for the about dialog logo.
+
+2005-09-05 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-info.{c,h}, thunar-vfs/thunar-vfs-listdir-job.c:
+ Use GList instead of GSList to manage ThunarVfsInfo lists, which
+ increases data locality and decreases memory usage (as there's no
+ need to keep another allocator around any more).
+ * thunar/thunar-computer-folder.c, thunar/thunar-folder.{c,h},
+ thunar/thunar-list-model.c, thunar/thunar-local-folder.c,
+ thunar/thunar-trash-folder.c: Use GList instead of GSList to manage
+ the list of files for a folder for the same reason.
+ * thunar/thunar-file.{c,h}, thunar/thunar-folder.c,
+ thunar/thunar-local-folder.c, thunar/thunar-local-file.c: ThunarFile
+ is derived from GObject now, instead of GtkObject.
+ * thunar/thunar-list-model.c: No need to implement GtkTreeDragDest,
+ as that's handled in ThunarStandardView.
+
+2005-09-05 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-launcher.c, thunar/thunar-list-model.c,
+ thunar/thunar-open-with-action.c, thunar/thunar-properties-dialog.c:
+ We don't need to check the result of thunar_file_get_mime_info() any
+ more as it's garantied to be a valid ThunarVfsMimeInfo.
+
+2005-09-05 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-computer-folder.c, thunar/thunar-file.c,
+ thunar/thunar-list-model.c: Always return a valid ThunarVfsMimeInfo
+ from the get_mime_info() method.
+
+2005-09-05 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-list-model.{c,h}: Drop the unused icon columns from the
+ ThunarListModel.
+
+2005-09-04 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-icon-renderer.c(thunar_icon_renderer_render): Generate
+ the colorized/spotlighted version of the icon only if the icon area
+ is affected by expose event.
+
+2005-09-04 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-uri.c(escape): And of course, we need to escape
+ the '+' and '%' characters in URIs.
+
+2005-09-04 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-uri.c(escape): Also escape '&' in URIs.
+
+2005-09-04 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-thumb.{c,h}: Implement the store thumbnail
+ functionality.
+ * thunar-vfs/thunar-vfs-sysdep.c, thunar-vfs/thunar-vfs-trash.c,
+ thunar-vfs/thunar-vfs-uri.{c,h}, thunar-vfs/thunar-vfs.symbols,
+ thunar/thunar-clipboard-manager.c, thunar/thunar-favourites-model.c,
+ thunar/thunar-favourites-view.c, thunar/thunar-file.c,
+ thunar/thunar-location-buttons.c, thunar/thunar-path-entry.c,
+ thunar/thunar-standard-view.c, thunar/thunar-statusbar.c: Improve
+ the thunar_vfs_uri_to_string() method to support UTF-8 URI strings
+ and escaping of URIs, which is required for proper Drag'n'Drop
+ interaction with other applications.
+
+2005-09-04 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-file.{c,h}: Store the watch count in the GObject data
+ list, as it seldomly used.
+ * thunar/thunar-file.c(thunar_file_load_icon): Try to load the "loading"
+ icon directly instead of checking the icon theme first.
+ * thunar/thunar-standard-view.c: Revert the "num-files" special handling
+ as it leads to a bug where the actions aren't updated properly when
+ changing directories.
+ * thunar-vfs/thunar-vfs-sysdep.h: Fix typo.
+ * thunar-vfs/thunar-vfs-transfer-job.c,
+ thunar-vfs/thunar-vfs-unlink-job.c: Unlink thumbnails after removing
+ a file to reduce the junk in ~/.thumbnails/.
+ * thunar-vfs/thunar-vfs-uri.c(thunar_vfs_uri_get_md5sum): Escape the
+ path properly, so the thumbnail paths we determine are equal to those
+ of other file managers.
+
+2005-09-04 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/Makefile.am: Add the thumbnail frame source image to the
+ distribution.
+ * thunar/thunar-icon-factory.c: Add some more cleverness in determining
+ whether or not to add a frame to a thumbnail.
+
+2005-09-03 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs.symbols, thunar-vfs/thunar-vfs-mime-info.{c,h},
+ thunar-vfs/thunar-vfs-mime-database.c: Determine media and subtype of
+ a ThunarVfsMimeInfo on-demand.
+ * thunar-vfs/thunar-vfs-info.c(thunar_vfs_info_new_for_uri): Move the
+ .desktop file handling to the regular file case.
+ * thunar-vfs/thunar-vfs-thumb.{c,h}, thunar-vfs/thunar-vfs.symbols,
+ thunar-vfs/Makefile.am, thunar-vfs/thunar-vfs.h: Import the
+ ThunarVfsThumbFactory class, which implements the freedesktop
+ thumbnail management specification.
+ * thunarx/thunarx-gdk-pixbuf-extensions.{c,h}: Add new helper function
+ thunarx_gdk_pixbuf_frame(), which is used to embed an arbitrary image
+ into a frame (e.g. for thumbnails).
+ * thunar/thunar-favourites-model.c, thunar/thunar-file.c,
+ thunar/thunar-icon-factory.{c,h}, thunar/thunar-icon-renderer.c,
+ thunar/thunar-list-model.c, thunar/thunar-location-buttons.c,
+ thunar/thunar-window.c: Make sure we don't leak the default icon
+ factory instance on exit.
+ * thunar/Makefile.am, thunar/thunar-thumbnail-frame.{h,png}: Import
+ the thumbnail frame image used by Nautilus.
+ * thunar/thunar-icon-factory.{c,h}: Add thumbnail loading support to
+ the icon factory and reorganize the internals a bit.
+ * thunar/thunar-file.c: Load thumbnails for regular if possible.
+
+2005-09-02 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-icon-renderer.c(thunar_icon_renderer_render): Don't
+ scale the icon if it fits into the cell area.
+
+2005-09-02 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-text-renderer.c: Select the text prior to the last
+ dot when starting to edit a cell.
+ * thunar/thunar-properties-dialog.c(thunar_properties_dialog_update):
+ Place input focus on the name entry widget and select the text prior
+ to the last dot.
+
+2005-09-02 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-open-with-action.c(thunar_open_with_action_activated):
+ Remove obsolete code.
+ * thunar/thunar-standard-view.c
+ (thunar_standard_view_button_release_event): Don't popup the context
+ menu using the just released button, as that would render the items
+ unclickable.
+
+2005-09-02 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-standard-view.c: Avoid going through the selection
+ changed handling whenever the number of files in a model changes,
+ as the only thing that needs updating here is the statusbar text.
+ * thunar-vfs/thunar-vfs-mime-cache.c
+ (thunar_vfs_mime_cache_lookup_parents): Fix the offset from which the
+ parent mime type name is read.
+ * thunar-vfs/thunar-vfs-mime-cache.c(cache_node_lookup_suffix):
+ Optimize the tail-recursive suffix lookup.
+ * thunar-vfs/thunar-vfs-mime-database.c
+ (thunar_vfs_mime_database_get_info_for_file): Use fast stack memory
+ for the extattr and content lookups.
+
+2005-09-02 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-icon-factory.c(thunar_icon_factory_lookup_icon): Add
+ support to load icons from absolute paths.
+ * thunar/thunar-local-file.c(thunar_local_file_get_icon_name): Allow the
+ VFS layer to pass absolute paths for the file icon hint. This is
+ required for some .desktop files, that specify absolute icon paths
+ instead of themed icon names.
+ * thunar/thunar-location-buttons.c(thunar_location_buttons_make_button):
+ Don't permit location buttons to grab the focus.
+
+2005-09-02 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-standard-view.c: Be sure to override the default
+ drag-data-delete handler of ExoIconView/GtkTreeView.
+ * thunar/thunar-icon-view.c(thunar_icon_view_get_path_at_pos): The
+ exo_icon_view_get_path_at_pos() method really accepts widget
+ coordinates now, like GtkTreeView does, so we don't need to translate
+ the widget coordinates to icon window coordinates first.
+
+2005-09-02 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-standard-view.c(thunar_standard_view_get_dest_actions):
+ Set the drop-file icon renderer property only if we have a valid
+ drag action.
+ * thunar/thunar-local-file.c(thunar_local_file_accepts_uri_drop): Do
+ not accept directory drops if the directory isn't writable.
+
+2005-09-02 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-icon-renderer.c(thunar_icon_renderer_render): Prelight
+ drop destination icons.
+
+2005-09-01 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-computer-folder.c, thunar/thunar-desktop-view.c,
+ thunar/thunar-favourites-model.c, thunar/thunar-file.{c,h},
+ thunar/thunar-list-model.c, thunar/thunar-local-file.c,
+ thunar/thunar-location-buttons.c, thunar/thunar-path-entry.c,
+ thunar/thunar-properties-dialog.c, thunar/thunar-standard-view.c,
+ thunar/thunar-statusbar.c, thunar/thunar-trash-file.c,
+ thunar/thunar-trash-folder.c, thunar/thunar-window.c: Add an icon
+ state parameter to the ThunarFile icon loader, which allows to grab
+ icons for a certain state from a given file.
+ * thunar/thunar-file.c: Drop the cached icon, as the ThunarIconFactory
+ does this pretty well already and we don't need to keep an additional
+ cached version of every file's icon.
+ * thunar/thunar-icon-renderer.c, thunar/thunar-standard-view.c: Use the
+ drop icon for the views while dragging over an item/row in the view.
+
+2005-09-01 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-listdir-job.c: Fix the pre-sorting of files, so
+ upper layers always receive the info list sorted by name.
+ * thunar/thunar-details-view.c(thunar_details_view_button_press_event),
+ thunar/thunar-icon-view.c(thunar_icon_view_button_press_event): Don't
+ popup the context menu immediately on right-clicks, but schedule the
+ menu popup using thunar_standard_view_queue_popup().
+ * thunar/thunar-standard-view.{c,h}: Add the ability to start a drag
+ operation using the right mouse button.
+ * thunar/thunar-file.{c,h}: Add virtual method accepts_uri_drop() and
+ method thunar_file_accepts_uri_drop(), which are used to determine
+ whether it is possible to drop a certain list of ThunarVfsURIs on
+ a given ThunarFile (using a set of actions specified by the drag
+ source).
+ * thunar/thunar-local-file.c: Implement the accepts_uri_drop() method
+ for local file handling.
+ * thunar/thunar-progress-dialog.c(thunar_progress_dialog_ask),
+ (thunar_progress_dialog_error): Be sure to display the progress dialog
+ prior to opening an error or question dialog.
+ * thunar-vfs/thunar-vfs-info.c(thunar_vfs_info_rename): Fix gcc4
+ warning.
+ * thunar-vfs/thunar-vfs.symbols: Add missing thunar_vfs_rename symbol.
+ * thunar/thunar-favourites-model.c(thunar_favourites_model_get_value):
+ Work-around a compiler bug with newer gcc versions.
+ * thunar/thunar-standard-view.{c,h}: Turn ThunarStandardView into a
+ valid drop site with support for text/uri-list drops.
+ * thunar/Makefile.am, thunar/thunar-dnd.{c,h}: Add DnD helper functions,
+ which can be used by other modules as well (e.g. for the desktop
+ view).
+
+2005-08-30 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-favourites-model.c: Drop the icon caching from the
+ favourites model as it causes trouble with icon theme changing and
+ is unnecessary since the ThunarIconFactory already performs quite
+ well at caching icons.
+ * thunar/thunar-location-buttons.c: Reload the icons for the location
+ buttons when the active icon/gtk theme is changed.
+
+2005-08-30 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-local-file.c(thunar_local_folder_infos_ready): Do not
+ compare the newly inserted files, as they are garantied to be
+ different from each other.
+ * thunar-vfs/thunar-vfs-info.c(thunar_vfs_info_matches): Move the URI
+ comparison to the end as that takes most of the time.
+ * thunar-vfs/thunar-vfs-listdir-job.c(thunar_vfs_listdir_job_execute):
+ Pre-sort the names in ascending order to get faster inserts for the
+ usual case where the user sorts its views by name.
+
+2005-08-30 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-properties-dialog.c: Adjust the "editability" of the
+ name entry widget depending on whether the file can be renamed.
+ * thunar-vfs/thunar-vfs-info.{c,h}: Add methd thunar_vfs_info_rename()
+ which supports renaming of regular files and .desktop files.
+ * thunar/thunar-file.{c,h}: Add _thunar_file_cache_rename() to support
+ ThunarFile implementations that provide the thunar_file_rename()
+ method.
+ * thunar/thunar-local-file.c: Add support to rename local files based
+ on thunar_vfs_info_rename().
+ * thunar/thunar-properties-dialog.c: Allow users to rename files using
+ the name entry widget.
+ * thunar/thunar-list-model.c(thunar_list_model_file_changed): Re-sort
+ the model as the file may have changed its name.
+ * thunar/thunar-list-model.c(thunar_list_model_sort): Avoid the GArray
+ overhead and try to use stack memory if possible.
+ * thunar/thunar-standard-view.h, thunar/thunar-details-view.c,
+ thunar/thunar-icon-view.c: Add virtual methods set_cursor() and
+ scroll_to_path() to the ThunarStandardView class and implement them
+ in ThunarDetailsView and ThunarIconView.
+ * thunar/thunar-standard-view.c: Implement the "Rename" action based
+ on the inline editing capabilities of ThunarTextRenderer.
+
+2005-08-30 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-favourites-view.c(thunar_favourites_view_init): Use
+ auto-sizing for the favourites column.
+ * thunar/thunar-favourites-model.{c,h}, thunar/thunar-favourites-view.c:
+ Add support for Gtk+ 2.8 shortcuts, which allow the user to assign
+ aliases with mutable shortcuts.
+
+2005-08-29 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-details-view.c, thunar/thunar-icon-view.c,
+ thunar/thunar-standard-view.{c,h}: Turn the name cell renderer into
+ a property of the ThunarStandardView class, so related functionality
+ can be easily shared between the icon and details views.
+ * thunar/thunar-standard-view-ui.xml, thunar/thunar-window-ui.xml: Add
+ placeholder for alteration actions to the "Edit" menu in the thunar
+ window and fill this placeholder with the "Rename" action in the
+ standard view. In addition, add the "Rename" action to the file
+ context menu.
+ * thunar/thunar-file.{c,h}: Add rename functionality to the ThunarFile
+ interface.
+ * thunar/thunar-standard-view.c(thunar_standard_view_selection_changed):
+ Enable the "Rename" action if exactly one file is selected and that
+ file is renameable.
+
+2005-08-29 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-favourites-model.c: Use GLib linked lists to manage
+ the favourites.
+ * thunar/thunar-favourites-model.c: Monitor the bookmarks file for
+ changes.
+
+2005-08-29 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-window-ui.xml, thunar/thunar-window.c: Add side pane
+ selection to the View menu.
+
+2005-08-29 Benedikt Meurer <benny at xfce.org>
+
+ * configure.in.in: Check for Intel MMX Intrinsics header.
+ * thunarx/thunarx-gdk-pixbuf-extensions.c: Use Intel MMX Intrinsics to
+ speed up pixbuf operations, if supported by the compiler (the -mmmx
+ option in gcc).
+ * thunar/thunar-window.c(thunar_window_action_location_bar_changed):
+ Apply the location bar patch submitted by Jeffs Franks
+ <jcfranks at tpg.com.au> in a slightly modified form.
+
+2005-08-28 Benedikt Meurer <benny at xfce.org>
+
+ * po/POTFILES.in: Remove thunar-vfs-mime.{c,h}.
+ * po/*.po: Update .po files.
+
+2005-08-28 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-list-model.c(thunar_list_model_sort): Use temporary
+ storage on the stack, rather than the heap.
+ * thunar/thunar-list-model.c: Derive from GObject rather than
+ GtkObject, as we don't need GtkObject's features anymore in
+ ThunarListModel.
+ * thunar/thunar-list-model.c(thunar_list_model_class_init): Use
+ EXO_PARAM_* macros rather than G_PARAM_*.
+ * thunar-vfs/thunar-vfs-uri.c(thunar_vfs_uri_equal): Add a check to
+ see whether the compared references refer to the same object, which
+ can happen quite often (in case of a positive match).
+ * thunar-vfs/thunar-vfs-uri.c(thunar_vfs_uri_list_to_string): Prealloc
+ a buffer of 512 bytes for the URI list string representation.
+ * thunar-vfs/thunar-vfs-uri.c(thunar_vfs_uri_list_free): Use
+ g_list_foreach() to unref the URIs.
+ * thunar/thunar-local-file.c(thunar_local_file_get_emblem_names):
+ Properly verify the parent uri when testing for the Desktop
+ directory.
+ * thunar-vfs/thunar-vfs.{c,h}, thunar-vfs/Makefile.am: Drop the
+ thunar_vfs_mime_info_get() and thunar_vfs_mime_info_get_for_file()
+ methods, and merge the thunar-vfs-mime initialization into the
+ thunar-vfs initialization routines.
+
+2005-08-28 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-file.{c,h}, thunar/thunar-local-file.c,
+ thunar/thunar-standard-view.c: Rename can_execute(), can_read() and
+ can_write() to is_executable(), is_readable() and is_writable() to
+ get consistent naming.
+ * thunar-vfs/thunar-vfs-info.{c,h}: Add THUNAR_VFS_FILE_FLAGS_EXECUTABLE
+ to the ThunarVfsFileFlags, which will be set if a ThunarVfsInfo
+ can be executed, either as regular binary or as .desktop file.
+ * thunar-vfs/thunar-vfs-mime-application.c,
+ thunar-vfs/thunar-vfs-sysdep.{c,h}: Move the Exec parsing code from
+ ThunarVfsMimeApplication to thunar-vfs-sysdep, so it can be used by
+ other modules as well.
+ * thunar-vfs/thunar-vfs-info.{c,h}, thunar-vfs/thunar-vfs.symbols: Add
+ new method thunar_vfs_info_execute(), which is used to execute
+ files with a list of URIs. These method can handle both regular
+ executable files as well as .desktop files.
+ * thunar/thunar-file.{c,h}, thunar/thunar-launcher.c,
+ thunar/thunar-local-file.c: Add support to execute files that are
+ marked as executable by the ThunarVfsInfo module.
+ * thunar-vfs/thunar-vfs-mime-database.c
+ (thunar_vfs_mime_database_get_info_locked),
+ (thunar_vfs_mime_database_get_infos_for_info_locked): Be sure to
+ always unalias MIME-types prior to returning them from the mime
+ database instance. This way we don't need to care for unaliasing
+ when determining the MIME-type comment or MIME-type icon.
+ * thunar-vfs/thunar-vfs-mime-database.{c,h},
+ thunar-vfs/thunar-vfs.symbols: Add new method
+ thunar_vfs_mime_database_get_infos_for_info() to the public API, to
+ allow other components to access the subclassing information.
+ * FAQ, Makefile.am: Add initial items for the list of frequently asked
+ questions.
+ * TODO: Remove obsolete items.
+
+2005-08-27 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-info.{c,h}: Add support to pass hints from the
+ ThunarVfsInfo to the upper layers. Use these hints to pass icon and
+ name information from .desktop files.
+ * thunar-vfs/thunar-vfs.symbols: Add new symbols.
+ * thunar/thunar-local-file.c: Use the new hints to display appropriate
+ names and icons for .desktop files.
+
+2005-08-27 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-trash.c: Use ThunarVfsMonitor instead of
+ polling the trash files/ directories manually.
+
+2005-08-27 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-mime-legacy.c: Add support for MIME-type
+ aliases and parents to the legacy implementation.
+ * configure.in.in, thunar-vfs/thunar-vfs-mime-database.c: Add support
+ for determining the MIME type from an extended attribute on SunOS
+ and Linux.
+
+2005-08-22 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-path-entry.c: Add drag support for the path entry icon.
+ * thunar/thunar-window-ui.xml, thunar/thunar-window.c: Add view
+ selection to the "View" menu.
+ * thunar/thunar-icon-view.c(thunar_icon_view_button_press_event): Use
+ gtk_accelerator_get_default_mod_mask() rather than hardcoding
+ GDK_CONTROL_MASK.
+ * thunar/thunar-details-view.c(thunar_details_view_button_press_event):
+ Add support to open the folder menu by right-clicking on an empty
+ area in the tree view.
+ * thunar/thunar-details-view.c: Work-around the problem that GtkTreeView
+ resets the search column whenever the model changes.
+ * thunar/thunar-standard-view.c(thunar_standard_view_grab_focus):
+ Properly forward any grab-focus request to the child view.
+ * thunar/thunar-marshal.list, thunar/Makefile.am,
+ thunar/thunar-text-renderer.c: Add initial cell editing support to
+ the text renderer. We'll need a multiline entry widget for the
+ icon view.
+ * thunar/thunar-details-view.c, thunar/thunar-icon-view.c,
+ thunar/thunar-standard-view.c, thunar/thunar-standard-view.h: Add
+ drag source support to the standard views.
+ * thunar/thunar-list-model.c: Don't implement GtkTreeDragSource, as
+ that's handled by ThunarStandardView now.
+
+2005-08-20 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-job.c(thunar_vfs_job_emit): Use G_VA_COPY to
+ copy variable argument lists in a portable manner.
+
+2005-08-19 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-standard-view.{c,h}: Allow derived classes to add
+ custom actions to the user interface.
+ * thunar/thunar-standard-view-ui.xml, thunar/thunar-window-ui.xml: Add
+ support for custom view item actions.
+ * thunar/Makefile.am, thunar/thunar-icon-view-ui.xml,
+ thunar/thunar-icon-view.c: Add support to arrange items within the
+ icon view.
+ * thunar/thunar-file.h, thunar/thunar-local-file.c: Provide an emblem
+ for the desktop folder in regular file listings.
+ * thunar/thunar-icon-view.c(thunar_icon_view_init): Add 3 pixel padding
+ in vertical direction to the icon cell, to allow better placement
+ of the emblems.
+ * thunar/thunar-icon-renderer.c(thunar_icon_renderer_render): Improve
+ the emblem placement and drawing code to work-around issues with
+ most icon themes, that don't provide emblems in the appropriate
+ sizes.
+
+2005-08-19 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-statusbar.c: Drop the dependency on X11.
+ * thunar/thunar-desktop-window.c: Include <gdk/gdkx.h> explicitly (since
+ that's no longer done by libexo -> libxfcegui4).
+
+2005-08-18 Benedikt Meurer <benny at xfce.org>
+
+ * thunarx/thunarx-gdk-pixbuf-extensions.{c,h}: Add new function
+ thunarx_gdk_pixbuf_spotlight(), which is used to create a
+ special icon for the Gtk prelight state.
+ * thunar/thunar-icon-renderer.{c,h}, thunar/Makefile.am,
+ thunar/thunar-details-view.c, po/POTFILES.in: Rename
+ ThunarDetailsViewIconRenderer to ThunarIconRenderer, as
+ it will also be used by the icon view now.
+ * thunar/thunar-text-renderer.{c,h}, thunar/Makefile.am,
+ thunar/thunar-details-view.c, po/POTFILES.in: Rename
+ ThunarDetailsViewTextRenderer to ThunarTextRenderer,
+ as it will also be used by the icon view now.
+ * thunar/thunar-icon-renderer.{c,h}, thunar/thunar-text-renderer.{c,h}:
+ Add required functionality to use these renderers with the new
+ ExoIconView.
+ * thunar/thunar-icon-view.c: Update to use the new ExoIconView class,
+ with the modified ThunarIconRenderer and ThunarTextRenderer.
+ * thunar/thunar-launcher.h, thunar/thunar-open-with-action.h: Use
+ G_GNUC_MALLOC instead of EXO_GNUC_MALLOC.
+ * thunar/thunar-window.c(thunar_window_init): Use the icon view by
+ default for testing now.
+ * configure.in.in: Bump version to 0.1.2.
+ * thunar/thunar-window.c(thunar_window_action_about): Switch to
+ GtkAboutDialog.
+
+2005-08-18 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-list-model.c(thunar_list_model_files_added): Speed up
+ inserts if the order of the files match the current sort order, which
+ is usually the case with sorting by name.
+
+2005-08-18 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-list-model.c(thunar_list_model_set_folder): Speed up
+ the removal of existing rows when changing folders. It's now O(n)
+ instead of O(n^2).
+ * thunar/thunar-list-model.c: The memory chunk used for the rows is
+ now an object attribute, rather than a global variable.
+
+2005-08-11 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-mime-application.c
+ (thunar_vfs_mime_application_new_from_desktop_id): Use "Name" instead
+ of "GenericName" for the application's name, as the "Name" usually
+ includes the project name in addition to the functional description
+ of the application, which provides better results than having several
+ applications named "Text Editor", etc.
+ * configure.in.in: Prefer Gamin over FAM to avoid the C++ dependency
+ if possible. Besides that, Gamin offers several other advantages over
+ FAM, which makes it better suitable to be used in Thunar.
+ * po/POTFILES.in: Add missing source files here, and remove obsolete
+ files.
+ * Thunar.desktop.in, Makefile.am, configure.in.in, po/POTFILES.in: Add
+ desktop file for Thunar.
+
+2005-08-10 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-jobs.{c,h}, thunar-vfs/Makefile.am,
+ thunar-vfs/thunar-vfs.{c,h}: Merge thunar-vfs-jobs.[ch] into
+ thunar-vfs.[ch].
+ * thunar-vfs/thunar-vfs-mime-database.c, thunar/thunar-local-folder.c,
+ thunar-vfs/thunar-vfs-monitor.{c,h}, thunar/thunar-local-file.c:
+ Rename thunar_vfs_monitor_get() to thunar_vfs_monitor_get_default().
+ * thunar-vfs/thunar-vfs-mime-database.{c,h},
+ thunar-vfs/thunar-vfs-mime.c, thunar-vfs/thunar-vfs-info.c,
+ thunar/thunar-launcher.c, thunar/thunar-open-with-action.c,
+ thunar/thunar-trash-folder.c: Rename thunar_vfs_mime_database_get()
+ to thunar_vfs_mime_database_get_default().
+ * thunar-vfs/, thunar/Makefile.am, tests/Makefile.am, configure.in.in:
+ Turn libthunar-vfs into a shared library, so we can use it in other
+ applications/plugins as well.
+
+2005-08-10 Benedikt Meurer <benny at xfce.org>
+
+ * configure.in.in: Bump version to 0.1.1.
+ * thunar-vfs/thunar-vfs-mime-info.h: Add list handling method
+ thunar_vfs_mime_info_list_free().
+ * thunar-vfs/thunar-vfs-mime-info.c(thunar_vfs_mime_info_get_comment):
+ Automatically generate a comment for 'application/x-extension-<EXT>'
+ types if no comment is found on the disk.
+ * thunar-vfs/thunar-vfs-mime-database.c
+ (thunar_vfs_mime_database_get_info_for_file): Automatically generate
+ an 'application/x-extension-<EXT>' type on the fly if all other
+ checks fail and the file name has an extension.
+ * thunar-vfs/thunar-vfs-mime-cache.c,
+ thunar-vfs/thunar-vfs-mime-legacy.c,
+ thunar-vfs/thunar-vfs-mime-database.c,
+ thunar-vfs/thunar-vfs-mime-provider.{c,h}: Add provider methods to
+ unalias mime types and to determine the parents of a given mime
+ type. Use these information to query additional MIME applications.
+
+2005-08-10 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-mime-database.c
+ (thunar_vfs_mime_database_get_default_application): Fall back to the
+ first available application if no explicit default application is
+ set by the user.
+ * thunar/thunar-file.{c,h}, thunar/thunar-launcher.c: Rename
+ thunar_file_list_dup() to thunar_file_list_copy() to get
+ consistent naming.
+ * thunar-vfs/thunar-vfs-mime-application.{c,h}: Add support methods
+ required for hashing.
+ * thunar-vfs/thunar-vfs-mime-application.{c,h}: Add methods to launch
+ an application on a given list of URIs on a specific screen. Implement
+ the Desktop Entry Specification 0.9.4, except for startup notification
+ support, which will be added soon.
+ * thunar/thunar-launcher.c, thunar/thunar-open-with-action.c: Allow
+ users to open files using the newly added ThunarVfsMimeApplication
+ functionality.
+
+2005-08-10 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-mime-database.c: According to the specification
+ the defaults.list may specify more than one desktop-id per MIME type,
+ where the first available application should be used.
+
+2005-08-10 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-mime-info.{c,h}: Add support methods required
+ for hashing.
+ * thunar-vfs/Makefile.am, thunar-vfs/thunar-vfs-mime-application.{c,h},
+ thunar-vfs/thunar-vfs-mime-database.{c,h}: Add initial MIME
+ application support to the MIME database.
+ * thunar/thunar-launcher.{c,h}: Add ThunarLauncher class, which provides
+ actions to launch files using appropriate MIME applications. The
+ ThunarLauncher class will also be used by the desktop view.
+ * thunar/thunar-open-with-action.{c,h}: Add special action class
+ ThunarOpenWithAction, which provides a GtkAction implementation, that
+ - when used as menu - displays a submenu with all available MIME
+ applications for a given file.
+ * thunar/thunar-window-ui.xml: Add a placeholder to include the launcher
+ support in the "File" menu on the main menu bar.
+ * thunar/thunar-standard-view.c, thunar/thunar-standard-view-ui.xml,
+ thunar/thunar-icon-view.c, thunar/thunar-details-view.c: Add file
+ launcher support based on the new ThunarLauncher class.
+ * thunar/thunar-file.{c,h}: Add methods to handle lists of ThunarFile
+ items easily.
+ * thunar/thunar-icon-factory.c(thunar_icon_factory_load_icon): Handle
+ the case of passing a NULL or empty name properly.
+
+2005-08-07 Benedikt Meurer <benny at xfce.org>
+
+ * configure.in.in, po/ja.po, THANKS: Add initial japanese translations,
+ thanks to Daichi Kawahata <daichik at users.sourceforge.net>. This
+ fixes #1004.
+
+2005-08-06 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-mime-legacy.c: Add support for the various
+ globs to the legacy mime provider.
+ * thunar-vfs/thunar-vfs-mime-database.c(thunar_vfs_mime_database_init):
+ Read atleast 64 bytes from every file to reliably detect text files.
+ * thunar-vfs/thunar-vfs-mime-database.c: When looking up the MIME info
+ for a given file, and the magic check doesn't return a match, we'll
+ return "application/x-executable" for every regular file that is
+ atleast 1 byte in size and has the executable bit set, as this is
+ more precise than "application/octet-stream".
+
+2005-08-06 Benedikt Meurer <benny at xfce.org>
+
+ * configure.in.in: Use AC_TRY_LINK() to avoid trouble with funky
+ systems.
+
+2005-08-06 Benedikt Meurer <benny at xfce.org>
+
+ * configure.in.in: Add some autoconf magic to get posix_madvise()
+ working with glibc.
+
+2005-08-06 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-info.{c,h}: Determine the display_name for
+ each file info.
+ * thunar-vfs/thunar-vfs-info.c(thunar_vfs_info_new_for_uri): Hand the
+ display name to thunar_vfs_mime_database_get_info_for_file(), so
+ we don't need to determine it again.
+ * thunar-vfs/thunar-vfs-uri.c(thunar_vfs_uri_get_display_name): Don't
+ use g_filename_display_basename(), because it may returned a somehow
+ translated file name.
+ * thunar/thunar-local-file.c: Use the display_name supplied with the
+ ThunarVfsInfo rather than determining it again.
+
+2005-08-06 Benedikt Meurer <benny at xfce.org>
+
+ * configure.in.in, thunar-vfs/thunar-vfs-mime-database.c: Add support
+ to query the MIME type stored in the extended attribute
+ "user.mime_type" as specified in the Shared MIME-info spec.
+ * docs/design/mime.xmi, docs/design/Makefile.am: Import description for
+ the ThunarVFS mime module.
+ * thunar-vfs/thunar-vfs-mime-cache.c(thunar_vfs_mime_cache_lookup_glob):
+ Use correct offset when iterating over the GlobEntries.
+ * thunar-vfs/thunar-vfs-mime-cache.c
+ (thunar_vfs_mime_cache_lookup_literal): Fix the offset returned for
+ the MIME-type name.
+
+2005-08-06 Benedikt Meurer <benny at xfce.org>
+
+ * configure.in.in: Check for fnmatch.h and sys/mman.h. Add checks for
+ working mmap and posix_madvise.
+ * configure.in.in, thunar-vfs/xdgmime/, thunar-vfs/Makefile.am: Drop
+ the xdgmime library.
+ * thunar-vfs/thunar-vfs-mime-cache.{c,h},
+ thunar-vfs/thunar-vfs-mime-database.{c,h},
+ thunar-vfs/thunar-vfs-mime-info.{c,h},
+ thunar-vfs/thunar-vfs-mime-legacy.{c,h},
+ thunar-vfs/thunar-vfs-mime-provider.{c,h},
+ thunar-vfs/thunar-vfs-mime.{c,h}: Import thread-safe replacement for
+ the xdgmime library. Works only with very recent shared-mime-info
+ right now.
+ * thunar-vfs/Makefile.am: Add new files to the build framework.
+ * thunar-vfs/thunar-vfs-job.c, thunar-vfs/thunar-vfs-mime.c,
+ thunar-vfs/thunar-vfs.c, thunar-vfs/thunar-vfs.h, thunar/main.c: Add
+ ability to shutdown the VFS library.
+
+2005-08-04 Benedikt Meurer <benny at xfce.org>
+
+ * configure.in.in: Add "r" in front of the revision for the version
+ string.
+ * thunar-vfs/thunar-vfs-job.{c,h}, thunar-vfs/thunar-vfs-listdir-job.c,
+ thunar-vfs/thunar-vfs-mime.{c,h}, thunar-vfs/thunar-vfs-unlink-job.c,
+ thunar-vfs/thunar-vfs-uri.{c,h}, thunar-vfs/thunar-vfs-transfer-job.c,
+ thunar/thunar-progress-dialog.c: Use ExoObject as base class for
+ ThunarVfsJob, ThunarVfsMimeInfo and ThunarVfsUri, which were fun-
+ damental types previously. ExoObject does exactly what we need
+ here, without any additional overhead. In particular, the ref-
+ counting is atomic, even with GLib < 2.7.4.
+ * configure.in.in: Connect greek translations, previously committed
+ by Stavros Giannouris <stavrosg2002 at freemail.gr>.
+ * thunar/thunar-file.c: Use exo-noops for the defaults where possible
+ instead of providing several fallback implementations.
+ * configure.in.in: Bump version number to 0.1.0.
+
+2005-08-03 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/main.c(main): Connect the translation domain and setup the
+ application name.
+ * thunar/thunar-standard-view.c(thunar_standard_view_init): Setup the
+ translation domain for the action group.
+ * thunar/thunar-window.c(thunar_window_init): Setup the translation
+ domain for the action group.
+ * po/hu.po, configure.in.in, THANKS: Add hungarian translations, thanks
+ to Szervác Attila <sas at 321.hu>.
+
+2005-08-03 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-folder.c(thunar_folder_files_removed): Update docu-
+ mentation.
+ * thunar/thunar-local-folder.c(thunar_local_folder_file_destroy): In-
+ voke the "files-removed" signal when a file in this folder is de-
+ stroyed.
+ * thunar/thunar-list-model.c: Do not connect the "destroy" signal of
+ ThunarFile anymore, but instead we rely on the folder to emit
+ "files-removed" appropriately.
+ * thunar/thunar-list-model.c(thunar_list_model_class_init): Increase
+ the number of preallocated rows.
+ * po/, Makefile.am, configure.in.in: Add i18n support.
+
+2005-08-03 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-details-view-text-renderer.c: Calculating the approxi-
+ mate sizes based on the font metrics requires way too much additional
+ data memory (because Pango loads the whole fontset for this calcu-
+ lation), so we base our calculation on a sample text instead.
+
+2005-08-03 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-job.c(thunar_vfs_job_emit_valist): Lower the
+ Job signal priority to increase the responsiveness of the user
+ interface.
+
+2005-08-03 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-details-view-text-renderer.{c,h}: Fast text cell
+ renderer, which provides less accurate cell area size calculation.
+ * thunar/Makefile.am: Add ThunarDetailsViewTextRenderer to the build
+ framework.
+ * thunar/thunar-details-view.c: Use the new text renderer.
+
+2005-08-02 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-monitor.c: Implement the
+ thunar_vfs_monitor_feed() method in a reentrant way.
+
+2005-08-02 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-list-model.c: Add sort_by_name() calls missing from the
+ initial patch.
+
+2005-08-02 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-local-file.c(thunar_local_file_monitor): Actually
+ reload the file info when the VFS monitor notices a change.
+ * thunar/thunar-list-model.c: Apply Jens Luedickes patch to add
+ sub-sorting on the filename.
+ * thunar-vfs/thunar-vfs-monitor.c: Add missing header files.
+ * configure.in.in: Drop the kevent related checks.
+
+2005-08-02 Benedikt Meurer <benny at xfce.org>
+
+ * configure.in.in: Add check for the FAM/Gamin library.
+ * thunar-vfs/Makefile.am, thunar-vfs/thunar-vfs-monitor.{c,h}: Redesign
+ the VFS monitor to use FAM if available. It also provides an interface
+ to feed the monitor with external events, which will be used by the
+ VFS jobs, which know for sure that they changed/created/deleted a
+ file. The interface is not yet implemented.
+ * thunar/thunar-file.{c,h}: Add a virtual method reload(), which allows
+ external entities to trigger a reload on a ThunarFile.
+ * thunar/thunar-local-file.c: Implement the reload() method.
+ * thunar/thunar-local-file.c, thunar/thunar-local-folder.c: Add support
+ for the new VFS monitor.
+
+2005-08-01 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-list-model.{c,h}: Add new method
+ thunar_list_model_get_paths_for_pattern(), which is used to
+ generate a list of GtkTreePaths for all rows matching a
+ certain pattern.
+ * thunar/thunar-details-view.c, thunar/thunar-icon-view.c,
+ thunar/thunar-standard-view.h: Add virtual methods select_all(),
+ unselect_all() and select_path(), and implement them in the details
+ and icon views.
+ * thunar/thunar-standard-view-ui.xml, thunar/thunar-standard-view.c,
+ thunar/thunar-window-ui.xml: Add actions "select-all" and
+ "select-by-pattern" to the "Edit" menu.
+ * thunar-vfs/thunar-vfs-trash.c: Cosmetic fix.
+
+2005-07-31 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-local-folder.c: Properly disconnect all signal handlers
+ prior to releasing the job.
+ * TODO: Remove completed items. Add note about the copy&paste behaviour
+ within the same folder.
+ * thunar-vfs/thunar-vfs-transfer-job.c
+ (thunar_vfs_transfer_job_insert_base): Fix the check whether source
+ and target directory are equal.
+ * thunar-vfs/thunar-vfs-user.c(thunar_vfs_user_local_class_init): Fix
+ a crash, where the thunar_vfs_local_user_parent_class wasn't initia-
+ lized properly.
+ * thunar/thunar-location-buttons.c: Allow users to automatically enter
+ directories while dragging a text/uri-list over one of the folder
+ buttons.
+
+2005-07-31 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-transfer-job.c: Include <time.h> since we
+ use the time() library call. g_chmod() will be introduced with GLib
+ 2.8.0, so adjust the check.
+
+2005-07-31 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-clipboard-manager.c
+ (thunar_clipboard_manager_contents_received): Properly clear the
+ CLIPBOARD selection after a paste on "cutted data". Manually trigger
+ an "owner-changed" after a successfully initiating the paste operation
+ if either the Xserver or the GTK+ version doesn't support the XFixes
+ extension.
+ * thunar-vfs/thunar-vfs-transfer-job.c, configure.in.in: Add work-around
+ for systems that lack the lchmod() system call.
+ * thunar/thunar-standard-view.{c,h}: Query all actions from the group
+ when initializing the view to speed up access later.
+ * thunar/thunar-standard-view-ui.xml, thunar/thunar-standard-view.c:
+ Add a "paste-into-folder" action, which is only available from the
+ context menu.
+ * autogen.sh, configure.in.in: Adopt the version numbering scheme from
+ libexo and ditch the date.
+
+2005-07-31 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-clipboard-manager.{c,h}: Implement paste support based
+ on the recent API additions to ThunarApplication.
+ * thunar/thunar-standard-view.c(thunar_standard_view_action_paste):
+ Implement the paste action based on the new functionality in
+ ThunarClipboardManager.
+
+2005-07-31 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-unlink-job.c: Allocate dirent buffer for
+ the job instead of the stack on every thunar_vfs_unlink_item_collect
+ call to reduce the stack overhead for the threads.
+ * thunar-vfs/thunar-vfs-interactive-job.c: Check the cancellation
+ state prior to invoking the "ask" signal.
+ * thunar-vfs/thunar-vfs-interactive-job.{c,h}: Reduce the number
+ of "percent" signal invokations to one per second to reduce the
+ overall load on the main thread.
+ * thunar-vfs/thunar-vfs-job.c(thunar_vfs_job_emit_valist): Lower
+ the priority of inter-thread signals.
+ * thunar/thunar-progress-dialog.c(thunar_progress_dialog_init): Use
+ an ellipsizing label for the progress info message to avoid
+ automatic resizing of the progress dialog.
+ * thunar/thunar-application.{c,h}: Add "copy" and "move" actions. Drop
+ "unlink" action, will be replaced with "trash" and "empty-trash-bin"
+ later.
+ * thunar-vfs/thunar-vfs-transfer-job.{c,h}: Import the
+ ThunarVfsTransferJob class, which can only handle 'file:'-URI
+ transfers right now.
+
+2005-07-30 Benedikt Meurer <benny at xfce.org>
+
+ * thunarx/thunarx-gtk-extensions.{c,h}, thunarx/Makefile.am: Add a
+ helper function thunarx_gtk_action_group_set_action_sensitive(),
+ which is used to easily change the sensitivity of a GtkAction
+ within a GtkActionGroup.
+ * thunar/thunar-window.c, thunar/thunar-standard-view.c: Use the newly
+ added thunarx_gtk_action_group_set_action_sensitive() method.
+ * thunar/thunar-window-ui.xml, thunar/thunar-window.c: Add new actions
+ "open-new-window" and "close-all-windows".
+ * thunar/thunar-application.{c,h}: Add support for progress dialogs
+ based on the ThunarVfsInteractiveJob. Turn the ThunarApplication
+ class into a single-instance class. Add support to open new windows
+ and querying the list of currently open windows.
+ * thunar/thunar-progress-dialog.{c,h}: GtkWindow already provides the
+ "icon-name" property (since Gtk 2.6), no need to duplicate that.
+ * thunar/main.c: Switch to ThunarApplication.
+
+2005-07-30 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-clipboard-manager.c, thunar/thunar-favourites-view.c,
+ thunar/thunar-location-buttons.c, thunar/thunar-statusbar.c: Fix
+ GCC 4.0 cast warnings, thanks to Jeff Franks <jcfranks at tpg.com.au>.
+
+2005-07-30 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-job.c: Emit signals independant of the
+ cancellation state of the current job.
+ * thunar-vfs/thunar-vfs-trash.{c,h}: Add a way to query the absolute
+ path to the .trashinfo file. Support relative paths and not just
+ filenames for several trash methods.
+ * thunar-vfs/thunar-vfs-interactive-job.{c,h}: Import the
+ ThunarVfsInteractiveJob class, which provides the base for all
+ jobs, that require extended user interaction.
+ * thunar-vfs/Makefile.am, thunar-vfs/thunar-vfs-marshal.list: Add
+ required marshallers, which are not provided by GObject out of
+ the box.
+ * thunar-vfs/thunar-vfs-unlink-job.{c,h}: Import ThunarVfsUnlinkJob
+ class, which is used to unlink a bunch of local or trashed files.
+ * thunar-vfs/thunar-vfs-jobs.{c,h}: Add public interface to the
+ various jobs provided by Thunar-VFS.
+ * thunar-vfs/thunar-vfs.h: Remove the listdir job from the public
+ interface. Add the jobs and the interactive job headers.
+ * thunar/thunar-progress-dialog.{c,h}: Add ThunarProgressDialog class,
+ which provides a dialog, that monitors the progress of an interactive
+ and supports the required user interaction.
+ * thunar/Makefile.am, thunar/thunar-local-folder.c: Catch up with
+ Thunar-VFS changes.
+
+2005-07-29 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-job.{c,h}, thunar-vfs/thunar-vfs-listdir-job.c:
+ Move "error" signal to the ThunarVfsJob class. Make proper use of the
+ virtual finalize method.
+ * thunar/thunar-local-folder.c: Catch up with the ThunarVfsJob
+ interface changes.
+
+2005-07-29 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-job.{c,h}: Add a parameter spec for
+ ThunarVfsJob and derived types. Add support methods to handle
+ GValues easily.
+ * thunar-vfs/thunar-vfs-listdir-job.{c,h}, thunar-vfs/Makefile.am,
+ thunar-vfs/thunar-vfs.h, thunar/thunar-local-folder.c: Rename the
+ ThunarVfsJobListdir class to ThunarVfsListdirJob.
+
+2005-07-25 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-sysdep.{c,h}: Add _thunar_vfs_sysdep_readdir()
+ as a portable, thread-safe readdir replacement.
+ * thunar-vfs/thunar-vfs-job-listdir.c(thunar_vfs_job_listdir_execute):
+ Use _thunar_vfs_sysdep_readdir().
+ * thunar-vfs/Makefile.am: Add the sysdep component to the build
+ framework.
+
+2005-07-24 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-desktop-view.c,
+ thunar/thunar-details-view-icon-renderer.c,
+ thunar/thunar-favourites-model.c, thunar/thunar-file.{c,h},
+ thunar/thunar-list-model.c, thunar/thunar-location-buttons.c,
+ thunar/thunar-path-entry.c, thunar/thunar-properties-dialog.c,
+ thunar/thunar-statusbar.c, thunar/thunar-window.c: Do not hardcode
+ the default icon factory in thunar_file_load_icon. Instead the icon
+ factory is now a parameter to that function, which permits for proper
+ multi-screen support.
+
+2005-07-24 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-icon-factory.c(thunar_icon_factory_load_icon): Handle
+ the case where no XSETTINGS manager is running on one of the
+ connected screens.
+
+2005-07-24 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-file.c(thunar_file_load_icon): Actually cache the result
+ of an icon lookup.
+ * thunarx/, thunarx/Makefile.am, configure.in.in: Add "thunarx"
+ namespace, which contains extensions to existing frameworks and
+ various helper functions that don't fit anywhere else.
+ * thunarx/thunarx-gdk-pixbuf-extensions.{c,h}: Add a method to colorize
+ a GdkPixbuf to a given GdkColor.
+ * thunar/main.c, thunar/thunar-desktop-model.{c,h}, thunar/Makefile.am,
+ thunar/thunar-desktop-window.{c,h}, thunar/thunar-desktop-view.{c,h}:
+ Add proof-of-concept for the desktop support.
+
+2005-07-23 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-list-model.c: Fix incorrect ThunarVfsMimeInfo -> GObject
+ casts.
+
+2005-07-22 Benedikt Meurer <benny at xfce.org>
+
+ * configure.in.in: Add -O0 if debugging is enabled.
+ * thunar-vfs/thunar-vfs-job.{c,h}, thunar/thunar-local-folder.c,
+ thunar-vfs/thunar-vfs-job-listdir.{c,h}: Do the ThunarVfsJob
+ communication based on GSignals to provide more flexibility for
+ the various upcoming jobs.
+
+2005-07-22 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-clipboard-manager.c, thunar/thunar-standard-view.c,
+ thunar/thunar-window.c: Remove duplicate "const"s.
+
+2005-07-22 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-uri.{c,h}: Use "const" parameters if possible
+ to give more hints to the compiler.
+ * thunar-vfs/thunar-vfs-uri.{c,h}: Add thunar_vfs_uri_get_md5sum()
+ method to calculate the MD5 digest of an URI.
+ * thunar/thunar-local-file.c: Preallocate 512 instances of the
+ ThunarLocalFile class to speed up the creation of new objects.
+ * thunar/thunar-details-view.c(thunar_details_view_init): Do not
+ allow reordering of treeview columns.
+
+2005-07-22 Benedikt Meurer <benny at xfce.org>
+
+ * configure.in.in: Add --disable-debug option, which can be used to
+ disable all kinds of debugging support, and thereby may speed up
+ the whole application in certain cases.
+ * thunar/thunar-statusbar.c: Use the foreground color from the selected
+ style instead of hard coding black for the animation.
+
+2005-07-21 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-favourites-view.c: Add support for the LINK DnD action.
+ * thunar/thunar-location-buttons.c(thunar_location_buttons_init): Use
+ GDK_ACTION_LINK instead of GDK_ACTION_COPY to avoid accident copying
+ of directories.
+ * thunar/thunar-statusbar.{c,h}: Implement the ThunarNavigator
+ interface.
+ * thunar/thunar-statusbar.{c,h}: Add a "loading" indicator to the
+ statusbar. Add support to dnd from the shortcut indicator to the
+ favourites list.
+ * thunar/thunar-window.c(thunar_window_init): Connect the statusbar as
+ a navigator. Forward the "loading" property from the view to the
+ statusbar.
+ * configure.in.in: Check for additional headers. Add optional
+ dependency on cairo.
+
+2005-07-20 Benedikt Meurer <benny at xfce.org>
+
+ * configure.in.in: Rename to "thunar" again, as this is now the main
+ development line.
+ * thunar/thunar-standard-view-ui.xml, thunar/thunar-standard-view.{c,h}:
+ Add context-menu support to the standard view's action framework.
+ * thunar/thunar-details-view.c: Implement context-menu support for
+ right-button click and "Menu"/"<Shift>F10" keyboard shortcuts.
+
+2005-07-18 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-job-listdir.c(thunar_vfs_job_listdir_execute):
+ Always ignore the "." and ".." entries for directories.
+ * thunar/thunar-location-bar.{c,h}: Add virtual method accept_focus(),
+ which tries to transfer keyboard focus to the location bar if it
+ provides a way for the user to enter the location as text. Else
+ the method returns FALSE and the window will open a separate dialog.
+ * thunar/thunar-location-buttons.c, thunar/thunar-location-entry.c:
+ Implement the accept_focus() method on the ThunarLocationBar
+ interface appropriately.
+ * thunar/thunar-window-ui.xml, thunar/thunar-window.c: Make the
+ location bar configurable using the action system.
+
+2005-07-17 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-path-entry.c: Do not handle the focus-out-event here,
+ as it's better to handle it in the upper layers.
+ * thunar/thunar-path-entry.c(thunar_path_entry_set_current_file): Set
+ the cursor to the end and queue a redraw on the whole widget.
+ * thunar/thunar-window.c: Include <thunar/thunar-location-entry.h>.
+ * thunar/thunar-location-entry.{c,h}, thunar/Makefile.am: Add
+ ThunarLocationEntry, which implements ThunarLocationBar using a
+ ThunarPathEntry widget.
+
+2005-07-17 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-path-entry.{c,h}: Add ThunarPathEntry class, which
+ implements a widget to which the user can enter paths. The auto
+ completion support is not yet provided.
+ * thunar/thunar-location-dialog.{c,h}: Add ThunarLocationDialog class,
+ which provides a "Open Location"-dialog similar to the one found in
+ GtkFileChooser.
+ * thunar/Makefile.am: Add new classes to the build framework.
+ * thunar/thunar-window-ui.xml, thunar/thunar-window.c: Add "Open
+ Location" action to the window, which will bring up a
+ ThunarLocationDialog.
+
+2005-07-17 Benedikt Meurer <benny at xfce.org>
+
+ * configure.in.in: Use "thunar-threaded" instead of "Thunar-threaded".
+ * tests/test-thunar-vfs-volume-bsd.c(main): Get this test working again.
+
+2005-07-17 Benedikt Meurer <benny at xfce.org>
+
+ * TODO: Add note to based the ThunarVfsJob communication on the GSignal
+ mechanism.
+ * configure.in.in: Set tarname to be "Thunar-threaded".
+ * thunar-vfs/thunar-vfs-info.{c,h}: Let thunar_vfs_info_list_free()
+ return NULL.
+ * thunar-vfs/thunar-vfs-job-listdir.c: Invoke the callback every two
+ seconds, so for large directories, the user does not need to wait for
+ the whole folder to be loaded. Also sort the item names prior to
+ loading the infos.
+ * thunar/thunar-local-folder.c: Support partial loading, as implemented
+ for ThunarVfsJobListdir.
+
+2005-07-17 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-volume-sysv.c: Fix compile warning with wrong
+ parameters to thunar_vfs_volume_manager_sysv_get_volume_by_info().
+ This fixes bug #1083.
+
+2005-07-17 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/xdgmime/: Import the XDG mime implementation with the
+ patches from libexo.
+ * thunar-vfs/: The ThunarVfsInfo framework is now thread-safe, using
+ the ThunarVfsMime framework provided by ThunarVFS.
+ * thunar/: Turn Thunar into a threaded application.
+
+2005-07-16 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-folder.{c,h}: Add a "files-removed" signal, which can
+ be used by ThunarFolder implementation to solve the reload problem,
+ and probably other problems as well (like asynchronous loading).
+ * thunar/thunar-local-folder.c(thunar_local_folder_rescan): Use
+ "files-removed" instead of destroying the no longer present files,
+ so we don't accidently terminate other stuff here.
+ * thunar/thunar-list-model.c: Handle the "files-removed" signal of the
+ ThunarFolder.
+
+2005-07-15 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-details-view.c: Unselect all selected items if the
+ user clicks on an empty area of the treeview and neither Control
+ nor Shift is active.
+ * thunar/thunar-properties-dialog.{c,h}: Add the first draft for the
+ ThunarPropertiesDialog class, which implements a properties dialog for
+ a single file.
+ * thunar/Makefile.am: Add ThunarPropertiesDialog to the build framework.
+ * thunar/thunar-standard-view-ui.xml, thunar/thunar-standard-view.c,
+ thunar/thunar-window-ui.xml: Add the "properties" action to the
+ menu structure, which displays a properties dialog for the selected
+ file.
+
+2005-07-15 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-volume.{c,h}: Extend the ThunarVfsVolumeManager
+ interface to be able to query the ThunarVfsVolume for a given
+ ThunarVfsInfo.
+ * thunar-vfs/thunar-vfs-volume-{bsd,sysv}.c: Catch up with the latest
+ ThunarVfsVolumeManager changes.
+ * thunar-vfs/thunar-vfs-volume-bsd.c(thunar_vfs_volume_bsd_new): Add
+ support for SCSI direct access devices.
+ * thunar/thunar-file.{c,h}: Add thunar_file_get_volume() to be able
+ to query the ThunarVfsVolume for a given ThunarFile, if possible.
+ * thunar/thunar-local-file.c: Implement the newly added get_volume()
+ method based on the ThunarVfsVolumeManager.
+ * thunar/thunar-list-model.c: Use the new volume related functionality
+ to display the free space of the currently active directory in the
+ statusbar.
+
+2005-07-15 Benedikt Meurer <benny at xfce.org>
+
+ * docs/papers/HackingOnThunar.odt: Improve the "Hacking on Thunar"
+ guide.
+ * thunar-vfs/thunar-vfs-volume.{c,h}: Change the icon lookup mechanism
+ to return an icon name instead of a GtkIconInfo object. Also allow
+ the ThunarVfsVolume implementation to specify a custom icon by
+ overriding the lookup_icon_name() method. Add a new method
+ get_free_space() which can be used to determine the amount of free
+ space on a given volume.
+ * thunar-vfs/thunar-vfs-volume-bsd.c: Catch up with the changes to
+ ThunarVfsVolume.
+ * thunar/thunar-favourites-model.c: Cache icons for the favourites and
+ reload them whenever the file/volume changes. Adopt the new icon
+ lookup mechanism for ThunarVfsVolume.
+
+2005-07-14 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-standard-view.c(thunar_standard_view_init): Add frame
+ shadow to the standard views.
+
+2005-07-13 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-clipboard-manager.c: Fake an "owner-changed" event
+ for the clipboard if either GDK or the Xserver do not support the
+ XFixes extension.
+ * thunar/thunar-standard-view.c: Monitor the associated clipboard for
+ changes. Enable the "paste" action only if the both the current
+ directory is writable and the clipboard contents are pastable.
+
+2005-07-13 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-user.c(thunar_vfs_user_manager_init): Use
+ direct hashing instead of int hashing.
+ * thunar/thunar-local-file.c(thunar_local_file_get_emblem_names): If
+ the file cannot be written, return the "noread" emblem as well.
+ * thunar/thunar-file.{c,h}: Add can_execute(), can_read() and
+ can_write() methods, and a default implementation, so not every
+ class derived from ThunarFile needs to implement these methods of
+ its own.
+ * thunar/thunar-standard-view.c(thunar_standard_view_selection_changed):
+ Update the "cut" and "paste" actions depending on whether the
+ current directory is writable.
+
+2005-07-12 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-vfs-uri.c(thunar_vfs_uri_list_to_string): Use GString
+ to build the URI list string.
+ * thunar/thunar-vfs-uri.{c,h}: Add a method thunar_vfs_uri_list_copy()
+ which duplicates a list of ThunarVfsURIs.
+ * thunar-vfs/thunar-vfs-volume-bsd.c(thunar_vfs_volume_bsd_finalize):
+ Properly remove the update timer here.
+ * thunar/thunar-list-model.c(thunar_list_model_remove): Perform the
+ GtkTreeModel delete operation prior to notifying the "num-files"
+ property to make sure the selection of the view is updated before
+ the standard-view requests the statusbar text for the selection.
+ * TODO: Add another two issues.
+ * thunar/thunar-clipboard-manager.{c,h}, thunar/Makefile.am: Add the new
+ ThunarClipboardManager class, which does the interaction with the
+ clipboard.
+ * thunar/thunar-standard-view.{c,h}: Implement Copy/Cut operations based
+ on the newly added ThunarClipboardManager class.
+ * thunar/thunar-standard-view-ui.xml, thunar/thunar-window-ui.xml: Add
+ clipboard operations to the "Edit" menu.
+
+2005-07-12 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-window.c: Add a readonly property "ui-manager" to the
+ ThunarWindow and use property binding to sync the UI manager with
+ the ThunarView.
+
+2005-07-12 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-standard-view-ui.xml, thunar/thunar-window-ui.xml:
+ Specify the name in addition to the action.
+
+2005-07-11 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-navigator.c(thunar_navigator_class_init): Use
+ EXO_PARAM_READWRITE instead of G_PARAM_READWRITE.
+ * thunar/thunar-list-model.c: Fix several bugs related to incorrect
+ signal registration/removal in the hidden files handling.
+ * thunar/thunar-view.{c,h}: Add a new "ui-manager" property, which is
+ set by the surrounding window for the view in question. The view in
+ turn can hook its own actions - and thereby menu and toolbar items -
+ into the ui manager, using GtkUIManager's merging capabilities.
+ * thunar/thunar-window.c(thunar_window_init): Tell the main view about
+ our UI manager.
+ * thunar/thunar-window-ui.xml, thunar/thunar-standard-view-ui.xml,
+ thunar/thunar-standard-view.{c,h}, thunar/Makefile.am: Add initial
+ support for menu merging to the standard view class - and thereby to
+ the icon and details view. You can now control the "show-hidden"
+ property of the main view's model from the menu bar.
+
+2005-07-10 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-list-model.{c,h}: Readd the get_statusbar_text() method.
+ * thunar/thunar-favourites-view.c(thunar_favourites_view_row_activated):
+ Make sure the activated row is not the separator row, as calling
+ thunar_navigator_change_directory() with NULL for the directory
+ parameter will lead to a crash.
+ * thunar/thunar-standard-view.{c,h}, thunar/thunar-details-view.{c,h},
+ thunar/thunar-icon-view.{c,h}, thunar/Makefile.am: Add a new abstract
+ base class ThunarStandardView, which is inherited by ThunarIconView
+ and ThunarDetailsView. ThunarStandardView itself is derived from
+ GtkScrolledWindow. This change was made to reduce the amount of
+ duplicated code in ThunarIconView and ThunarDetailsView, and to
+ workaround the problem that Gtk style properties don't pickup the
+ custom properties for certain widgets once you have a derived class.
+ * thunar/thunar-statusbar.{c,h}: Revert to the previous ThunarStatusbar
+ implementation, which has a single "text" property that is bound to
+ the "statusbar-text" property of the active view.
+ * thunar/thunar-view.{c,h}: ThunarView now inherits (in terms of
+ interface inheritance) from ThunarNavigator, which will allow for
+ unified handling in ThunarWindow. In addition, the ThunarView now
+ provides a "loading" and a "statusbar-text" property (both readonly)
+ to put the view back in control of the loading process.
+
+2005-07-07 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-uri.c: Be sure to register the type in a
+ thread-safe manner.
+
+2005-07-05 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-favourites-model.{c,h}, thunar/thunar-favourites-view.c:
+ Also provide a GtkWindow instance to the action list generator, so
+ actions can fire dialogs if necessary.
+
+2005-07-05 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-favourites-model.{c,h}, thunar/thunar-favourites-view.c:
+ Add possibility to remove user-defined shortcuts from the list.
+
+2005-07-03 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-favourites-model.c(thunar_favourites_model_get_value):
+ The ThunarVfsVolume interface does no longer provide the "name"
+ property.
+ * thunar-vfs/thunar-vfs-volume-bsd.c: Read the label from the ISO9660
+ volume descriptor block whenever a new medium is inserted and use
+ this label as name.
+
+2005-07-02 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-window-ui.xml, thunar/Makefile.am,
+ thunar/thunar-window.c: The UI description for the ThunarWindow is
+ now placed in a separate XML file for easier editing, and compiled
+ into the binary using the exo-csource utility.
+
+2005-07-02 Benedikt Meurer <benny at xfce.org>
+
+ * configure.in.in: Add checks for functions used in the user module.
+ * thunar-vfs/thunar-vfs-user.{c,h}: Add a user module to the VFS
+ library, which is extensible and performs some caching to reduce
+ the overhead caused by the underlying NSS implementation.
+ * docs/papers/HackingOnThunar.odt: Add comments about the newly added
+ ThunarVfsUser module.
+ * thunar-vfs/thunar-vfs-info.h: Add ThunarVfsUserId and ThunarVfsGroupId
+ typedefs.
+ * thunar-vfs/thunar-vfs.h, thunar-vfs/Makefile.am: Add the new
+ ThunarVfsUser module to the build framework.
+ * thunar/thunar-file.{c,h}, thunar/thunar-local-file.c,
+ thunar/thunar-trash-file.c: Add two new methods to the ThunarFile
+ class - get_group() and get_user() - and add an implementation of
+ these methods to the local and trash backends.
+
+2005-06-29 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-details-view-icon-renderer.c
+ (thunar_details_view_icon_renderer_render): Add support to render
+ the primary emblem of the given file.
+ * thunar/thunar-file.{c,h}: Add support to query the list of emblems
+ for a given ThunarFile.
+ * thunar/thunar-local-file.c: Implement the ThunarFile emblem support
+ for symbolic links.
+
+2005-06-29 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-details-view-icon-renderer.{c,h}: Add a custom icon
+ renderer for the details view.
+ * thunar/thunar-list-model.{c,h}: Allow consumers of this model to
+ query the file for a given row.
+ * thunar/Makefile.am: Add the new ThunarDetailsViewIconRenderer class
+ to the build framework.
+ * thunar/thunar-details-view.c(thunar_details_view_init): Use the custom
+ icon renderer instead of the generic pixbuf renderer provided by Gtk+.
+
+2005-06-29 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-location-buttons.c: Make this behave like GtkFileChooser
+ again.
+
+2005-06-28 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-volume-bsd.c, thunar-vfs/thunar-vfs-volume.c:
+ Remove the GObject properties from the ThunarVfsVolume interface.
+
+2005-06-26 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-info.{c,h}: Do not automatically determine the
+ link target for ThunarVfsInfo objects. Instead, we'll add a method
+ to ThunarVfsInfo later, so modules can do this on-demand. This speeds
+ up loading directories with lots of symlinks within.
+ * TODO: Remove the ThunarVfsInfo symlink item.
+
+2005-06-26 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-uri.{c,h}: Don't use a GObject for the
+ ThunarVfsURI class. GObject is really overhead here, as we don't need
+ anything of whats provided by GObject.
+ * TODO: Add note about missing GValue handling for ThunarVfsURI.
+ * TODO: Add note to fix ThunarVfsInfo to not implicitly query the
+ link target.
+ * thunar-vfs/*.[ch], thunar/*.[ch]: Use thunar_vfs_uri_unref() and
+ thunar_vfs_uri_ref() instead of g_object_unref() and g_object_ref(),
+ as ThunarVfsURI is no longer a GObject derived type.
+ * thunar/thunar-window.c: Make loading new directories look and feel
+ "smoother". Still not perfect.
+
+2005-06-25 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-local-file.c: Use a static variable for the VFS monitor
+ instead of a class variable, that never gets freed with static types.
+ * thunar/thunar-favourites-model.c: Watch the files in the favourites
+ list for changes, so that folders that no longer exists are
+ automatically removed from the list.
+
+2005-06-25 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-navigator.c(thunar_navigator_get_type): Do not require
+ derived classes to inherit GtkWidget. This enables us to let arbitrary
+ classes implement the ThunarNavigator interface and therefore reduce
+ the amount of hardcoded knowledge in ThunarWindow.
+ * thunar/thunar-side-pane.c(thunar_side_pane_get_type): Require derived
+ classes to inhert GtkWidget.
+
+2005-06-25 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-details-view.c(thunar_details_view_init): Use a
+ GtkCellRendererText instead of an ExoCellRendererEllipsizedText
+ for the name column.
+ * thunar/thunar-details-view.c, thunar/thunar-icon-view.c: Set proper
+ ATK name and descriptions here.
+
+2005-06-25 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/main.c(main): Disable thread support for now, as it's not used
+ and just slows down stuff.
+ * thunar/thunar-file.{c,h}, thunar/thunar-local-file.{c,h},
+ thunar/thunar-local-folder.c, thunar/thunar-trash-file.c: Watch local
+ directories and trashed files for changes.
+
+2005-06-25 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-location-buttons.c
+ (thunar_location_buttons_set_current_directory): Don't display the
+ real root node - the 'computer:'-node - if a sub-node is active. So
+ currently we have four distinctive possible roots for the location
+ buttons bar, which are the home directory of the user, the file system
+ root node ('file:/'), the trash root ('trash:') and the real computer
+ root node ('computer:'), which are checked in the given order.
+ * thunar/thunar-list-model.c(thunar_list_model_get_value): Use slightly
+ larger icons for the details view.
+ * thunar/thunar-window.c: Add preliminary menu support with 'Close'
+ and 'Go up'.
+
+2005-06-24 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-uri.{c,h}: Add support for the 'computer://'
+ URI.
+ * thunar/thunar-trash-folder.c, thunar/thunar-local-folder.c,
+ thunar/thunar-folder.c: Drop the GObject properties, as they are
+ mostly useless here.
+ * thunar/main.c(main): Use thunar_vfs_uri_new() for the optional
+ command line parameter to be able to open arbitrary URIs from the
+ command line.
+ * thunar/Makefile.am: Add new class ThunarComputerFolder to the build
+ framework.
+ * thunar/thunar-computer-folder.{c,h}: Add ThunarComputerFolder class,
+ which implements the 'computer:' URI. This vfolder is the root of all
+ other root folders, currently 'file:/' and 'trash:'.
+ * thunar/thunar-file.{c,h}, thunar/thunar-folder.c,
+ thunar/thunar-list-model.c, thunar/thunar-local-file.c,
+ thunar/thunar-local-folder.c, thunar/thunar-statusbar.c,
+ thunar/thunar-trash-file.c, thunar/thunar-trash-folder.c: Add support
+ for the 'computer:' vfolder as overall root node. Rearrange the
+ get_size() method to be able to support objects for which no size
+ is known, currently vfolders and directories in general. The virtual
+ get_mime_info() method now automatically takes a reference on the
+ returned object for the caller.
+
+2005-06-24 Benedikt Meurer <benny at xfce.org>
+
+ * configure.in.in: Add check for localtime_r.
+ * thunar/thunar-file.{c,h}: Add support to query accessed, changed and
+ modified dates of ThunarFiles.
+ * thunar/thunar-local-file.c, thunar/thunar-trash-file.c: Implement
+ the virtual get_date() method.
+ * thunar/thunar-list-model.{c,h}: Add new columns accessed date,
+ modified date and mime type. Fix the sorting for the mime comment
+ column.
+ * thunar/thunar-details-view.c: Display type and date modified columns
+ as well.
+
+2005-06-23 Benedikt Meurer <benny at xfce.org>
+
+ * docs/papers/HackingOnThunar.odt, docs/papers/Makefile.am,
+ configure.in.in, docs/Makefile.am: Add initial draft of the "Hacking
+ on Thunar" paper.
+
+2005-06-22 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-local-file.c, thunar/thunar-local-folder.c: If for
+ some reason the constructor fails, we need to make sure to handle
+ the floating reference correctly, therefore we call gtk_object_sink()
+ instead of g_object_unref() in this case now.
+
+2005-06-22 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-file.c, thunar/thunar-local-folder.c: Add an assertion
+ to verify that an object has a floating reference before we call
+ gtk_object_sink() on it.
+
+2005-06-22 Benedikt Meurer <benny at xfce.org>
+
+ * TODO: Addd new TODO items and remove solved issues.
+ * thunar/Makefile.am: Add new class ThunarTrashFile to the build
+ framework.
+ * thunar-vfs/thunar-vfs-monitor.c(thunar_vfs_monitor_add_info): Do not
+ use kevent for symlinks, it's way easier to watch them using regular
+ polling. This shouldn't be a problem anyways, as watching symlinks
+ is not a common case.
+ * thunar-vfs/thunar-vfs-trash.{c,h}: Add functionality to handle trash:
+ URIs and determine the real path for a file in a particular trash
+ can.
+ * thunar-vfs/thunar-vfs-trash.c(thunar_vfs_trash_manager_get_trashes):
+ Fix a typo where the order of arguments to the g_list_prepend()
+ function was wrong.
+ * thunar/thunar-trash-file.{c,h}: Add a ThunarTrashFile class, which
+ represents a trashed file.
+ * thunar/thunar-trash-folder.c: Add support for listing the contents
+ of the various trash cans, and also provide a simple proxy mechanism,
+ that automatically forwards the constructor invokation to the
+ ThunarTrashFile class if required. The trash can handling must be
+ improved, see bug #1027.
+
+2005-06-21 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-window.c(thunar_window_set_current_directory): Use
+ thunar_file_open_as_folder() to open new folders.
+ * thunar/thunar-folder.{c,h}: ThunarFolder is now an interface, which
+ can be implemented in different ways.
+ * thunar/thunar-local-folder.{c,h}: The previous ThunarFolder is now
+ named ThunarLocalFolder.
+ * thunar/thunar-file.{c,h}: Add thunar_file_open_as_folder() virtual
+ method, which allows the ThunarFile implementation to choose an
+ appropriate ThunarFolder implementation and thereby removes the
+ need for the surrounding modules to "guess" the correct ThunarFolder.
+ * thunar/thunar-local-file.c: Implement the open_as_folder() method
+ for local files by simply instantiating a ThunarLocalFolder on the
+ file in question.
+ * thunar/thunar-trash-folder.{c,h}: The ThunarTrashFile class is now
+ named ThunarTrashFolder as it really represents the trash toplevel
+ folder. It also implements the ThunarFolder interface now. The real
+ folder implementation is missing currently.
+ * thunar/Makefile.am: Sync the build framework with the changes
+ described above.
+
+2005-06-20 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-monitor.c(thunar_vfs_monitor_event): Remove
+ unused variables.
+ * thunar/thunar-folder.c: Apply the same optimization concerning signal
+ id lookups and closure generations as done with ThunarListModel
+ earlier.
+ * thunar/thunar-folder.c: Actually react to events on the corresponding
+ file. We still need a mode in which we'll handle errors in async
+ folder reloads.
+ * thunar/thunar-local-file.c: Drop the cached MIME type whenever the
+ file changes. The MIME type will be recalculated on demand when
+ needed.
+ * thunar/thunar-icon-factory.c: Instead of binding to the icon theme
+ instance's "changed" signal and risking that somebody else already
+ registered a handler earlier, we use a signal emission hook now, which
+ is garantied to be fired before any of the signal handlers are
+ invoked. See the code for details and additional comments.
+
+2005-06-20 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-local-file.h: Add missing THUNAR_LOCAL_FILE_GET_CLASS().
+ * configure.in.in: Add checks for kqueue() and required headers.
+ * thunar-vfs/thunar-vfs-info.{c,h}: thunar_vfs_info_update() is now
+ part of the public API as it's used by monitor and will be used
+ by the ThunarLocalFile implementation later as well.
+ * thunar-vfs/thunar-vfs-monitor.{c,h}: Add implementation for most
+ of the ThunarVfsMonitor. The current implementation uses kqueue()
+ if available with a fallback to regular polling.
+
+2005-06-20 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-list-model.c: Instead of resolving the ids for the
+ "destroy" and "changed" signals on ThunarFile everytime we need to
+ register it, we query the signal id in the constructor and remember
+ it. In addition, instead of creating a closure for every signal
+ registration on a ThunarFile, we create a closure for "changed" and
+ a closure for "destroy" in the constructor and reuse that closure
+ everytime we need to register a signal handler.
+ * thunar/thunar-list-model.c: Watch hidden files for "destroy" condition
+ as well.
+ * thunar/thunar-trash-file.c: Emit the "changed" signal whenever the
+ "empty" property on the trash manager changes.
+ * thunar/thunar-file.{c,h}: Add a method thunar_file_changed(), which
+ is used by derived classes to emit the "changed" signal on a given
+ ThunarFile.
+
+2005-06-19 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-trash.{c,h}: Import first implementation of a
+ trash manager into thunar-vfs. Does currently only support the "home
+ trash", but will be extended to use the volume manager in order to
+ support foreign trashes as well.
+ * thunar-vfs/Makefile.am: Add the trash manager to the build framework.
+ * thunar-vfs/thunar-vfs.h: Include the trash manager header.
+ * thunar/thunar-trash-file.c: Make use of the experimental trash
+ manager to display the proper icon depending on whether the trash
+ is full or empty.
+
+2005-06-19 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-statusbar.c, thunar/thunar-list-model.c,
+ thunar/thunar-favourites-model.c: Fix bug, where Thunar crashed when
+ NULL was returned for a mime info.
+ * thunar/thunar-file.{c,h}: Turn this into an abstract base class, which
+ can be implemented in different ways.
+ * thunar/thunar-local-file.{c,h}: Implementation of the abstract
+ ThunarFile class for local files handled by the 'file:///' URI
+ scheme.
+ * thunar/thunar-trash-file.{c,h}: Implementation of the abstract
+ ThunarFile class for trashed files handled by the 'trash:///' URI
+ scheme and the trash can itself. This is currently only a boilerplate
+ and waiting for the trash backend to show up.
+ * thunar/Makefile.am: Add new classes to the build framework.
+
+2005-06-17 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-details-view.c(thunar_details_view_init): Use the
+ ellipsizing text renderer for the name column and get the sizing
+ correct.
+
+2005-06-17 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-view.{c,h}: Further improve the interface to ease the
+ implementation and reduce the amount of duplicated code in the view
+ implementations.
+ * thunar/thunar-details-view.{c,h}: Add a first implementation for a
+ details view.
+ * thunar/thunar-icon-view.c: Catch up with the changes to ThunarView.
+ * thunar/thunar-window.c: Test the new ThunarDetailsView.
+ * thunar/Makefile.am: Add ThunarDetailsView class to the build
+ framework.
+
+2005-06-17 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-view.{c,h}: Adjust the interface for views to be more
+ like the FilerView interface, which makes things slightly easier and
+ adds more flexibility for the statusbar. Also the "list-model"
+ property is now named "model", which is the easiest way for both
+ ExoIconView and GtkTreeView, and it's safe to name it that way, as
+ the ThunarView interface is the only way to change models anyways.
+ * thunar/thunar-list-model.{c,h}: Drop the statusbar text generator.
+ It's now handled completely within the ThunarStatusbar class, which
+ provides more flexibility.
+ * thunar/thunar-statusbar.{c,h}: Each statusbar instance is now
+ associated with a ThunarView instance and automatically updates the
+ status text according to the view.
+ * thunar/thunar-icon-view.c: Implement modified ThunarView interface,
+ which makes things very easy here for now.
+ * thunar/thunar-window.c: Catch up with the changes to the other
+ classes.
+
+2005-06-15 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-icon-factory.c: Implement the recently used list using
+ a circular buffer. This saves us from having to memmove() the list
+ content on every icon lookup.
+ * thunar/thunar-window.c(thunar_window_set_current_directory): Use
+ a simple optimization when loading new folders into a view. See the
+ code comments for details about the trick.
+
+2005-06-14 Benedikt Meurer <benny at xfce.org>
+
+ * configure.in.in: Depend on GLib 2.6 for now.
+
+2005-06-14 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-volume-sysv.{c,h}: Add no-op implementation
+ to make it possible to compile Thunar on non-BSD systems again.
+ * configure.in.in, thunar-vfs/Makefile.am,
+ thunar-vfs/thunar-vfs-volume.c, thunar-vfs/thunar-vfs-volume-bsd.c:
+ Add a rather hacky way to support different system flavours based
+ on AC_CONFIG_LINKS(). Needs to be replaced by a real solution at
+ some time.
+ * TODO: Add note about the wacky AC_CONFIG_LINKS() hacks mentioned
+ above.
+
+2005-06-14 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-uri.c(thunar_vfs_uri_new_for_path): Add some
+ code to automatically remove trailing slashes from path names, which
+ would otherwise confuse the whole file manager.
+ * thunar/thunar-fallback-icon.{h,png}, thunar/Makefile.am: The fallback
+ icon is now stored in a C file and automatically generated at compile
+ time if maintainer mode is enabled, while dist tarballs will ship the
+ generated C file.
+ * thunar/thunar-icon-factory.{c,h}: Add new class ThunarIconFactory,
+ which provides caching of themed icons. The basic concept is based
+ on the NautilusIconFactory class, but the implementation is simpler
+ and faster than the implementation found in Nautilus.
+ * thunar/thunar-file.c: Use the new ThunarIconFactory class and the
+ new exo_mime_info_lookup_icon_name() method to lookup and cache icons
+ for files. This speeds up folder loading quite a lot.
+ * docs/design/overview.xmi: Add ThunarIconFactory diagram.
+
+2005-06-13 Benedikt Meurer <benny at xfce.org>
+
+ * configure.in.in: Add header checks required for the BSD volume
+ manager implementation.
+ * thunar/thunar-window.c: Display the current folder's special name.
+ * thunar/thunar-file.{c,h}: Add property "special-name", which contains
+ the special name of a given file if any, else it contains the same
+ value as the "display-name" property.
+ * thunar/thunar-location-buttons.c: Use the home directory as root.
+ Don't display a label for the 'Filesystem' node, similar to how it
+ is done with GtkFileChooser.
+ * thunar-vfs/thunar-vfs-volume.{c,h},
+ thunar-vfs/thunar-vfs-volume-bsd.c: Try more advanced features, like
+ detecting whether a medium is present for a given volume. This is
+ currently just testing, based on what is provided by the BSD
+ interface. The final design may look different, maybe even a
+ D-BUS based thunar-volume-manager service, which can be run with
+ special permissions in order to be able to query device stats and
+ mount volumes.
+ * thunar/thunar-favourites-model.c: Use the new features provided by
+ the volume manager to dynamically display volumes when a medium is
+ inserted.
+
+2005-06-12 Benedikt Meurer <benny at xfce.org>
+
+ * docs/design/overview.xmi: Refined the basic ideas for the volume
+ manager, which will provide core functionality required by the
+ trash system. The ThunarVfsVolume and ThunarVfsVolumeManager concepts
+ are interfaces now, which will be implemented by the backend (usually
+ one backend per operating system family).
+ * tests/data/test-thunar-vfs-volume-bsd.fstab, tests/data/Makefile.am,
+ tests/test-thunar-vfs-volume-bsd.c, tests/Makefile.am: Add test case
+ for the BSD specific implementation of the ThunarVfsVolumeManager
+ module.
+ * tests/test-thunar-vfs-uri.c: Fix copyright and includes.
+ * TODO: Add item about possible improvements of the BSD specific
+ volume manager implementation.
+ * thunar-vfs/Makefile.am, thunar-vfs/thunar-vfs.h, configure.in.in: Add
+ new classes and interfaces to the build framework.
+ * thunar-vfs/thunar-vfs-volume.{c,h}: Import the basic interfaces to
+ the volume manager module, with a minimum set of methods and signals,
+ which will be extended later.
+ * thunar-vfs/thunar-vfs-volume-bsd.{c,h}: Add first try of an
+ implementation of the the volume manager interfaces for BSD systems.
+
+2005-06-11 Benedikt Meurer <benny at xfce.org>
+
+ * docs/design/overview.xmi: Extend the ThunarVfsURI functionality.
+ * thunar-vfs/thunar-vfs-uri.{c,h}: Add host handling to ThunarVfsURI.
+ Add support for different URI schemes, currently 'file://' and
+ 'trash://'.
+ * thunar/thunar-favourites-model.c, thunar/thunar-favourites-view.c,
+ thunar/thunar-location-buttons.c: Sync with the little API change
+ to ThunarVfsURI.
+ * tests/Makefile.am: Delete core files on `make clean'.
+ * tests/test-thunar-vfs-uri.c(main): Add test cases for the trash:
+ scheme.
+
+2005-06-11 Benedikt Meurer <benny at xfce.org>
+
+ * configure.in.in, Makefile.am, tests/: Import first test program for
+ ThunarVfsURI validation.
+
+2005-06-11 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-uri.{c,h}: Add functions to ease the handling
+ of URI lists, specifically to automatically parse and generate
+ string representations of URI lists that conform to the
+ text/uri-list mime type.
+ * thunar/thunar-location-buttons.c
+ (thunar_location_buttons_drag_data_get): Use new ThunarVfsURI list
+ handling functions instead.
+ * thunar/thunar-favourites-model.c
+ (thunar_favourites_model_file_destroy): Handle the case where a
+ directory referenced by a favourite disappears from the backend media.
+ * thunar/thunar-favourites-model.c
+ (thunar_favourites_model_file_changed): Remove a given favourite if
+ the system notices that the favourite's file no longer refers to a
+ directory.
+ * thunar/thunar-favourites-model.c(thunar_favourites_model_init): Do
+ not re-add favourites initially, that do not refer to a directory.
+ * thunar/thunar-favourites-model.{c,h}: Add a new method
+ thunar_favourites_model_add(), which is used by the
+ ThunarFavouritesView to add new favourites to the list and
+ automatically sync the changes with the Gtk+ bookmarks list.
+ * thunar/thunar-favourites-view.c: Handle "text/uri-list" drops,
+ adding new favourites as appropriate. Add note, that the initial
+ idea is based on the GtkFileChooser written by Red Hat for Gtk+.
+ * TODO: Remove the 'text/uri-list'-handling for ThunarFavouritesView.
+ Add item concerning the Trash in the favourites list.
+
+2005-06-10 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-favourites-model.{c,h},
+ thunar/thunar-favourites-view.c: Add initial drag&drop-support for
+ the favourites view. This is currently limited to rearranging
+ favourites in the list. Support for adding new favourites by
+ dropping text/uri-list's will be added soon. Also, the
+ ThunarFavouritesModel also saves changes made by the user back to
+ the .gtk-bookmarks file now.
+ * TODO: Add note about missing text/uri-list support in
+ ThunarFavouritesView, and missing .gtk-bookmarks monitor support.
+
+2005-06-08 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-favourites-model.c: Use a signed gint for the number
+ of favourites to be compatible with the Gtk+ API.
+
+2005-06-08 Benedikt Meurer <benny at xfce.org>
+
+ * autogen.sh: Better determine the file dynamically, which is used to
+ query the sandbox revision.
+
+2005-06-08 Benedikt Meurer <benny at xfce.org>
+
+ * autogen.sh, configure.in.in: Add build number to the version during
+ development.
+
+2005-06-08 Benedikt Meurer <benny at xfce.org>
+
+ * docs/design/overview.xmi: All navigational UI elements in a
+ ThunarWindow now implement the ThunarNavigator interface, which
+ defines the "current-directory" property and the "change-directory"
+ signal. See the ThunarNavigator gtk-docs for details about the
+ behaviour.
+ * thunar/thunar-navigator.{h,c}: Provide source code for the current
+ ThunarNavigator interface.
+ * thunar/thunar-side-pane.{h,c}, thunar/thunar-favourites-pane.c:
+ Changed to use ThunarNavigator instead. ThunarSidePane is currently
+ an empty interface.
+ * thunar-vfs/thunar-vfs-uri.{h,c}: Add a thunar_vfs_uri_to_string()
+ method, which transform a ThunarVfsURI into a file:// uri.
+ * thunar/thunar-location-bar.{h,c}: Provide source code for the
+ ThunarLocationBar interface, which extends the ThunarNavigator
+ interface. The ThunarLocationBar interface does not add anything new
+ currently, but that will change in future revisions.
+ * thunar/thunar-location-buttons.{c,h}: Add location path buttons
+ implementation of the ThunarLocationBar interface. The layouting
+ code was mostly copied from gtkpathbar.c, which was initially
+ written by Jonathan Blandford. The implementation is not complete
+ yet, and the layouting code is still very buggy.
+ * TODO: Add a bunch of TODO items for Thunar 1.0.
+
+2005-06-07 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-list-model.c(thunar_list_model_set_folder): Fix a bug
+ where the signals for the ThunarFolder weren't connected if the
+ folder contained no files initially.
+ * thunar/thunar-side-pane.c(thunar_side_pane_class_init): Fix typo in
+ the documentation.
+ * thunar/thunar-file.{c,h}: Add new method thunar_file_get_parent() to
+ figure out the parent directory for a given ThunarFile.
+
+2005-06-06 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-uri.c(thunar_vfs_uri_finalize): Use the
+ parent_class variable set by G_DEFINE_TYPE instead of dynamically
+ querying the parent class on-demand.
+ * thunar/thunar-application.c, thunar/thunar-desktop-view.c,
+ thunar/thunar-favourites-model.c, thunar/thunar-favourites-pane.c,
+ thunar/thunar-favourites-view.c, thunar/thunar-file.c,
+ thunar/thunar-folder.c, thunar/thunar-icon-view.c,
+ thunar/thunar-preferences.c, thunar/thunar-statusbar.c,
+ thunar/thunar-window.c: G_DEFINE_TYPE and G_DEFINE_TYPE_WITH_CODE
+ already generate a parent_class variable, so we don't need to do
+ that manually as well. It looks like this was added with GLib 2.4.x
+ and I somehow missed that change. Thanks to Jeff Franks for pointing
+ this out.
+
+2005-06-05 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-uri.c: Fix a bug in the thunar_vfs_uri_parent()
+ and thunar_vfs_uri_relative() methods, where the name attribute of
+ the newly created objects wasn't initialized properly.
+ * thunar-vfs/thunar-vfs-uri.c(thunar_vfs_uri_equal): Instead of always
+ comparing the full path of both URIs, a simple optimization was
+ introduced, which checks the basenames first, if they are equal,
+ it'll check whether the dirnames have the same length, and as the
+ last fallback, it'll compare the dirnames char by char. This way we
+ can optimize the common case - with GHashTable - that two URIs
+ differ.
+
+2005-06-05 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-favourites-model.{c,h}: Add new method
+ thunar_favourites_model_file_for_iter() to be able to easily
+ determine the ThunarFile for a given favourite.
+ * thunar/thunar-file.c(thunar_file_class_init): Fix a type in the
+ "changed" signal definition.
+ * thunar/thunar-file.c(thunar_file_finalize): Fix a bug where the
+ ThunarVfsURI was freed first, and then an attempt was made to remove
+ the ThunarFile from the file_cache using the previously freed
+ ThunarVfsURI as key.
+ * thunar/thunar-view.{c,h}: Add the "change-directory" signal, which
+ is emitted by ThunarIconView and ThunarListView whenever the user
+ double clicks a folder (or otherwise requests a directory change
+ from within the view).
+ * thunar/thunar-list-model.{c,h}: Add a thunar_list_model_new()
+ default constructor, which does not take a ThunarFolder instance.
+ * thunar/thunar-icon-view.c: Implement the "change-directory" signal
+ in ThunarView.
+ * thunar/thunar-favourites-view.c, thunar/thunar-favourites-pane.c:
+ Double-clicking a favourite now opens the associated directory (using
+ the "current-directory" property, which is linked to the
+ "current-directory" property of ThunarWindow).
+ * thunar/thunar-window.{c,h}: Add a "current-directory" property,
+ which describes the directory currently displayed in this window.
+ Remove the thunar_window_new_with_folder() constructor and replace
+ it by a default constructor. Automatically synchronize the current
+ directory with both the view and the side pane.
+ * thunar/main.c(main): ThunarWindow now uses ThunarFile to refer to
+ the active directory and so we do here as well.
+
+2005-06-05 Benedikt Meurer <benny at xfce.org>
+
+ * configure.in.in: Bumped version to 0.0.2.
+ * docs/design/overview.xmi: Fix some issues, see the code changes
+ below.
+ * thunar-vfs/Makefile.am: Don't install the thunar-vfs library for
+ now. Makes debugging easier.
+ * thunar/Makefile.am: Add new classes to the build framework.
+ * thunar/thunar-view.{c,h}: Implement first draft for the ThunarView
+ interface, which is to beimplemented by all views.
+ * thunar/thunar-icon-view.{c,h}: Implement first draft for the
+ ThunarIconView class, which implements the ThunarView interface to
+ provide an icon view of the current folder.
+ * thunar/thunar-statusbar.{c,h}: Add basic implementation of the
+ ThunarStatusbar class. In order to avoid an association between the
+ ThunarView or ThunarListModel classes and the ThunarStatusbar and in
+ order to provide more flexibility about what is to be displayed in
+ the statusbar, we use a write-only property "text" for the
+ ThunarStatusbar, which can be connected to another string property
+ using the ExoBindings module.
+ * thunar/thunar-list-model.{c,h}: The number of rows should be a gint
+ rather than a guint, as that's what GtkTreeModel uses. Add a new
+ method thunar_list_model_get_statusbar_text(), that will be used by
+ both ThunarIconView and ThunarListView to determine the proper
+ statusbar text that should be displayed for a given selection. Add a
+ new column THUNAR_LIST_MODEL_COLUMN_TYPE, which provides a string
+ representation of the MIME-Type (using the comment set for the
+ MIME-Type). The sort function is not yet implemented tho.
+
+2005-06-05 Benedikt Meurer <benny at xfce.org>
+
+ * thunar/thunar-favourites-model.c(thunar_favourites_model_get_value):
+ The display_name's of ThunarFile's can be considered static (as the
+ name cannot change during the ThunarFile's life-time), so we don't
+ need to take a copy here.
+ * thunar/thunar-list-model.c(thunar_list_model_get_value): Same here,
+ the ThunarFile's display_name is static.
+ * thunar/thunar-file.c: Add the simple caching on the ThunarFile
+ level. If a ThunarFile for the same ThunarVfsURI is requested
+ multiple times, the same ThunarFile instance will be used, instead
+ of allocating a new one. Future versions will extend this scheme
+ using a smarter caching mechanism.
+ * thunar/thunar-side-pane.{c,h}: Add implementation for the
+ ThunarSidePane interface, which is to be implemented by all widgets
+ that can be placed on the right side. The interface currently
+ includes only the "current-directory" property, which is the most
+ important communication mechanism. We'll need some way to pass in
+ other per-window settings here (e.g. "show-hidden" and such).
+ Hopefully somebody will pick up the preferences task soon.
+ * thunar/thunar-favourites-model.{c,h},
+ thunar/thunar-favourites-view.{c,h},
+ thunar/thunar-favourites-pane.{c,h}: More work on the
+ ThunarFavourites module. The ThunarFavouritesPane class implements
+ the ThunarSidePane interface and acts as a bridge to the underlying
+ ThunarFavouritesView.
+ * thunar/thunar-window.c: Test the new ThunarFavouritesPane class.
+ * thunar/Makefile.am: Add the new classes to the build framework.
+
+2005-06-05 Benedikt Meurer <benny at xfce.org>
+
+ * thunar-vfs/thunar-vfs-uri.{c,h}: Add thunar_vfs_uri_new()
+ constructor, that creates a new ThunarVfsURI object from a resource
+ identifier string.
+ * thunar-vfs/thunar-vfs-uri.{c,h}: Add thunar_vfs_uri_is_home(), which
+ determines whether a given ThunarVfsURI referes to the home
+ directory of the current user.
+ * thunar/thunar-file.c(thunar_file_load_icon): Pay attention to
+ special icons for the home folder and the file system root.
+ * thunar/thunar-favourites-model.{c,h},
+ thunar/thunar-favourites-view.{c,h}: Add experimental
+ ThunarFavouritesModel and ThunarFavouritesView classes, that will be
+ used in the implementation of the ThunarFavouritesPane class. Other
+ than with the mockups, I've skipped the 'Desktop' favourite for now,
+ as it does not make much sense. The usablity team should evaluate
+ this at some time.
+ * thunar/thunar-window.c: Add ThunarFavouritesView on the left side
+ for testing.
+ * thunar/Makefile.am: Add ThunarFavouritesModel and
+ ThunarFavouritesView to the build system.
+
+2005-06-04 Benedikt Meurer <benny at xfce.org>
+
+ * configure.in.in: Fix copyright texts.
+ * docs/design/overview.xmi: Add is_local() and is_root() for
+ ThunarVfsURI, which were missing.
+ * thunar-vfs/thunar-vfs-uri.{c,h}: Implemented the missing
+ thunar_vfs_uri_is_root() and thunar_vfs_uri_parent() methods.
+
+2005-06-04 Benedikt Meurer <benny at xfce.org>
+
+ * COPYING.LIB: Add license text for the thunar-vfs library (which is
+ licensed under the LGPL).
+ * HACKING: Add information for people that plan to hack on Thunar.
+ * AUTHORS: Add Jeff Franks.
+ * THANKS: Import the THANKS template.
+ * README: Add some basic information about Thunar. Needs more details.
+ * docs/design/overview.xmi: Import the current overview diagram for
+ Thunar.
+ * Makefile.am, configure.in.in, docs/Makefile.am,
+ docs/design/Makefile.am: Include the docs/ tree with the build
+ framework.
+ * configure.in.in, thunar/Makefile.am, thunar-vfs/Makefile.am: Link
+ against GThread (not yet required from what is coded so far).
+ * configure.in.in: Check for several required header files.
+ * thunar-vfs/Makefile.am, thunar-vfs/thunar-vfs-info.{c,h},
+ thunar-vfs/thunar-vfs-monitor.{c,h},
+ thunar-vfs/thunar-vfs-uri.{c,h}, thunar-vfs/thunar-vfs-util.{c,h},
+ thunar-vfs/thunar-vfs.h: Add some experimental source code to
+ implement parts of the VFS module.
+ * thunar/fallback-icon.h, thunar/fallback-icon.png: Import the
+ fallback icon.
+ * thunar/thunar-application.{c,h}: Import Jeff's ThunarApplication
+ boilerplate (adjusting style as required).
+ * thunar/thunar-desktop-view.{c,h}: Boilerplate for the
+ ThunarDesktopView class with the very basic requirements.
+ * thunar/thunar-file.{c,h}, thunar/thunar-folder.{c,h}: Experimental
+ implementation of ThunarFile and ThunarFolder based on the
+ experimental source for the VFS module.
+ * thunar/thunar-list-model.{c,h}: Sample implementation of the
+ ThunarListModel class, based on an earlier implementation found in
+ Filer.
+ * thunar/thunar-preferences.{c,h}: Template for the ThunarPreferences
+ class.
+ * thunar/thunar-window.{c,h}: Quick-and-dirty ThunarWindow
+ implementation to be able to roughly test the ThunarListModel class.
+ * thunar/main.c: Add code to start a single ThunarWindow.
+ * autogen.sh: Copyright fixes. Substitute date to make it easier to
+ identify snapshots during the early development stages.
+
+2005-05-30 Benedikt Meurer <benny at xfce.org>
+
+ * Initial import.
+
+# vi:set ts=8 sw=8 noet ai nocindent:
Added: desktop/trunk/thunar/branches/upstream/current/FAQ
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/FAQ 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/FAQ 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,66 @@
+This file contains a list of frequently asked questions about Thunar and the
+appropriate answers to these questions.
+
+
+1. What is Thunar?
+==================
+
+ Thunar is a fast and easy-to-use file manager for the X Window System, with a
+ special focus on the Xfce Desktop Environment.
+
+
+2. Why doesn't Thunar execute files marked as executable?
+=========================================================
+
+ For security reasons Thunar only executes files of type application/x-desktop,
+ application/x-executable and application/x-shellscript. For desktop files
+ the execution feature will only be enabled if the desktop file is of type
+ Application and a valid Exec line is given. For the other types the feature
+ is available if the file is marked executable for the current user.
+
+ Also note that for application/x-executable and application/x-shellscript, the
+ types of the file don't really need to match these types exactly, but it is
+ suffice if the detected type has a parent that matches one of the two types
+ listed above, or if the MIME-type is an alias for one of the above.
+
+
+3. Where does Thunar store the metadata associated with files?
+==============================================================
+
+ Thunar associates various settings with files/folders, which we call metadata.
+ This metadata for all files is stored in tdb database file, which is called
+ the metafile. The database file is stored in
+
+ $XDG_CACHE_HOME/Thunar/metafile.tdb
+
+ and can be examined using the tdbtool, which is part of the Thunar
+ distribution (located in the tdb/ subdirectory).
+
+
+4. Where does Thunar store its preferences?
+===========================================
+
+ Thunar stores the user configurable preferences in a tdb database file, which
+ is located at
+
+ $XDG_CONFIG_HOME/Thunar/preferences.tdb
+
+ and can be examined using the tdbtool, which is part of the Thunar
+ distribution (located in the tdb/ subdirectory).
+
+
+5. How to use mouse gestures in Thunar?
+=======================================
+
+ Thunar currently features basic support for so called "mouse gestures" in its
+ icon view. You can use these "mouse gestures" by holding down the middle
+ mouse button (usually the mouse wheel) while the mouse pointer is on the
+ background area of the icon view component (any area that is not covered by
+ an icon or a text). Now you can move the cursor into four directions to
+ perform certain actions, which are described below.
+
+ * Left - opens the previous visited folder
+ * Up - opens the parent folder
+ * Right - opens the next visited folder
+ * Down - cancels the gesture action
+
Added: desktop/trunk/thunar/branches/upstream/current/HACKING
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/HACKING 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/HACKING 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,70 @@
+Bug tracking system
+===================
+
+Thunar uses the Xfce bug tracking system at http://bugzilla.xfce.org/,
+hosted and maintained by the Xfce project.
+
+
+Patches
+=======
+
+Please submit patches to the Xfce bug tracking system or to the thunar-dev
+mailinglist. Your patch should be in unified diff format (the -u option
+to GNU diff) and it must comply with the coding style described below.
+
+Please send a patch against a recent version of this package. Patches
+against the Subversion trunk branch are most preferable. You can always
+access the trunk branch from
+
+ http://svn.foo-projects.org/svn/xfce/thunar/trunk
+
+or using an installed Subversion client
+
+ svn co http://svn.foo-projects.org/svn/xfce/thunar/trunk thunar
+
+
+Feature requests
+================
+
+Please file feature requests to the Xfce bug tracking system
+(http://buzilla.xfce.org, product Thunar) with a Severity of
+enhancement. Make sure that your feature request wasn't reported
+already before; requesting a feature several times won't increase
+the changed that it gets added!
+
+
+Coding Style
+============
+
+ - GNU coding conventions, with GLib-like extensions, mostly the same
+ as GTK+.
+ - Always expand tabs. This differs from the GNU suggestion, but it is
+ necessary to be independent from a given tab setting.
+ - Do NOT ever misuse debugging macros like g_return_val_if_fail() or
+ g_return_if_fail() to control program flow. They are solely useful
+ to discover bugs, the final binary won't include code for these
+ statements, and so any use of these macros to control program
+ flow presents a bug!
+ - Do NOT follow the philosophy "If it works, it's right" that most
+ other open source projects follow, instead Thunar's philosophy is
+ "It doesn't work unless it's right". Think carefully of what you want
+ to do, don't just fire up your favourite editor and start hacking
+ in the hope that it will evolve into something useful one day.
+ - Maintainability goes over performance. If you have to choose between
+ a maintainable and a fast solution, always prefer the former, as it's
+ quite easy to optimize well-designed modules, but very hard and costly
+ to make spaghetti-code readable.
+ - Write ChangeLog entries. Whenever you commit a change or send a patch,
+ write a good entry per change to the ChangeLog file, see the libexo
+ ChangeLog for the exact format; it's very important to be descriptive
+ and correct here, else you'll loose your commit bits or your patches
+ won't be considered for inclusion.
+ - Use GObject whenever possible. Object-oriented design and programming
+ makes it easier to separate functionality and also aids in verification
+ and testing, and GObject provides a very solid base.
+
+
+Release process
+===============
+
+Yet to be defined!
Added: desktop/trunk/thunar/branches/upstream/current/INSTALL
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/INSTALL 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/INSTALL 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,231 @@
+Installation Instructions
+*************************
+
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004 Free
+Software Foundation, Inc.
+
+This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
+
+Basic Installation
+==================
+
+These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+ It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring. (Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.)
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+ The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'. You only need
+`configure.ac' if you want to change it or regenerate `configure' using
+a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes awhile. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+Some systems require unusual options for compilation or linking that the
+`configure' script does not know about. Run `./configure --help' for
+details on some of the pertinent environment variables.
+
+ You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment. Here
+is an example:
+
+ ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
+
+ *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not support the `VPATH'
+variable, you have to compile the package for one architecture at a
+time in the source code directory. After you have installed the
+package for one architecture, use `make distclean' before reconfiguring
+for another architecture.
+
+Installation Names
+==================
+
+By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PREFIX'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PREFIX', the package will
+use PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files. Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+There may be some features `configure' cannot figure out automatically,
+but needs to determine by the type of machine the package will run on.
+Usually, assuming the package is built to be run on the _same_
+architectures, `configure' can figure that out, but if it prints a
+message saying it cannot guess the machine type, give it the
+`--build=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+ CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+ OS KERNEL-OS
+
+ See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+ If you are _building_ compiler tools for cross-compiling, you should
+use the `--target=TYPE' option to select the type of system they will
+produce code for.
+
+ If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+If you want to set default values for `configure' scripts to share, you
+can create a site shell script called `config.site' that gives default
+values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+Variables not defined in a site shell script can be set in the
+environment passed to `configure'. However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost. In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'. For example:
+
+ ./configure CC=/usr/local2/bin/gcc
+
+will cause the specified gcc to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+`configure' Invocation
+======================
+
+`configure' recognizes the following options to control how it operates.
+
+`--help'
+`-h'
+ Print a summary of the options to `configure', and exit.
+
+`--version'
+`-V'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`--cache-file=FILE'
+ Enable the cache: use and save the results of the tests in FILE,
+ traditionally `config.cache'. FILE defaults to `/dev/null' to
+ disable caching.
+
+`--config-cache'
+`-C'
+ Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made. To
+ suppress all normal output, redirect it to `/dev/null' (any error
+ messages will still be shown).
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`configure' also accepts some other, not widely useful, options. Run
+`configure --help' for more details.
+
Added: desktop/trunk/thunar/branches/upstream/current/Makefile.am
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/Makefile.am 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/Makefile.am 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,47 @@
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+
+SUBDIRS = \
+ icons \
+ pixmaps \
+ po \
+ tdb \
+ thunar-vfs \
+ thunarx \
+ thunar \
+ tests \
+ docs \
+ examples
+
+AUTOMAKE_OPTIONS = \
+ 1.8 \
+ dist-bzip2
+
+distclean-local:
+ rm -rf *.spec *.cache *~
+
+rpm: dist
+ rpmbuild -ta $(PACKAGE)-$(VERSION).tar.gz
+ @rm -f $(PACKAGE)-$(VERSION).tar.gz
+
+desktopdir = $(datadir)/applications
+desktop_in_files = Thunar.desktop.in
+desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
+ at INTLTOOL_DESKTOP_RULE@
+
+EXTRA_DIST = \
+ FAQ \
+ HACKING \
+ intltool-extract.in \
+ intltool-merge.in \
+ intltool-update.in \
+ $(desktop_in_files)
+
+DISTCLEANFILES = \
+ intltool-extract \
+ intltool-merge \
+ intltool-update \
+ $(desktop_DATA)
+
+DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
Added: desktop/trunk/thunar/branches/upstream/current/Makefile.in
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/Makefile.in 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/Makefile.in 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,788 @@
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004 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.
+
+ at SET_MAKE@
+
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = .
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+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@
+target_triplet = @target@
+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in $(srcdir)/config.h.in \
+ $(top_srcdir)/configure AUTHORS COPYING COPYING.LIB ChangeLog \
+ INSTALL NEWS THANKS TODO compile config.guess config.sub \
+ depcomp install-sh ltmain.sh missing mkinstalldirs
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno configure.status.lineno
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-exec-recursive install-info-recursive \
+ install-recursive installcheck-recursive installdirs-recursive \
+ pdf-recursive ps-recursive uninstall-info-recursive \
+ uninstall-recursive
+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 = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(desktopdir)"
+desktopDATA_INSTALL = $(INSTALL_DATA)
+DATA = $(desktop_DATA)
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+ { test ! -d $(distdir) \
+ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -fr $(distdir); }; }
+DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CAIRO_REQUIRED_VERSION = @CAIRO_REQUIRED_VERSION@
+CAIRO_VERSION = @CAIRO_VERSION@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@
+ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@
+EXEEXT = @EXEEXT@
+EXO_CFLAGS = @EXO_CFLAGS@
+EXO_LIBS = @EXO_LIBS@
+EXO_REQUIRED_VERSION = @EXO_REQUIRED_VERSION@
+EXO_VERSION = @EXO_VERSION@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GCONF_CFLAGS = @GCONF_CFLAGS@
+GCONF_LIBS = @GCONF_LIBS@
+GCONF_REQUIRED_VERSION = @GCONF_REQUIRED_VERSION@
+GCONF_VERSION = @GCONF_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_REQUIRED_VERSION = @GLIB_REQUIRED_VERSION@
+GLIB_VERSION = @GLIB_VERSION@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTHREAD_REQUIRED_VERSION = @GTHREAD_REQUIRED_VERSION@
+GTHREAD_VERSION = @GTHREAD_VERSION@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+GTK_LIBS = @GTK_LIBS@
+GTK_REQUIRED_VERSION = @GTK_REQUIRED_VERSION@
+GTK_VERSION = @GTK_VERSION@
+HAVE_CAIRO_FALSE = @HAVE_CAIRO_FALSE@
+HAVE_CAIRO_TRUE = @HAVE_CAIRO_TRUE@
+HAVE_GCONF_FALSE = @HAVE_GCONF_FALSE@
+HAVE_GCONF_TRUE = @HAVE_GCONF_TRUE@
+HAVE_GNUC_VISIBILITY_FALSE = @HAVE_GNUC_VISIBILITY_FALSE@
+HAVE_GNUC_VISIBILITY_TRUE = @HAVE_GNUC_VISIBILITY_TRUE@
+HAVE_LIBSTARTUP_NOTIFICATION_FALSE = @HAVE_LIBSTARTUP_NOTIFICATION_FALSE@
+HAVE_LIBSTARTUP_NOTIFICATION_TRUE = @HAVE_LIBSTARTUP_NOTIFICATION_TRUE@
+HTML_DIR = @HTML_DIR@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LIBFAM_CFLAGS = @LIBFAM_CFLAGS@
+LIBFAM_LIBS = @LIBFAM_LIBS@
+LIBFAM_REQUIRED_VERSION = @LIBFAM_REQUIRED_VERSION@
+LIBFAM_VERSION = @LIBFAM_VERSION@
+LIBJPEG_CFLAGS = @LIBJPEG_CFLAGS@
+LIBJPEG_LIBS = @LIBJPEG_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
+LIBPNG_LIBS = @LIBPNG_LIBS@
+LIBPNG_REQUIRED_VERSION = @LIBPNG_REQUIRED_VERSION@
+LIBPNG_VERSION = @LIBPNG_VERSION@
+LIBS = @LIBS@
+LIBSTARTUP_NOTIFICATION_CFLAGS = @LIBSTARTUP_NOTIFICATION_CFLAGS@
+LIBSTARTUP_NOTIFICATION_LIBS = @LIBSTARTUP_NOTIFICATION_LIBS@
+LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION = @LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION@
+LIBSTARTUP_NOTIFICATION_VERSION = @LIBSTARTUP_NOTIFICATION_VERSION@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_CFLAGS = @PLATFORM_CFLAGS@
+PLATFORM_CPPFLAGS = @PLATFORM_CPPFLAGS@
+PLATFORM_LDFLAGS = @PLATFORM_LDFLAGS@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TDB_U32_TYPE = @TDB_U32_TYPE@
+THUNAR_VERINFO = @THUNAR_VERINFO@
+THUNAR_VERSION_API = @THUNAR_VERSION_API@
+THUNAR_VERSION_MAJOR = @THUNAR_VERSION_MAJOR@
+THUNAR_VERSION_MICRO = @THUNAR_VERSION_MICRO@
+THUNAR_VERSION_MINOR = @THUNAR_VERSION_MINOR@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_ARGS = @XGETTEXT_ARGS@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+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@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+SUBDIRS = \
+ icons \
+ pixmaps \
+ po \
+ tdb \
+ thunar-vfs \
+ thunarx \
+ thunar \
+ tests \
+ docs \
+ examples
+
+AUTOMAKE_OPTIONS = \
+ 1.8 \
+ dist-bzip2
+
+desktopdir = $(datadir)/applications
+desktop_in_files = Thunar.desktop.in
+desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
+EXTRA_DIST = \
+ FAQ \
+ HACKING \
+ intltool-extract.in \
+ intltool-merge.in \
+ intltool-update.in \
+ $(desktop_in_files)
+
+DISTCLEANFILES = \
+ intltool-extract \
+ intltool-merge \
+ intltool-update \
+ $(desktop_DATA)
+
+DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc
+all: config.h
+ $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+am--refresh:
+ @:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
+ cd $(srcdir) && $(AUTOMAKE) --gnu \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu Makefile
+.PRECIOUS: 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_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+
+config.h: stamp-h1
+ @if test ! -f $@; then \
+ rm -f stamp-h1; \
+ $(MAKE) stamp-h1; \
+ else :; fi
+
+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)
+ cd $(top_srcdir) && $(AUTOHEADER)
+ rm -f stamp-h1
+ touch $@
+
+distclean-hdr:
+ -rm -f config.h stamp-h1
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+install-desktopDATA: $(desktop_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(desktopdir)" || $(mkdir_p) "$(DESTDIR)$(desktopdir)"
+ @list='$(desktop_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(desktopDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(desktopdir)/$$f'"; \
+ $(desktopDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(desktopdir)/$$f"; \
+ done
+
+uninstall-desktopDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(desktop_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(desktopdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(desktopdir)/$$f"; \
+ done
+
+# 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.
+$(RECURSIVE_TARGETS):
+ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; 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; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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 || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ $(am__remove_distdir)
+ mkdir $(distdir)
+ $(mkdir_p) $(distdir)/docs/reference/thunar-vfs $(distdir)/docs/reference/thunarx $(distdir)/po $(distdir)/tdb $(distdir)/thunar-vfs $(distdir)/thunarx
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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 \
+ test -d "$(distdir)/$$subdir" \
+ || $(mkdir_p) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+ -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -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 $(SHELL) $(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__remove_distdir)
+dist-bzip2: distdir
+ tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+ $(am__remove_distdir)
+
+dist-tarZ: distdir
+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+ $(am__remove_distdir)
+
+dist-shar: distdir
+ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+ $(am__remove_distdir)
+
+dist-zip: distdir
+ -rm -f $(distdir).zip
+ zip -rq $(distdir).zip $(distdir)
+ $(am__remove_distdir)
+
+dist dist-all: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+ $(am__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) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+ *.tar.bz2*) \
+ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+ *.tar.Z*) \
+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+ *.shar.gz*) \
+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
+ *.zip*) \
+ unzip $(distdir).zip ;;\
+ esac
+ chmod -R a-w $(distdir); chmod a+w $(distdir)
+ mkdir $(distdir)/_build
+ mkdir $(distdir)/_inst
+ chmod a-w $(distdir)
+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+ && cd $(distdir)/_build \
+ && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+ $(DISTCHECK_CONFIGURE_FLAGS) \
+ && $(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
+ $(am__remove_distdir)
+ @(echo "$(distdir) archives ready for distribution: "; \
+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+ sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
+distuninstallcheck:
+ @cd $(distuninstallcheck_dir) \
+ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+ || { 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
+check: check-recursive
+all-am: Makefile $(DATA) config.h
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(desktopdir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-recursive
+
+clean-am: clean-generic clean-libtool 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
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-desktopDATA
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+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-desktopDATA uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
+ check-am clean clean-generic clean-libtool clean-recursive \
+ ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
+ dist-shar dist-tarZ dist-zip distcheck distclean \
+ distclean-generic distclean-hdr distclean-libtool \
+ distclean-local distclean-recursive distclean-tags \
+ distcleancheck distdir distuninstallcheck dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-desktopDATA install-exec \
+ install-exec-am install-info install-info-am install-man \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ maintainer-clean-recursive mostlyclean mostlyclean-generic \
+ mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \
+ tags tags-recursive uninstall uninstall-am \
+ uninstall-desktopDATA uninstall-info-am
+
+
+distclean-local:
+ rm -rf *.spec *.cache *~
+
+rpm: dist
+ rpmbuild -ta $(PACKAGE)-$(VERSION).tar.gz
+ @rm -f $(PACKAGE)-$(VERSION).tar.gz
+ at INTLTOOL_DESKTOP_RULE@
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
+# 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:
Added: desktop/trunk/thunar/branches/upstream/current/NEWS
===================================================================
Added: desktop/trunk/thunar/branches/upstream/current/README
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/README 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/README 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,45 @@
+What is it?
+===========
+
+Thunar is a modern file manager for the Unix/Linux desktop, aiming to be
+easy-to-use and fast.
+
+
+Required packages
+=================
+
+Thunar depends on the following packages:
+
+ - perl 5.6 or above
+ - GTK+ 2.6.0 or above
+ - libexo 0.3.1 or above
+ - intltool 0.30 or above
+ - libpng12 1.2.0 or above
+ - shared-mime-info 0.15 or above
+ - desktop-file-utils 0.10 or above
+
+Thunar can optionally use the following packages:
+
+ - cairo 0.5 or above
+ - gamin 0.1.0 or above
+ - gconf 2.4 or above
+ - libjpeg 6 or above
+ - libstartup-notification 0.4 or above
+
+
+Installation
+============
+
+The file 'INSTALL' contains generic installation instructions. For more
+detailed information, visit the Thunar website at http://thunar.xfce.org/.
+
+
+How to report bugs?
+===================
+
+Bugs should be reported to the Xfce bug tracking system
+(http://bugzilla.xfce.org, product Thunar). You will need to
+create an account for yourself.
+
+Please read the HACKING file for information on where to send
+changes or bugfixes for this package.
Added: desktop/trunk/thunar/branches/upstream/current/THANKS
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/THANKS 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/THANKS 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,33 @@
+What's this file about?
+-----------------------
+This file lists all external people that have contributed to this project and
+thereby helped to make Thunar such a successful project.
+
+
+
+Testers (sorted by name):
+--------------------------
+These people have contributed to Thunar by testing the software,
+reporting problems and making useful suggestions.
+
+
+
+Translators (sorted by language):
+----------------------------------
+These people have translated Thunar to foreign languages.
+
+ Pablo Hernández-M. Saiz <homeless3d at gmail.com>
+ * es translations
+
+ Szervác Attila <sas at 321.hu>
+ * hu translations
+
+ Daichi Kawahata <daichik at users.sourceforge.net>
+ * ja translations
+
+
+
+Other contributors (sorted by name):
+------------------------------------
+
+
Added: desktop/trunk/thunar/branches/upstream/current/TODO
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/TODO 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/TODO 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,61 @@
+Important for Thunar 1.0
+========================
+
+ - Add ThunarVfsFlags, which specifies various flags for the job starters
+ (like thunar_vfs_copy_files, etc.). One important flag would be
+ THUNAR_VFS_FLAG_ERROR_ON_OVERWRITE, which tells the job not to ask the
+ user when the target exists, but to fail directly (the flags could also
+ be part of thunar-vfs-interactive-job.h, as they're only interesting
+ for interactive jobs).
+
+ - We need a way to "refresh" folders after a "Cut"-operation with Nautilus.
+ With local folders - with not many files inside - the move is too fast!
+
+ - The ThunarTrashFile constructor needs some rework, as it's currently
+ mostly brain-dead. Should probably be splitted into several functions.
+ In addition the ThunarTrashFile should enable the monitoring on the
+ real file in order to stay informed about changes.
+
+ - The ThunarTrashFolder class should watch the trash manager and the
+ trash cans for changes.
+
+ - Use better way to handle system flavours than simply (mis)using
+ AC_CONFIG_LINKS(), which is pretty messy for this purpose.
+
+ - Check getmntinfo() or getfsstat() for ThunarVfsVolumeManagerBSD, which
+ might be faster than several statfs() calls.
+
+ - The layouting code for ThunarLocationButtons is still buggy. Problem shows
+ with paths that include a very long directory; you cannot scroll to the
+ last path component then.
+
+ - A design for the ThunarTreePane framework must be developed and later
+ be implemented.
+
+ - The preferences must be sorted out and a suggestion for both a good
+ set of preferences and a layout for the preferences dialog must be
+ developed and presented.
+
+ - A design for the ThunarDesktopView module must be developed and later
+ be implemented.
+
+ - We need a suite of unit tests and probably high-level tests, that enable
+ us to test parts of the file manager automatically and isolate bugs
+ early.
+
+ - Setup gtk-doc to present developers with the internal API of Thunar
+ to ease development of core modules (and later plugins).
+
+ - Write good user documentation. Must be both precise and complete.
+
+ - Design (UI design this time) the file properties dialog, develop
+ a software design and implement it.
+
+ - We need some easy way to manage diagrams and related developer
+ information, which also includes results from discussions on
+ thunar-dev.
+
+ - The HACKING file must be updated with strict rules about how
+ development of Thunar core modules is to be done, and what
+ material each developer in addition to the source code.
+
Added: desktop/trunk/thunar/branches/upstream/current/Thunar.desktop.in
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/Thunar.desktop.in 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/Thunar.desktop.in 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Encoding=UTF-8
+_Name=Thunar File Manager
+_Comment=Browse the filesystem with the file manager
+_GenericName=File Manager
+Exec=Thunar
+Icon=Thunar
+Terminal=false
+StartupNotify=true
+Type=Application
+Categories=Application;System;Utility;Core;
+
+# vi:set encoding=UTF-8:
Added: desktop/trunk/thunar/branches/upstream/current/aclocal.m4
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/aclocal.m4 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/aclocal.m4 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,8127 @@
+# generated automatically by aclocal 1.9.2 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+# 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.
+
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+
+# serial 47 AC_PROG_LIBTOOL
+
+
+# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED)
+# -----------------------------------------------------------
+# If this macro is not defined by Autoconf, define it here.
+m4_ifdef([AC_PROVIDE_IFELSE],
+ [],
+ [m4_define([AC_PROVIDE_IFELSE],
+ [m4_ifdef([AC_PROVIDE_$1],
+ [$2], [$3])])])
+
+
+# AC_PROG_LIBTOOL
+# ---------------
+AC_DEFUN([AC_PROG_LIBTOOL],
+[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl
+dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX
+dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX.
+ AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [AC_LIBTOOL_CXX],
+ [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX
+ ])])
+dnl And a similar setup for Fortran 77 support
+ AC_PROVIDE_IFELSE([AC_PROG_F77],
+ [AC_LIBTOOL_F77],
+ [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77
+])])
+
+dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly.
+dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run
+dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both.
+ AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+ [AC_LIBTOOL_GCJ],
+ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+ [AC_LIBTOOL_GCJ],
+ [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],
+ [AC_LIBTOOL_GCJ],
+ [ifdef([AC_PROG_GCJ],
+ [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])
+ ifdef([A][M_PROG_GCJ],
+ [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])])
+ ifdef([LT_AC_PROG_GCJ],
+ [define([LT_AC_PROG_GCJ],
+ defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])])
+])])# AC_PROG_LIBTOOL
+
+
+# _AC_PROG_LIBTOOL
+# ----------------
+AC_DEFUN([_AC_PROG_LIBTOOL],
+[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+# Prevent multiple expansion
+define([AC_PROG_LIBTOOL], [])
+])# _AC_PROG_LIBTOOL
+
+
+# AC_LIBTOOL_SETUP
+# ----------------
+AC_DEFUN([AC_LIBTOOL_SETUP],
+[AC_PREREQ(2.50)dnl
+AC_REQUIRE([AC_ENABLE_SHARED])dnl
+AC_REQUIRE([AC_ENABLE_STATIC])dnl
+AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_LD])dnl
+AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl
+AC_REQUIRE([AC_PROG_NM])dnl
+
+AC_REQUIRE([AC_PROG_LN_S])dnl
+AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl
+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+AC_REQUIRE([AC_OBJEXT])dnl
+AC_REQUIRE([AC_EXEEXT])dnl
+dnl
+
+AC_LIBTOOL_SYS_MAX_CMD_LEN
+AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+AC_LIBTOOL_OBJDIR
+
+AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+_LT_AC_PROG_ECHO_BACKSLASH
+
+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 "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+ fi
+ ;;
+esac
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e s/^X//'
+[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 avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except M$VC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+AC_CHECK_TOOL(AR, ar, false)
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+AC_CHECK_TOOL(STRIP, strip, :)
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$SED" && SED=sed
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+ case $host_os in
+ openbsd*)
+ old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
+ ;;
+ *)
+ old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+ AC_PATH_MAGIC
+ fi
+ ;;
+esac
+
+AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no)
+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
+enable_win32_dll=yes, enable_win32_dll=no)
+
+AC_ARG_ENABLE([libtool-lock],
+ [AC_HELP_STRING([--disable-libtool-lock],
+ [avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+AC_ARG_WITH([pic],
+ [AC_HELP_STRING([--with-pic],
+ [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
+ [pic_mode="$withval"],
+ [pic_mode=default])
+test -z "$pic_mode" && pic_mode=default
+
+# Use C for the default configuration in the libtool script
+tagname=
+AC_LIBTOOL_LANG_C_CONFIG
+_LT_AC_TAGCONFIG
+])# AC_LIBTOOL_SETUP
+
+
+# _LT_AC_SYS_COMPILER
+# -------------------
+AC_DEFUN([_LT_AC_SYS_COMPILER],
+[AC_REQUIRE([AC_PROG_CC])dnl
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+])# _LT_AC_SYS_COMPILER
+
+
+# _LT_AC_SYS_LIBPATH_AIX
+# ----------------------
+# 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.
+AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX],
+[AC_LINK_IFELSE(AC_LANG_PROGRAM,[
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi],[])
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+])# _LT_AC_SYS_LIBPATH_AIX
+
+
+# _LT_AC_SHELL_INIT(ARG)
+# ----------------------
+AC_DEFUN([_LT_AC_SHELL_INIT],
+[ifdef([AC_DIVERSION_NOTICE],
+ [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
+ [AC_DIVERT_PUSH(NOTICE)])
+$1
+AC_DIVERT_POP
+])# _LT_AC_SHELL_INIT
+
+
+# _LT_AC_PROG_ECHO_BACKSLASH
+# --------------------------
+# Add some code to the start of the generated configure script which
+# will find an echo command which doesn't interpret backslashes.
+AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH],
+[_LT_AC_SHELL_INIT([
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+ # Remove one level of quotation (which was required for Make).
+ ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
+ ;;
+esac
+
+echo=${ECHO-echo}
+if test "X[$]1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X[$]1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
+ # Yippee, $echo works!
+ :
+else
+ # Restart under the correct shell.
+ exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
+fi
+
+if test "X[$]1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<EOF
+[$]*
+EOF
+ exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+if test -z "$ECHO"; then
+if test "X${echo_test_string+set}" != Xset; then
+# find a string as large as possible, as long as the shell can cope with it
+ for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
+ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+ if (echo_test_string="`eval $cmd`") 2>/dev/null &&
+ echo_test_string="`eval $cmd`" &&
+ (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+ then
+ break
+ fi
+ done
+fi
+
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ :
+else
+ # The Solaris, AIX, and Digital Unix default echo programs unquote
+ # backslashes. This makes it impossible to quote backslashes using
+ # echo "$something" | sed 's/\\/\\\\/g'
+ #
+ # So, first we look for a working echo in the user's PATH.
+
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for dir in $PATH /usr/ucb; do
+ IFS="$lt_save_ifs"
+ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ echo="$dir/echo"
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ if test "X$echo" = Xecho; then
+ # We didn't find a better echo, so look for alternatives.
+ if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # This shell has a builtin print -r that does the trick.
+ echo='print -r'
+ elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+ test "X$CONFIG_SHELL" != X/bin/ksh; then
+ # If we have ksh, try running configure again with it.
+ ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+ export ORIGINAL_CONFIG_SHELL
+ CONFIG_SHELL=/bin/ksh
+ export CONFIG_SHELL
+ exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
+ else
+ # Try using printf.
+ echo='printf %s\n'
+ if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # Cool, printf works
+ :
+ elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+ export CONFIG_SHELL
+ SHELL="$CONFIG_SHELL"
+ export SHELL
+ echo="$CONFIG_SHELL [$]0 --fallback-echo"
+ elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ echo="$CONFIG_SHELL [$]0 --fallback-echo"
+ else
+ # maybe with a smaller string...
+ prev=:
+
+ for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
+ if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
+ then
+ break
+ fi
+ prev="$cmd"
+ done
+
+ if test "$prev" != 'sed 50q "[$]0"'; then
+ echo_test_string=`eval $prev`
+ export echo_test_string
+ exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
+ else
+ # Oops. We lost completely, so just stick with echo.
+ echo=echo
+ fi
+ fi
+ fi
+ fi
+fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
+ ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
+fi
+
+AC_SUBST(ECHO)
+])])# _LT_AC_PROG_ECHO_BACKSLASH
+
+
+# _LT_AC_LOCK
+# -----------
+AC_DEFUN([_LT_AC_LOCK],
+[AC_ARG_ENABLE([libtool-lock],
+ [AC_HELP_STRING([--disable-libtool-lock],
+ [avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && 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 which ABI we are using.
+ 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 which ABI we are using.
+ echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ if test "$lt_cv_prog_gnu_ld" = yes; 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*
+ ;;
+
+x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case "`/usr/bin/file conftest.o`" in
+ *32-bit*)
+ case $host in
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_i386"
+ ;;
+ ppc64-*linux*|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-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ ppc*-*linux*|powerpc*-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*)
+ 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_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
+ AC_LANG_POP])
+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS="$SAVE_CFLAGS"
+ fi
+ ;;
+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
+[*-*-cygwin* | *-*-mingw* | *-*-pw32*)
+ AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+ AC_CHECK_TOOL(AS, as, false)
+ AC_CHECK_TOOL(OBJDUMP, objdump, false)
+ ;;
+ ])
+esac
+
+need_locks="$enable_libtool_lock"
+
+])# _LT_AC_LOCK
+
+
+# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION],
+[AC_REQUIRE([LT_AC_PROG_SED])
+AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$3"
+ # 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}? :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ echo "$as_me:__oline__: \$? = $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
+ if test ! -s conftest.err; then
+ $2=yes
+ fi
+ fi
+ $rm conftest*
+])
+
+if test x"[$]$2" = xyes; then
+ ifelse([$5], , :, [$5])
+else
+ ifelse([$6], , :, [$6])
+fi
+])# AC_LIBTOOL_COMPILER_OPTION
+
+
+# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [ACTION-SUCCESS], [ACTION-FAILURE])
+# ------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([AC_LIBTOOL_LINKER_OPTION],
+[AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $3"
+ printf "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The compiler 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
+ else
+ $2=yes
+ fi
+ fi
+ $rm conftest*
+ LDFLAGS="$save_LDFLAGS"
+])
+
+if test x"[$]$2" = xyes; then
+ ifelse([$4], , :, [$4])
+else
+ ifelse([$5], , :, [$5])
+fi
+])# AC_LIBTOOL_LINKER_OPTION
+
+
+# AC_LIBTOOL_SYS_MAX_CMD_LEN
+# --------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN],
+[# 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*)
+ # 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;
+ ;;
+
+ 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;
+ ;;
+
+ *)
+ # 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"`$CONFIG_SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \
+ = "XX$teststring") >/dev/null 2>&1 &&
+ new_result=`expr "X$teststring" : ".*" 2>&1` &&
+ lt_cv_sys_max_cmd_len=$new_result &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ 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`
+ ;;
+ 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
+])# AC_LIBTOOL_SYS_MAX_CMD_LEN
+
+
+# _LT_AC_CHECK_DLFCN
+# --------------------
+AC_DEFUN([_LT_AC_CHECK_DLFCN],
+[AC_CHECK_HEADERS(dlfcn.h)dnl
+])# _LT_AC_CHECK_DLFCN
+
+
+# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ------------------------------------------------------------------
+AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF],
+[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+if test "$cross_compiling" = yes; then :
+ [$4]
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+[#line __oline__ "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#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
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=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;
+ /* dlclose (self); */
+ }
+
+ exit (status);
+}]
+EOF
+ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) $1 ;;
+ x$lt_dlneed_uscore) $2 ;;
+ x$lt_unknown|x*) $3 ;;
+ esac
+ else :
+ # compilation failed
+ $3
+ fi
+fi
+rm -fr conftest*
+])# _LT_AC_TRY_DLOPEN_SELF
+
+
+# AC_LIBTOOL_DLOPEN_SELF
+# -------------------
+AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF],
+[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+if test "x$enable_dlopen" != xyes; 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*)
+ 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
+ ])
+ ;;
+
+ *)
+ 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="-dld"],
+ [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="-dld"])
+ ])
+ ])
+ ])
+ ])
+ ])
+ ;;
+ esac
+
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ 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_AC_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 "x$lt_cv_dlopen_self" = xyes; then
+ LDFLAGS="$LDFLAGS $link_static_flag"
+ AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+ lt_cv_dlopen_self_static, [dnl
+ _LT_AC_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
+])# AC_LIBTOOL_DLOPEN_SELF
+
+
+# AC_LIBTOOL_PROG_CC_C_O([TAGNAME])
+# ---------------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler
+AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O],
+[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
+ [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
+ [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$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}? :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:__oline__: $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:__oline__: \$? = $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
+ if test ! -s out/conftest.err; then
+ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+ fi
+ fi
+ chmod u+w .
+ $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 ..
+ rmdir conftest
+ $rm conftest*
+])
+])# AC_LIBTOOL_PROG_CC_C_O
+
+
+# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME])
+# -----------------------------------------
+# Check to see if we can do hard links to lock some files if needed
+AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS],
+[AC_REQUIRE([_LT_AC_LOCK])dnl
+
+hard_links="nottested"
+if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; 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 "$hard_links" = no; 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
+])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS
+
+
+# AC_LIBTOOL_OBJDIR
+# -----------------
+AC_DEFUN([AC_LIBTOOL_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
+])# AC_LIBTOOL_OBJDIR
+
+
+# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME])
+# ----------------------------------------------
+# Check hardcoding attributes.
+AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH],
+[AC_MSG_CHECKING([how to hardcode library paths into programs])
+_LT_AC_TAGVAR(hardcode_action, $1)=
+if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \
+ test -n "$_LT_AC_TAGVAR(runpath_var $1)" || \
+ test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)"="Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no &&
+ # 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 "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
+ test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then
+ # Linking always hardcodes the temporary library directory.
+ _LT_AC_TAGVAR(hardcode_action, $1)=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ _LT_AC_TAGVAR(hardcode_action, $1)=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ _LT_AC_TAGVAR(hardcode_action, $1)=unsupported
+fi
+AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)])
+
+if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH
+
+
+# AC_LIBTOOL_SYS_LIB_STRIP
+# ------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP],
+[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"
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+fi
+ ;;
+ *)
+ AC_MSG_RESULT([no])
+ ;;
+ esac
+fi
+])# AC_LIBTOOL_SYS_LIB_STRIP
+
+
+# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER],
+[AC_MSG_CHECKING([dynamic linker characteristics])
+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"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # 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.
+ 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
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+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
+ 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'
+ ;;
+
+aix4* | aix5*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; 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
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.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}'
+ else
+ # 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'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ 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=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $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'
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi4*)
+ version_type=linux
+ 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*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ 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'
+ 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="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ 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
+ ;;
+ 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
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # 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}${versuffix}$shared_ext ${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)'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ 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
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+kfreebsd*-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='GNU ld.so'
+ ;;
+
+freebsd*)
+ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ 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
+ ;;
+ *) # from 3.2 on
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+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
+ 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 "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ 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'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ 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
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ 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'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # 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
+
+ # find out which ABI we are using
+ libsuff=
+ case "$host_cpu" in
+ x86_64*|s390x*|powerpc64*)
+ echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *64-bit*)
+ libsuff=64
+ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+ esac
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`$SED -e 's/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g' /etc/ld.so.conf | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $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'
+ ;;
+
+knetbsd*-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='GNU ld.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
+ 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=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=yes
+ ;;
+
+openbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=yes
+ 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
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[[89]] | openbsd2.[[89]].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+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"
+ ;;
+
+sco3.2v5*)
+ version_type=osf
+ 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
+ ;;
+
+solaris*)
+ 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=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 "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ version_type=linux
+ 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
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ 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
+ 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
+ ;;
+
+uts4*)
+ version_type=linux
+ 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 "$dynamic_linker" = no && can_build_shared=no
+])# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+
+
+# _LT_AC_TAGCONFIG
+# ----------------
+AC_DEFUN([_LT_AC_TAGCONFIG],
+[AC_ARG_WITH([tags],
+ [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@],
+ [include additional configurations @<:@automatic@:>@])],
+ [tagnames="$withval"])
+
+if test -f "$ltmain" && test -n "$tagnames"; then
+ if test ! -f "${ofile}"; then
+ AC_MSG_WARN([output file `$ofile' does not exist])
+ fi
+
+ if test -z "$LTCC"; then
+ eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
+ if test -z "$LTCC"; then
+ AC_MSG_WARN([output file `$ofile' does not look like a libtool script])
+ else
+ AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile'])
+ fi
+ fi
+
+ # Extract list of available tagged configurations in $ofile.
+ # Note that this assumes the entire list is on one line.
+ available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
+
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for tagname in $tagnames; do
+ IFS="$lt_save_ifs"
+ # Check whether tagname contains only valid characters
+ case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in
+ "") ;;
+ *) AC_MSG_ERROR([invalid tag name: $tagname])
+ ;;
+ esac
+
+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
+ then
+ AC_MSG_ERROR([tag name \"$tagname\" already exists])
+ fi
+
+ # Update the list of available tags.
+ if test -n "$tagname"; then
+ echo appending configuration tag \"$tagname\" to $ofile
+
+ case $tagname in
+ CXX)
+ if test -n "$CXX" && test "X$CXX" != "Xno"; then
+ AC_LIBTOOL_LANG_CXX_CONFIG
+ else
+ tagname=""
+ fi
+ ;;
+
+ F77)
+ if test -n "$F77" && test "X$F77" != "Xno"; then
+ AC_LIBTOOL_LANG_F77_CONFIG
+ else
+ tagname=""
+ fi
+ ;;
+
+ GCJ)
+ if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+ AC_LIBTOOL_LANG_GCJ_CONFIG
+ else
+ tagname=""
+ fi
+ ;;
+
+ RC)
+ AC_LIBTOOL_LANG_RC_CONFIG
+ ;;
+
+ *)
+ AC_MSG_ERROR([Unsupported tag name: $tagname])
+ ;;
+ esac
+
+ # Append the new tag name to the list of available tags.
+ if test -n "$tagname" ; then
+ available_tags="$available_tags $tagname"
+ fi
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ # Now substitute the updated list of available tags.
+ if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
+ mv "${ofile}T" "$ofile"
+ chmod +x "$ofile"
+ else
+ rm -f "${ofile}T"
+ AC_MSG_ERROR([unable to update list of available tagged configurations.])
+ fi
+fi
+])# _LT_AC_TAGCONFIG
+
+
+# AC_LIBTOOL_DLOPEN
+# -----------------
+# enable checks for dlopen support
+AC_DEFUN([AC_LIBTOOL_DLOPEN],
+ [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])
+])# AC_LIBTOOL_DLOPEN
+
+
+# AC_LIBTOOL_WIN32_DLL
+# --------------------
+# declare package support for building win32 dll's
+AC_DEFUN([AC_LIBTOOL_WIN32_DLL],
+[AC_BEFORE([$0], [AC_LIBTOOL_SETUP])
+])# AC_LIBTOOL_WIN32_DLL
+
+
+# AC_ENABLE_SHARED([DEFAULT])
+# ---------------------------
+# implement the --enable-shared flag
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_SHARED],
+[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([shared],
+ [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
+ [build shared libraries @<:@default=]AC_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=]AC_ENABLE_SHARED_DEFAULT)
+])# AC_ENABLE_SHARED
+
+
+# AC_DISABLE_SHARED
+# -----------------
+#- set the default shared flag to --disable-shared
+AC_DEFUN([AC_DISABLE_SHARED],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_SHARED(no)
+])# AC_DISABLE_SHARED
+
+
+# AC_ENABLE_STATIC([DEFAULT])
+# ---------------------------
+# implement the --enable-static flag
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_STATIC],
+[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([static],
+ [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@],
+ [build static libraries @<:@default=]AC_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=]AC_ENABLE_STATIC_DEFAULT)
+])# AC_ENABLE_STATIC
+
+
+# AC_DISABLE_STATIC
+# -----------------
+# set the default static flag to --disable-static
+AC_DEFUN([AC_DISABLE_STATIC],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_STATIC(no)
+])# AC_DISABLE_STATIC
+
+
+# AC_ENABLE_FAST_INSTALL([DEFAULT])
+# ---------------------------------
+# implement the --enable-fast-install flag
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_FAST_INSTALL],
+[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([fast-install],
+ [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
+ [optimize for fast installation @<:@default=]AC_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=]AC_ENABLE_FAST_INSTALL_DEFAULT)
+])# AC_ENABLE_FAST_INSTALL
+
+
+# AC_DISABLE_FAST_INSTALL
+# -----------------------
+# set the default to --disable-fast-install
+AC_DEFUN([AC_DISABLE_FAST_INSTALL],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_FAST_INSTALL(no)
+])# AC_DISABLE_FAST_INSTALL
+
+
+# AC_LIBTOOL_PICMODE([MODE])
+# --------------------------
+# implement the --with-pic flag
+# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
+AC_DEFUN([AC_LIBTOOL_PICMODE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+pic_mode=ifelse($#,1,$1,default)
+])# AC_LIBTOOL_PICMODE
+
+
+# AC_PROG_EGREP
+# -------------
+# This is predefined starting with Autoconf 2.54, so this conditional
+# definition can be removed once we require Autoconf 2.54 or later.
+m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP],
+[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep],
+ [if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+ then ac_cv_prog_egrep='grep -E'
+ else ac_cv_prog_egrep='egrep'
+ fi])
+ EGREP=$ac_cv_prog_egrep
+ AC_SUBST([EGREP])
+])])
+
+
+# AC_PATH_TOOL_PREFIX
+# -------------------
+# find a file program which can recognise shared library
+AC_DEFUN([AC_PATH_TOOL_PREFIX],
+[AC_REQUIRE([AC_PROG_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="ifelse([$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 <<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 at gnu.org
+
+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
+])# AC_PATH_TOOL_PREFIX
+
+
+# AC_PATH_MAGIC
+# -------------
+# find a file program which can recognise a shared library
+AC_DEFUN([AC_PATH_MAGIC],
+[AC_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
+ AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
+ else
+ MAGIC_CMD=:
+ fi
+fi
+])# AC_PATH_MAGIC
+
+
+# AC_PROG_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+AC_DEFUN([AC_PROG_LD],
+[AC_ARG_WITH([gnu-ld],
+ [AC_HELP_STRING([--with-gnu-ld],
+ [assume the C compiler uses GNU ld @<:@default=no@:>@])],
+ [test "$withval" = no || with_gnu_ld=yes],
+ [with_gnu_ld=no])
+AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+ac_prog=ld
+if test "$GCC" = yes; 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 "$with_gnu_ld" = yes; 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 GNU ld's only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ AC_MSG_RESULT($LD)
+else
+ AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+AC_PROG_LD_GNU
+])# AC_PROG_LD
+
+
+# AC_PROG_LD_GNU
+# --------------
+AC_DEFUN([AC_PROG_LD_GNU],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac])
+with_gnu_ld=$lt_cv_prog_gnu_ld
+])# AC_PROG_LD_GNU
+
+
+# AC_PROG_LD_RELOAD_FLAG
+# ----------------------
+# find reload flag for linker
+# -- PORTME Some linkers may need a different reload flag.
+AC_DEFUN([AC_PROG_LD_RELOAD_FLAG],
+[AC_CACHE_CHECK([for $LD option to reload object files],
+ lt_cv_ld_reload_flag,
+ [lt_cv_ld_reload_flag='-r'])
+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'
+])# AC_PROG_LD_RELOAD_FLAG
+
+
+# AC_DEPLIBS_CHECK_METHOD
+# -----------------------
+# how to check for library dependencies
+# -- PORTME fill in with the dynamic library characteristics
+AC_DEFUN([AC_DEPLIBS_CHECK_METHOD],
+[AC_CACHE_CHECK([how to recognise 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
+# which 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
+aix4* | aix5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+beos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+bsdi4*)
+ 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'.
+ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ ;;
+
+darwin* | rhapsody*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+freebsd* | kfreebsd*-gnu)
+ 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)/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
+ ;;
+
+gnu*)
+ 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]) 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
+ ;;
+
+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 Linux ELF.
+linux*)
+ case $host_cpu in
+ alpha*|hppa*|i*86|ia64*|m68*|mips*|powerpc*|sparc*|s390*|sh*|x86_64*)
+ lt_cv_deplibs_check_method=pass_all ;;
+ *)
+ # glibc up to 2.1.1 does not perform some relocations on ARM
+ # this will be overridden with pass_all, but let us keep it just in case
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;;
+ esac
+ lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+netbsd*)
+ 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=unknown
+ ;;
+
+openbsd*)
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object'
+ else
+ lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library'
+ fi
+ ;;
+
+osf3* | osf4* | osf5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sco3.2v5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ 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
+ ;;
+ esac
+ ;;
+
+sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+esac
+])
+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
+])# AC_DEPLIBS_CHECK_METHOD
+
+
+# AC_PROG_NM
+# ----------
+# find the pathname to a BSD-compatible name lister
+AC_DEFUN([AC_PROG_NM],
+[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM,
+[if test -n "$NM"; then
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+else
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ tmp_nm="$ac_dir/${ac_tool_prefix}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
+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+ */dev/null* | *'Invalid file or object type'*)
+ lt_cv_path_NM="$tmp_nm -B"
+ break
+ ;;
+ *)
+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+ */dev/null*)
+ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+ 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"
+ test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi])
+NM="$lt_cv_path_NM"
+])# AC_PROG_NM
+
+
+# AC_CHECK_LIBM
+# -------------
+# check for math library
+AC_DEFUN([AC_CHECK_LIBM],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cygwin* | *-*-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_CHECK_LIBM
+
+
+# AC_LIBLTDL_CONVENIENCE([DIRECTORY])
+# -----------------------------------
+# sets LIBLTDL to the link flags for the libltdl convenience library and
+# LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-convenience to the configure arguments. Note that LIBLTDL
+# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If
+# DIRECTORY is not provided, it is assumed to be `libltdl'. LIBLTDL will
+# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed with
+# '${top_srcdir}/' (note the single quotes!). If your package is not
+# flat and you're not using automake, define top_builddir and
+# top_srcdir appropriately in the Makefiles.
+AC_DEFUN([AC_LIBLTDL_CONVENIENCE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+ case $enable_ltdl_convenience in
+ no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
+ "") enable_ltdl_convenience=yes
+ ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
+ esac
+ LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la
+ LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+ # For backwards non-gettext consistent compatibility...
+ INCLTDL="$LTDLINCL"
+])# AC_LIBLTDL_CONVENIENCE
+
+
+# AC_LIBLTDL_INSTALLABLE([DIRECTORY])
+# -----------------------------------
+# sets LIBLTDL to the link flags for the libltdl installable library and
+# LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-install to the configure arguments. Note that LIBLTDL
+# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If
+# DIRECTORY is not provided and an installed libltdl is not found, it is
+# assumed to be `libltdl'. LIBLTDL will be prefixed with '${top_builddir}/'
+# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single
+# quotes!). If your package is not flat and you're not using automake,
+# define top_builddir and top_srcdir appropriately in the Makefiles.
+# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
+AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+ AC_CHECK_LIB(ltdl, lt_dlinit,
+ [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
+ [if test x"$enable_ltdl_install" = xno; then
+ AC_MSG_WARN([libltdl not installed, but installation disabled])
+ else
+ enable_ltdl_install=yes
+ fi
+ ])
+ if test x"$enable_ltdl_install" = x"yes"; then
+ ac_configure_args="$ac_configure_args --enable-ltdl-install"
+ LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la
+ LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+ else
+ ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
+ LIBLTDL="-lltdl"
+ LTDLINCL=
+ fi
+ # For backwards non-gettext consistent compatibility...
+ INCLTDL="$LTDLINCL"
+])# AC_LIBLTDL_INSTALLABLE
+
+
+# AC_LIBTOOL_CXX
+# --------------
+# enable support for C++ libraries
+AC_DEFUN([AC_LIBTOOL_CXX],
+[AC_REQUIRE([_LT_AC_LANG_CXX])
+])# AC_LIBTOOL_CXX
+
+
+# _LT_AC_LANG_CXX
+# ---------------
+AC_DEFUN([_LT_AC_LANG_CXX],
+[AC_REQUIRE([AC_PROG_CXX])
+AC_REQUIRE([AC_PROG_CXXCPP])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX])
+])# _LT_AC_LANG_CXX
+
+
+# AC_LIBTOOL_F77
+# --------------
+# enable support for Fortran 77 libraries
+AC_DEFUN([AC_LIBTOOL_F77],
+[AC_REQUIRE([_LT_AC_LANG_F77])
+])# AC_LIBTOOL_F77
+
+
+# _LT_AC_LANG_F77
+# ---------------
+AC_DEFUN([_LT_AC_LANG_F77],
+[AC_REQUIRE([AC_PROG_F77])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77])
+])# _LT_AC_LANG_F77
+
+
+# AC_LIBTOOL_GCJ
+# --------------
+# enable support for GCJ libraries
+AC_DEFUN([AC_LIBTOOL_GCJ],
+[AC_REQUIRE([_LT_AC_LANG_GCJ])
+])# AC_LIBTOOL_GCJ
+
+
+# _LT_AC_LANG_GCJ
+# ---------------
+AC_DEFUN([_LT_AC_LANG_GCJ],
+[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[],
+ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[],
+ [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[],
+ [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])],
+ [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])],
+ [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ])
+])# _LT_AC_LANG_GCJ
+
+
+# AC_LIBTOOL_RC
+# --------------
+# enable support for Windows resource files
+AC_DEFUN([AC_LIBTOOL_RC],
+[AC_REQUIRE([LT_AC_PROG_RC])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC])
+])# AC_LIBTOOL_RC
+
+
+# AC_LIBTOOL_LANG_C_CONFIG
+# ------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG])
+AC_DEFUN([_LT_AC_LANG_C_CONFIG],
+[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_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}\n'
+
+_LT_AC_SYS_COMPILER
+
+#
+# Check for any special shared library compilation flags.
+#
+_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)=
+if test "$GCC" = no; then
+ case $host_os in
+ sco3.2v5*)
+ _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf'
+ ;;
+ esac
+fi
+if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then
+ AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries])
+ if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[ ]]" >/dev/null; then :
+ else
+ AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure])
+ _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no
+ fi
+fi
+
+
+#
+# Check to make sure the static flag actually works.
+#
+AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works],
+ _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1),
+ $_LT_AC_TAGVAR(lt_prog_compiler_static, $1),
+ [],
+ [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=])
+
+
+AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+AC_LIBTOOL_DLOPEN_SELF($1)
+
+# Report which librarie types wil 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 "$can_build_shared" = "no" && 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 "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+
+aix4* | aix5*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+ darwin* | rhapsody*)
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ case "$host_os" in
+ rhapsody* | darwin1.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
+ ;;
+ 10.*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ output_verbose_link_cmd='echo'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring'
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ 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 "$enable_shared" = yes || enable_static=yes
+AC_MSG_RESULT([$enable_static])
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_C_CONFIG
+
+
+# AC_LIBTOOL_LANG_CXX_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)])
+AC_DEFUN([_LT_AC_LANG_CXX_CONFIG],
+[AC_LANG_PUSH(C++)
+AC_REQUIRE([AC_PROG_CXX])
+AC_REQUIRE([AC_PROG_CXXCPP])
+
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(allow_undefined_flag, $1)=
+_LT_AC_TAGVAR(always_export_symbols, $1)=no
+_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_direct, $1)=no
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+_LT_AC_TAGVAR(hardcode_automatic, $1)=no
+_LT_AC_TAGVAR(module_cmds, $1)=
+_LT_AC_TAGVAR(module_expsym_cmds, $1)=
+_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_AC_TAGVAR(no_undefined_flag, $1)=
+_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Dependencies to place before and after the object being linked:
+_LT_AC_TAGVAR(predep_objects, $1)=
+_LT_AC_TAGVAR(postdep_objects, $1)=
+_LT_AC_TAGVAR(predeps, $1)=
+_LT_AC_TAGVAR(postdeps, $1)=
+_LT_AC_TAGVAR(compiler_lib_search_path, $1)=
+
+# Source file extension for C++ test sources.
+ac_ext=cc
+
+# Object file extension for compiled C++ test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+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
+ 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
+ unset lt_cv_path_LD
+fi
+test -z "${LDCXX+set}" || LD=$LDCXX
+CC=${CXX-"c++"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+
+# We don't want -fno-exception wen compiling C++ code, so set the
+# no_builtin_flag separately
+if test "$GXX" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+else
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+fi
+
+if test "$GXX" = yes; then
+ # Set up default GNU C++ configuration
+
+ AC_PROG_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 "$with_gnu_ld" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+ _LT_AC_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_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ _LT_AC_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_AC_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 "\-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_AC_TAGVAR(ld_shlibs, $1)=yes
+case $host_os in
+ aix3*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; 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
+ # need to do runtime linking.
+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ case $ld_flag in
+ *-brtl*)
+ aix_use_runtimelinking=yes
+ break
+ ;;
+ esac
+ done
+ 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_AC_TAGVAR(archive_cmds, $1)=''
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ if test "$GXX" = yes; 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
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ else
+ # We have old collect2
+ _LT_AC_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_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+ esac
+ shared_flag='-shared'
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; 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 "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_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_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+ # -bexpall does not export symbols beginning with underscore (_)
+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' '
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+ # This is similar to how AIX traditionally builds it's shared libraries.
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+ chorus*)
+ case $cc_basename in
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+ # as there is no search path for DLLs.
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(always_export_symbols, $1)=no
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; 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}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ darwin* | rhapsody*)
+ if test "$GXX" = yes; then
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ case "$host_os" in
+ rhapsody* | darwin1.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
+ ;;
+ 10.*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ lt_int_apple_cc_single_mod=no
+ output_verbose_link_cmd='echo'
+ if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
+ lt_int_apple_cc_single_mod=yes
+ fi
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -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'
+ fi
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ dgux*)
+ case $cc_basename in
+ ec++)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ ghcx)
+ # Green Hills C++ Compiler
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ freebsd[12]*)
+ # C++ shared libraries reported to be fairly broken before switch to ELF
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ freebsd-elf*)
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ ;;
+ freebsd* | kfreebsd*-gnu)
+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+ # conventions
+ _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+ ;;
+ gnu*)
+ ;;
+ hpux9*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_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_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aCC)
+ _LT_AC_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 $output_objdir/$soname = $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) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ hpux10*|hpux11*)
+ if test $with_gnu_ld = no; then
+ case "$host_cpu" in
+ hppa*64*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+ ia64*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ ;;
+ *)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+ esac
+ fi
+ case "$host_cpu" in
+ hppa*64*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ ia64*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+ ;;
+ *)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_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_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aCC)
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+ ;;
+ *)
+ _LT_AC_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; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test $with_gnu_ld = no; then
+ case "$host_cpu" in
+ ia64*|hppa*64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${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_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ irix5* | irix6*)
+ case $cc_basename in
+ CC)
+ # SGI C++
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${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_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+ fi
+ fi
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+ esac
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+ linux*)
+ 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_AC_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_AC_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; echo $list'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir'
+ _LT_AC_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_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+ ;;
+ icpc)
+ # Intel C++
+ with_gnu_ld=yes
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_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'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ ;;
+ cxx)
+ # Compaq C++
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ _LT_AC_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=`echo $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; echo $list'
+ ;;
+ esac
+ ;;
+ lynxos*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ m88k*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+ wlarc=
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_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::"'
+ ;;
+ osf3*)
+ 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_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Archives containing C++ object files must be created using
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+
+ ;;
+ RCC)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ cxx)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_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=`echo $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; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_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" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_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 "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ 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_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Archives containing C++ object files must be created using
+ # the KAI C++ compiler.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs'
+ ;;
+ RCC)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ cxx)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+ _LT_AC_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 $objdir/so_locations -o $lib~
+ $rm $lib.exp'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ _LT_AC_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=`echo $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; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_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 "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ psos*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ sco*)
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ case $cc_basename in
+ CC)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC)
+ # Sun C++ 4.x
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ lcc)
+ # Lucid
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_AC_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} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The C++ compiler is used as linker so we must use $wl
+ # flag to pass the commands to the underlying system
+ # linker.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ ;;
+ esac
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ # 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 -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[[LR]]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+ # 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_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ gcx)
+ # Green Hills C++ Compiler
+ _LT_AC_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_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+ ;;
+ *)
+ # GNU C++ compiler with Solaris linker
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+ if $CC --version | grep -v '^2\.7' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -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 \"\-L\""
+ else
+ # g++ 2.7 appears to require `-G' NOT `-shared' on this
+ # platform.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_AC_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 -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 \"\-L\""
+ fi
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+ fi
+ ;;
+ esac
+ ;;
+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*)
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC)
+ # NonStop-UX NCC 3.20
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ vxworks*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+esac
+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_AC_TAGVAR(GCC, $1)="$GXX"
+_LT_AC_TAGVAR(LD, $1)="$LD"
+
+AC_LIBTOOL_POSTDEP_PREDEP($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+AC_LIBTOOL_DLOPEN_SELF($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC=$lt_save_CC
+LDCXX=$LD
+LD=$lt_save_LD
+GCC=$lt_save_GCC
+with_gnu_ldcxx=$with_gnu_ld
+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
+])# AC_LIBTOOL_LANG_CXX_CONFIG
+
+# AC_LIBTOOL_POSTDEP_PREDEP([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.
+AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[
+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...
+ifelse([$1],[],[cat > conftest.$ac_ext <<EOF
+int a;
+void foo (void) { a = 0; }
+EOF
+],[$1],[CXX],[cat > conftest.$ac_ext <<EOF
+class Foo
+{
+public:
+ Foo (void) { a = 0; }
+private:
+ int a;
+};
+EOF
+],[$1],[F77],[cat > conftest.$ac_ext <<EOF
+ subroutine foo
+ implicit none
+ integer*4 a
+ a=0
+ return
+ end
+EOF
+],[$1],[GCJ],[cat > conftest.$ac_ext <<EOF
+public class foo {
+ private int a;
+ public void bar (void) {
+ a = 0;
+ }
+};
+EOF
+])
+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
+
+ # The `*' in the case matches for architectures that use `case' in
+ # $output_verbose_cmd can trigger glob expansion during the loop
+ # eval without this substitution.
+ output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`"
+
+ for p in `eval $output_verbose_link_cmd`; do
+ case $p in
+
+ -L* | -R* | -l*)
+ # Some compilers place space between "-{L,R}" and the path.
+ # Remove the space.
+ if test $p = "-L" \
+ || test $p = "-R"; then
+ prev=$p
+ continue
+ else
+ prev=
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ case $p 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_AC_TAGVAR(compiler_lib_search_path, $1)"; then
+ _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+ else
+ _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${_LT_AC_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_AC_TAGVAR(postdeps, $1)"; then
+ _LT_AC_TAGVAR(postdeps, $1)="${prev}${p}"
+ else
+ _LT_AC_TAGVAR(postdeps, $1)="${_LT_AC_TAGVAR(postdeps, $1)} ${prev}${p}"
+ fi
+ fi
+ ;;
+
+ *.$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 "$pre_test_object_deps_done" = no; then
+ if test -z "$_LT_AC_TAGVAR(predep_objects, $1)"; then
+ _LT_AC_TAGVAR(predep_objects, $1)="$p"
+ else
+ _LT_AC_TAGVAR(predep_objects, $1)="$_LT_AC_TAGVAR(predep_objects, $1) $p"
+ fi
+ else
+ if test -z "$_LT_AC_TAGVAR(postdep_objects, $1)"; then
+ _LT_AC_TAGVAR(postdep_objects, $1)="$p"
+ else
+ _LT_AC_TAGVAR(postdep_objects, $1)="$_LT_AC_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
+
+case " $_LT_AC_TAGVAR(postdeps, $1) " in
+*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+esac
+])# AC_LIBTOOL_POSTDEP_PREDEP
+
+# AC_LIBTOOL_LANG_F77_CONFIG
+# ------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)])
+AC_DEFUN([_LT_AC_LANG_F77_CONFIG],
+[AC_REQUIRE([AC_PROG_F77])
+AC_LANG_PUSH(Fortran 77)
+
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(allow_undefined_flag, $1)=
+_LT_AC_TAGVAR(always_export_symbols, $1)=no
+_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_direct, $1)=no
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+_LT_AC_TAGVAR(hardcode_automatic, $1)=no
+_LT_AC_TAGVAR(module_cmds, $1)=
+_LT_AC_TAGVAR(module_expsym_cmds, $1)=
+_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_AC_TAGVAR(no_undefined_flag, $1)=
+_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_AC_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_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code=" subroutine t\n return\n end\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code=" program t\n end\n"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${F77-"f77"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+
+AC_MSG_CHECKING([if libtool supports shared libraries])
+AC_MSG_RESULT([$can_build_shared])
+
+AC_MSG_CHECKING([whether to build shared libraries])
+test "$can_build_shared" = "no" && 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 "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+aix4* | aix5*)
+ test "$enable_shared" = yes && enable_static=no
+ ;;
+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 "$enable_shared" = yes || enable_static=yes
+AC_MSG_RESULT([$enable_static])
+
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_AC_TAGVAR(GCC, $1)="$G77"
+_LT_AC_TAGVAR(LD, $1)="$LD"
+
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_F77_CONFIG
+
+
+# AC_LIBTOOL_LANG_GCJ_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)])
+AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG],
+[AC_LANG_SAVE
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${GCJ-"gcj"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+
+AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+AC_LIBTOOL_DLOPEN_SELF($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_GCJ_CONFIG
+
+
+# AC_LIBTOOL_LANG_RC_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the Windows resource compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)])
+AC_DEFUN([_LT_AC_LANG_RC_CONFIG],
+[AC_LANG_SAVE
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+
+# 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_AC_SYS_COMPILER
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${RC-"windres"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_RC_CONFIG
+
+
+# AC_LIBTOOL_CONFIG([TAGNAME])
+# ----------------------------
+# If TAGNAME is not passed, then 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
+# TAGNAME from the matching tagged config vars.
+AC_DEFUN([AC_LIBTOOL_CONFIG],
+[# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ _LT_AC_TAGVAR(compiler, $1) \
+ _LT_AC_TAGVAR(CC, $1) \
+ _LT_AC_TAGVAR(LD, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \
+ _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \
+ _LT_AC_TAGVAR(old_archive_cmds, $1) \
+ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \
+ _LT_AC_TAGVAR(predep_objects, $1) \
+ _LT_AC_TAGVAR(postdep_objects, $1) \
+ _LT_AC_TAGVAR(predeps, $1) \
+ _LT_AC_TAGVAR(postdeps, $1) \
+ _LT_AC_TAGVAR(compiler_lib_search_path, $1) \
+ _LT_AC_TAGVAR(archive_cmds, $1) \
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1) \
+ _LT_AC_TAGVAR(postinstall_cmds, $1) \
+ _LT_AC_TAGVAR(postuninstall_cmds, $1) \
+ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \
+ _LT_AC_TAGVAR(allow_undefined_flag, $1) \
+ _LT_AC_TAGVAR(no_undefined_flag, $1) \
+ _LT_AC_TAGVAR(export_symbols_cmds, $1) \
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \
+ _LT_AC_TAGVAR(hardcode_automatic, $1) \
+ _LT_AC_TAGVAR(module_cmds, $1) \
+ _LT_AC_TAGVAR(module_expsym_cmds, $1) \
+ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \
+ _LT_AC_TAGVAR(exclude_expsyms, $1) \
+ _LT_AC_TAGVAR(include_expsyms, $1); do
+
+ case $var in
+ _LT_AC_TAGVAR(old_archive_cmds, $1) | \
+ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \
+ _LT_AC_TAGVAR(archive_cmds, $1) | \
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \
+ _LT_AC_TAGVAR(module_cmds, $1) | \
+ _LT_AC_TAGVAR(module_expsym_cmds, $1) | \
+ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \
+ _LT_AC_TAGVAR(export_symbols_cmds, $1) | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\[$]0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'`
+ ;;
+ esac
+
+ifelse([$1], [],
+ [cfgfile="${ofile}T"
+ trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+ $rm -f "$cfgfile"
+ AC_MSG_NOTICE([creating $ofile])],
+ [cfgfile="$ofile"])
+
+ cat <<__EOF__ >> "$cfgfile"
+ifelse([$1], [],
+[#! $SHELL
+
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Libtool:
+# Originally by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 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 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# 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 s/^X//"
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+# The names of the tagged configurations supported by this script.
+available_tags=
+
+# ### BEGIN LIBTOOL CONFIG],
+[# ### BEGIN LIBTOOL TAG CONFIG: $tagname])
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_[]_LT_AC_TAGVAR(compiler, $1)
+
+# Is the compiler the GNU C compiler?
+with_gcc=$_LT_AC_TAGVAR(GCC, $1)
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_[]_LT_AC_TAGVAR(LD, $1)
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# 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
+
+# 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
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1)
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1)
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1)
+
+# Library versioning type.
+version_type=$version_type
+
+# 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
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1)
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1)
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1)
+archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1)
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1)
+module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1)
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1)
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1)
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1)
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1)
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1)
+
+# 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
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1)
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1)
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# 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 in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1)
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1)
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1)
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1)
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)
+
+# 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=$_LT_AC_TAGVAR(hardcode_automatic, $1)
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1)
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1)
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1)
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1)
+
+# Symbols that must always be exported.
+include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1)
+
+ifelse([$1],[],
+[# ### END LIBTOOL CONFIG],
+[# ### END LIBTOOL TAG CONFIG: $tagname])
+
+__EOF__
+
+ifelse([$1],[], [
+ case $host_os in
+ aix3*)
+ cat <<\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 "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+fi
+EOF
+ ;;
+ esac
+
+ # 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"
+])
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+])# AC_LIBTOOL_CONFIG
+
+
+# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------------------
+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI],
+[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+
+_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+
+if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+
+ AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
+ lt_cv_prog_compiler_rtti_exceptions,
+ [-fno-rtti -fno-exceptions], [],
+ [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
+fi
+])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI
+
+
+# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+# ---------------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE],
+[AC_REQUIRE([AC_CANONICAL_HOST])
+AC_REQUIRE([AC_PROG_NM])
+AC_REQUIRE([AC_OBJEXT])
+# 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]]*\)'
+
+# Transform the above into a raw symbol and a C symbol.
+symxfrm='\1 \2\3 \3'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+ symcode='[[BCDT]]'
+ ;;
+cygwin* | mingw* | pw32*)
+ symcode='[[ABCDGISTW]]'
+ ;;
+hpux*) # Its linker distinguishes data from code symbols
+ if test "$host_cpu" = ia64; then
+ symcode='[[ABCDEGRST]]'
+ fi
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+ ;;
+irix* | nonstopux*)
+ symcode='[[BCDEGRST]]'
+ ;;
+osf*)
+ symcode='[[BCDEGQRST]]'
+ ;;
+solaris* | sysv5*)
+ symcode='[[BDRT]]'
+ ;;
+sysv4)
+ symcode='[[DFNSTU]]'
+ ;;
+esac
+
+# 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
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+ symcode='[[ABCDGIRSTW]]' ;;
+esac
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+ # Write the raw and C identifiers.
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+
+ rm -f conftest*
+ cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+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 <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+ # Now generate the symbol file.
+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
+
+ cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+ const char *name;
+ lt_ptr_t address;
+}
+lt_preloaded_symbols[[]] =
+{
+EOF
+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
+ cat <<\EOF >> conftest.$ac_ext
+ {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+ lt_save_LIBS="$LIBS"
+ lt_save_CFLAGS="$CFLAGS"
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$_LT_AC_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_save_LIBS"
+ CFLAGS="$lt_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 -f conftest* conftst*
+
+ # Do not use the global_symbol_pipe unless it works.
+ if test "$pipe_works" = yes; 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
+]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+
+
+# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME])
+# ---------------------------------------
+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC],
+[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)=
+_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=
+
+AC_MSG_CHECKING([for $compiler option to produce PIC])
+ ifelse([$1],[CXX],[
+ # C++ specific cases for pic, static, wl, etc.
+ if test "$GXX" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+ amigaos*)
+ # 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_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+ mingw* | os2* | pw32*)
+ # 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_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+ ;;
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+ *djgpp*)
+ # DJGPP does not support shared libraries at all
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+ fi
+ ;;
+ hpux*)
+ # 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*)
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ else
+ case $host_os in
+ aix4* | aix5*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ else
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ chorus*)
+ case $cc_basename in
+ cxch68)
+ # Green Hills C++ Compiler
+ # _LT_AC_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
+ ;;
+ dgux*)
+ case $cc_basename in
+ ec++)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+ ghcx)
+ # Green Hills C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ freebsd* | kfreebsd*-gnu)
+ # FreeBSD uses GNU C++
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $cc_basename in
+ CC)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+ if test "$host_cpu" != ia64; then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ fi
+ ;;
+ aCC)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ ;;
+ esac
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ irix5* | irix6* | nonstopux*)
+ case $cc_basename in
+ CC)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ # CC pic flag -KPIC is the default.
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ linux*)
+ case $cc_basename in
+ KCC)
+ # KAI C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ icpc)
+ # Intel C++
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ cxx)
+ # Compaq C++
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ lynxos*)
+ ;;
+ m88k*)
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ netbsd*)
+ ;;
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+ KCC)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ ;;
+ RCC)
+ # Rational C++ 2.4.1
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ cxx)
+ # Digital/Compaq C++
+ _LT_AC_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_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ psos*)
+ ;;
+ sco*)
+ case $cc_basename in
+ CC)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ ;;
+ gcx)
+ # Green Hills C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC)
+ # Sun C++ 4.x
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ lcc)
+ # Lucid
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC)
+ # NonStop-UX NCC 3.20
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ unixware*)
+ ;;
+ vxworks*)
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+ esac
+ fi
+],
+[
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ # 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_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+ ;;
+
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | pw32* | os2*)
+ # 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_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ enable_shared=no
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+ fi
+ ;;
+
+ hpux*)
+ # 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_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ ;;
+
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ else
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+
+ mingw* | pw32* | os2*)
+ # 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_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ _LT_AC_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_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # PIC (with -KPIC) is the default.
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ newsos6)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ linux*)
+ case $CC in
+ icc* | ecc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ ccc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All Alpha code is PIC.
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ esac
+ ;;
+
+ osf3* | osf4* | osf5*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All OSF/1 code is PIC.
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ sco3.2v5*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn'
+ ;;
+
+ solaris*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sunos4*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ uts4*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+ esac
+ fi
+])
+AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)])
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then
+ AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works],
+ _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1),
+ [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [],
+ [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in
+ "" | " "*) ;;
+ *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;;
+ esac],
+ [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+fi
+case "$host_os" in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])"
+ ;;
+esac
+])
+
+
+# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME])
+# ------------------------------------
+# See if the linker supports building shared libraries.
+AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS],
+[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+ifelse([$1],[CXX],[
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ case $host_os in
+ aix4* | aix5*)
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+ else
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+ fi
+ ;;
+ pw32*)
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+ ;;
+ cygwin* | mingw*)
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ *)
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ esac
+],[
+ runpath_var=
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+ _LT_AC_TAGVAR(archive_cmds, $1)=
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)=
+ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)=
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+ _LT_AC_TAGVAR(thread_safe_flag_spec, $1)=
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+ _LT_AC_TAGVAR(hardcode_automatic, $1)=no
+ _LT_AC_TAGVAR(module_cmds, $1)=
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)=
+ _LT_AC_TAGVAR(always_export_symbols, $1)=no
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ _LT_AC_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_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_"
+ # 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.
+ extract_expsyms_cmds=
+
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+ # 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 "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+ if test "$with_gnu_ld" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix3* | aix4* | aix5*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, 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 modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+ fi
+ ;;
+
+ amigaos*)
+ _LT_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+
+ # Samuel A. Falvo II <kc5tja at dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we can't use
+ # them.
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+ # as there is no search path for DLLs.
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(always_export_symbols, $1)=no
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; 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}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris* | sysv5*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ cat <<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.
+
+EOF
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_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_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ sunos4*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ linux*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_cmds, $1)="$tmp_archive_cmds"
+ supports_anon_versioning=no
+ case `$LD -v 2>/dev/null` in
+ *\ [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
+ if test $supports_anon_versioning = yes; then
+ _LT_AC_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 -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ else
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="$tmp_archive_cmds"
+ fi
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_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_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+
+ if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = yes; then
+ runpath_var=LD_RUN_PATH
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+ _LT_AC_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_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ _LT_AC_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_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ if test "$GCC" = yes && test -z "$link_static_flag"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+ fi
+ ;;
+
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; 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 AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+ else
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | 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
+ # need to do runtime linking.
+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ 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_AC_TAGVAR(archive_cmds, $1)=''
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ if test "$GCC" = yes; 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
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ else
+ # We have old collect2
+ _LT_AC_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_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+ esac
+ shared_flag='-shared'
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; 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 "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_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_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+ # -bexpall does not export symbols beginning with underscore (_)
+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' '
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+ # This is similar to how AIX traditionally builds it's shared libraries.
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ _LT_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ # see comment about different semantics on the GNU ld section
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ bsdi4*)
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # 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.
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+ _LT_AC_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_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true'
+ # FIXME: Should let the user specify the lib program.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs'
+ fix_srcfile_path='`cygpath -w "$srcfile"`'
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ ;;
+
+ darwin* | rhapsody*)
+ if test "$GXX" = yes ; then
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ case "$host_os" in
+ rhapsody* | darwin1.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
+ ;;
+ 10.*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ lt_int_apple_cc_single_mod=no
+ output_verbose_link_cmd='echo'
+ if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
+ lt_int_apple_cc_single_mod=yes
+ fi
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -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'
+ fi
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ dgux*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ freebsd1*)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | kfreebsd*-gnu)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+
+ hpux10* | hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ case "$host_cpu" in
+ hppa*64*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ ia64*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ *)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_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_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ newsos6)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ openbsd*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ else
+ case $host_os in
+ openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ ;;
+
+ os2*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ else
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_AC_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~
+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
+ sco3.2v5*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ;;
+
+ solaris*)
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_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'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *) # Supported since Solaris 2.6 (maybe 2.5.1?)
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;;
+ esac
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ ;;
+ motorola)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv4.3*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+ fi
+ ;;
+
+ sysv4.2uw2*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ hardcode_runpath_var=yes
+ runpath_var=LD_RUN_PATH
+ ;;
+
+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*)
+ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text'
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ runpath_var='LD_RUN_PATH'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv5*)
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
+ # $CC -shared without GNU ld will not create a library from C++
+ # object files and a static libstdc++, better avoid it by now
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_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'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var='LD_RUN_PATH'
+ ;;
+
+ uts4*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ fi
+])
+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in
+x|xyes)
+ # Assume -lc should be added
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $_LT_AC_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_MSG_CHECKING([whether -lc should be explicitly linked in])
+ $rm conftest*
+ printf "$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_AC_TAGVAR(lt_prog_compiler_wl, $1)
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=
+ if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1)
+ then
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ else
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+ fi
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)])
+ ;;
+ esac
+ fi
+ ;;
+esac
+])# AC_LIBTOOL_PROG_LD_SHLIBS
+
+
+# _LT_AC_FILE_LTDLL_C
+# -------------------
+# Be careful that the start marker always follows a newline.
+AC_DEFUN([_LT_AC_FILE_LTDLL_C], [
+# /* ltdll.c starts here */
+# #define WIN32_LEAN_AND_MEAN
+# #include <windows.h>
+# #undef WIN32_LEAN_AND_MEAN
+# #include <stdio.h>
+#
+# #ifndef __CYGWIN__
+# # ifdef __CYGWIN32__
+# # define __CYGWIN__ __CYGWIN32__
+# # endif
+# #endif
+#
+# #ifdef __cplusplus
+# extern "C" {
+# #endif
+# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
+# #ifdef __cplusplus
+# }
+# #endif
+#
+# #ifdef __CYGWIN__
+# #include <cygwin/cygwin_dll.h>
+# DECLARE_CYGWIN_DLL( DllMain );
+# #endif
+# HINSTANCE __hDllInstance_base;
+#
+# BOOL APIENTRY
+# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
+# {
+# __hDllInstance_base = hInst;
+# return TRUE;
+# }
+# /* ltdll.c ends here */
+])# _LT_AC_FILE_LTDLL_C
+
+
+# _LT_AC_TAGVAR(VARNAME, [TAGNAME])
+# ---------------------------------
+AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])])
+
+
+# old names
+AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL])
+AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
+AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
+AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+AC_DEFUN([AM_PROG_LD], [AC_PROG_LD])
+AC_DEFUN([AM_PROG_NM], [AC_PROG_NM])
+
+# This is just to silence aclocal about the macro not being used
+ifelse([AC_DISABLE_FAST_INSTALL])
+
+AC_DEFUN([LT_AC_PROG_GCJ],
+[AC_CHECK_TOOL(GCJ, gcj, no)
+ test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+ AC_SUBST(GCJFLAGS)
+])
+
+AC_DEFUN([LT_AC_PROG_RC],
+[AC_CHECK_TOOL(RC, windres, no)
+])
+
+# 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. #
+# LT_AC_PROG_SED
+# --------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible. Prefer GNU sed if found.
+AC_DEFUN([LT_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
+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 && break
+ 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 $lt_ac_count -gt 10 && 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_MSG_RESULT([$SED])
+])
+
+# -*- Autoconf -*-
+# Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+# Generated from amversion.in; do not edit by hand.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+
+# 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.
+AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION so it can be traced.
+# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+ [AM_AUTOMAKE_VERSION([1.9.2])])
+
+# AM_AUX_DIR_EXPAND
+
+# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# 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],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_CONDITIONAL -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 6
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])
+AC_SUBST([$1_FALSE])
+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])])
+
+# serial 7 -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
+# Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+
+# 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", "GCJ", or "OBJC".
+# 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
+
+ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
+ [$1], CXX, [depcc="$CXX" am_compiler_list=],
+ [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+ [$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'.
+ 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
+ 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 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ case $depmode in
+ 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
+ ;;
+ none) break ;;
+ esac
+ # 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.
+ if depmode=$depmode \
+ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftest.${OBJEXT-o} 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,
+[ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])
+])
+
+# Generate code to set up dependency tracking. -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
+# Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+#serial 2
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[for mf in $CONFIG_FILES; 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.
+ # So let's grep whole file.
+ if grep '^#.*generated by automake' $mf > /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"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //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' -e 's/\$U/'"$U"'/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"])
+])
+
+# Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 7
+
+# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS.
+AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
+
+# Do all the work for Automake. -*- Autoconf -*-
+
+# 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.
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+# Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 11
+
+# 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.58])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
+# test to see if srcdir already configured
+if test "`cd $srcdir && pwd`" != "`pwd`" &&
+ test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+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],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])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)
+AM_PROG_INSTALL_SH
+AM_PROG_INSTALL_STRIP
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target. 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)],
+ [define([AC_PROG_CC],
+ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES(CXX)],
+ [define([AC_PROG_CXX],
+ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+])
+])
+
+
+# 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_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $1 | $1:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+
+# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+install_sh=${install_sh-"$am_aux_dir/install-sh"}
+AC_SUBST(install_sh)])
+
+# -*- Autoconf -*-
+# Copyright (C) 2003 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 1
+
+# 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.
+# From Jim Meyering
+
+# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004
+# Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 3
+
+AC_DEFUN([AM_MAINTAINER_MODE],
+[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+ dnl maintainer-mode is disabled by default
+ AC_ARG_ENABLE(maintainer-mode,
+[ --enable-maintainer-mode enable make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer],
+ USE_MAINTAINER_MODE=$enableval,
+ USE_MAINTAINER_MODE=no)
+ AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+ AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes])
+ MAINT=$MAINTAINER_MODE_TRUE
+ AC_SUBST(MAINT)dnl
+]
+)
+
+AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
+
+# Check to see how 'make' treats includes. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 2
+
+# 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 done
+.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
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+ am__include=include
+ am__quote=
+ _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ fi
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# -*- Autoconf -*-
+
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 3
+
+# 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 supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
+
+# Copyright (C) 2003, 2004 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
+# created by `make install' are always world readable, even if the
+# installer happens to have an overly restrictive umask (e.g. 077).
+# This was a mistake. There are at least two reasons why we must not
+# use `-m 0755':
+# - it causes special bits like SGID to be ignored,
+# - it may be too restrictive (some setups expect 775 directories).
+#
+# Do not use -m 0755 and let people choose whatever they expect by
+# setting umask.
+#
+# We cannot accept any implementation of `mkdir' that recognizes `-p'.
+# Some implementations (such as Solaris 8's) are not thread-safe: if a
+# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c'
+# concurrently, both version can detect that a/ is missing, but only
+# one can create it and the other will error out. Consequently we
+# restrict ourselves to GNU make (using the --version option ensures
+# this.)
+AC_DEFUN([AM_PROG_MKDIR_P],
+[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+ # We used to keeping the `.' as first argument, in order to
+ # allow $(mkdir_p) to be used without argument. As in
+ # $(mkdir_p) $(somedir)
+ # where $(somedir) is conditionally defined. However this is wrong
+ # for two reasons:
+ # 1. if the package is installed by a user who cannot write `.'
+ # make install will fail,
+ # 2. the above comment should most certainly read
+ # $(mkdir_p) $(DESTDIR)$(somedir)
+ # so it does not work when $(somedir) is undefined and
+ # $(DESTDIR) is not.
+ # To support the latter case, we have to write
+ # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+ # so the `.' trick is pointless.
+ mkdir_p='mkdir -p --'
+else
+ # On NextStep and OpenStep, the `mkdir' command does not
+ # recognize any option. It will interpret all options as
+ # directories to create, and then abort because `.' already
+ # exists.
+ for d in ./-p ./--version;
+ do
+ test -d $d && rmdir $d
+ done
+ # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
+ if test -f "$ac_aux_dir/mkinstalldirs"; then
+ mkdir_p='$(mkinstalldirs)'
+ else
+ mkdir_p='$(install_sh) -d'
+ fi
+fi
+AC_SUBST([mkdir_p])])
+
+# Helper functions for option handling. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 2
+
+# _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],
+[AC_FOREACH([_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])])
+
+#
+# Check to make sure that the build environment is sane.
+#
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 3
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# 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 (
+ 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
+ rm -f conftest.file
+ 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
+
+ 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)])
+
+# AM_PROG_INSTALL_STRIP
+
+# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# 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="\${SHELL} \$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Check how to create a tarball. -*- Autoconf -*-
+
+# Copyright (C) 2004 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 1
+
+
+# _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.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+ [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+ [m4_case([$1], [ustar],, [pax],,
+ [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar;
+ do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+dnl $Id: xdt-depends.m4 2273 2005-01-31 19:38:09Z benny $
+dnl
+dnl Copyright (c) 2002-2005
+dnl The Xfce development team. All rights reserved.
+dnl
+dnl Written for Xfce by Benedikt Meurer <benny at xfce.org>.
+dnl
+dnl xdt-depends
+dnl -----------
+dnl Contains M4 macros to check for software dependencies.
+dnl Partly based on prior work of the XDG contributors.
+dnl
+
+
+
+dnl We need recent a autoconf version
+AC_PREREQ([2.53])
+
+
+
+dnl XDT_PROG_PKG_CONFIG()
+dnl
+dnl Checks for the freedesktop.org pkg-config
+dnl utility and sets the PKG_CONFIG environment
+dnl variable to the full path if found.
+dnl
+AC_DEFUN([XDT_PROG_PKG_CONFIG],
+[
+ # minimum supported version of pkg-config
+ xdt_cv_PKG_CONFIG_MIN_VERSION=0.9.0
+
+ # lookup pkg-config utility
+ if test x"$PKG_CONFIG" = x""; then
+ AC_PATH_PROG([PKG_CONFIG], [pkg-config], [no])
+
+ if test x"$PKG_CONFIG" = x"no"; then
+ echo "*** The pkg-config utility could not be found on your system."
+ echo "*** Make sure it is in your path, or set the PKG_CONFIG"
+ echo "*** environment variable to the full path to pkg-config."
+ echo "*** You can download pkg-config from the freedesktop.org"
+ echo "*** software repository at"
+ echo "***"
+ echo "*** http://www.freedesktop.org/software/pkgconfig"
+ echo "***"
+ exit 1
+ fi
+
+ # check pkg-config version
+ AC_MSG_CHECKING([for pkg-config >= $xdt_cv_PKG_CONFIG_MIN_VERSION])
+ if $PKG_CONFIG --atleast-pkgconfig-version $xdt_cv_PKG_CONFIG_MIN_VERSION; then
+ xdt_cv_PKG_CONFIG_VERSION=`$PKG_CONFIG --version`
+ AC_MSG_RESULT([$xdt_cv_PKG_CONFIG_VERSION])
+ else
+ xdt_cv_PKG_CONFIG_VERSION=`$PKG_CONFIG --version`
+ AC_MSG_RESULT([$xdt_cv_PKG_CONFIG_VERSION])
+ echo "*** Your version of pkg-config is too old. You need atleast"
+ echo "*** pkg-config $xdt_cv_PKG_CONFIG_MIN_VERSION or newer. You can download pkg-config "
+ echo "*** from the freedesktop.org software repository at"
+ echo "***"
+ echo "*** http://www.freedesktop.org/software/pkgconfig"
+ echo "***"
+ exit 1
+ fi
+ fi
+])
+
+
+
+dnl XDT_CHECK_PACKAGE(varname, package, version, [action-if], [action-if-not])
+dnl
+dnl Checks if "package" >= "version" is installed on the
+dnl target system, using the pkg-config utility. If the
+dnl dependency is met, "varname"_CFLAGS, "varname"_LIBS,
+dnl "varname"_VERSION and "varname"_REQUIRED_VERSION
+dnl will be set and marked for substition.
+dnl
+dnl "varname"_REQUIRED_VERSION will be set to the value of
+dnl "version". This is mostly useful to automatically
+dnl place the correct version information into the RPM
+dnl .spec file.
+dnl
+dnl In addition, if the dependency is met, "action-if" will
+dnl be executed if given.
+dnl
+dnl If the package check fails, "action-if-not" will be
+dnl executed. If this parameter isn't specified, a diagnostic
+dnl message will be printed and the configure script will
+dnl be terminated with exit code 1.
+dnl
+AC_DEFUN([XDT_CHECK_PACKAGE],
+[
+ XDT_PROG_PKG_CONFIG()
+
+ AC_MSG_CHECKING([for $2 >= $3])
+ if $PKG_CONFIG "--atleast-version=$3" "$2" >/dev/null 2>&1; then
+ $1_VERSION=`$PKG_CONFIG --modversion "$2"`
+ AC_MSG_RESULT([$$1_VERSION])
+
+ AC_MSG_CHECKING([$1_CFLAGS])
+ $1_CFLAGS=`$PKG_CONFIG --cflags "$2"`
+ AC_MSG_RESULT([$$1_CFLAGS])
+
+ AC_MSG_CHECKING([$1_LIBS])
+ $1_LIBS=`$PKG_CONFIG --libs "$2"`
+ AC_MSG_RESULT([$$1_LIBS])
+
+ $1_REQUIRED_VERSION=$3
+
+ AC_SUBST([$1_VERSION])
+ AC_SUBST([$1_CFLAGS])
+ AC_SUBST([$1_LIBS])
+ AC_SUBST([$1_REQUIRED_VERSION])
+
+ ifelse([$4], , , [$4])
+ elif $PKG_CONFIG --exists "$2" >/dev/null 2>&1; then
+ xdg_cv_version=`$PKG_CONFIG --modversion "$2"`
+ AC_MSG_RESULT([found, but $xdt_cv_version])
+
+ ifelse([$5], ,
+ [
+ echo "*** The required package $2 was found on your system,"
+ echo "*** but the installed version ($xdt_cv_version) is too old."
+ echo "*** Please upgrade $2 to atleast version $3, or adjust"
+ echo "*** the PKG_CONFIG_PATH environment variable if you installed"
+ echo "*** the new version of the package in a nonstandard prefix so"
+ echo "*** pkg-config is able to find it."
+ exit 1
+ ], [$5])
+ else
+ AC_MSG_RESULT([not found])
+
+ ifelse([$5], ,
+ [
+ echo "*** The required package $2 was not found on your system."
+ echo "*** Please install $2 (atleast version $3) or adjust"
+ echo "*** the PKG_CONFIG_PATH environment variable if you"
+ echo "*** installed the package in a nonstandard prefix so that"
+ echo "*** pkg-config is able to find it."
+ exit 1
+ ], [$5])
+ fi
+])
+
+
+
+dnl XDT_CHECK_OPTIONAL_PACKAGE(varname, package, version, optionname, helpstring, [default])
+dnl
+dnl Checks for an optional dependency on "package" >= "version". "default"
+dnl can be "yes" or "no" (defaults to "yes" if not specified) and controls
+dnl whether configure should check this dependency by default, or only if
+dnl the user explicitly enables it using a command line switch.
+dnl
+dnl This macro automatically adds a commandline switch based on the "optionname"
+dnl parameter (--enable-optionname/--disable-optionname), which allows the
+dnl user to explicitly control whether this optional dependency should be
+dnl enabled or not. The "helpstring" parameter gives a brief(!) description
+dnl about this dependency.
+dnl
+dnl If the user chose to enable this dependency and the required package
+dnl was found, this macro defines the variable "varname"_FOUND and sets it
+dnl to the string "yes", in addition to the 4 variables set by XDT_CHECK_PACKAGE.
+dnl But "varname"_FOUND will not be marked for substition. Furthermore,
+dnl a CPP define HAVE_"varname" will be placed in config.h (or added to
+dnl the cc command line, depending on your configure.ac) and set to
+dnl 1.
+dnl
+AC_DEFUN([XDT_CHECK_OPTIONAL_PACKAGE],
+[
+ AC_REQUIRE([XDT_PROG_PKG_CONFIG])
+
+ AC_ARG_ENABLE([$4],
+AC_HELP_STRING([--enable-$4], [Enable checking for $5 (default=m4_default([$6], [yes]))])
+AC_HELP_STRING([--disable-$4], [Disable checking for $5]),
+ [xdt_cv_$1_check=$enableval], [xdt_cv_$1_check=m4_default([$6], [yes])])
+
+ if test x"$xdt_cv_$1_check" = x"yes"; then
+ if $PKG_CONFIG --exists "$2 >= $3" >/dev/null 2>&1; then
+ XDT_CHECK_PACKAGE([$1], [$2], [$3],
+ [
+ AC_DEFINE([HAVE_$1], [1], [Define if $2 >= $3 present])
+ $1_FOUND="yes"
+ ])
+ else
+ AC_MSG_CHECKING([for optional package $2 >= $3])
+ AC_MSG_RESULT([not found])
+ fi
+ else
+ AC_MSG_CHECKING([for optional package $2])
+ AC_MSG_RESULT([disabled])
+ fi
+
+ AM_CONDITIONAL([HAVE_$1], [test x"$$1_FOUND" = x"yes"])
+])
+
+
+
+dnl BM_DEPEND(varname, package, version)
+dnl
+dnl Simple wrapper for XDT_CHECK_PACKAGE("varname", "package", "version"). Kept
+dnl for backward compatibility. Will be removed in the future.
+dnl
+AC_DEFUN([BM_DEPEND],
+[
+ XDT_CHECK_PACKAGE([$1], [$2], [$3])
+])
+
+
+
+dnl BM_DEPEND_CHECK(var, pkg, version, name, helpstring, default)
+dnl
+dnl Simple wrapper for XDT_CHECK_OPTIONAL_PACKAGE(). Kept for backward
+dnl compatibility. Will be removed in the future.
+dnl
+AC_DEFUN([BM_DEPEND_CHECK],
+[
+ XDT_CHECK_OPTIONAL_PACKAGE([$1], [$2], [$3], [$4], [$5], [$6])
+])
+
+
+
+dnl XDT_CHECK_LIBX11()
+dnl
+dnl Executes various checks for X11. Sets LIBX11_CFLAGS, LIBX11_LDFLAGS
+dnl and LIBX11_LIBS (and marks them for substitution). In addition
+dnl HAVE_LIBX11 is set to 1 in config.h, if the X window system and
+dnl the development files are detected on the target system.
+dnl
+AC_DEFUN([XDT_CHECK_LIBX11],
+[
+ AC_REQUIRE([AC_PATH_XTRA])
+
+ LIBX11_CFLAGS= LIBX11_LDFLAGS= LIBX11_LIBS=
+ if test x"$no_x" != x"yes"; then
+ AC_CHECK_LIB([X11], [main],
+ [
+ AC_DEFINE([HAVE_LIBX11], [1], [Define if libX11 is available])
+ LIBX11_CFLAGS="$X_CFLAGS"
+ for option in $X_PRE_LIBS $X_EXTRA_LIBS $X_LIBS; do
+ case "$option" in
+ -L*)
+ path=`echo $option | sed 's/^-L//'`
+ if test x"$path" != x""; then
+ LIBX11_LDFLAGS="$LIBX11_LDFLAGS -L$path"
+ fi
+ ;;
+ *)
+ LIBX11_LIBS="$LIBX11_LIBS $option"
+ ;;
+ esac
+ done
+ if ! echo $LIBX11_LIBS | grep -- '-lX11' >/dev/null; then
+ LIBX11_LIBS="$LIBX11_LIBS -lX11"
+ fi
+ ], [], [$X_CFLAGS $X_PRE_LIBS $X_EXTRA_LIBS $X_LIBS])
+ fi
+ AC_SUBST([LIBX11_CFLAGS])
+ AC_SUBST([LIBX11_LDFLAGS])
+ AC_SUBST([LIBX11_LIBS])
+])
+
+
+
+dnl XDT_CHECK_LIBX11_REQUIRE()
+dnl
+dnl Similar to XDT_CHECK_LIBX11(), but terminates with an error if
+dnl the X window system and development files aren't detected on the
+dnl target system.
+dnl
+AC_DEFUN([XDT_CHECK_LIBX11_REQUIRE],
+[
+ AC_REQUIRE([XDT_CHECK_LIBX11])
+
+ if test x"$no_x" = x"yes"; then
+ AC_MSG_ERROR([X Window system libraries and header files are required])
+ fi
+])
+
+
+
+dnl XDT_CHECK_LIBSM()
+dnl
+dnl Checks whether the session management library is present on the
+dnl target system, and sets LIBSM_CFLAGS, LIBSM_LDFLAGS and LIBSM_LIBS
+dnl properly. In addition, HAVE_LIBSM will be set to 1 in config.h
+dnl if libSM is detected.
+dnl
+AC_DEFUN([XDT_CHECK_LIBSM],
+[
+ AC_REQUIRE([XDT_CHECK_LIBX11])
+
+ LIBSM_CFLAGS= LIBSM_LDFLAGS= LIBSM_LIBS=
+ if test x"$no_x" != x"yes"; then
+ AC_CHECK_LIB([SM], [SmcSaveYourselfDone],
+ [
+ AC_DEFINE([HAVE_LIBSM], [1], [Define if libSM is available])
+ LIBSM_CFLAGS="$LIBX11_CFLAGS"
+ LIBSM_LDFLAGS="$LIBX11_LDFLAGS"
+ LIBSM_LIBS="$LIBX11_LIBS"
+ if ! echo $LIBSM_LIBS | grep -- '-lSM' >/dev/null; then
+ LIBSM_LIBS="$LIBSM_LIBS -lSM -lICE"
+ fi
+ ], [], [$LIBX11_CFLAGS $LIBX11_LDFLAGS $LIBX11_LIBS -lICE])
+ fi
+ AC_SUBST([LIBSM_CFLAGS])
+ AC_SUBST([LIBSM_LDFLAGS])
+ AC_SUBST([LIBSM_LIBS])
+])
+
+
+
+dnl XDT_CHECK_LIBXPM()
+dnl
+dnl Checks if the Xpm library is present on the target system, and
+dnl sets LIBXPM_CFLAGS, LIBXPM_LDFLAGS and LIBXPM_LIBS. In addition,
+dnl HAVE_LIBXPM will be set to 1 in config.h if libXpm is detected.
+dnl
+AC_DEFUN([XDT_CHECK_LIBXPM],
+[
+ AC_REQUIRE([XDT_CHECK_LIBX11])
+
+ LIBXPM_CFLAGS= LIBXPM_LDFLAGS= LIBXPM_LIBS=
+ if test "$no_x" != "yes"; then
+ AC_CHECK_LIB([Xpm], [main],
+ [
+ AC_DEFINE([HAVE_LIBXPM], [1], [Define if libXpm is available])
+ LIBXPM_CFLAGS="$LIBX11_CFLAGS"
+ LIBXPM_LDFLAGS="$LIBX11_LDFLAGS"
+ LIBXPM_LIBS="$LIBX11_LIBS"
+ if ! echo $LIBXPM_LIBS | grep -- '-lXpm' >/dev/null; then
+ LIBXPM_LIBS="$LIBXPM_LIBS -lXpm"
+ fi
+ ], [], [$LIBX11_CFLAGS $LIBX11_LDFLAGS $LIBX11_LIBS -lXpm])
+ fi
+ AC_SUBST([LIBXPM_CFLAGS])
+ AC_SUBST([LIBXPM_LDFLAGS])
+ AC_SUBST([LIBXPM_LIBS])
+])
+
+
+
+dnl XDT_CHECK_LIBXPM_REQUIRE()
+dnl
+dnl Similar to XDT_CHECK_LIBXPM(), but fails if the Xpm library isn't
+dnl present on the target system.
+dnl
+AC_DEFUN([XDT_CHECK_LIBXPM_REQUIRE],
+[
+ AC_REQUIRE([XDT_CHECK_LIBX11_REQUIRE])
+ AC_REQUIRE([XDT_CHECK_LIBXPM])
+
+ if test x"$LIBXPM_LIBS" = x""; then
+ AC_MSG_ERROR([The Xpm library was not found on your system])
+ fi
+])
+
+
+
+dnl BM_LIBX11()
+dnl
+dnl Simple wrapper for XDT_CHECK_LIBX11. Kept for backward
+dnl compatibility. Will be removed in the future.
+dnl
+AC_DEFUN([BM_LIBX11],
+[
+ AC_REQUIRE([XDT_CHECK_LIBX11])
+])
+
+
+
+dnl BM_LIBX11_REQUIRE()
+dnl
+dnl Simple wrapper for XDT_CHECK_LIBX11_REQUIRE. Kept for backward
+dnl compatibility. Will be removed in the future.
+dnl
+AC_DEFUN([BM_LIBX11_REQUIRE],
+[
+ AC_REQUIRE([XDT_CHECK_LIBX11_REQUIRE])
+])
+
+
+
+dnl BM_LIBSM()
+dnl
+dnl Simple wrapper for XDT_CHECK_LIBSM. Kept for backward
+dnl compatibility. Will be removed in the future.
+dnl
+AC_DEFUN([BM_LIBSM],
+[
+ AC_REQUIRE([XDT_CHECK_LIBSM])
+])
+
+
+
+dnl BM_LIBXPM
+dnl
+dnl Simple wrapper for XDT_CHECK_LIBXPM. Kept for backward
+dnl compatibility. Will be removed in the future.
+dnl
+AC_DEFUN([BM_LIBXPM],
+[
+ AC_REQUIRE([XDT_CHECK_LIBXPM])
+])
+
+
+
+dnl BM_LIBXPM_REQUIRE
+dnl
+dnl Simple wrapper for XDT_CHECK_LIBXPM_REQUIRE. Kept for
+dnl backward compatibility. Will be removed in the future.
+dnl
+AC_DEFUN([BM_LIBXPM_REQUIRE],
+[
+ AC_REQUIRE([XDT_CHECK_LIBXPM_REQUIRE])
+])
+
+
+dnl $Id: xdt-i18n.m4 2278 2005-03-08 15:23:49Z benny $
+dnl
+dnl Copyright (c) 2002-2005
+dnl The Xfce development team. All rights reserved.
+dnl
+dnl Written for Xfce by Benedikt Meurer <benny at xfce.org>.
+dnl
+dnl xdt-i18n
+dnl --------
+dnl Internalization M4 macros.
+dnl
+
+
+dnl XDT_I18N(LINGUAS [, PACKAGE])
+dnl
+dnl This macro takes care of setting up everything for i18n support.
+dnl
+dnl If PACKAGE isn't specified, it defaults to the package tarname; see
+dnl the description of AC_INIT() for an explanation of what makes up
+dnl the package tarname. Normally, you don't need to specify PACKAGE,
+dnl but you can stick with the default.
+dnl
+AC_DEFUN([XDT_I18N],
+[
+ dnl Substitute GETTEXT_PACKAGE variable
+ GETTEXT_PACKAGE=m4_default([$2], [AC_PACKAGE_TARNAME()])
+ AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], ["$GETTEXT_PACKAGE"], [Name of default gettext domain])
+ AC_SUBST([GETTEXT_PACKAGE])
+
+ dnl gettext and stuff
+ ALL_LINGUAS="$1"
+ AM_GLIB_GNU_GETTEXT()
+
+ dnl This is required on some Linux systems
+ AC_CHECK_FUNC([bind_textdomain_codeset])
+
+ dnl Determine where to install locale files
+ AC_MSG_CHECKING([for locales directory])
+ AC_ARG_WITH([locales-dir],
+ [
+ AC_HELP_STRING([--with-locales-dir=DIR], [Install locales into DIR])
+ ], [localedir=$withval],
+ [
+ if test x"$CATOBJEXT" = x".mo"; then
+ localedir=$libdir/locale
+ else
+ localedir=$datadir/locale
+ fi
+ ])
+ AC_MSG_RESULT([$localedir])
+ AC_SUBST([localedir])
+
+ dnl Determine additional xgettext flags
+ AC_MSG_CHECKING([for additional xgettext flags])
+ if test x"$XGETTEXT_ARGS" = x""; then
+ XGETTEXT_ARGS="--keyword=Q_";
+ else
+ XGETTEXT_ARGS="$XGETTEXT_ARGS --keyword=Q_";
+ fi
+ AC_SUBST([XGETTEXT_ARGS])
+ AC_MSG_RESULT([$XGETTEXT_ARGS])
+])
+
+
+
+dnl BM_I18N(PACKAGE, LINGUAS)
+dnl
+dnl Simple wrapper for XDT_I18N(LINGUAS, PACKAGE). Kept for
+dnl backward compatibility. Will be removed in the
+dnl future.
+dnl
+AC_DEFUN([BM_I18N],
+[
+ XDT_I18N([$2], [$1])
+])
+
+
+# Copyright (C) 1995-2002 Free Software Foundation, Inc.
+# Copyright (C) 2001-2003 Red Hat, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License. As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# This file can be copied and used freely without restrictions. It can
+# be used in projects which are not available under the GNU Public License
+# but which still want to provide support for the GNU gettext functionality.
+#
+# Macro to add for using GNU gettext.
+# Ulrich Drepper <drepper at cygnus.com>, 1995, 1996
+#
+# Modified to never use included libintl.
+# Owen Taylor <otaylor at redhat.com>, 12/15/1998
+#
+# Major rework to remove unused code
+# Owen Taylor <otaylor at redhat.com>, 12/11/2002
+#
+# Added better handling of ALL_LINGUAS from GNU gettext version
+# written by Bruno Haible, Owen Taylor <otaylor.redhat.com> 5/30/3002
+
+#
+# We need this here as well, since someone might use autoconf-2.5x
+# to configure GLib then an older version to configure a package
+# using AM_GLIB_GNU_GETTEXT
+AC_PREREQ(2.53)
+
+dnl
+dnl We go to great lengths to make sure that aclocal won't
+dnl try to pull in the installed version of these macros
+dnl when running aclocal in the glib directory.
+dnl
+m4_copy([AC_DEFUN],[glib_DEFUN])
+m4_copy([AC_REQUIRE],[glib_REQUIRE])
+dnl
+dnl At the end, if we're not within glib, we'll define the public
+dnl definitions in terms of our private definitions.
+dnl
+
+# GLIB_LC_MESSAGES
+#--------------------
+glib_DEFUN([GLIB_LC_MESSAGES],
+ [AC_CHECK_HEADERS([locale.h])
+ if test $ac_cv_header_locale_h = yes; then
+ AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
+ [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
+ am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
+ if test $am_cv_val_LC_MESSAGES = yes; then
+ AC_DEFINE(HAVE_LC_MESSAGES, 1,
+ [Define if your <locale.h> file defines LC_MESSAGES.])
+ fi
+ fi])
+
+# GLIB_PATH_PROG_WITH_TEST
+#----------------------------
+dnl GLIB_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
+dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
+glib_DEFUN([GLIB_PATH_PROG_WITH_TEST],
+[# Extract the first word of "$2", so it can be a program name with args.
+set dummy $2; ac_word=[$]2
+AC_MSG_CHECKING([for $ac_word])
+AC_CACHE_VAL(ac_cv_path_$1,
+[case "[$]$1" in
+ /*)
+ ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
+ ;;
+ *)
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in ifelse([$5], , $PATH, [$5]); do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ if [$3]; then
+ ac_cv_path_$1="$ac_dir/$ac_word"
+ break
+ fi
+ fi
+ done
+ IFS="$ac_save_ifs"
+dnl If no 4th arg is given, leave the cache variable unset,
+dnl so AC_PATH_PROGS will keep looking.
+ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
+])dnl
+ ;;
+esac])dnl
+$1="$ac_cv_path_$1"
+if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
+ AC_MSG_RESULT([$]$1)
+else
+ AC_MSG_RESULT(no)
+fi
+AC_SUBST($1)dnl
+])
+
+# GLIB_WITH_NLS
+#-----------------
+glib_DEFUN([GLIB_WITH_NLS],
+ dnl NLS is obligatory
+ [USE_NLS=yes
+ AC_SUBST(USE_NLS)
+
+ gt_cv_have_gettext=no
+
+ CATOBJEXT=NONE
+ XGETTEXT=:
+ INTLLIBS=
+
+ AC_CHECK_HEADER(libintl.h,
+ [gt_cv_func_dgettext_libintl="no"
+ libintl_extra_libs=""
+
+ #
+ # First check in libc
+ #
+ AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc,
+ [AC_TRY_LINK([
+#include <libintl.h>
+],
+ [return (int) dgettext ("","")],
+ gt_cv_func_dgettext_libc=yes,
+ gt_cv_func_dgettext_libc=no)
+ ])
+
+ if test "$gt_cv_func_dgettext_libc" = "yes" ; then
+ AC_CHECK_FUNCS(bind_textdomain_codeset)
+ fi
+
+ #
+ # If we don't have everything we want, check in libintl
+ #
+ if test "$gt_cv_func_dgettext_libc" != "yes" \
+ || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then
+
+ AC_CHECK_LIB(intl, bindtextdomain,
+ [AC_CHECK_LIB(intl, dgettext,
+ gt_cv_func_dgettext_libintl=yes)])
+
+ if test "$gt_cv_func_dgettext_libintl" != "yes" ; then
+ AC_MSG_CHECKING([if -liconv is needed to use gettext])
+ AC_MSG_RESULT([])
+ AC_CHECK_LIB(intl, dcgettext,
+ [gt_cv_func_dgettext_libintl=yes
+ libintl_extra_libs=-liconv],
+ :,-liconv)
+ fi
+
+ #
+ # If we found libintl, then check in it for bind_textdomain_codeset();
+ # we'll prefer libc if neither have bind_textdomain_codeset(),
+ # and both have dgettext
+ #
+ if test "$gt_cv_func_dgettext_libintl" = "yes" ; then
+ glib_save_LIBS="$LIBS"
+ LIBS="$LIBS -lintl $libintl_extra_libs"
+ unset ac_cv_func_bind_textdomain_codeset
+ AC_CHECK_FUNCS(bind_textdomain_codeset)
+ LIBS="$glib_save_LIBS"
+
+ if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then
+ gt_cv_func_dgettext_libc=no
+ else
+ if test "$gt_cv_func_dgettext_libc" = "yes"; then
+ gt_cv_func_dgettext_libintl=no
+ fi
+ fi
+ fi
+ fi
+
+ if test "$gt_cv_func_dgettext_libc" = "yes" \
+ || test "$gt_cv_func_dgettext_libintl" = "yes"; then
+ gt_cv_have_gettext=yes
+ fi
+
+ if test "$gt_cv_func_dgettext_libintl" = "yes"; then
+ INTLLIBS="-lintl $libintl_extra_libs"
+ fi
+
+ if test "$gt_cv_have_gettext" = "yes"; then
+ AC_DEFINE(HAVE_GETTEXT,1,
+ [Define if the GNU gettext() function is already present or preinstalled.])
+ GLIB_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
+ [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
+ if test "$MSGFMT" != "no"; then
+ glib_save_LIBS="$LIBS"
+ LIBS="$LIBS $INTLLIBS"
+ AC_CHECK_FUNCS(dcgettext)
+ AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+ GLIB_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
+ [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
+ AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
+ return _nl_msg_cat_cntr],
+ [CATOBJEXT=.gmo
+ DATADIRNAME=share],
+ [case $host in
+ *-*-solaris*)
+ dnl On Solaris, if bind_textdomain_codeset is in libc,
+ dnl GNU format message catalog is always supported,
+ dnl since both are added to the libc all together.
+ dnl Hence, we'd like to go with DATADIRNAME=share and
+ dnl and CATOBJEXT=.gmo in this case.
+ AC_CHECK_FUNC(bind_textdomain_codeset,
+ [CATOBJEXT=.gmo
+ DATADIRNAME=share],
+ [CATOBJEXT=.mo
+ DATADIRNAME=lib])
+ ;;
+ *)
+ CATOBJEXT=.mo
+ DATADIRNAME=lib
+ ;;
+ esac])
+ LIBS="$glib_save_LIBS"
+ INSTOBJEXT=.mo
+ else
+ gt_cv_have_gettext=no
+ fi
+ fi
+ ])
+
+ if test "$gt_cv_have_gettext" = "yes" ; then
+ AC_DEFINE(ENABLE_NLS, 1,
+ [always defined to indicate that i18n is enabled])
+ fi
+
+ dnl Test whether we really found GNU xgettext.
+ if test "$XGETTEXT" != ":"; then
+ dnl If it is not GNU xgettext we define it as : so that the
+ dnl Makefiles still can work.
+ if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
+ : ;
+ else
+ AC_MSG_RESULT(
+ [found xgettext program is not GNU xgettext; ignore it])
+ XGETTEXT=":"
+ fi
+ fi
+
+ # We need to process the po/ directory.
+ POSUB=po
+
+ AC_OUTPUT_COMMANDS(
+ [case "$CONFIG_FILES" in *po/Makefile.in*)
+ sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
+ esac])
+
+ dnl These rules are solely for the distribution goal. While doing this
+ dnl we only have to keep exactly one list of the available catalogs
+ dnl in configure.in.
+ for lang in $ALL_LINGUAS; do
+ GMOFILES="$GMOFILES $lang.gmo"
+ POFILES="$POFILES $lang.po"
+ done
+
+ dnl Make all variables we use known to autoconf.
+ AC_SUBST(CATALOGS)
+ AC_SUBST(CATOBJEXT)
+ AC_SUBST(DATADIRNAME)
+ AC_SUBST(GMOFILES)
+ AC_SUBST(INSTOBJEXT)
+ AC_SUBST(INTLLIBS)
+ AC_SUBST(PO_IN_DATADIR_TRUE)
+ AC_SUBST(PO_IN_DATADIR_FALSE)
+ AC_SUBST(POFILES)
+ AC_SUBST(POSUB)
+ ])
+
+# AM_GLIB_GNU_GETTEXT
+# -------------------
+# Do checks necessary for use of gettext. If a suitable implementation
+# of gettext is found in either in libintl or in the C library,
+# it will set INTLLIBS to the libraries needed for use of gettext
+# and AC_DEFINE() HAVE_GETTEXT and ENABLE_NLS. (The shell variable
+# gt_cv_have_gettext will be set to "yes".) It will also call AC_SUBST()
+# on various variables needed by the Makefile.in.in installed by
+# glib-gettextize.
+dnl
+glib_DEFUN([GLIB_GNU_GETTEXT],
+ [AC_REQUIRE([AC_PROG_CC])dnl
+ AC_REQUIRE([AC_HEADER_STDC])dnl
+
+ GLIB_LC_MESSAGES
+ GLIB_WITH_NLS
+
+ if test "$gt_cv_have_gettext" = "yes"; then
+ if test "x$ALL_LINGUAS" = "x"; then
+ LINGUAS=
+ else
+ AC_MSG_CHECKING(for catalogs to be installed)
+ NEW_LINGUAS=
+ for presentlang in $ALL_LINGUAS; do
+ useit=no
+ if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then
+ desiredlanguages="$LINGUAS"
+ else
+ desiredlanguages="$ALL_LINGUAS"
+ fi
+ for desiredlang in $desiredlanguages; do
+ # Use the presentlang catalog if desiredlang is
+ # a. equal to presentlang, or
+ # b. a variant of presentlang (because in this case,
+ # presentlang can be used as a fallback for messages
+ # which are not translated in the desiredlang catalog).
+ case "$desiredlang" in
+ "$presentlang"*) useit=yes;;
+ esac
+ done
+ if test $useit = yes; then
+ NEW_LINGUAS="$NEW_LINGUAS $presentlang"
+ fi
+ done
+ LINGUAS=$NEW_LINGUAS
+ AC_MSG_RESULT($LINGUAS)
+ fi
+
+ dnl Construct list of names of catalog files to be constructed.
+ if test -n "$LINGUAS"; then
+ for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
+ fi
+ fi
+
+ dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
+ dnl find the mkinstalldirs script in another subdir but ($top_srcdir).
+ dnl Try to locate is.
+ MKINSTALLDIRS=
+ if test -n "$ac_aux_dir"; then
+ MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
+ fi
+ if test -z "$MKINSTALLDIRS"; then
+ MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
+ fi
+ AC_SUBST(MKINSTALLDIRS)
+
+ dnl Generate list of files to be processed by xgettext which will
+ dnl be included in po/Makefile.
+ test -d po || mkdir po
+ if test "x$srcdir" != "x."; then
+ if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
+ posrcprefix="$srcdir/"
+ else
+ posrcprefix="../$srcdir/"
+ fi
+ else
+ posrcprefix="../"
+ fi
+ rm -f po/POTFILES
+ sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
+ < $srcdir/po/POTFILES.in > po/POTFILES
+ ])
+
+# AM_GLIB_DEFINE_LOCALEDIR(VARIABLE)
+# -------------------------------
+# Define VARIABLE to the location where catalog files will
+# be installed by po/Makefile.
+glib_DEFUN([GLIB_DEFINE_LOCALEDIR],
+[glib_REQUIRE([GLIB_GNU_GETTEXT])dnl
+glib_save_prefix="$prefix"
+glib_save_exec_prefix="$exec_prefix"
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+test "x$exec_prefix" = xNONE && exec_prefix=$prefix
+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"
+AC_DEFINE_UNQUOTED($1, "$localedir",
+ [Define the location where the catalogs will be installed])
+])
+
+dnl
+dnl Now the definitions that aclocal will find
+dnl
+ifdef(glib_configure_in,[],[
+AC_DEFUN([AM_GLIB_GNU_GETTEXT],[GLIB_GNU_GETTEXT($@)])
+AC_DEFUN([AM_GLIB_DEFINE_LOCALEDIR],[GLIB_DEFINE_LOCALEDIR($@)])
+])dnl
+
+dnl -*- mode: autoconf -*-
+
+# serial 1
+
+dnl Usage:
+dnl GTK_DOC_CHECK([minimum-gtk-doc-version])
+AC_DEFUN([GTK_DOC_CHECK],
+[
+ AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
+ AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
+ dnl for overriding the documentation installation directory
+ AC_ARG_WITH(html-dir,
+ AC_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,
+ AC_HELP_STRING([--enable-gtk-doc],
+ [use gtk-doc to build documentation [default=no]]),,
+ enable_gtk_doc=no)
+
+ have_gtk_doc=no
+ if test x$enable_gtk_doc = xyes; then
+ if test -z "$PKG_CONFIG"; then
+ AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+ fi
+ if test "$PKG_CONFIG" != "no" && $PKG_CONFIG --exists gtk-doc; then
+ have_gtk_doc=yes
+ fi
+
+ dnl do we want to do a version check?
+ifelse([$1],[],,
+ [gtk_doc_min_version=$1
+ if test "$have_gtk_doc" = yes; then
+ AC_MSG_CHECKING([gtk-doc version >= $gtk_doc_min_version])
+ if $PKG_CONFIG --atleast-version $gtk_doc_min_version gtk-doc; then
+ AC_MSG_RESULT(yes)
+ else
+ AC_MSG_RESULT(no)
+ have_gtk_doc=no
+ fi
+ fi
+])
+ if test "$have_gtk_doc" != yes; then
+ enable_gtk_doc=no
+ fi
+ fi
+
+ AM_CONDITIONAL(ENABLE_GTK_DOC, test x$enable_gtk_doc = xyes)
+ AM_CONDITIONAL(GTK_DOC_USE_LIBTOOL, test -n "$LIBTOOL")
+])
+
+
+dnl IT_PROG_INTLTOOL([MINIMUM-VERSION], [no-xml])
+# serial 2 IT_PROG_INTLTOOL
+AC_DEFUN([IT_PROG_INTLTOOL],
+[
+
+if test -n "$1"; then
+ AC_MSG_CHECKING(for intltool >= $1)
+
+ INTLTOOL_REQUIRED_VERSION_AS_INT=`echo $1 | awk -F. '{ printf "%d", $[1] * 100 + $[2]; }'`
+ INTLTOOL_APPLIED_VERSION=`awk -F\" '/\\$VERSION / { printf $[2]; }' < ${ac_aux_dir}/intltool-update.in`
+ changequote({{,}})
+ INTLTOOL_APPLIED_VERSION_AS_INT=`awk -F\" '/\\$VERSION / { split(${{2}}, VERSION, "."); printf "%d\n", VERSION[1] * 100 + VERSION[2];}' < ${ac_aux_dir}/intltool-update.in`
+ changequote([,])
+
+ if test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT"; then
+ AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found])
+ else
+ AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found. Your intltool is too old. You need intltool $1 or later.])
+ exit 1
+ fi
+fi
+
+ INTLTOOL_DESKTOP_RULE='%.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_KEYS_RULE='%.keys: %.keys.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_PROP_RULE='%.prop: %.prop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_OAF_RULE='%.oaf: %.oaf.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -p $(top_srcdir)/po $< [$]@'
+ INTLTOOL_PONG_RULE='%.pong: %.pong.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_SERVER_RULE='%.server: %.server.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_SHEET_RULE='%.sheet: %.sheet.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_UI_RULE='%.ui: %.ui.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_XML_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u /tmp $< [$]@'
+ INTLTOOL_XAM_RULE='%.xam: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_KBD_RULE='%.kbd: %.kbd.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_CAVES_RULE='%.caves: %.caves.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_SCHEMAS_RULE='%.schemas: %.schemas.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+ INTLTOOL_THEME_RULE='%.theme: %.theme.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
+
+AC_SUBST(INTLTOOL_DESKTOP_RULE)
+AC_SUBST(INTLTOOL_DIRECTORY_RULE)
+AC_SUBST(INTLTOOL_KEYS_RULE)
+AC_SUBST(INTLTOOL_PROP_RULE)
+AC_SUBST(INTLTOOL_OAF_RULE)
+AC_SUBST(INTLTOOL_PONG_RULE)
+AC_SUBST(INTLTOOL_SERVER_RULE)
+AC_SUBST(INTLTOOL_SHEET_RULE)
+AC_SUBST(INTLTOOL_SOUNDLIST_RULE)
+AC_SUBST(INTLTOOL_UI_RULE)
+AC_SUBST(INTLTOOL_XAM_RULE)
+AC_SUBST(INTLTOOL_KBD_RULE)
+AC_SUBST(INTLTOOL_XML_RULE)
+AC_SUBST(INTLTOOL_XML_NOMERGE_RULE)
+AC_SUBST(INTLTOOL_CAVES_RULE)
+AC_SUBST(INTLTOOL_SCHEMAS_RULE)
+AC_SUBST(INTLTOOL_THEME_RULE)
+
+# Use the tools built into the package, not the ones that are installed.
+
+INTLTOOL_EXTRACT='$(top_builddir)/intltool-extract'
+INTLTOOL_MERGE='$(top_builddir)/intltool-merge'
+INTLTOOL_UPDATE='$(top_builddir)/intltool-update'
+
+AC_SUBST(INTLTOOL_EXTRACT)
+AC_SUBST(INTLTOOL_MERGE)
+AC_SUBST(INTLTOOL_UPDATE)
+
+AC_PATH_PROG(INTLTOOL_PERL, perl)
+if test -z "$INTLTOOL_PERL"; then
+ AC_MSG_ERROR([perl not found; required for intltool])
+fi
+if test -z "`$INTLTOOL_PERL -v | fgrep '5.' 2> /dev/null`"; then
+ AC_MSG_ERROR([perl 5.x required for intltool])
+fi
+if test "x$2" != "xno-xml"; then
+ AC_MSG_CHECKING([for XML::Parser])
+ if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then
+ AC_MSG_RESULT([ok])
+ else
+ AC_MSG_ERROR([XML::Parser perl module is required for intltool])
+ fi
+fi
+
+AC_PATH_PROG(INTLTOOL_ICONV, iconv, iconv)
+AC_PATH_PROG(INTLTOOL_MSGFMT, msgfmt, msgfmt)
+AC_PATH_PROG(INTLTOOL_MSGMERGE, msgmerge, msgmerge)
+AC_PATH_PROG(INTLTOOL_XGETTEXT, xgettext, xgettext)
+
+# Remove file type tags (using []) from po/POTFILES.
+
+ifdef([AC_DIVERSION_ICMDS],[
+ AC_DIVERT_PUSH(AC_DIVERSION_ICMDS)
+ changequote(,)
+ mv -f po/POTFILES po/POTFILES.tmp
+ sed -e '/\[encoding.*\]/d' -e 's/\[.*\] *//' < po/POTFILES.tmp > po/POTFILES
+ rm -f po/POTFILES.tmp
+ changequote([,])
+ AC_DIVERT_POP()
+],[
+ ifdef([AC_CONFIG_COMMANDS_PRE],[
+ AC_CONFIG_COMMANDS_PRE([
+ changequote(,)
+ mv -f po/POTFILES po/POTFILES.tmp
+ sed -e '/\[encoding.*\]/d' -e 's/\[.*\] *//' < po/POTFILES.tmp > po/POTFILES
+ rm -f po/POTFILES.tmp
+ changequote([,])
+ ])
+ ])
+
+if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+ # Keeping the `.' argument allows $(mkdir_p) to be used without
+ # argument. Indeed, we sometimes output rules like
+ # $(mkdir_p) $(somedir)
+ # where $(somedir) is conditionally defined.
+ # (`test -n '$(somedir)' && $(mkdir_p) $(somedir)' is a more
+ # expensive solution, as it forces Make to start a sub-shell.)
+ mkdir_p='mkdir -p -- .'
+else
+ # On NextStep and OpenStep, the `mkdir' command does not
+ # recognize any option. It will interpret all options as
+ # directories to create, and then abort because `.' already
+ # exists.
+ for d in ./-p ./--version;
+ do
+ test -d $d && rmdir $d
+ done
+ # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
+ if test -f "$ac_aux_dir/mkinstalldirs"; then
+ mkdir_p='$(mkinstalldirs)'
+ else
+ mkdir_p='$(install_sh) -d'
+ fi
+fi
+AC_SUBST([mkdir_p])
+])
+
+# Manually sed perl in so people don't have to put the intltool scripts in AC_OUTPUT.
+
+AC_CONFIG_COMMANDS([intltool], [
+
+intltool_edit="-e 's#@INTLTOOL_EXTRACT@#`pwd`/intltool-extract#g' \
+ -e 's#@INTLTOOL_ICONV@#${INTLTOOL_ICONV}#g' \
+ -e 's#@INTLTOOL_MSGFMT@#${INTLTOOL_MSGFMT}#g' \
+ -e 's#@INTLTOOL_MSGMERGE@#${INTLTOOL_MSGMERGE}#g' \
+ -e 's#@INTLTOOL_XGETTEXT@#${INTLTOOL_XGETTEXT}#g' \
+ -e 's#@INTLTOOL_PERL@#${INTLTOOL_PERL}#g'"
+
+eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-extract.in \
+ > intltool-extract.out
+if cmp -s intltool-extract intltool-extract.out 2>/dev/null; then
+ rm -f intltool-extract.out
+else
+ mv -f intltool-extract.out intltool-extract
+fi
+chmod ugo+x intltool-extract
+chmod u+w intltool-extract
+
+eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-merge.in \
+ > intltool-merge.out
+if cmp -s intltool-merge intltool-merge.out 2>/dev/null; then
+ rm -f intltool-merge.out
+else
+ mv -f intltool-merge.out intltool-merge
+fi
+chmod ugo+x intltool-merge
+chmod u+w intltool-merge
+
+eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-update.in \
+ > intltool-update.out
+if cmp -s intltool-update intltool-update.out 2>/dev/null; then
+ rm -f intltool-update.out
+else
+ mv -f intltool-update.out intltool-update
+fi
+chmod ugo+x intltool-update
+chmod u+w intltool-update
+
+], INTLTOOL_PERL='${INTLTOOL_PERL}' ac_aux_dir=${ac_aux_dir}
+INTLTOOL_EXTRACT='${INTLTOOL_EXTRACT}' ICONV='${INTLTOOL_ICONV}'
+MSGFMT='${INTLTOOL_MSGFMT}' MSGMERGE='${INTLTOOL_MSGMERGE}'
+XGETTEXT='${INTLTOOL_XGETTEXT}')
+
+])
+
+# deprecated macros
+AC_DEFUN([AC_PROG_INTLTOOL], [IT_PROG_INTLTOOL($@)])
+
+
Added: desktop/trunk/thunar/branches/upstream/current/compile
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/compile 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/compile 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,140 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand `-c -o'.
+
+scriptversion=2004-09-10.20
+
+# Copyright (C) 1999, 2000, 2003, 2004 Free Software Foundation, Inc.
+# Written by Tom Tromey <tromey at cygnus.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake at gnu.org> or send patches to
+# <automake-patches at gnu.org>.
+
+case $1 in
+ '')
+ echo "$0: No command. Try \`$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
+ -h | --h*)
+ cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand `-c -o'.
+Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file `INSTALL'.
+
+Report bugs to <bug-automake at gnu.org>.
+EOF
+ exit 0
+ ;;
+ -v | --v*)
+ echo "compile $scriptversion"
+ exit 0
+ ;;
+esac
+
+ofile=
+cfile=
+eat=
+
+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 -e 's|^.*/||' -e '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
+ mv "$cofile" "$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-end: "$"
+# End:
Property changes on: desktop/trunk/thunar/branches/upstream/current/compile
___________________________________________________________________
Name: svn:executable
+
Added: desktop/trunk/thunar/branches/upstream/current/config.guess
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/config.guess 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/config.guess 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,1459 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+
+timestamp='2004-03-12'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Per Bothner <per at bothner.com>.
+# Please send patches to <config-patches at gnu.org>. Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub. If it succeeds, it prints the system name on stdout, and
+# exits with 0. Otherwise, it exits with 1.
+#
+# The plan is that this can be called by configure scripts if you
+# don't specify an explicit build system type.
+
+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 <config-patches at gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+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 0 ;;
+ --version | -v )
+ echo "$version" ; exit 0 ;;
+ --help | --h* | -h )
+ echo "$usage"; exit 0 ;;
+ -- ) # 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 -q "$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 ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi at 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
+
+# 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 tupples: *-*-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=`(/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 ;;
+ *) 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*|i386|m68k|ns32k|sh3*|sparc|vax)
+ eval $set_cc_for_build
+ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep __ELF__ >/dev/null
+ 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
+ # 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/[-_].*/\./'`
+ ;;
+ 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}"
+ exit 0 ;;
+ amd64:OpenBSD:*:*)
+ echo x86_64-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ amiga:OpenBSD:*:*)
+ echo m68k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ arc:OpenBSD:*:*)
+ echo mipsel-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ cats:OpenBSD:*:*)
+ echo arm-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ hp300:OpenBSD:*:*)
+ echo m68k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ mac68k:OpenBSD:*:*)
+ echo m68k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ macppc:OpenBSD:*:*)
+ echo powerpc-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ mvme68k:OpenBSD:*:*)
+ echo m68k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ mvme88k:OpenBSD:*:*)
+ echo m88k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ mvmeppc:OpenBSD:*:*)
+ echo powerpc-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ pegasos:OpenBSD:*:*)
+ echo powerpc-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ pmax:OpenBSD:*:*)
+ echo mipsel-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ sgi:OpenBSD:*:*)
+ echo mipseb-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ sun3:OpenBSD:*:*)
+ echo m68k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ wgrisc:OpenBSD:*:*)
+ echo mipsel-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ *:OpenBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ *:ekkoBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+ exit 0 ;;
+ macppc:MirBSD:*:*)
+ echo powerppc-unknown-mirbsd${UNAME_RELEASE}
+ exit 0 ;;
+ *:MirBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+ exit 0 ;;
+ 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'`
+ exit 0 ;;
+ Alpha*:OpenVMS:*:*)
+ echo alpha-hp-vms
+ exit 0 ;;
+ 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 0 ;;
+ 21064:Windows_NT:50:3)
+ echo alpha-dec-winnt3.5
+ exit 0 ;;
+ Amiga*:UNIX_System_V:4.0:*)
+ echo m68k-unknown-sysv4
+ exit 0;;
+ *:[Aa]miga[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-amigaos
+ exit 0 ;;
+ *:[Mm]orph[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-morphos
+ exit 0 ;;
+ *:OS/390:*:*)
+ echo i370-ibm-openedition
+ exit 0 ;;
+ *:OS400:*:*)
+ echo powerpc-ibm-os400
+ exit 0 ;;
+ arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+ echo arm-acorn-riscix${UNAME_RELEASE}
+ exit 0;;
+ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+ echo hppa1.1-hitachi-hiuxmpp
+ exit 0;;
+ Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+ # akee at 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 0 ;;
+ NILE*:*:*:dcosx)
+ echo pyramid-pyramid-svr4
+ exit 0 ;;
+ DRS?6000:unix:4.0:6*)
+ echo sparc-icl-nx6
+ exit 0 ;;
+ DRS?6000:UNIX_SV:4.2*:7*)
+ case `/usr/bin/uname -p` in
+ sparc) echo sparc-icl-nx7 && exit 0 ;;
+ esac ;;
+ sun4H:SunOS:5.*:*)
+ echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit 0 ;;
+ sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+ echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit 0 ;;
+ i86pc:SunOS:5.*:*)
+ echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit 0 ;;
+ 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 0 ;;
+ 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 0 ;;
+ sun3*:SunOS:*:*)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ exit 0 ;;
+ 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 0 ;;
+ aushp:SunOS:*:*)
+ echo sparc-auspex-sunos${UNAME_RELEASE}
+ exit 0 ;;
+ # 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 0 ;;
+ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit 0 ;;
+ *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit 0 ;;
+ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+ echo m68k-milan-mint${UNAME_RELEASE}
+ exit 0 ;;
+ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+ echo m68k-hades-mint${UNAME_RELEASE}
+ exit 0 ;;
+ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+ echo m68k-unknown-mint${UNAME_RELEASE}
+ exit 0 ;;
+ m68k:machten:*:*)
+ echo m68k-apple-machten${UNAME_RELEASE}
+ exit 0 ;;
+ powerpc:machten:*:*)
+ echo powerpc-apple-machten${UNAME_RELEASE}
+ exit 0 ;;
+ RISC*:Mach:*:*)
+ echo mips-dec-mach_bsd4.3
+ exit 0 ;;
+ RISC*:ULTRIX:*:*)
+ echo mips-dec-ultrix${UNAME_RELEASE}
+ exit 0 ;;
+ VAX*:ULTRIX*:*:*)
+ echo vax-dec-ultrix${UNAME_RELEASE}
+ exit 0 ;;
+ 2020:CLIX:*:* | 2430:CLIX:*:*)
+ echo clipper-intergraph-clix${UNAME_RELEASE}
+ exit 0 ;;
+ mips:*:*:UMIPS | mips:*:*:RISCos)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h> /* 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 \
+ && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
+ && exit 0
+ echo mips-mips-riscos${UNAME_RELEASE}
+ exit 0 ;;
+ Motorola:PowerMAX_OS:*:*)
+ echo powerpc-motorola-powermax
+ exit 0 ;;
+ Motorola:*:4.3:PL8-*)
+ echo powerpc-harris-powermax
+ exit 0 ;;
+ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+ echo powerpc-harris-powermax
+ exit 0 ;;
+ Night_Hawk:Power_UNIX:*:*)
+ echo powerpc-harris-powerunix
+ exit 0 ;;
+ m88k:CX/UX:7*:*)
+ echo m88k-harris-cxux7
+ exit 0 ;;
+ m88k:*:4*:R4*)
+ echo m88k-motorola-sysv4
+ exit 0 ;;
+ m88k:*:3*:R3*)
+ echo m88k-motorola-sysv3
+ exit 0 ;;
+ 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 0 ;;
+ M88*:DolphinOS:*:*) # DolphinOS (SVR3)
+ echo m88k-dolphin-sysv3
+ exit 0 ;;
+ M88*:*:R3*:*)
+ # Delta 88k system running SVR3
+ echo m88k-motorola-sysv3
+ exit 0 ;;
+ XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+ echo m88k-tektronix-sysv3
+ exit 0 ;;
+ Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+ echo m68k-tektronix-bsd
+ exit 0 ;;
+ *:IRIX*:*:*)
+ echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+ exit 0 ;;
+ ????????: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 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX '
+ i*86:AIX:*:*)
+ echo i386-ibm-aix
+ exit 0 ;;
+ 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 0 ;;
+ *: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 <sys/systemcfg.h>
+
+ main()
+ {
+ if (!__power_pc())
+ exit(1);
+ puts("powerpc-ibm-aix3.2.5");
+ exit(0);
+ }
+EOF
+ $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
+ echo rs6000-ibm-aix3.2.5
+ 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 0 ;;
+ *:AIX:*:[45])
+ 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/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+ exit 0 ;;
+ *:AIX:*:*)
+ echo rs6000-ibm-aix
+ exit 0 ;;
+ ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+ echo romp-ibm-bsd4.4
+ exit 0 ;;
+ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
+ echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
+ exit 0 ;; # report: romp-ibm BSD 4.3
+ *:BOSX:*:*)
+ echo rs6000-bull-bosx
+ exit 0 ;;
+ DPX/2?00:B.O.S.:*:*)
+ echo m68k-bull-sysv3
+ exit 0 ;;
+ 9000/[34]??:4.3bsd:1.*:*)
+ echo m68k-hp-bsd
+ exit 0 ;;
+ hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+ echo m68k-hp-bsd4.4
+ exit 0 ;;
+ 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 <stdlib.h>
+ #include <unistd.h>
+
+ 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
+ # avoid double evaluation of $set_cc_for_build
+ test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
+ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null
+ then
+ HP_ARCH="hppa2.0w"
+ else
+ HP_ARCH="hppa64"
+ fi
+ fi
+ echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+ exit 0 ;;
+ ia64:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ echo ia64-hp-hpux${HPUX_REV}
+ exit 0 ;;
+ 3050*:HI-UX:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <unistd.h>
+ 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 && $dummy && exit 0
+ echo unknown-hitachi-hiuxwe2
+ exit 0 ;;
+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+ echo hppa1.1-hp-bsd
+ exit 0 ;;
+ 9000/8??:4.3bsd:*:*)
+ echo hppa1.0-hp-bsd
+ exit 0 ;;
+ *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+ echo hppa1.0-hp-mpeix
+ exit 0 ;;
+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+ echo hppa1.1-hp-osf
+ exit 0 ;;
+ hp8??:OSF1:*:*)
+ echo hppa1.0-hp-osf
+ exit 0 ;;
+ i*86:OSF1:*:*)
+ if [ -x /usr/sbin/sysversion ] ; then
+ echo ${UNAME_MACHINE}-unknown-osf1mk
+ else
+ echo ${UNAME_MACHINE}-unknown-osf1
+ fi
+ exit 0 ;;
+ parisc*:Lites*:*:*)
+ echo hppa1.1-hp-lites
+ exit 0 ;;
+ C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+ echo c1-convex-bsd
+ exit 0 ;;
+ C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit 0 ;;
+ C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+ echo c34-convex-bsd
+ exit 0 ;;
+ C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+ echo c38-convex-bsd
+ exit 0 ;;
+ C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+ echo c4-convex-bsd
+ exit 0 ;;
+ CRAY*Y-MP:*:*:*)
+ echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ 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 0 ;;
+ CRAY*TS:*:*:*)
+ echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ CRAY*T3E:*:*:*)
+ echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ CRAY*SV1:*:*:*)
+ echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ *:UNICOS/mp:*:*)
+ echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ 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 0 ;;
+ 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 0 ;;
+ i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+ echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+ exit 0 ;;
+ sparc*:BSD/OS:*:*)
+ echo sparc-unknown-bsdi${UNAME_RELEASE}
+ exit 0 ;;
+ *:BSD/OS:*:*)
+ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+ exit 0 ;;
+ *:FreeBSD:*:*)
+ # Determine whether the default compiler uses glibc.
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <features.h>
+ #if __GLIBC__ >= 2
+ LIBC=gnu
+ #else
+ LIBC=
+ #endif
+EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+ # GNU/KFreeBSD systems have a "k" prefix to indicate we are using
+ # FreeBSD's kernel, but not the complete OS.
+ case ${LIBC} in gnu) kernel_only='k' ;; esac
+ echo ${UNAME_MACHINE}-unknown-${kernel_only}freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
+ exit 0 ;;
+ i*:CYGWIN*:*)
+ echo ${UNAME_MACHINE}-pc-cygwin
+ exit 0 ;;
+ i*:MINGW*:*)
+ echo ${UNAME_MACHINE}-pc-mingw32
+ exit 0 ;;
+ i*:PW*:*)
+ echo ${UNAME_MACHINE}-pc-pw32
+ exit 0 ;;
+ x86:Interix*:[34]*)
+ echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
+ exit 0 ;;
+ [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+ echo i${UNAME_MACHINE}-pc-mks
+ exit 0 ;;
+ 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 0 ;;
+ i*:UWIN*:*)
+ echo ${UNAME_MACHINE}-pc-uwin
+ exit 0 ;;
+ p*:CYGWIN*:*)
+ echo powerpcle-unknown-cygwin
+ exit 0 ;;
+ prep*:SunOS:5.*:*)
+ echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit 0 ;;
+ *:GNU:*:*)
+ # the GNU system
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ exit 0 ;;
+ *:GNU/*:*:*)
+ # other systems with GNU libc and userland
+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+ exit 0 ;;
+ i*86:Minix:*:*)
+ echo ${UNAME_MACHINE}-pc-minix
+ exit 0 ;;
+ arm*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ cris:Linux:*:*)
+ echo cris-axis-linux-gnu
+ exit 0 ;;
+ ia64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ m32r*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ m68*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ mips:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #undef CPU
+ #undef mips
+ #undef mipsel
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ CPU=mipsel
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ CPU=mips
+ #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-gnu" && exit 0
+ ;;
+ mips64:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #undef CPU
+ #undef mips64
+ #undef mips64el
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ CPU=mips64el
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ CPU=mips64
+ #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-gnu" && exit 0
+ ;;
+ ppc:Linux:*:*)
+ echo powerpc-unknown-linux-gnu
+ exit 0 ;;
+ ppc64:Linux:*:*)
+ echo powerpc64-unknown-linux-gnu
+ exit 0 ;;
+ 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 ld.so.1 >/dev/null
+ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+ exit 0 ;;
+ parisc:Linux:*:* | hppa:Linux:*:*)
+ # Look for CPU level
+ case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+ PA7*) echo hppa1.1-unknown-linux-gnu ;;
+ PA8*) echo hppa2.0-unknown-linux-gnu ;;
+ *) echo hppa-unknown-linux-gnu ;;
+ esac
+ exit 0 ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ echo hppa64-unknown-linux-gnu
+ exit 0 ;;
+ s390:Linux:*:* | s390x:Linux:*:*)
+ echo ${UNAME_MACHINE}-ibm-linux
+ exit 0 ;;
+ sh64*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ sh*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ sparc:Linux:*:* | sparc64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ x86_64:Linux:*:*)
+ echo x86_64-unknown-linux-gnu
+ exit 0 ;;
+ i*86:Linux:*:*)
+ # The BFD linker knows what the default object file format is, so
+ # first see if it will tell us. cd to the root directory to prevent
+ # problems with other programs or directories called `ld' in the path.
+ # Set LC_ALL=C to ensure ld outputs messages in English.
+ ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
+ | sed -ne '/supported targets:/!d
+ s/[ ][ ]*/ /g
+ s/.*supported targets: *//
+ s/ .*//
+ p'`
+ case "$ld_supported_targets" in
+ elf32-i386)
+ TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
+ ;;
+ a.out-i386-linux)
+ echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+ exit 0 ;;
+ coff-i386)
+ echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+ exit 0 ;;
+ "")
+ # Either a pre-BFD a.out linker (linux-gnuoldld) or
+ # one that does not give us useful --help.
+ echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+ exit 0 ;;
+ esac
+ # Determine whether the default compiler is a.out or elf
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <features.h>
+ #ifdef __ELF__
+ # ifdef __GLIBC__
+ # if __GLIBC__ >= 2
+ LIBC=gnu
+ # else
+ LIBC=gnulibc1
+ # endif
+ # else
+ LIBC=gnulibc1
+ # endif
+ #else
+ #ifdef __INTEL_COMPILER
+ LIBC=gnu
+ #else
+ LIBC=gnuaout
+ #endif
+ #endif
+ #ifdef __dietlibc__
+ LIBC=dietlibc
+ #endif
+EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+ test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
+ test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
+ ;;
+ 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 0 ;;
+ 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 0 ;;
+ 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 0 ;;
+ i*86:XTS-300:*:STOP)
+ echo ${UNAME_MACHINE}-unknown-stop
+ exit 0 ;;
+ i*86:atheos:*:*)
+ echo ${UNAME_MACHINE}-unknown-atheos
+ exit 0 ;;
+ i*86:syllable:*:*)
+ echo ${UNAME_MACHINE}-pc-syllable
+ exit 0 ;;
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+ echo i386-unknown-lynxos${UNAME_RELEASE}
+ exit 0 ;;
+ i*86:*DOS:*:*)
+ echo ${UNAME_MACHINE}-pc-msdosdjgpp
+ exit 0 ;;
+ 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 0 ;;
+ i*86:*:5:[78]*)
+ 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 0 ;;
+ i*86:*:3.2:*)
+ if test -f /usr/options/cb.name; then
+ UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+ echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+ elif /bin/uname -X 2>/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 0 ;;
+ 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 i386.
+ echo i386-pc-msdosdjgpp
+ exit 0 ;;
+ Intel:Mach:3*:*)
+ echo i386-pc-mach3
+ exit 0 ;;
+ paragon:*:*:*)
+ echo i860-intel-osf1
+ exit 0 ;;
+ 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 0 ;;
+ mini*:CTIX:SYS*5:*)
+ # "miniframe"
+ echo m68010-convergent-sysv
+ exit 0 ;;
+ mc68k:UNIX:SYSTEM5:3.51m)
+ echo m68k-convergent-sysv
+ exit 0 ;;
+ M680?0:D-NIX:5.3:*)
+ echo m68k-diab-dnix
+ exit 0 ;;
+ M68*:*:R3V[567]*:*)
+ test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
+ 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)
+ 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 0
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
+ 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && echo i486-ncr-sysv4 && exit 0 ;;
+ m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+ echo m68k-unknown-lynxos${UNAME_RELEASE}
+ exit 0 ;;
+ mc68030:UNIX_System_V:4.*:*)
+ echo m68k-atari-sysv4
+ exit 0 ;;
+ TSUNAMI:LynxOS:2.*:*)
+ echo sparc-unknown-lynxos${UNAME_RELEASE}
+ exit 0 ;;
+ rs6000:LynxOS:2.*:*)
+ echo rs6000-unknown-lynxos${UNAME_RELEASE}
+ exit 0 ;;
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+ echo powerpc-unknown-lynxos${UNAME_RELEASE}
+ exit 0 ;;
+ SM[BE]S:UNIX_SV:*:*)
+ echo mips-dde-sysv${UNAME_RELEASE}
+ exit 0 ;;
+ RM*:ReliantUNIX-*:*:*)
+ echo mips-sni-sysv4
+ exit 0 ;;
+ RM*:SINIX-*:*:*)
+ echo mips-sni-sysv4
+ exit 0 ;;
+ *: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 0 ;;
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says <Richard.M.Bartel at ccMail.Census.GOV>
+ echo i586-unisys-sysv4
+ exit 0 ;;
+ *:UNIX_System_V:4*:FTX*)
+ # From Gerald Hewes <hewes at openmarket.com>.
+ # How about differentiating between stratus architectures? -djm
+ echo hppa1.1-stratus-sysv4
+ exit 0 ;;
+ *:*:*:FTX*)
+ # From seanf at swdc.stratus.com.
+ echo i860-stratus-sysv4
+ exit 0 ;;
+ *:VOS:*:*)
+ # From Paul.Green at stratus.com.
+ echo hppa1.1-stratus-vos
+ exit 0 ;;
+ mc68*:A/UX:*:*)
+ echo m68k-apple-aux${UNAME_RELEASE}
+ exit 0 ;;
+ news*:NEWS-OS:6*:*)
+ echo mips-sony-newsos6
+ exit 0 ;;
+ 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 0 ;;
+ BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
+ echo powerpc-be-beos
+ exit 0 ;;
+ BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
+ echo powerpc-apple-beos
+ exit 0 ;;
+ BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
+ echo i586-pc-beos
+ exit 0 ;;
+ SX-4:SUPER-UX:*:*)
+ echo sx4-nec-superux${UNAME_RELEASE}
+ exit 0 ;;
+ SX-5:SUPER-UX:*:*)
+ echo sx5-nec-superux${UNAME_RELEASE}
+ exit 0 ;;
+ SX-6:SUPER-UX:*:*)
+ echo sx6-nec-superux${UNAME_RELEASE}
+ exit 0 ;;
+ Power*:Rhapsody:*:*)
+ echo powerpc-apple-rhapsody${UNAME_RELEASE}
+ exit 0 ;;
+ *:Rhapsody:*:*)
+ echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+ exit 0 ;;
+ *:Darwin:*:*)
+ case `uname -p` in
+ *86) UNAME_PROCESSOR=i686 ;;
+ powerpc) UNAME_PROCESSOR=powerpc ;;
+ esac
+ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+ exit 0 ;;
+ *: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 0 ;;
+ *:QNX:*:4*)
+ echo i386-pc-qnx
+ exit 0 ;;
+ NSR-?:NONSTOP_KERNEL:*:*)
+ echo nsr-tandem-nsk${UNAME_RELEASE}
+ exit 0 ;;
+ *:NonStop-UX:*:*)
+ echo mips-compaq-nonstopux
+ exit 0 ;;
+ BS2000:POSIX*:*:*)
+ echo bs2000-siemens-sysv
+ exit 0 ;;
+ DS/*:UNIX_System_V:*:*)
+ echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+ exit 0 ;;
+ *: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 0 ;;
+ *:TOPS-10:*:*)
+ echo pdp10-unknown-tops10
+ exit 0 ;;
+ *:TENEX:*:*)
+ echo pdp10-unknown-tenex
+ exit 0 ;;
+ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+ echo pdp10-dec-tops20
+ exit 0 ;;
+ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+ echo pdp10-xkl-tops20
+ exit 0 ;;
+ *:TOPS-20:*:*)
+ echo pdp10-unknown-tops20
+ exit 0 ;;
+ *:ITS:*:*)
+ echo pdp10-unknown-its
+ exit 0 ;;
+ SEI:*:*:SEIUX)
+ echo mips-sei-seiux${UNAME_RELEASE}
+ exit 0 ;;
+ *:DragonFly:*:*)
+ echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ exit 0 ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+ /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
+ I don't know.... */
+ printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+ printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+ "4"
+#else
+ ""
+#endif
+ ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+ printf ("arm-acorn-riscix"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+ printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+ int version;
+ version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+ if (version < 4)
+ printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+ else
+ printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+ exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+ printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+ printf ("ns32k-encore-mach\n"); exit (0);
+#else
+ printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+ printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+ printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+ printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+ struct utsname un;
+
+ uname(&un);
+
+ if (strncmp(un.version, "V2", 2) == 0) {
+ printf ("i386-sequent-ptx2\n"); exit (0);
+ }
+ if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+ printf ("i386-sequent-ptx1\n"); exit (0);
+ }
+ printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+# include <sys/param.h>
+# if defined (BSD)
+# if BSD == 43
+ printf ("vax-dec-bsd4.3\n"); exit (0);
+# else
+# if BSD == 199006
+ printf ("vax-dec-bsd4.3reno\n"); exit (0);
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# endif
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# else
+ printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+ printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+ exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+ case `getsysinfo -f cpu_type` in
+ c1*)
+ echo c1-convex-bsd
+ exit 0 ;;
+ c2*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit 0 ;;
+ c34*)
+ echo c34-convex-bsd
+ exit 0 ;;
+ c38*)
+ echo c38-convex-bsd
+ exit 0 ;;
+ c4*)
+ echo c4-convex-bsd
+ exit 0 ;;
+ esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+ ftp://ftp.gnu.org/pub/gnu/config/
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches at gnu.org> 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:
Property changes on: desktop/trunk/thunar/branches/upstream/current/config.guess
___________________________________________________________________
Name: svn:executable
+
Added: desktop/trunk/thunar/branches/upstream/current/config.h.in
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/config.h.in 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/config.h.in 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,246 @@
+/* config.h.in. Generated from configure.in by autoheader. */
+
+/* always defined to indicate that i18n is enabled */
+#undef ENABLE_NLS
+
+/* Name of default gettext domain */
+#undef GETTEXT_PACKAGE
+
+/* Define to 1 if you have the `attropen' function. */
+#undef HAVE_ATTROPEN
+
+/* Define to 1 if you have the `bind_textdomain_codeset' function. */
+#undef HAVE_BIND_TEXTDOMAIN_CODESET
+
+/* Define if cairo >= 0.5 present */
+#undef HAVE_CAIRO
+
+/* Define to 1 if you have the <ctype.h> header file. */
+#undef HAVE_CTYPE_H
+
+/* Define to 1 if you have the `dcgettext' function. */
+#undef HAVE_DCGETTEXT
+
+/* Define to 1 if you have the <dirent.h> header file. */
+#undef HAVE_DIRENT_H
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the <errno.h> header file. */
+#undef HAVE_ERRNO_H
+
+/* Define to 1 if you have the `extattr_get_fd' function. */
+#undef HAVE_EXTATTR_GET_FD
+
+/* Define to 1 if you have the `FAMNoExists' function. */
+#undef HAVE_FAMNOEXISTS
+
+/* Define to 1 if you have the <fam.h> header file. */
+#undef HAVE_FAM_H
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#undef HAVE_FCNTL_H
+
+/* Define to 1 if you have the `fgetxattr' function. */
+#undef HAVE_FGETXATTR
+
+/* Define to 1 if you have the <fnmatch.h> header file. */
+#undef HAVE_FNMATCH_H
+
+/* Define to 1 if you have the <fstab.h> header file. */
+#undef HAVE_FSTAB_H
+
+/* Define if gconf-2.0 >= 2.4.0 present */
+#undef HAVE_GCONF
+
+/* Define to 1 if you have the `getpagesize' function. */
+#undef HAVE_GETPAGESIZE
+
+/* Define if the GNU gettext() function is already present or preinstalled. */
+#undef HAVE_GETTEXT
+
+/* Define to 1 if you have the <grp.h> header file. */
+#undef HAVE_GRP_H
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if jpeglib.h is found */
+#undef HAVE_JPEGLIB_H
+
+/* Define to 1 if you have the `lchmod' function. */
+#undef HAVE_LCHMOD
+
+/* Define if your <locale.h> file defines LC_MESSAGES. */
+#undef HAVE_LC_MESSAGES
+
+/* Define to 1 if the File Alteration Monitor is available. */
+#undef HAVE_LIBFAM
+
+/* Define to 1 if libjpeg is found */
+#undef HAVE_LIBJPEG
+
+/* Define if libstartup-notification-1.0 >= 0.4 present */
+#undef HAVE_LIBSTARTUP_NOTIFICATION
+
+/* Define to 1 if you have the <locale.h> header file. */
+#undef HAVE_LOCALE_H
+
+/* Define to 1 if you have the `localtime_r' function. */
+#undef HAVE_LOCALTIME_R
+
+/* Define to 1 if you have the <math.h> header file. */
+#undef HAVE_MATH_H
+
+/* Define to 1 if you have the `mbrtowc' function. */
+#undef HAVE_MBRTOWC
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have a working `mmap' system call. */
+#undef HAVE_MMAP
+
+/* Define to 1 if you have the <mmintrin.h> header file. */
+#undef HAVE_MMINTRIN_H
+
+/* Define if posix_madvise is working */
+#undef HAVE_POSIX_MADVISE
+
+/* Define to 1 if you have the `pread' function. */
+#undef HAVE_PREAD
+
+/* Define to 1 if you have the <pwd.h> header file. */
+#undef HAVE_PWD_H
+
+/* Define to 1 if you have the `pwrite' function. */
+#undef HAVE_PWRITE
+
+/* Define to 1 if you have the `readdir_r' function. */
+#undef HAVE_READDIR_R
+
+/* Define to 1 if you have the <sched.h> header file. */
+#undef HAVE_SCHED_H
+
+/* Define to 1 if you have the `sched_yield' function. */
+#undef HAVE_SCHED_YIELD
+
+/* Define to 1 if you have the `setgroupent' function. */
+#undef HAVE_SETGROUPENT
+
+/* Define to 1 if you have the <setjmp.h> header file. */
+#undef HAVE_SETJMP_H
+
+/* Define to 1 if you have the `setpassent' function. */
+#undef HAVE_SETPASSENT
+
+/* Define to 1 if you have the <stdarg.h> header file. */
+#undef HAVE_STDARG_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the <sys/cdio.h> header file. */
+#undef HAVE_SYS_CDIO_H
+
+/* Define to 1 if you have the <sys/extattr.h> header file. */
+#undef HAVE_SYS_EXTATTR_H
+
+/* Define to 1 if you have the <sys/mman.h> header file. */
+#undef HAVE_SYS_MMAN_H
+
+/* Define to 1 if you have the <sys/mount.h> header file. */
+#undef HAVE_SYS_MOUNT_H
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#undef HAVE_SYS_PARAM_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#undef HAVE_SYS_TIME_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <sys/uio.h> header file. */
+#undef HAVE_SYS_UIO_H
+
+/* Define to 1 if you have the <sys/wait.h> header file. */
+#undef HAVE_SYS_WAIT_H
+
+/* Define to 1 if you have the <sys/xattr.h> header file. */
+#undef HAVE_SYS_XATTR_H
+
+/* Define to 1 if you have the <time.h> header file. */
+#undef HAVE_TIME_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if you have the <wchar.h> header file. */
+#undef HAVE_WCHAR_H
+
+/* Define to 1 if you have the <wctype.h> header file. */
+#undef HAVE_WCTYPE_H
+
+/* Name of package */
+#undef PACKAGE
+
+/* 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 version of this package. */
+#undef PACKAGE_VERSION
+
+/* The size of a `int', as computed by sizeof. */
+#undef SIZEOF_INT
+
+/* The size of a `long', as computed by sizeof. */
+#undef SIZEOF_LONG
+
+/* The size of a `short', as computed by sizeof. */
+#undef SIZEOF_SHORT
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Version number of package */
+#undef VERSION
+
+/* Define to 1 if on AIX 3.
+ System headers sometimes define this.
+ We just want to avoid a redefinition error message. */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+
+/* 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
Added: desktop/trunk/thunar/branches/upstream/current/config.sub
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/config.sub 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/config.sub 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,1549 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+
+timestamp='2004-03-12'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine. It does not imply ALL GNU software can.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Please send patches to <config-patches at gnu.org>. Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# 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.
+
+# 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 <config-patches at gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+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 0 ;;
+ --version | -v )
+ echo "$version" ; exit 0 ;;
+ --help | --h* | -h )
+ echo "$usage"; exit 0 ;;
+ -- ) # 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 0;;
+
+ * )
+ 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-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \
+ kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
+ os=-$maybe_os
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+ ;;
+ *)
+ 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)
+ os=
+ basic_machine=$1
+ ;;
+ -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
+ ;;
+ -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/'`
+ ;;
+ -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*)
+ 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 \
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+ | am33_2.0 \
+ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
+ | c4x | clipper \
+ | d10v | d30v | dlx | dsp16xx \
+ | fr30 | frv \
+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | i370 | i860 | i960 | ia64 \
+ | ip2k | iq2000 \
+ | m32r | m32rle | m68000 | m68k | m88k | mcore \
+ | mips | mipsbe | mipseb | mipsel | mipsle \
+ | mips16 \
+ | mips64 | mips64el \
+ | mips64vr | mips64vrel \
+ | mips64orion | mips64orionel \
+ | mips64vr4100 | mips64vr4100el \
+ | mips64vr4300 | mips64vr4300el \
+ | mips64vr5000 | mips64vr5000el \
+ | mipsisa32 | mipsisa32el \
+ | mipsisa32r2 | mipsisa32r2el \
+ | mipsisa64 | mipsisa64el \
+ | mipsisa64r2 | mipsisa64r2el \
+ | mipsisa64sb1 | mipsisa64sb1el \
+ | mipsisa64sr71k | mipsisa64sr71kel \
+ | mipstx39 | mipstx39el \
+ | mn10200 | mn10300 \
+ | msp430 \
+ | ns16k | ns32k \
+ | openrisc | or32 \
+ | pdp10 | pdp11 | pj | pjl \
+ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+ | pyramid \
+ | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
+ | sh64 | sh64le \
+ | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \
+ | strongarm \
+ | tahoe | thumb | tic4x | tic80 | tron \
+ | v850 | v850e \
+ | we32k \
+ | x86 | xscale | xstormy16 | xtensa \
+ | z8k)
+ basic_machine=$basic_machine-unknown
+ ;;
+ m6811 | m68hc11 | m6812 | m68hc12)
+ # Motorola 68HC11/12.
+ basic_machine=$basic_machine-unknown
+ os=-none
+ ;;
+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+ ;;
+
+ # 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-* \
+ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
+ | avr-* \
+ | bs2000-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+ | clipper-* | cydra-* \
+ | d10v-* | d30v-* | dlx-* \
+ | elxsi-* \
+ | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
+ | h8300-* | h8500-* \
+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+ | i*86-* | i860-* | i960-* | ia64-* \
+ | ip2k-* | iq2000-* \
+ | m32r-* | m32rle-* \
+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+ | m88110-* | m88k-* | mcore-* \
+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+ | mips16-* \
+ | mips64-* | mips64el-* \
+ | mips64vr-* | mips64vrel-* \
+ | mips64orion-* | mips64orionel-* \
+ | mips64vr4100-* | mips64vr4100el-* \
+ | mips64vr4300-* | mips64vr4300el-* \
+ | mips64vr5000-* | mips64vr5000el-* \
+ | mipsisa32-* | mipsisa32el-* \
+ | mipsisa32r2-* | mipsisa32r2el-* \
+ | mipsisa64-* | mipsisa64el-* \
+ | mipsisa64r2-* | mipsisa64r2el-* \
+ | mipsisa64sb1-* | mipsisa64sb1el-* \
+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+ | mipstx39-* | mipstx39el-* \
+ | msp430-* \
+ | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \
+ | orion-* \
+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+ | pyramid-* \
+ | romp-* | rs6000-* \
+ | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+ | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
+ | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+ | tahoe-* | thumb-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+ | tron-* \
+ | v850-* | v850e-* | vax-* \
+ | we32k-* \
+ | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
+ | xtensa-* \
+ | ymp-* \
+ | z8k-*)
+ ;;
+ # 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
+ ;;
+ aux)
+ basic_machine=m68k-apple
+ os=-aux
+ ;;
+ balance)
+ basic_machine=ns32k-sequent
+ os=-dynix
+ ;;
+ c90)
+ basic_machine=c90-cray
+ os=-unicos
+ ;;
+ 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
+ ;;
+ cr16c)
+ basic_machine=cr16c-unknown
+ os=-elf
+ ;;
+ crds | unos)
+ basic_machine=m68k-crds
+ ;;
+ 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
+ ;;
+ 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'm not sure what "Sysv32" means. Should this be sysv3.2?
+ 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
+ ;;
+ m88k-omron*)
+ basic_machine=m88k-omron
+ ;;
+ magnum | m3230)
+ basic_machine=mips-mips
+ os=-sysv
+ ;;
+ merlin)
+ basic_machine=ns32k-utek
+ os=-sysv
+ ;;
+ mingw32)
+ basic_machine=i386-pc
+ os=-mingw32
+ ;;
+ 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
+ ;;
+ mmix*)
+ basic_machine=mmix-knuth
+ os=-mmixware
+ ;;
+ monitor)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
+ morphos)
+ basic_machine=powerpc-unknown
+ os=-morphos
+ ;;
+ msdos)
+ basic_machine=i386-pc
+ os=-msdos
+ ;;
+ mvs)
+ basic_machine=i370-ibm
+ os=-mvs
+ ;;
+ 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
+ ;;
+ nv1)
+ basic_machine=nv1-cray
+ os=-unicosmp
+ ;;
+ nsr-tandem)
+ basic_machine=nsr-tandem
+ ;;
+ op50n-* | op60c-*)
+ basic_machine=hppa1.1-oki
+ os=-proelf
+ ;;
+ or32 | or32-*)
+ basic_machine=or32-unknown
+ os=-coff
+ ;;
+ 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
+ ;;
+ pbd)
+ basic_machine=sparc-tti
+ ;;
+ pbb)
+ basic_machine=m68k-tti
+ ;;
+ pc532 | pc532-*)
+ basic_machine=ns32k-pc532
+ ;;
+ 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) basic_machine=powerpc-unknown
+ ;;
+ ppc-*) 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
+ ;;
+ 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
+ ;;
+ sei)
+ basic_machine=mips-sei
+ os=-seiux
+ ;;
+ sequent)
+ basic_machine=i386-sequent
+ ;;
+ sh)
+ basic_machine=sh-hitachi
+ os=-hms
+ ;;
+ 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
+ ;;
+ 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
+ ;;
+ tic54x | c54x*)
+ basic_machine=tic54x-unknown
+ os=-coff
+ ;;
+ tic55x | c55x*)
+ basic_machine=tic55x-unknown
+ os=-coff
+ ;;
+ tic6x | c6x*)
+ basic_machine=tic6x-unknown
+ os=-coff
+ ;;
+ 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
+ ;;
+ xps | xps100)
+ basic_machine=xps100-honeywell
+ ;;
+ ymp)
+ basic_machine=ymp-cray
+ os=-unicos
+ ;;
+ z8k-*-coff)
+ basic_machine=z8k-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
+ ;;
+ 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
+ ;;
+ sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
+ basic_machine=sh-unknown
+ ;;
+ sh64)
+ basic_machine=sh64-unknown
+ ;;
+ sparc | sparcv8 | sparcv9 | sparcv9b)
+ 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.
+ -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* | -sunos | -sunos[34]*\
+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+ | -aos* \
+ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \
+ | -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* \
+ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+ | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -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*)
+ # 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* \
+ | -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
+ ;;
+ -kaos*)
+ os=-kaos
+ ;;
+ -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
+ *-acorn)
+ os=-riscix1.2
+ ;;
+ arm*-rebel)
+ os=-linux
+ ;;
+ arm*-semi)
+ os=-aout
+ ;;
+ c4x-* | tic4x-*)
+ 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
+ # This also exists in the configure program, but was not the
+ # default.
+ # os=-sunos4
+ ;;
+ m68*-cisco)
+ os=-aout
+ ;;
+ 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
+ ;;
+ *-ibm)
+ os=-aix
+ ;;
+ *-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
+ ;;
+ -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 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
Property changes on: desktop/trunk/thunar/branches/upstream/current/config.sub
___________________________________________________________________
Name: svn:executable
+
Added: desktop/trunk/thunar/branches/upstream/current/configure
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/configure 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/configure 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,28719 @@
+#! /bin/sh
+# From configure.in Id: configure.in.in 18846 2005-11-14 17:33:30Z benny .
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.59 for Thunar 0.1.4pre-alpha-r18850.
+#
+# Report bugs to <benny at xfce.org>.
+#
+# Copyright (c) 2004-2005
+# The Thunar development team. All rights reserved.
+#
+# Written for Thunar by Benedikt Meurer <benny at xfce.org>.
+#
+# Copyright (C) 2003 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 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+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+ set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+ LC_TELEPHONE LC_TIME
+do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+ $as_unset $as_var
+ fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; 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
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)$' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+ /^X\/\(\/\/\)$/{ s//\1/; q; }
+ /^X\/\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# 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
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" || {
+ # Find who we are. Look in the path if we contain no path at all
+ # relative or not.
+ 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
+
+ ;;
+ 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
+ { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
+ { (exit 1); exit 1; }; }
+ fi
+ case $CONFIG_SHELL in
+ '')
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for as_base in sh bash ksh sh5; do
+ case $as_dir in
+ /*)
+ if ("$as_dir/$as_base" -c '
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
+ $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+ $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+ CONFIG_SHELL=$as_dir/$as_base
+ export CONFIG_SHELL
+ exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+ fi;;
+ esac
+ done
+done
+;;
+ esac
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+ # line-number line before each line; the second 'sed' does the real
+ # work. The second script uses 'N' to pair each line-number line
+ # with the numbered line, and appends trailing '-' during
+ # substitution so that $LINENO is not a special case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
+ sed '=' <$as_myself |
+ sed '
+ N
+ s,$,-,
+ : loop
+ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+ t loop
+ s,-$,,
+ s,^['$as_cr_digits']*\n,,
+ ' >$as_me.lineno &&
+ chmod +x $as_me.lineno ||
+ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { (exit 1); exit 1; }; }
+
+ # 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 sensible to this).
+ . ./$as_me.lineno
+ # Exit status is that of the last command.
+ exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+ *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T=' ' ;;
+ *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+ *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+ # We could just check for DJGPP; but this test a) works b) is more generic
+ # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+ if test -f conf$$.exe; then
+ # Don't use ln at all; we don't have any links
+ as_ln_s='cp -p'
+ else
+ as_ln_s='ln -s'
+ fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# 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'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" $as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+
+
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+ # Remove one level of quotation (which was required for Make).
+ ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','`
+ ;;
+esac
+
+echo=${ECHO-echo}
+if test "X$1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X$1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
+ # Yippee, $echo works!
+ :
+else
+ # Restart under the correct shell.
+ exec $SHELL "$0" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<EOF
+$*
+EOF
+ exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+if test -z "$ECHO"; then
+if test "X${echo_test_string+set}" != Xset; then
+# find a string as large as possible, as long as the shell can cope with it
+ for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
+ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+ if (echo_test_string="`eval $cmd`") 2>/dev/null &&
+ echo_test_string="`eval $cmd`" &&
+ (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+ then
+ break
+ fi
+ done
+fi
+
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ :
+else
+ # The Solaris, AIX, and Digital Unix default echo programs unquote
+ # backslashes. This makes it impossible to quote backslashes using
+ # echo "$something" | sed 's/\\/\\\\/g'
+ #
+ # So, first we look for a working echo in the user's PATH.
+
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for dir in $PATH /usr/ucb; do
+ IFS="$lt_save_ifs"
+ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ echo="$dir/echo"
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ if test "X$echo" = Xecho; then
+ # We didn't find a better echo, so look for alternatives.
+ if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # This shell has a builtin print -r that does the trick.
+ echo='print -r'
+ elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+ test "X$CONFIG_SHELL" != X/bin/ksh; then
+ # If we have ksh, try running configure again with it.
+ ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+ export ORIGINAL_CONFIG_SHELL
+ CONFIG_SHELL=/bin/ksh
+ export CONFIG_SHELL
+ exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
+ else
+ # Try using printf.
+ echo='printf %s\n'
+ if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # Cool, printf works
+ :
+ elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+ export CONFIG_SHELL
+ SHELL="$CONFIG_SHELL"
+ export SHELL
+ echo="$CONFIG_SHELL $0 --fallback-echo"
+ elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ echo="$CONFIG_SHELL $0 --fallback-echo"
+ else
+ # maybe with a smaller string...
+ prev=:
+
+ for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
+ if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
+ then
+ break
+ fi
+ prev="$cmd"
+ done
+
+ if test "$prev" != 'sed 50q "$0"'; then
+ echo_test_string=`eval $prev`
+ export echo_test_string
+ exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
+ else
+ # Oops. We lost completely, so just stick with echo.
+ echo=echo
+ fi
+ fi
+ fi
+ fi
+fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
+ ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
+fi
+
+
+
+
+tagnames=${tagnames+${tagnames},}CXX
+
+tagnames=${tagnames+${tagnames},}F77
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+exec 6>&1
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_config_libobj_dir=.
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Maximum number of lines to put in a shell here document.
+# This variable seems obsolete. It should probably be removed, and
+# only ac_max_sed_lines should be used.
+: ${ac_max_here_lines=38}
+
+# Identity of this package.
+PACKAGE_NAME='Thunar'
+PACKAGE_TARNAME='Thunar'
+PACKAGE_VERSION='0.1.4pre-alpha-r18850'
+PACKAGE_STRING='Thunar 0.1.4pre-alpha-r18850'
+PACKAGE_BUGREPORT='benny at xfce.org'
+
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#if HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#if STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# if HAVE_STDLIB_H
+# include <stdlib.h>
+# endif
+#endif
+#if HAVE_STRING_H
+# if !STDC_HEADERS && HAVE_MEMORY_H
+# include <memory.h>
+# endif
+# include <string.h>
+#endif
+#if HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#else
+# if HAVE_STDINT_H
+# include <stdint.h>
+# endif
+#endif
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP INTLTOOL_DESKTOP_RULE INTLTOOL_DIRECTORY_RULE INTLTOOL_KEYS_RULE INTLTOOL_PROP_RULE INTLTOOL_OAF_RULE INTLTOOL_PONG_RULE INTLTOOL_SERVER_RULE INTLTOOL_SHEET_RULE INTLTOOL_SOUNDLIST_RULE INTLTOOL_UI_RULE INTLTOOL_XAM_RULE INTLTOOL_KBD_RULE INTLTOOL_XML_RULE INTLTOOL_XML_NOMERGE_RULE INTLTOOL_CAVES_RULE INTLTOOL_SCHEMAS_RULE INTLTOOL_THEME_RULE INTLTOOL_EXTRACT INTLTOOL_MERGE INTLTOOL_UPDATE INTLTOOL_PERL INTLTOOL_ICONV INTLTOOL_MSGFMT INTLTOOL_MSGMERGE INTLTOOL_XGETTEXT PERL LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL THUNAR_VERINFO THUNAR_VERSION_API THUNAR_VERSION_MAJOR THUNAR_VERSION_MINOR THUNAR_VERSION_MICRO TDB_U32_TYPE GETTEXT_PACKAGE USE_NLS MSGFMT GMSGFMT XGETTEXT CATALOGS CATOBJEXT DATADIRNAME GMOFILES INSTOBJEXT INTLLIBS PO_IN_DATADIR_TRUE PO_IN_DATADIR_FALSE POFILES POSUB MKINSTALLDIRS localedir XGETTEXT_ARGS PKG_CONFIG EXO_VERSION EXO_CFLAGS EXO_LIBS EXO_REQUIRED_VERSION GLIB_VERSION GLIB_CFLAGS GLIB_LIBS GLIB_REQUIRED_VERSION GTHREAD_VERSION GTHREAD_CFLAGS GTHREAD_LIBS GTHREAD_REQUIRED_VERSION GTK_VERSION GTK_CFLAGS GTK_LIBS GTK_REQUIRED_VERSION LIBPNG_VERSION LIBPNG_CFLAGS LIBPNG_LIBS LIBPNG_REQUIRED_VERSION CAIRO_VERSION CAIRO_CFLAGS CAIRO_LIBS CAIRO_REQUIRED_VERSION HAVE_CAIRO_TRUE HAVE_CAIRO_FALSE GCONF_VERSION GCONF_CFLAGS GCONF_LIBS GCONF_REQUIRED_VERSION HAVE_GCONF_TRUE HAVE_GCONF_FALSE LIBSTARTUP_NOTIFICATION_VERSION LIBSTARTUP_NOTIFICATION_CFLAGS LIBSTARTUP_NOTIFICATION_LIBS LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION HAVE_LIBSTARTUP_NOTIFICATION_TRUE HAVE_LIBSTARTUP_NOTIFICATION_FALSE LIBJPEG_CFLAGS LIBJPEG_LIBS HTML_DIR ENABLE_GTK_DOC_TRUE ENABLE_GTK_DOC_FALSE GTK_DOC_USE_LIBTOOL_TRUE GTK_DOC_USE_LIBTOOL_FALSE LIBFAM_VERSION LIBFAM_CFLAGS LIBFAM_LIBS LIBFAM_REQUIRED_VERSION HAVE_GNUC_VISIBILITY_TRUE HAVE_GNUC_VISIBILITY_FALSE PLATFORM_CFLAGS PLATFORM_CPPFLAGS PLATFORM_LDFLAGS LIBOBJS LTLIBOBJS'
+ac_subst_files=''
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+# 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.
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datadir='${prefix}/share'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+libdir='${exec_prefix}/lib'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+infodir='${prefix}/info'
+mandir='${prefix}/man'
+
+ac_prev=
+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
+
+ ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case $ac_option in
+
+ -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 | --data | --dat | --da)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+ | --da=*)
+ datadir=$ac_optarg ;;
+
+ -disable-* | --disable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+ ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+ eval "enable_$ac_feature=no" ;;
+
+ -enable-* | --enable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+ ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+ case $ac_option in
+ *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) ac_optarg=yes ;;
+ esac
+ eval "enable_$ac_feature='$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 ;;
+
+ -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 ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst \
+ | --locals | --local | --loca | --loc | --lo)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+ 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 ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -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_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+ ac_package=`echo $ac_package| sed 's/-/_/g'`
+ case $ac_option in
+ *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) ac_optarg=yes ;;
+ esac
+ eval "with_$ac_package='$ac_optarg'" ;;
+
+ -without-* | --without-*)
+ ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+ ac_package=`echo $ac_package | sed 's/-/_/g'`
+ eval "with_$ac_package=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 ;;
+
+ -*) { echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+ { (exit 1); exit 1; }; }
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+ { (exit 1); exit 1; }; }
+ ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
+ eval "$ac_envvar='$ac_optarg'"
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ 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'`
+ { echo "$as_me: error: missing argument to $ac_option" >&2
+ { (exit 1); exit 1; }; }
+fi
+
+# Be sure to have absolute paths.
+for ac_var in exec_prefix prefix
+do
+ eval ac_val=$`echo $ac_var`
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
+ *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+ { (exit 1); exit 1; }; };;
+ esac
+done
+
+# Be sure to have absolute paths.
+for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
+ localstatedir libdir includedir oldincludedir infodir mandir
+do
+ eval ac_val=$`echo $ac_var`
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) ;;
+ *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+ { (exit 1); exit 1; }; };;
+ esac
+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
+ echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+ If a cross compiler is detected then cross compile mode will be used." >&2
+ 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
+
+
+# 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 its parent.
+ ac_confdir=`(dirname "$0") 2>/dev/null ||
+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$0" : 'X\(//\)[^/]' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$0" |
+ 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
+ if test "$ac_srcdir_defaulted" = yes; then
+ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
+ { (exit 1); exit 1; }; }
+ else
+ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+ { (exit 1); exit 1; }; }
+ fi
+fi
+(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
+ { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
+ { (exit 1); exit 1; }; }
+srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
+ac_env_build_alias_set=${build_alias+set}
+ac_env_build_alias_value=$build_alias
+ac_cv_env_build_alias_set=${build_alias+set}
+ac_cv_env_build_alias_value=$build_alias
+ac_env_host_alias_set=${host_alias+set}
+ac_env_host_alias_value=$host_alias
+ac_cv_env_host_alias_set=${host_alias+set}
+ac_cv_env_host_alias_value=$host_alias
+ac_env_target_alias_set=${target_alias+set}
+ac_env_target_alias_value=$target_alias
+ac_cv_env_target_alias_set=${target_alias+set}
+ac_cv_env_target_alias_value=$target_alias
+ac_env_CC_set=${CC+set}
+ac_env_CC_value=$CC
+ac_cv_env_CC_set=${CC+set}
+ac_cv_env_CC_value=$CC
+ac_env_CFLAGS_set=${CFLAGS+set}
+ac_env_CFLAGS_value=$CFLAGS
+ac_cv_env_CFLAGS_set=${CFLAGS+set}
+ac_cv_env_CFLAGS_value=$CFLAGS
+ac_env_LDFLAGS_set=${LDFLAGS+set}
+ac_env_LDFLAGS_value=$LDFLAGS
+ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
+ac_cv_env_LDFLAGS_value=$LDFLAGS
+ac_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_env_CPPFLAGS_value=$CPPFLAGS
+ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_cv_env_CPPFLAGS_value=$CPPFLAGS
+ac_env_CPP_set=${CPP+set}
+ac_env_CPP_value=$CPP
+ac_cv_env_CPP_set=${CPP+set}
+ac_cv_env_CPP_value=$CPP
+ac_env_CXX_set=${CXX+set}
+ac_env_CXX_value=$CXX
+ac_cv_env_CXX_set=${CXX+set}
+ac_cv_env_CXX_value=$CXX
+ac_env_CXXFLAGS_set=${CXXFLAGS+set}
+ac_env_CXXFLAGS_value=$CXXFLAGS
+ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set}
+ac_cv_env_CXXFLAGS_value=$CXXFLAGS
+ac_env_CXXCPP_set=${CXXCPP+set}
+ac_env_CXXCPP_value=$CXXCPP
+ac_cv_env_CXXCPP_set=${CXXCPP+set}
+ac_cv_env_CXXCPP_value=$CXXCPP
+ac_env_F77_set=${F77+set}
+ac_env_F77_value=$F77
+ac_cv_env_F77_set=${F77+set}
+ac_cv_env_F77_value=$F77
+ac_env_FFLAGS_set=${FFLAGS+set}
+ac_env_FFLAGS_value=$FFLAGS
+ac_cv_env_FFLAGS_set=${FFLAGS+set}
+ac_cv_env_FFLAGS_value=$FFLAGS
+
+#
+# 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 Thunar 0.1.4pre-alpha-r18850 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 \`..']
+
+_ACEOF
+
+ cat <<_ACEOF
+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]
+ --datadir=DIR read-only architecture-independent data [PREFIX/share]
+ --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]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --infodir=DIR info documentation [PREFIX/info]
+ --mandir=DIR man documentation [PREFIX/man]
+_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]
+ --target=TARGET configure for building compilers for TARGET [HOST]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+ case $ac_init_help in
+ short | recursive ) echo "Configuration of Thunar 0.1.4pre-alpha-r18850:";;
+ esac
+ cat <<\_ACEOF
+
+Optional Features:
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --enable-maintainer-mode enable make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer
+ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors
+ --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-cairo Enable checking for Cairo (default=yes)
+ --disable-cairo Disable checking for Cairo
+ --enable-gnome-thumbnailers
+ Enable checking for GNOME thumbnailer support
+ (default=yes)
+ --disable-gnome-thumbnailers
+ Disable checking for GNOME thumbnailer support
+ --enable-startup-notification
+ Enable checking for startup notification library
+ (default=yes)
+ --disable-startup-notification
+ Disable checking for startup notification library
+ --enable-gtk-doc use gtk-doc to build documentation default=no
+ --disable-debug Disable debugging support
+ --disable-visibility Don't use ELF visibility attributes
+
+Optional Packages:
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
+ --with-pic try to use only PIC/non-PIC objects [default=use
+ both]
+ --with-tags[=TAGS]
+ include additional configurations [automatic]
+
+ --with-locales-dir=DIR Install locales into DIR
+
+ --with-html-dir=PATH path to installed docs
+
+Some influential environment variables:
+ CC C compiler command
+ CFLAGS C compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+ CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
+ headers in a nonstandard directory <include dir>
+ CPP C preprocessor
+ CXX C++ compiler command
+ CXXFLAGS C++ compiler flags
+ CXXCPP C++ preprocessor
+ F77 Fortran 77 compiler command
+ FFLAGS Fortran 77 compiler flags
+
+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 <benny at xfce.org>.
+_ACEOF
+fi
+
+if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+ ac_popdir=`pwd`
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+ test -d $ac_dir || continue
+ ac_builddir=.
+
+if test "$ac_dir" != .; then
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ # A "../" for each directory in $ac_dir_suffix.
+ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+ ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+ .) # No --srcdir option. We are building in place.
+ ac_srcdir=.
+ if test -z "$ac_top_builddir"; then
+ ac_top_srcdir=.
+ else
+ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+ fi ;;
+ [\\/]* | ?:[\\/]* ) # Absolute path.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir ;;
+ *) # Relative path.
+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+ case "$ac_dir" in
+ .) ac_abs_builddir=`pwd`;;
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+ case ${ac_top_builddir}. in
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+ case $ac_srcdir in
+ .) ac_abs_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+ case $ac_top_srcdir in
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+ esac;;
+esac
+
+ cd $ac_dir
+ # Check for guested configure; otherwise get Cygnus style 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
+ elif test -f $ac_srcdir/configure.ac ||
+ test -f $ac_srcdir/configure.in; then
+ echo
+ $ac_configure --help
+ else
+ echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ fi
+ cd $ac_popdir
+ done
+fi
+
+test -n "$ac_init_help" && exit 0
+if $ac_init_version; then
+ cat <<\_ACEOF
+Thunar configure 0.1.4pre-alpha-r18850
+generated by GNU Autoconf 2.59
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+
+Copyright (c) 2004-2005
+ The Thunar development team. All rights reserved.
+
+Written for Thunar by Benedikt Meurer <benny at xfce.org>.
+_ACEOF
+ exit 0
+fi
+exec 5>config.log
+cat >&5 <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by Thunar $as_me 0.1.4pre-alpha-r18850, which was
+generated by GNU Autoconf 2.59. Invocation command line was
+
+ $ $0 $@
+
+_ACEOF
+{
+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`
+hostinfo = `(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=.
+ echo "PATH: $as_dir"
+done
+
+} >&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_sep=
+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=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+ 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+ 2)
+ ac_configure_args1="$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
+ ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
+ # Get rid of the leading space.
+ ac_sep=" "
+ ;;
+ esac
+ done
+done
+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export 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: Be sure not to use single quotes in there, as some shells,
+# such as our DU 5.0 friend, will then `close' the trap.
+trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+ echo
+
+ cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+{
+ (set) 2>&1 |
+ case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
+ *ac_space=\ *)
+ sed -n \
+ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
+ ;;
+ *)
+ sed -n \
+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+ ;;
+ esac;
+}
+ echo
+
+ cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_vars
+ do
+ eval ac_val=$`echo $ac_var`
+ echo "$ac_var='"'"'$ac_val'"'"'"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ cat <<\_ASBOX
+## ------------- ##
+## Output files. ##
+## ------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_files
+ do
+ eval ac_val=$`echo $ac_var`
+ echo "$ac_var='"'"'$ac_val'"'"'"
+ done | sort
+ echo
+ fi
+
+ if test -s confdefs.h; then
+ cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+ echo
+ sed "/^$/d" confdefs.h | sort
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ echo "$as_me: caught signal $ac_signal"
+ echo "$as_me: exit $exit_status"
+ } >&5
+ rm -f core *.core &&
+ rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+ ' 0
+for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -rf conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo >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
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer explicitly selected file to automatically selected ones.
+if test -z "$CONFIG_SITE"; then
+ if test "x$prefix" != xNONE; then
+ CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+ else
+ CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+ fi
+fi
+for ac_site_file in $CONFIG_SITE; do
+ if test -r "$ac_site_file"; then
+ { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+echo "$as_me: loading site script $ac_site_file" >&6;}
+ sed 's/^/| /' "$ac_site_file" >&5
+ . "$ac_site_file"
+ 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.
+ if test -f "$cache_file"; then
+ { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . $cache_file;;
+ *) . ./$cache_file;;
+ esac
+ fi
+else
+ { echo "$as_me:$LINENO: creating cache $cache_file" >&5
+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 `(set) 2>&1 |
+ sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; 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,)
+ { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+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
+ { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
+echo "$as_me: former value: $ac_old_val" >&2;}
+ { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
+echo "$as_me: current value: $ac_new_val" >&2;}
+ ac_cache_corrupted=:
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+ ac_arg=$ac_var=`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.
+ *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+ { (exit 1); exit 1; }; }
+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_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
+ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
+echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"
+ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
+
+# Make sure we can run config.sub.
+$ac_config_sub sun4 >/dev/null 2>&1 ||
+ { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
+echo "$as_me: error: cannot run $ac_config_sub" >&2;}
+ { (exit 1); exit 1; }; }
+
+echo "$as_me:$LINENO: checking build system type" >&5
+echo $ECHO_N "checking build system type... $ECHO_C" >&6
+if test "${ac_cv_build+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_build_alias=$build_alias
+test -z "$ac_cv_build_alias" &&
+ ac_cv_build_alias=`$ac_config_guess`
+test -z "$ac_cv_build_alias" &&
+ { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
+echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+ { (exit 1); exit 1; }; }
+ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
+ { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+echo "${ECHO_T}$ac_cv_build" >&6
+build=$ac_cv_build
+build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+
+echo "$as_me:$LINENO: checking host system type" >&5
+echo $ECHO_N "checking host system type... $ECHO_C" >&6
+if test "${ac_cv_host+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_host_alias=$host_alias
+test -z "$ac_cv_host_alias" &&
+ ac_cv_host_alias=$ac_cv_build_alias
+ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
+ { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+echo "${ECHO_T}$ac_cv_host" >&6
+host=$ac_cv_host
+host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+
+echo "$as_me:$LINENO: checking target system type" >&5
+echo $ECHO_N "checking target system type... $ECHO_C" >&6
+if test "${ac_cv_target+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_target_alias=$target_alias
+test "x$ac_cv_target_alias" = "x" &&
+ ac_cv_target_alias=$ac_cv_host_alias
+ac_cv_target=`$ac_config_sub $ac_cv_target_alias` ||
+ { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_target" >&5
+echo "${ECHO_T}$ac_cv_target" >&6
+target=$ac_cv_target
+target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+
+# The aliases save the names the user supplied, while $host etc.
+# will get canonicalized.
+test -n "$target_alias" &&
+ test "$program_prefix$program_suffix$program_transform_name" = \
+ NONENONEs,x,x, &&
+ program_prefix=${target_alias}-
+
+
+am__api_version="1.9"
+# 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.
+echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_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
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+done
+
+
+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. We don't cache a
+ # path for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the path is relative.
+ INSTALL=$ac_install_sh
+ fi
+fi
+echo "$as_me:$LINENO: result: $INSTALL" >&5
+echo "${ECHO_T}$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'
+
+echo "$as_me:$LINENO: checking whether build environment is sane" >&5
+echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# 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 (
+ 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
+ rm -f conftest.file
+ 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".
+ { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken
+alias in your environment" >&5
+echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken
+alias in your environment" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+ test "$2" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ { { echo "$as_me:$LINENO: error: newly created file is older than distributed files!
+Check your system clock" >&5
+echo "$as_me: error: newly created file is older than distributed files!
+Check your system clock" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+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 $. echo might interpret backslashes.
+# By default was `s,x,x', remove it if useless.
+cat <<\_ACEOF >conftest.sed
+s/[\\$]/&&/g;s/;s,x,x,$//
+_ACEOF
+program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
+rm conftest.sed
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
+echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+ # We used to keeping the `.' as first argument, in order to
+ # allow $(mkdir_p) to be used without argument. As in
+ # $(mkdir_p) $(somedir)
+ # where $(somedir) is conditionally defined. However this is wrong
+ # for two reasons:
+ # 1. if the package is installed by a user who cannot write `.'
+ # make install will fail,
+ # 2. the above comment should most certainly read
+ # $(mkdir_p) $(DESTDIR)$(somedir)
+ # so it does not work when $(somedir) is undefined and
+ # $(DESTDIR) is not.
+ # To support the latter case, we have to write
+ # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+ # so the `.' trick is pointless.
+ mkdir_p='mkdir -p --'
+else
+ # On NextStep and OpenStep, the `mkdir' command does not
+ # recognize any option. It will interpret all options as
+ # directories to create, and then abort because `.' already
+ # exists.
+ for d in ./-p ./--version;
+ do
+ test -d $d && rmdir $d
+ done
+ # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
+ if test -f "$ac_aux_dir/mkinstalldirs"; then
+ mkdir_p='$(mkinstalldirs)'
+ else
+ mkdir_p='$(install_sh) -d'
+ fi
+fi
+
+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
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_AWK+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AWK="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+ echo "$as_me:$LINENO: result: $AWK" >&5
+echo "${ECHO_T}$AWK" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$AWK" && break
+done
+
+echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
+set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.make <<\_ACEOF
+all:
+ @echo 'ac_maketemp="$(MAKE)"'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
+if test -n "$ac_maketemp"; then
+ eval ac_cv_prog_make_${ac_make}_set=yes
+else
+ eval ac_cv_prog_make_${ac_make}_set=no
+fi
+rm -f conftest.make
+fi
+if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ SET_MAKE=
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}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
+
+# test to see if srcdir already configured
+if test "`cd $srcdir && pwd`" != "`pwd`" &&
+ test -f $srcdir/config.status; then
+ { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
+echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
+ { (exit 1); exit 1; }; }
+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=Thunar
+ VERSION=0.1.4pre-alpha-r18850
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# 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"}
+
+install_sh=${install_sh-"$am_aux_dir/install-sh"}
+
+# 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
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ echo "$as_me:$LINENO: result: $STRIP" >&5
+echo "${ECHO_T}$STRIP" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}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
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+echo "${ECHO_T}$ac_ct_STRIP" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ STRIP=$ac_ct_STRIP
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
+
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+
+
+
+
+
+ ac_config_headers="$ac_config_headers config.h"
+
+echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
+echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6
+ # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then
+ enableval="$enable_maintainer_mode"
+ USE_MAINTAINER_MODE=$enableval
+else
+ USE_MAINTAINER_MODE=no
+fi;
+ echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
+echo "${ECHO_T}$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
+
+
+
+DEPDIR="${am__leading_dot}deps"
+
+ ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
+echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+ am__include=include
+ am__quote=
+ _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ fi
+fi
+
+
+echo "$as_me:$LINENO: result: $_am_result" >&5
+echo "${ECHO_T}$_am_result" >&6
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking or --disable-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='\'
+fi
+
+
+if test "x$enable_dependency_tracking" != xno; then
+ AMDEP_TRUE=
+ AMDEP_FALSE='#'
+else
+ AMDEP_TRUE='#'
+ AMDEP_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
+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
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}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
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ CC=$ac_ct_CC
+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
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="cc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ CC=$ac_ct_CC
+else
+ CC="$ac_cv_prog_CC"
+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
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_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"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+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
+ echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in 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
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in 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
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$ac_ct_CC" && break
+done
+
+ CC=$ac_ct_CC
+fi
+
+fi
+
+
+test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&5
+echo "$as_me: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO:" \
+ "checking for C compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+ (eval $ac_compiler --version </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+ (eval $ac_compiler -v </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+ (eval $ac_compiler -V </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out 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.
+echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
+echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6
+ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
+ (eval $ac_link_default) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # Find the output, starting from the most likely. This scheme is
+# not robust to junk in `.', hence go to wildcards (a.*) only as a last
+# resort.
+
+# Be careful to initialize this variable, since it used to be cached.
+# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.
+ac_cv_exeext=
+# b.out is created by i960 compilers.
+for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out
+do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
+ ;;
+ conftest.$ac_ext )
+ # This is the source file.
+ ;;
+ [ab].out )
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* )
+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ # FIXME: I believe we export ac_cv_exeext for Libtool,
+ # but it would be cool to find out if it's true. Does anybody
+ # maintain Libtool? --akim.
+ export ac_cv_exeext
+ break;;
+ * )
+ break;;
+ esac
+done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
+See \`config.log' for more details." >&5
+echo "$as_me: error: C compiler cannot create executables
+See \`config.log' for more details." >&2;}
+ { (exit 77); exit 77; }; }
+fi
+
+ac_exeext=$ac_cv_exeext
+echo "$as_me:$LINENO: result: $ac_file" >&5
+echo "${ECHO_T}$ac_file" >&6
+
+# Check the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:$LINENO: checking whether the C compiler works" >&5
+echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" != yes; then
+ if { ac_try='./$ac_file'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cross_compiling=no
+ else
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { echo "$as_me:$LINENO: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ fi
+fi
+echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+rm -f a.out a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+# Check the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $cross_compiling" >&5
+echo "${ECHO_T}$cross_compiling" >&6
+
+echo "$as_me:$LINENO: checking for suffix of executables" >&5
+echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; 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 | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ export ac_cv_exeext
+ break;;
+ * ) break;;
+ esac
+done
+else
+ { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest$ac_cv_exeext
+echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+echo "${ECHO_T}$ac_cv_exeext" >&6
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+echo "$as_me:$LINENO: checking for suffix of object files" >&5
+echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
+if test "${ac_cv_objext+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+echo "${ECHO_T}$ac_cv_objext" >&6
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_compiler_gnu=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
+GCC=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+CFLAGS="-g"
+echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_prog_cc_g=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_cc_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+echo "${ECHO_T}$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
+echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
+echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_stdc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_prog_cc_stdc=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* 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 -std1 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 -std1. */
+int osf4_cc_array ['\x00' == 0 ? 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
+# Don't try gcc -ansi; that turns off useful extensions and
+# breaks some systems' header files.
+# AIX -qlanglvl=ansi
+# Ultrix and OSF/1 -std1
+# HP-UX 10.20 and later -Ae
+# HP-UX older versions -Aa -D_HPUX_SOURCE
+# SVR4 -Xc -D__EXTENSIONS__
+for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_prog_cc_stdc=$ac_arg
+break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext
+done
+rm -f conftest.$ac_ext conftest.$ac_objext
+CC=$ac_save_CC
+
+fi
+
+case "x$ac_cv_prog_cc_stdc" in
+ x|xno)
+ echo "$as_me:$LINENO: result: none needed" >&5
+echo "${ECHO_T}none needed" >&6 ;;
+ *)
+ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+ CC="$CC $ac_cv_prog_cc_stdc" ;;
+esac
+
+# Some people use a C++ compiler to compile C. Since we use `exit',
+# in C++ we need to declare it. In case someone uses the same compiler
+# for both compiling C and C++ we need to have the C++ compiler decide
+# the declaration of exit, since it's the most demanding environment.
+cat >conftest.$ac_ext <<_ACEOF
+#ifndef __cplusplus
+ choke me
+#endif
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ for ac_declaration in \
+ '' \
+ 'extern "C" void std::exit (int) throw (); using std::exit;' \
+ 'extern "C" void std::exit (int); using std::exit;' \
+ 'extern "C" void exit (int) throw ();' \
+ 'extern "C" void exit (int);' \
+ 'void exit (int);'
+do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_declaration
+#include <stdlib.h>
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+continue
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_declaration
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+rm -f conftest*
+if test -n "$ac_declaration"; then
+ echo '#ifdef __cplusplus' >>confdefs.h
+ echo $ac_declaration >>confdefs.h
+ echo '#endif' >>confdefs.h
+fi
+
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f 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
+
+depcc="$CC" am_compiler_list=
+
+echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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'.
+ 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
+ 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 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ case $depmode in
+ 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
+ ;;
+ none) break ;;
+ esac
+ # 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.
+ if depmode=$depmode \
+ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftest.${OBJEXT-o} 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
+echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+echo "${ECHO_T}$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
+echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+fi
+if test -z "$CPP"; then
+ if test "${ac_cv_prog_CPP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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 <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> 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 >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ # Broken: success on invalid input.
+continue
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f 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
+echo "$as_me:$LINENO: result: $CPP" >&5
+echo "${ECHO_T}$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 <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> 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 >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ # Broken: success on invalid input.
+continue
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ :
+else
+ { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&5
+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+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
+
+
+echo "$as_me:$LINENO: checking for egrep" >&5
+echo $ECHO_N "checking for egrep... $ECHO_C" >&6
+if test "${ac_cv_prog_egrep+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+ then ac_cv_prog_egrep='grep -E'
+ else ac_cv_prog_egrep='egrep'
+ fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
+echo "${ECHO_T}$ac_cv_prog_egrep" >&6
+ EGREP=$ac_cv_prog_egrep
+
+
+
+echo "$as_me:$LINENO: checking for AIX" >&5
+echo $ECHO_N "checking for AIX... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef _AIX
+ yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "yes" >/dev/null 2>&1; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+cat >>confdefs.h <<\_ACEOF
+#define _ALL_SOURCE 1
+_ACEOF
+
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+rm -f conftest*
+
+
+echo "$as_me:$LINENO: checking for library containing strerror" >&5
+echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6
+if test "${ac_cv_search_strerror+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+ac_cv_search_strerror=no
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char strerror ();
+int
+main ()
+{
+strerror ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_search_strerror="none required"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test "$ac_cv_search_strerror" = no; then
+ for ac_lib in cposix; do
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char strerror ();
+int
+main ()
+{
+strerror ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_search_strerror="-l$ac_lib"
+break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ done
+fi
+LIBS=$ac_func_search_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5
+echo "${ECHO_T}$ac_cv_search_strerror" >&6
+if test "$ac_cv_search_strerror" != no; then
+ test "$ac_cv_search_strerror" = "none required" || LIBS="$ac_cv_search_strerror $LIBS"
+
+fi
+
+echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+if test "${ac_cv_header_stdc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_header_stdc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_header_stdc=no
+fi
+rm -f 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 >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "memchr" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "free" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then
+ :
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ctype.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ exit(2);
+ exit (0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+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=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_Header=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+if test "${ac_cv_header_minix_config_h+set}" = set; then
+ echo "$as_me:$LINENO: checking for minix/config.h" >&5
+echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6
+if test "${ac_cv_header_minix_config_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5
+echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking minix/config.h usability" >&5
+echo $ECHO_N "checking minix/config.h usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <minix/config.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking minix/config.h presence" >&5
+echo $ECHO_N "checking minix/config.h presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <minix/config.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: minix/config.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: minix/config.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: minix/config.h: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: minix/config.h: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: minix/config.h: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: minix/config.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: minix/config.h: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: minix/config.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: minix/config.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: minix/config.h: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ----------------------------- ##
+## Report this to benny at xfce.org ##
+## ----------------------------- ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for minix/config.h" >&5
+echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6
+if test "${ac_cv_header_minix_config_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_header_minix_config_h=$ac_header_preproc
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5
+echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6
+
+fi
+if test $ac_cv_header_minix_config_h = yes; then
+ MINIX=yes
+else
+ MINIX=
+fi
+
+
+if test "$MINIX" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define _POSIX_SOURCE 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define _POSIX_1_SOURCE 2
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define _MINIX 1
+_ACEOF
+
+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
+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
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}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
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ CC=$ac_ct_CC
+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
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="cc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ CC=$ac_ct_CC
+else
+ CC="$ac_cv_prog_CC"
+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
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_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"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+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
+ echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in 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
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in 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
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$ac_ct_CC" && break
+done
+
+ CC=$ac_ct_CC
+fi
+
+fi
+
+
+test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&5
+echo "$as_me: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO:" \
+ "checking for C compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+ (eval $ac_compiler --version </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+ (eval $ac_compiler -v </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+ (eval $ac_compiler -V </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+
+echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_compiler_gnu=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
+GCC=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+CFLAGS="-g"
+echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_prog_cc_g=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_cc_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+echo "${ECHO_T}$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
+echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
+echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_stdc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_prog_cc_stdc=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* 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 -std1 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 -std1. */
+int osf4_cc_array ['\x00' == 0 ? 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
+# Don't try gcc -ansi; that turns off useful extensions and
+# breaks some systems' header files.
+# AIX -qlanglvl=ansi
+# Ultrix and OSF/1 -std1
+# HP-UX 10.20 and later -Ae
+# HP-UX older versions -Aa -D_HPUX_SOURCE
+# SVR4 -Xc -D__EXTENSIONS__
+for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_prog_cc_stdc=$ac_arg
+break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext
+done
+rm -f conftest.$ac_ext conftest.$ac_objext
+CC=$ac_save_CC
+
+fi
+
+case "x$ac_cv_prog_cc_stdc" in
+ x|xno)
+ echo "$as_me:$LINENO: result: none needed" >&5
+echo "${ECHO_T}none needed" >&6 ;;
+ *)
+ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+ CC="$CC $ac_cv_prog_cc_stdc" ;;
+esac
+
+# Some people use a C++ compiler to compile C. Since we use `exit',
+# in C++ we need to declare it. In case someone uses the same compiler
+# for both compiling C and C++ we need to have the C++ compiler decide
+# the declaration of exit, since it's the most demanding environment.
+cat >conftest.$ac_ext <<_ACEOF
+#ifndef __cplusplus
+ choke me
+#endif
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ for ac_declaration in \
+ '' \
+ 'extern "C" void std::exit (int) throw (); using std::exit;' \
+ 'extern "C" void std::exit (int); using std::exit;' \
+ 'extern "C" void exit (int) throw ();' \
+ 'extern "C" void exit (int);' \
+ 'void exit (int);'
+do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_declaration
+#include <stdlib.h>
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+continue
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_declaration
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+rm -f conftest*
+if test -n "$ac_declaration"; then
+ echo '#ifdef __cplusplus' >>confdefs.h
+ echo $ac_declaration >>confdefs.h
+ echo '#endif' >>confdefs.h
+fi
+
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f 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
+
+depcc="$CC" am_compiler_list=
+
+echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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'.
+ 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
+ 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 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ case $depmode in
+ 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
+ ;;
+ none) break ;;
+ esac
+ # 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.
+ if depmode=$depmode \
+ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftest.${OBJEXT-o} 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
+echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+echo "${ECHO_T}$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
+
+
+echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
+echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6
+if test "${lt_cv_path_SED+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # 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
+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 && break
+ 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 $lt_ac_count -gt 10 && 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
+
+fi
+
+echo "$as_me:$LINENO: result: $SED" >&5
+echo "${ECHO_T}$SED" >&6
+
+
+# Check whether --with-gnu-ld or --without-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+ withval="$with_gnu_ld"
+ test "$withval" = no || with_gnu_ld=yes
+else
+ with_gnu_ld=no
+fi;
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&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 "$with_gnu_ld" = yes; then
+ echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+else
+ echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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 GNU ld's only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ echo "$as_me:$LINENO: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+# 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.
+echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_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
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+done
+
+
+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. We don't cache a
+ # path for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the path is relative.
+ INSTALL=$ac_install_sh
+ fi
+fi
+echo "$as_me:$LINENO: result: $INSTALL" >&5
+echo "${ECHO_T}$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'
+
+
+
+if test -n ""; then
+ echo "$as_me:$LINENO: checking for intltool >= " >&5
+echo $ECHO_N "checking for intltool >= ... $ECHO_C" >&6
+
+ INTLTOOL_REQUIRED_VERSION_AS_INT=`echo | awk -F. '{ printf "%d", $1 * 100 + $2; }'`
+ INTLTOOL_APPLIED_VERSION=`awk -F\" '/\\$VERSION / { printf $2; }' < ${ac_aux_dir}/intltool-update.in`
+
+ INTLTOOL_APPLIED_VERSION_AS_INT=`awk -F\" '/\\$VERSION / { split($2, VERSION, "."); printf "%d\n", VERSION[1] * 100 + VERSION[2];}' < ${ac_aux_dir}/intltool-update.in`
+
+
+ if test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT"; then
+ echo "$as_me:$LINENO: result: $INTLTOOL_APPLIED_VERSION found" >&5
+echo "${ECHO_T}$INTLTOOL_APPLIED_VERSION found" >&6
+ else
+ echo "$as_me:$LINENO: result: $INTLTOOL_APPLIED_VERSION found. Your intltool is too old. You need intltool or later." >&5
+echo "${ECHO_T}$INTLTOOL_APPLIED_VERSION found. Your intltool is too old. You need intltool or later." >&6
+ exit 1
+ fi
+fi
+
+ INTLTOOL_DESKTOP_RULE='%.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_KEYS_RULE='%.keys: %.keys.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_PROP_RULE='%.prop: %.prop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_OAF_RULE='%.oaf: %.oaf.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -p $(top_srcdir)/po $< $@'
+ INTLTOOL_PONG_RULE='%.pong: %.pong.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_SERVER_RULE='%.server: %.server.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_SHEET_RULE='%.sheet: %.sheet.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_UI_RULE='%.ui: %.ui.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_XML_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u /tmp $< $@'
+ INTLTOOL_XAM_RULE='%.xam: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_KBD_RULE='%.kbd: %.kbd.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_CAVES_RULE='%.caves: %.caves.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_SCHEMAS_RULE='%.schemas: %.schemas.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+ INTLTOOL_THEME_RULE='%.theme: %.theme.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Use the tools built into the package, not the ones that are installed.
+
+INTLTOOL_EXTRACT='$(top_builddir)/intltool-extract'
+INTLTOOL_MERGE='$(top_builddir)/intltool-merge'
+INTLTOOL_UPDATE='$(top_builddir)/intltool-update'
+
+
+
+
+
+# Extract the first word of "perl", so it can be a program name with args.
+set dummy perl; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_INTLTOOL_PERL+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $INTLTOOL_PERL in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_INTLTOOL_PERL="$INTLTOOL_PERL" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_INTLTOOL_PERL="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ ;;
+esac
+fi
+INTLTOOL_PERL=$ac_cv_path_INTLTOOL_PERL
+
+if test -n "$INTLTOOL_PERL"; then
+ echo "$as_me:$LINENO: result: $INTLTOOL_PERL" >&5
+echo "${ECHO_T}$INTLTOOL_PERL" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+if test -z "$INTLTOOL_PERL"; then
+ { { echo "$as_me:$LINENO: error: perl not found; required for intltool" >&5
+echo "$as_me: error: perl not found; required for intltool" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "`$INTLTOOL_PERL -v | fgrep '5.' 2> /dev/null`"; then
+ { { echo "$as_me:$LINENO: error: perl 5.x required for intltool" >&5
+echo "$as_me: error: perl 5.x required for intltool" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test "x" != "xno-xml"; then
+ echo "$as_me:$LINENO: checking for XML::Parser" >&5
+echo $ECHO_N "checking for XML::Parser... $ECHO_C" >&6
+ if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then
+ echo "$as_me:$LINENO: result: ok" >&5
+echo "${ECHO_T}ok" >&6
+ else
+ { { echo "$as_me:$LINENO: error: XML::Parser perl module is required for intltool" >&5
+echo "$as_me: error: XML::Parser perl module is required for intltool" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+fi
+
+# Extract the first word of "iconv", so it can be a program name with args.
+set dummy iconv; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_INTLTOOL_ICONV+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $INTLTOOL_ICONV in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_INTLTOOL_ICONV="$INTLTOOL_ICONV" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_INTLTOOL_ICONV="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_path_INTLTOOL_ICONV" && ac_cv_path_INTLTOOL_ICONV="iconv"
+ ;;
+esac
+fi
+INTLTOOL_ICONV=$ac_cv_path_INTLTOOL_ICONV
+
+if test -n "$INTLTOOL_ICONV"; then
+ echo "$as_me:$LINENO: result: $INTLTOOL_ICONV" >&5
+echo "${ECHO_T}$INTLTOOL_ICONV" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+# Extract the first word of "msgfmt", so it can be a program name with args.
+set dummy msgfmt; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_INTLTOOL_MSGFMT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $INTLTOOL_MSGFMT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_INTLTOOL_MSGFMT="$INTLTOOL_MSGFMT" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_INTLTOOL_MSGFMT="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_path_INTLTOOL_MSGFMT" && ac_cv_path_INTLTOOL_MSGFMT="msgfmt"
+ ;;
+esac
+fi
+INTLTOOL_MSGFMT=$ac_cv_path_INTLTOOL_MSGFMT
+
+if test -n "$INTLTOOL_MSGFMT"; then
+ echo "$as_me:$LINENO: result: $INTLTOOL_MSGFMT" >&5
+echo "${ECHO_T}$INTLTOOL_MSGFMT" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+# Extract the first word of "msgmerge", so it can be a program name with args.
+set dummy msgmerge; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_INTLTOOL_MSGMERGE+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $INTLTOOL_MSGMERGE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_INTLTOOL_MSGMERGE="$INTLTOOL_MSGMERGE" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_INTLTOOL_MSGMERGE="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_path_INTLTOOL_MSGMERGE" && ac_cv_path_INTLTOOL_MSGMERGE="msgmerge"
+ ;;
+esac
+fi
+INTLTOOL_MSGMERGE=$ac_cv_path_INTLTOOL_MSGMERGE
+
+if test -n "$INTLTOOL_MSGMERGE"; then
+ echo "$as_me:$LINENO: result: $INTLTOOL_MSGMERGE" >&5
+echo "${ECHO_T}$INTLTOOL_MSGMERGE" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+# Extract the first word of "xgettext", so it can be a program name with args.
+set dummy xgettext; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_INTLTOOL_XGETTEXT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $INTLTOOL_XGETTEXT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_INTLTOOL_XGETTEXT="$INTLTOOL_XGETTEXT" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_INTLTOOL_XGETTEXT="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_path_INTLTOOL_XGETTEXT" && ac_cv_path_INTLTOOL_XGETTEXT="xgettext"
+ ;;
+esac
+fi
+INTLTOOL_XGETTEXT=$ac_cv_path_INTLTOOL_XGETTEXT
+
+if test -n "$INTLTOOL_XGETTEXT"; then
+ echo "$as_me:$LINENO: result: $INTLTOOL_XGETTEXT" >&5
+echo "${ECHO_T}$INTLTOOL_XGETTEXT" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+
+# Remove file type tags (using []) from po/POTFILES.
+
+
+
+
+
+
+if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+ # Keeping the `.' argument allows $(mkdir_p) to be used without
+ # argument. Indeed, we sometimes output rules like
+ # $(mkdir_p) $(somedir)
+ # where $(somedir) is conditionally defined.
+ # (`test -n '$(somedir)' && $(mkdir_p) $(somedir)' is a more
+ # expensive solution, as it forces Make to start a sub-shell.)
+ mkdir_p='mkdir -p -- .'
+else
+ # On NextStep and OpenStep, the `mkdir' command does not
+ # recognize any option. It will interpret all options as
+ # directories to create, and then abort because `.' already
+ # exists.
+ for d in ./-p ./--version;
+ do
+ test -d $d && rmdir $d
+ done
+ # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
+ if test -f "$ac_aux_dir/mkinstalldirs"; then
+ mkdir_p='$(mkinstalldirs)'
+ else
+ mkdir_p='$(install_sh) -d'
+ fi
+fi
+
+
+
+# Manually sed perl in so people don't have to put the intltool scripts in AC_OUTPUT.
+
+ ac_config_commands="$ac_config_commands intltool"
+
+
+
+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
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_PERL+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_PERL="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+PERL=$ac_cv_prog_PERL
+if test -n "$PERL"; then
+ echo "$as_me:$LINENO: result: $PERL" >&5
+echo "${ECHO_T}$PERL" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$PERL" && break
+done
+
+
+# Check whether --enable-static or --disable-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;
+
+
+# Check whether --enable-shared or --disable-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 --enable-fast-install or --disable-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;
+
+echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
+echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6
+if test "${lt_cv_ld_reload_flag+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_ld_reload_flag='-r'
+fi
+echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
+echo "${ECHO_T}$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'
+
+echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
+echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6
+if test "${lt_cv_path_NM+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$NM"; then
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+else
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ tmp_nm="$ac_dir/${ac_tool_prefix}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
+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+ */dev/null* | *'Invalid file or object type'*)
+ lt_cv_path_NM="$tmp_nm -B"
+ break
+ ;;
+ *)
+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+ */dev/null*)
+ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+ 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"
+ test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi
+fi
+echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5
+echo "${ECHO_T}$lt_cv_path_NM" >&6
+NM="$lt_cv_path_NM"
+
+echo "$as_me:$LINENO: checking whether ln -s works" >&5
+echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+ echo "$as_me:$LINENO: result: no, using $LN_S" >&5
+echo "${ECHO_T}no, using $LN_S" >&6
+fi
+
+echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5
+echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6
+if test "${lt_cv_deplibs_check_method+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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
+# which 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
+aix4* | aix5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+beos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+bsdi4*)
+ 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'.
+ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ ;;
+
+darwin* | rhapsody*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+freebsd* | kfreebsd*-gnu)
+ 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)/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
+ ;;
+
+gnu*)
+ 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]) 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
+ ;;
+
+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 Linux ELF.
+linux*)
+ case $host_cpu in
+ alpha*|hppa*|i*86|ia64*|m68*|mips*|powerpc*|sparc*|s390*|sh*|x86_64*)
+ lt_cv_deplibs_check_method=pass_all ;;
+ *)
+ # glibc up to 2.1.1 does not perform some relocations on ARM
+ # this will be overridden with pass_all, but let us keep it just in case
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;;
+ esac
+ lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+netbsd*)
+ 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=unknown
+ ;;
+
+openbsd*)
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object'
+ else
+ lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library'
+ fi
+ ;;
+
+osf3* | osf4* | osf5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sco3.2v5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ 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
+ ;;
+ esac
+ ;;
+
+sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+esac
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
+echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6
+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 no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then
+ enableval="$enable_libtool_lock"
+
+fi;
+test "x$enable_libtool_lock" != xno && 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 which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; 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 which ABI we are using.
+ echo '#line 5832 "configure"' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ if test "$lt_cv_prog_gnu_ld" = yes; 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*
+ ;;
+
+x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ case "`/usr/bin/file conftest.o`" in
+ *32-bit*)
+ case $host in
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_i386"
+ ;;
+ ppc64-*linux*|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-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ ppc*-*linux*|powerpc*-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*)
+ 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"
+ echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
+echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6
+if test "${lt_cv_cc_needs_belf+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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 >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ lt_cv_cc_needs_belf=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+lt_cv_cc_needs_belf=no
+fi
+rm -f 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
+echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
+echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6
+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS="$SAVE_CFLAGS"
+ fi
+ ;;
+
+esac
+
+need_locks="$enable_libtool_lock"
+
+
+
+for ac_header in dlfcn.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ----------------------------- ##
+## Report this to benny at xfce.org ##
+## ----------------------------- ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ac_ext=cc
+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 -n "$ac_tool_prefix"; then
+ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl 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
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+ echo "$as_me:$LINENO: result: $CXX" >&5
+echo "${ECHO_T}$CXX" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$CXX" && break
+ done
+fi
+if test -z "$CXX"; then
+ ac_ct_CXX=$CXX
+ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl 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
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CXX="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+ echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
+echo "${ECHO_T}$ac_ct_CXX" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$ac_ct_CXX" && break
+done
+test -n "$ac_ct_CXX" || ac_ct_CXX="g++"
+
+ CXX=$ac_ct_CXX
+fi
+
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO:" \
+ "checking for C++ compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+ (eval $ac_compiler --version </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+ (eval $ac_compiler -v </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+ (eval $ac_compiler -V </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+
+echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6
+if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_compiler_gnu=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6
+GXX=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+CXXFLAGS="-g"
+echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
+echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cxx_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_prog_cxx_g=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_cxx_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
+echo "${ECHO_T}$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
+for ac_declaration in \
+ '' \
+ 'extern "C" void std::exit (int) throw (); using std::exit;' \
+ 'extern "C" void std::exit (int); using std::exit;' \
+ 'extern "C" void exit (int) throw ();' \
+ 'extern "C" void exit (int);' \
+ 'void exit (int);'
+do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_declaration
+#include <stdlib.h>
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+continue
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_declaration
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+rm -f conftest*
+if test -n "$ac_declaration"; then
+ echo '#ifdef __cplusplus' >>confdefs.h
+ echo $ac_declaration >>confdefs.h
+ echo '#endif' >>confdefs.h
+fi
+
+ac_ext=cc
+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=
+
+echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
+if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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'.
+ 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
+ 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 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ case $depmode in
+ 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
+ ;;
+ none) break ;;
+ esac
+ # 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.
+ if depmode=$depmode \
+ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftest.${OBJEXT-o} 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
+echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5
+echo "${ECHO_T}$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
+
+
+ac_ext=cc
+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
+echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5
+echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6
+if test -z "$CXXCPP"; then
+ if test "${ac_cv_prog_CXXCPP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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 <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> 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 >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ # Broken: success on invalid input.
+continue
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f 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
+echo "$as_me:$LINENO: result: $CXXCPP" >&5
+echo "${ECHO_T}$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 <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> 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 >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ # Broken: success on invalid input.
+continue
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ :
+else
+ { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&5
+echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+ac_ext=cc
+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=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran
+ 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
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$F77"; then
+ ac_cv_prog_F77="$F77" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_F77="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+F77=$ac_cv_prog_F77
+if test -n "$F77"; then
+ echo "$as_me:$LINENO: result: $F77" >&5
+echo "${ECHO_T}$F77" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$F77" && break
+ done
+fi
+if test -z "$F77"; then
+ ac_ct_F77=$F77
+ for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_F77"; then
+ ac_cv_prog_ac_ct_F77="$ac_ct_F77" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_F77="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_F77=$ac_cv_prog_ac_ct_F77
+if test -n "$ac_ct_F77"; then
+ echo "$as_me:$LINENO: result: $ac_ct_F77" >&5
+echo "${ECHO_T}$ac_ct_F77" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$ac_ct_F77" && break
+done
+
+ F77=$ac_ct_F77
+fi
+
+
+# Provide some information about the compiler.
+echo "$as_me:6931:" \
+ "checking for Fortran 77 compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+ (eval $ac_compiler --version </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+ (eval $ac_compiler -v </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+ (eval $ac_compiler -V </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+rm -f a.out
+
+# If we don't use `.F' as extension, the preprocessor is not run on the
+# input file. (Note that this only needs to work for GNU compilers.)
+ac_save_ext=$ac_ext
+ac_ext=F
+echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6
+if test "${ac_cv_f77_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+ program main
+#ifndef __GNUC__
+ choke me
+#endif
+
+ end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_f77_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_compiler_gnu=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_f77_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6
+ac_ext=$ac_save_ext
+ac_test_FFLAGS=${FFLAGS+set}
+ac_save_FFLAGS=$FFLAGS
+FFLAGS=
+echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5
+echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_f77_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ FFLAGS=-g
+cat >conftest.$ac_ext <<_ACEOF
+ program main
+
+ end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_f77_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_prog_f77_g=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_f77_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5
+echo "${ECHO_T}$ac_cv_prog_f77_g" >&6
+if test "$ac_test_FFLAGS" = set; then
+ FFLAGS=$ac_save_FFLAGS
+elif test $ac_cv_prog_f77_g = yes; then
+ if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+ FFLAGS="-g -O2"
+ else
+ FFLAGS="-g"
+ fi
+else
+ if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+ FFLAGS="-O2"
+ else
+ FFLAGS=
+ fi
+fi
+
+G77=`test $ac_compiler_gnu = yes && echo yes`
+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
+
+
+
+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+
+# find the maximum length of command line arguments
+echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
+echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6
+if test "${lt_cv_sys_max_cmd_len+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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*)
+ # 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;
+ ;;
+
+ 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;
+ ;;
+
+ *)
+ # 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"`$CONFIG_SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \
+ = "XX$teststring") >/dev/null 2>&1 &&
+ new_result=`expr "X$teststring" : ".*" 2>&1` &&
+ lt_cv_sys_max_cmd_len=$new_result &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ 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`
+ ;;
+ esac
+
+fi
+
+if test -n $lt_cv_sys_max_cmd_len ; then
+ echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
+echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6
+else
+ echo "$as_me:$LINENO: result: none" >&5
+echo "${ECHO_T}none" >&6
+fi
+
+
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
+echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6
+if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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]*\)'
+
+# Transform the above into a raw symbol and a C symbol.
+symxfrm='\1 \2\3 \3'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+ symcode='[BCDT]'
+ ;;
+cygwin* | mingw* | pw32*)
+ symcode='[ABCDGISTW]'
+ ;;
+hpux*) # Its linker distinguishes data from code symbols
+ if test "$host_cpu" = ia64; then
+ symcode='[ABCDEGRST]'
+ fi
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+ ;;
+irix* | nonstopux*)
+ symcode='[BCDEGRST]'
+ ;;
+osf*)
+ symcode='[BCDEGQRST]'
+ ;;
+solaris* | sysv5*)
+ symcode='[BDRT]'
+ ;;
+sysv4)
+ symcode='[DFNSTU]'
+ ;;
+esac
+
+# 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
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+ symcode='[ABCDGIRSTW]' ;;
+esac
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+ # Write the raw and C identifiers.
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+
+ rm -f conftest*
+ cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # Now try to grab the symbols.
+ nlist=conftest.nm
+ if { (eval echo "$as_me:$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=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && 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 <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+ # Now generate the symbol file.
+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
+
+ cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+ const char *name;
+ lt_ptr_t address;
+}
+lt_preloaded_symbols[] =
+{
+EOF
+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
+ cat <<\EOF >> conftest.$ac_ext
+ {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+ lt_save_LIBS="$LIBS"
+ lt_save_CFLAGS="$CFLAGS"
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+ LIBS="$lt_save_LIBS"
+ CFLAGS="$lt_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 -f conftest* conftst*
+
+ # Do not use the global_symbol_pipe unless it works.
+ if test "$pipe_works" = yes; 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
+ echo "$as_me:$LINENO: result: failed" >&5
+echo "${ECHO_T}failed" >&6
+else
+ echo "$as_me:$LINENO: result: ok" >&5
+echo "${ECHO_T}ok" >&6
+fi
+
+echo "$as_me:$LINENO: checking for objdir" >&5
+echo $ECHO_N "checking for objdir... $ECHO_C" >&6
+if test "${lt_cv_objdir+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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
+echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5
+echo "${ECHO_T}$lt_cv_objdir" >&6
+objdir=$lt_cv_objdir
+
+
+
+
+
+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 "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+ fi
+ ;;
+esac
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e s/^X//'
+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 avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except M$VC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ar; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_AR+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AR="${ac_tool_prefix}ar"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+ echo "$as_me:$LINENO: result: $AR" >&5
+echo "${ECHO_T}$AR" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_AR"; then
+ ac_ct_AR=$AR
+ # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_AR="ar"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false"
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+ echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
+echo "${ECHO_T}$ac_ct_AR" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ AR=$ac_ct_AR
+else
+ AR="$ac_cv_prog_AR"
+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
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+ echo "$as_me:$LINENO: result: $RANLIB" >&5
+echo "${ECHO_T}$RANLIB" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}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
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+ echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+echo "${ECHO_T}$ac_ct_RANLIB" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ RANLIB=$ac_ct_RANLIB
+else
+ RANLIB="$ac_cv_prog_RANLIB"
+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
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ echo "$as_me:$LINENO: result: $STRIP" >&5
+echo "${ECHO_T}$STRIP" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}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
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+echo "${ECHO_T}$ac_ct_STRIP" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ STRIP=$ac_ct_STRIP
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$SED" && SED=sed
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+ case $host_os in
+ openbsd*)
+ old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
+ ;;
+ *)
+ old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+ echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
+echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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 <<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 at gnu.org
+
+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
+ echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+ echo "$as_me:$LINENO: checking for file" >&5
+echo $ECHO_N "checking for file... $ECHO_C" >&6
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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 <<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 at gnu.org
+
+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
+ echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ else
+ MAGIC_CMD=:
+ fi
+fi
+
+ fi
+ ;;
+esac
+
+enable_dlopen=no
+enable_win32_dll=no
+
+# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then
+ enableval="$enable_libtool_lock"
+
+fi;
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+
+# Check whether --with-pic or --without-pic was given.
+if test "${with_pic+set}" = set; then
+ withval="$with_pic"
+ pic_mode="$withval"
+else
+ pic_mode=default
+fi;
+test -z "$pic_mode" && pic_mode=default
+
+# Use C for the default configuration in the libtool script
+tagname=
+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;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}\n'
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+#
+# Check for any special shared library compilation flags.
+#
+lt_prog_cc_shlib=
+if test "$GCC" = no; then
+ case $host_os in
+ sco3.2v5*)
+ lt_prog_cc_shlib='-belf'
+ ;;
+ esac
+fi
+if test -n "$lt_prog_cc_shlib"; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5
+echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;}
+ if echo "$old_CC $old_CFLAGS " | grep "[ ]$lt_prog_cc_shlib[ ]" >/dev/null; then :
+ else
+ { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5
+echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;}
+ lt_cv_prog_cc_can_build_shared=no
+ fi
+fi
+
+
+#
+# Check to make sure the static flag actually works.
+#
+echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static works... $ECHO_C" >&6
+if test "${lt_prog_compiler_static_works+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_static_works=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $lt_prog_compiler_static"
+ printf "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The compiler 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
+ else
+ lt_prog_compiler_static_works=yes
+ fi
+ fi
+ $rm conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works" >&6
+
+if test x"$lt_prog_compiler_static_works" = xyes; then
+ :
+else
+ lt_prog_compiler_static=
+fi
+
+
+
+
+lt_prog_compiler_no_builtin_flag=
+
+if test "$GCC" = yes; then
+ lt_prog_compiler_no_builtin_flag=' -fno-builtin'
+
+
+echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_rtti_exceptions=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="-fno-rtti -fno-exceptions"
+ # 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}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:7965: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:7969: \$? = $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
+ if test ! -s conftest.err; then
+ lt_cv_prog_compiler_rtti_exceptions=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; 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=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_static='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ # 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'
+ ;;
+
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | pw32* | os2*)
+ # 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'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic='-fno-common'
+ ;;
+
+ 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
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic=-Kconform_pic
+ fi
+ ;;
+
+ hpux*)
+ # 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='-fPIC'
+ ;;
+ esac
+ ;;
+
+ *)
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ 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 "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static='-Bstatic'
+ else
+ lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+
+ mingw* | pw32* | os2*)
+ # 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'
+ ;;
+
+ 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'
+ ;;
+
+ newsos6)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ linux*)
+ case $CC in
+ icc* | ecc*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+ ccc*)
+ lt_prog_compiler_wl='-Wl,'
+ # All Alpha code is PIC.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+ esac
+ ;;
+
+ osf3* | osf4* | osf5*)
+ lt_prog_compiler_wl='-Wl,'
+ # All OSF/1 code is PIC.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ sco3.2v5*)
+ lt_prog_compiler_pic='-Kpic'
+ lt_prog_compiler_static='-dn'
+ ;;
+
+ solaris*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ sunos4*)
+ lt_prog_compiler_wl='-Qoption ld '
+ lt_prog_compiler_pic='-PIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ 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
+ ;;
+
+ uts4*)
+ lt_prog_compiler_pic='-pic'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ *)
+ lt_prog_compiler_can_build_shared=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_pic_works=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+ # 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}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:8198: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:8202: \$? = $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
+ if test ! -s conftest.err; then
+ lt_prog_compiler_pic_works=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6
+
+if test x"$lt_prog_compiler_pic_works" = xyes; 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
+case "$host_os" in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic=
+ ;;
+ *)
+ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_c_o=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$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}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:8258: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:8262: \$? = $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
+ if test ! -s out/conftest.err; then
+ lt_cv_prog_compiler_c_o=yes
+ fi
+ fi
+ chmod u+w .
+ $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 ..
+ rmdir conftest
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&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
+ echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+ if test "$hard_links" = no; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+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
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+ runpath_var=
+ allow_undefined_flag=
+ enable_shared_with_static_runtimes=no
+ archive_cmds=
+ archive_expsym_cmds=
+ old_archive_From_new_cmds=
+ old_archive_from_expsyms_cmds=
+ export_dynamic_flag_spec=
+ whole_archive_flag_spec=
+ thread_safe_flag_spec=
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_flag_spec_ld=
+ hardcode_libdir_separator=
+ hardcode_direct=no
+ hardcode_minus_L=no
+ hardcode_shlibpath_var=unsupported
+ link_all_deplibs=unknown
+ hardcode_automatic=no
+ module_cmds=
+ module_expsym_cmds=
+ always_export_symbols=no
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ # 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_"
+ # 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.
+ extract_expsyms_cmds=
+
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+ # 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 "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ ld_shlibs=yes
+ if test "$with_gnu_ld" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix3* | aix4* | aix5*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs=no
+ cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, 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 modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+ fi
+ ;;
+
+ amigaos*)
+ 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
+
+ # Samuel A. Falvo II <kc5tja at dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we can't use
+ # them.
+ ld_shlibs=no
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag=unsupported
+ # Joseph Beckenbach <jrb3 at best.com> 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*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec='-L$libdir'
+ 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 '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; 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}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ netbsd*)
+ 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 $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'
+ fi
+ ;;
+
+ solaris* | sysv5*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ ld_shlibs=no
+ cat <<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.
+
+EOF
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ 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
+ ;;
+
+ sunos4*)
+ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ linux*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_cmds="$tmp_archive_cmds"
+ supports_anon_versioning=no
+ case `$LD -v 2>/dev/null` in
+ *\ 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
+ if test $supports_anon_versioning = yes; 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 -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ else
+ archive_expsym_cmds="$tmp_archive_cmds"
+ fi
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ 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
+
+ if test "$ld_shlibs" = yes; then
+ 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
+ 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 "$GCC" = yes && test -z "$link_static_flag"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct=unsupported
+ fi
+ ;;
+
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; 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 AIX nm, but means don't demangle with GNU 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")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | 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
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ 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_libdir_separator=':'
+ link_all_deplibs=yes
+
+ if test "$GCC" = yes; 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
+ hardcode_direct=yes
+ 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'
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; 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 "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # 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_use_runtimelinking" = yes; 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.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; 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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; 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'
+ # -bexpall does not export symbols beginning with underscore (_)
+ always_export_symbols=yes
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec=' '
+ archive_cmds_need_lc=yes
+ # This is similar to how AIX traditionally builds it's shared libraries.
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ 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
+ # see comment about different semantics on the GNU ld section
+ ld_shlibs=no
+ ;;
+
+ bsdi4*)
+ export_dynamic_flag_spec=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # 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.
+ 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 `echo "$deplibs" | $SED -e '\''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'
+ fix_srcfile_path='`cygpath -w "$srcfile"`'
+ enable_shared_with_static_runtimes=yes
+ ;;
+
+ darwin* | rhapsody*)
+ if test "$GXX" = yes ; then
+ archive_cmds_need_lc=no
+ case "$host_os" in
+ rhapsody* | darwin1.[012])
+ allow_undefined_flag='-undefined suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ allow_undefined_flag='-flat_namespace -undefined suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[012])
+ allow_undefined_flag='-flat_namespace -undefined suppress'
+ ;;
+ 10.*)
+ allow_undefined_flag='-undefined dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ lt_int_apple_cc_single_mod=no
+ output_verbose_link_cmd='echo'
+ if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
+ lt_int_apple_cc_single_mod=yes
+ fi
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ archive_cmds='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ else
+ archive_cmds='$CC -r ${wl}-bind_at_load -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'
+ fi
+ module_cmds='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ hardcode_direct=no
+ hardcode_automatic=yes
+ hardcode_shlibpath_var=unsupported
+ whole_archive_flag_spec='-all_load $convenience'
+ link_all_deplibs=yes
+ 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
+ ;;
+
+ freebsd1*)
+ ld_shlibs=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # 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* | kfreebsd*-gnu)
+ archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $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 $output_objdir/$soname = $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* | hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ *)
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ case "$host_cpu" in
+ hppa*64*)
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec_ld='+b $libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
+ ;;
+ ia64*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ ;;
+ *)
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=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 "$GCC" = yes; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_ld='-rpath $libdir'
+ fi
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ link_all_deplibs=yes
+ ;;
+
+ netbsd*)
+ 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
+ ;;
+
+ openbsd*)
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec='${wl}-E'
+ else
+ case $host_os in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ ;;
+ *)
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ ;;
+
+ os2*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ allow_undefined_flag=unsupported
+ archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; 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" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${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='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -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; echo "-hidden">> $lib.exp~
+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec='-rpath $libdir'
+ fi
+ hardcode_libdir_separator=:
+ ;;
+
+ sco3.2v5*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var=no
+ export_dynamic_flag_spec='${wl}-Bexport'
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ;;
+
+ solaris*)
+ no_undefined_flag=' -z text'
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared ${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 ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+ 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'
+ fi
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_shlibpath_var=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *) # Supported since Solaris 2.6 (maybe 2.5.1?)
+ whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
+ esac
+ link_all_deplibs=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; 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.2uw2*)
+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes
+ hardcode_minus_L=no
+ hardcode_shlibpath_var=no
+ hardcode_runpath_var=yes
+ runpath_var=LD_RUN_PATH
+ ;;
+
+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
+ no_undefined_flag='${wl}-z ${wl}text'
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var=no
+ ;;
+
+ sysv5*)
+ no_undefined_flag=' -z text'
+ # $CC -shared without GNU ld will not create a library from C++
+ # object files and a static libstdc++, better avoid it by now
+ 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'
+ hardcode_libdir_flag_spec=
+ hardcode_shlibpath_var=no
+ runpath_var='LD_RUN_PATH'
+ ;;
+
+ 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
+ fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs" >&5
+echo "${ECHO_T}$ld_shlibs" >&6
+test "$ld_shlibs" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# 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 "$enable_shared" = yes && test "$GCC" = yes; 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.
+ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl
+ 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:$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=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ then
+ archive_cmds_need_lc=no
+ else
+ archive_cmds_need_lc=yes
+ fi
+ allow_undefined_flag=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5
+echo "${ECHO_T}$archive_cmds_need_lc" >&6
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&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"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # 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.
+ 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
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+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
+ 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'
+ ;;
+
+aix4* | aix5*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; 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
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.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}'
+ else
+ # 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'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ 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=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $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'
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi4*)
+ version_type=linux
+ 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*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ 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'
+ 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="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ 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
+ ;;
+ 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
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # 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}${versuffix}$shared_ext ${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)'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ 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
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+kfreebsd*-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='GNU ld.so'
+ ;;
+
+freebsd*)
+ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ 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
+ ;;
+ *) # from 3.2 on
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+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
+ 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 "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ 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'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ 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
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ 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'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # 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
+
+ # find out which ABI we are using
+ libsuff=
+ case "$host_cpu" in
+ x86_64*|s390x*|powerpc64*)
+ echo '#line 9592 "configure"' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *64-bit*)
+ libsuff=64
+ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+ esac
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $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'
+ ;;
+
+knetbsd*-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='GNU ld.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
+ 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=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=yes
+ ;;
+
+openbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=yes
+ 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
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[89] | openbsd2.[89].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+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"
+ ;;
+
+sco3.2v5*)
+ version_type=osf
+ 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
+ ;;
+
+solaris*)
+ 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=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 "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ version_type=linux
+ 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
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ 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
+ 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
+ ;;
+
+uts4*)
+ version_type=linux
+ 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
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" || \
+ test -n "$runpath_var " || \
+ test "X$hardcode_automatic"="Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$hardcode_direct" != no &&
+ # 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 "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no &&
+ test "$hardcode_minus_L" != no; 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
+echo "$as_me:$LINENO: result: $hardcode_action" >&5
+echo "${ECHO_T}$hardcode_action" >&6
+
+if test "$hardcode_action" = relink; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&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"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}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"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+ ;;
+ *)
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ ;;
+ esac
+fi
+
+if test "x$enable_dlopen" != xyes; 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*)
+ 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
+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dl_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; 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
+
+ ;;
+
+ *)
+ echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+if test "${ac_cv_func_shl_load+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define shl_load innocuous_shl_load
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char shl_load (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shl_load
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char shl_load ();
+/* 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_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+char (*f) () = shl_load;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shl_load;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_shl_load=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+if test $ac_cv_func_shl_load = yes; then
+ lt_cv_dlopen="shl_load"
+else
+ echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char shl_load ();
+int
+main ()
+{
+shl_load ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dld_shl_load=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+if test $ac_cv_lib_dld_shl_load = yes; then
+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+ echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+if test "${ac_cv_func_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define dlopen innocuous_dlopen
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char dlopen (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef dlopen
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+/* 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_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+char (*f) () = dlopen;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != dlopen;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+if test $ac_cv_func_dlopen = yes; then
+ lt_cv_dlopen="dlopen"
+else
+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dl_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+ echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_svld_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+if test $ac_cv_lib_svld_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+ echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dld_link ();
+int
+main ()
+{
+dld_link ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dld_dld_link=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_dld_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+if test $ac_cv_lib_dld_dld_link = yes; then
+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+ ;;
+ esac
+
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; 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 <<EOF
+#line 10463 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#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
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=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;
+ /* dlclose (self); */
+ }
+
+ exit (status);
+}
+EOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) 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_unknown|x*) lt_cv_dlopen_self=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ LDFLAGS="$LDFLAGS $link_static_flag"
+ echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; 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 <<EOF
+#line 10561 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#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
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=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;
+ /* dlclose (self); */
+ }
+
+ exit (status);
+}
+EOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) 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_unknown|x*) lt_cv_dlopen_self_static=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self_static=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$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
+
+
+# Report which librarie types wil actually be built
+echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $can_build_shared" >&5
+echo "${ECHO_T}$can_build_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
+test "$can_build_shared" = "no" && 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 "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+
+aix4* | aix5*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+ darwin* | rhapsody*)
+ if test "$GCC" = yes; then
+ archive_cmds_need_lc=no
+ case "$host_os" in
+ rhapsody* | darwin1.[012])
+ allow_undefined_flag='-undefined suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ allow_undefined_flag='-flat_namespace -undefined suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[012])
+ allow_undefined_flag='-flat_namespace -undefined suppress'
+ ;;
+ 10.*)
+ allow_undefined_flag='-undefined dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ output_verbose_link_cmd='echo'
+ archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring'
+ module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+ archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ hardcode_direct=no
+ hardcode_automatic=yes
+ hardcode_shlibpath_var=unsupported
+ whole_archive_flag_spec='-all_load $convenience'
+ link_all_deplibs=yes
+ else
+ ld_shlibs=no
+ fi
+ ;;
+esac
+echo "$as_me:$LINENO: result: $enable_shared" >&5
+echo "${ECHO_T}$enable_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+echo "$as_me:$LINENO: result: $enable_static" >&5
+echo "${ECHO_T}$enable_static" >&6
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ compiler \
+ CC \
+ LD \
+ lt_prog_compiler_wl \
+ lt_prog_compiler_pic \
+ lt_prog_compiler_static \
+ lt_prog_compiler_no_builtin_flag \
+ export_dynamic_flag_spec \
+ thread_safe_flag_spec \
+ whole_archive_flag_spec \
+ enable_shared_with_static_runtimes \
+ old_archive_cmds \
+ old_archive_from_new_cmds \
+ predep_objects \
+ postdep_objects \
+ predeps \
+ postdeps \
+ compiler_lib_search_path \
+ archive_cmds \
+ archive_expsym_cmds \
+ postinstall_cmds \
+ postuninstall_cmds \
+ old_archive_from_expsyms_cmds \
+ allow_undefined_flag \
+ no_undefined_flag \
+ export_symbols_cmds \
+ hardcode_libdir_flag_spec \
+ hardcode_libdir_flag_spec_ld \
+ hardcode_libdir_separator \
+ hardcode_automatic \
+ module_cmds \
+ module_expsym_cmds \
+ lt_cv_prog_compiler_c_o \
+ exclude_expsyms \
+ include_expsyms; do
+
+ case $var in
+ old_archive_cmds | \
+ old_archive_from_new_cmds | \
+ archive_cmds | \
+ archive_expsym_cmds | \
+ module_cmds | \
+ module_expsym_cmds | \
+ old_archive_from_expsyms_cmds | \
+ export_symbols_cmds | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\$0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+
+cfgfile="${ofile}T"
+ trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+ $rm -f "$cfgfile"
+ { echo "$as_me:$LINENO: creating $ofile" >&5
+echo "$as_me: creating $ofile" >&6;}
+
+ cat <<__EOF__ >> "$cfgfile"
+#! $SHELL
+
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Libtool:
+# Originally by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 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 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# 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 s/^X//"
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+# The names of the tagged configurations supported by this script.
+available_tags=
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# 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
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# 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
+
+# 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
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# 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
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec
+
+# Library versioning type.
+version_type=$version_type
+
+# 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
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# 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 and install a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+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
+
+# 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
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# 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 in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# 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
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# 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 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
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path"
+
+# 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
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_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
+
+# ### END LIBTOOL CONFIG
+
+__EOF__
+
+
+ case $host_os in
+ aix3*)
+ cat <<\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 "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+fi
+EOF
+ ;;
+ esac
+
+ # 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"
+
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ 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
+
+CC="$lt_save_CC"
+
+
+# Check whether --with-tags or --without-tags was given.
+if test "${with_tags+set}" = set; then
+ withval="$with_tags"
+ tagnames="$withval"
+fi;
+
+if test -f "$ltmain" && test -n "$tagnames"; then
+ if test ! -f "${ofile}"; then
+ { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5
+echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;}
+ fi
+
+ if test -z "$LTCC"; then
+ eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
+ if test -z "$LTCC"; then
+ { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5
+echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;}
+ else
+ { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5
+echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;}
+ fi
+ fi
+
+ # Extract list of available tagged configurations in $ofile.
+ # Note that this assumes the entire list is on one line.
+ available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
+
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for tagname in $tagnames; do
+ IFS="$lt_save_ifs"
+ # Check whether tagname contains only valid characters
+ case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in
+ "") ;;
+ *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5
+echo "$as_me: error: invalid tag name: $tagname" >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
+ esac
+
+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
+ then
+ { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5
+echo "$as_me: error: tag name \"$tagname\" already exists" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+ # Update the list of available tags.
+ if test -n "$tagname"; then
+ echo appending configuration tag \"$tagname\" to $ofile
+
+ case $tagname in
+ CXX)
+ if test -n "$CXX" && test "X$CXX" != "Xno"; then
+ ac_ext=cc
+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=
+export_dynamic_flag_spec_CXX=
+hardcode_direct_CXX=no
+hardcode_libdir_flag_spec_CXX=
+hardcode_libdir_flag_spec_ld_CXX=
+hardcode_libdir_separator_CXX=
+hardcode_minus_L_CXX=no
+hardcode_automatic_CXX=no
+module_cmds_CXX=
+module_expsym_cmds_CXX=
+link_all_deplibs_CXX=unknown
+old_archive_cmds_CXX=$old_archive_cmds
+no_undefined_flag_CXX=
+whole_archive_flag_spec_CXX=
+enable_shared_with_static_runtimes_CXX=no
+
+# 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=
+
+# Source file extension for C++ test sources.
+ac_ext=cc
+
+# Object file extension for compiled C++ test sources.
+objext=o
+objext_CXX=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(int, char *) { return(0); }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+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
+ 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
+ unset lt_cv_path_LD
+fi
+test -z "${LDCXX+set}" || LD=$LDCXX
+CC=${CXX-"c++"}
+compiler=$CC
+compiler_CXX=$CC
+cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+
+# We don't want -fno-exception wen compiling C++ code, so set the
+# no_builtin_flag separately
+if test "$GXX" = yes; then
+ lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
+else
+ lt_prog_compiler_no_builtin_flag_CXX=
+fi
+
+if test "$GXX" = yes; then
+ # Set up default GNU C++ configuration
+
+
+# Check whether --with-gnu-ld or --without-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+ withval="$with_gnu_ld"
+ test "$withval" = no || with_gnu_ld=yes
+else
+ with_gnu_ld=no
+fi;
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&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 "$with_gnu_ld" = yes; then
+ echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+else
+ echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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 GNU ld's only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ echo "$as_me:$LINENO: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+echo "${ECHO_T}$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 "$with_gnu_ld" = yes; then
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -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 "\-L"'
+
+else
+ GXX=no
+ with_gnu_ld=no
+ wlarc=
+fi
+
+# PORTME: fill in a description of your system's C++ link characteristics
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+ld_shlibs_CXX=yes
+case $host_os in
+ aix3*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; 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
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ case $ld_flag in
+ *-brtl*)
+ aix_use_runtimelinking=yes
+ break
+ ;;
+ esac
+ done
+ 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_libdir_separator_CXX=':'
+ link_all_deplibs_CXX=yes
+
+ if test "$GXX" = yes; 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
+ hardcode_direct_CXX=yes
+ 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'
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; 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 "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # 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_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag_CXX='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+ archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; 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 $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; 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'
+ # -bexpall does not export symbols beginning with underscore (_)
+ always_export_symbols_CXX=yes
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec_CXX=' '
+ archive_cmds_need_lc_CXX=yes
+ # This is similar to how AIX traditionally builds it's shared libraries.
+ archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+ chorus*)
+ case $cc_basename in
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec_CXX='-L$libdir'
+ 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}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; 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}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+ ld_shlibs_CXX=no
+ fi
+ ;;
+
+ darwin* | rhapsody*)
+ if test "$GXX" = yes; then
+ archive_cmds_need_lc_CXX=no
+ case "$host_os" in
+ rhapsody* | darwin1.[012])
+ allow_undefined_flag_CXX='-undefined suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ allow_undefined_flag_CXX='-flat_namespace -undefined suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[012])
+ allow_undefined_flag_CXX='-flat_namespace -undefined suppress'
+ ;;
+ 10.*)
+ allow_undefined_flag_CXX='-undefined dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ lt_int_apple_cc_single_mod=no
+ output_verbose_link_cmd='echo'
+ if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
+ lt_int_apple_cc_single_mod=yes
+ fi
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ else
+ archive_cmds_CXX='$CC -r ${wl}-bind_at_load -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'
+ fi
+ module_cmds_CXX='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ hardcode_direct_CXX=no
+ hardcode_automatic_CXX=yes
+ hardcode_shlibpath_var_CXX=unsupported
+ whole_archive_flag_spec_CXX='-all_load $convenience'
+ link_all_deplibs_CXX=yes
+ else
+ ld_shlibs_CXX=no
+ fi
+ ;;
+
+ 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
+ ;;
+ freebsd12*)
+ # 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* | kfreebsd*-gnu)
+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+ # conventions
+ ld_shlibs_CXX=yes
+ ;;
+ gnu*)
+ ;;
+ 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 $output_objdir/$soname = $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) | grep "-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ esac
+ ;;
+ hpux10*|hpux11*)
+ if test $with_gnu_ld = no; then
+ case "$host_cpu" in
+ hppa*64*)
+ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec_ld_CXX='+b $libdir'
+ hardcode_libdir_separator_CXX=:
+ ;;
+ ia64*)
+ hardcode_libdir_flag_spec_CXX='-L$libdir'
+ ;;
+ *)
+ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+ export_dynamic_flag_spec_CXX='${wl}-E'
+ ;;
+ esac
+ fi
+ case "$host_cpu" in
+ hppa*64*)
+ hardcode_direct_CXX=no
+ hardcode_shlibpath_var_CXX=no
+ ;;
+ ia64*)
+ hardcode_direct_CXX=no
+ hardcode_shlibpath_var_CXX=no
+ hardcode_minus_L_CXX=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+ ;;
+ *)
+ hardcode_direct_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*|ia64*)
+ archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+ ;;
+ *)
+ 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; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test $with_gnu_ld = no; then
+ case "$host_cpu" in
+ ia64*|hppa*64*)
+ archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${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
+ ;;
+ 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" && echo -set_version $verstring` -update_registry ${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 "$GXX" = yes; then
+ if test "$with_gnu_ld" = no; then
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+ else
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${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=:
+ ;;
+ linux*)
+ 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; echo $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)
+ # Intel C++
+ with_gnu_ld=yes
+ archive_cmds_need_lc_CXX=no
+ 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'
+ 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'
+ ;;
+ 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=`echo $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; echo $list'
+ ;;
+ 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::"'
+ ;;
+ osf3*)
+ 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
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+
+ ;;
+ RCC)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ cxx)
+ 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" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+
+ 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.
+ #
+ # 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=`echo $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; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+
+ 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 "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ esac
+ ;;
+ 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.
+ old_archive_cmds_CXX='$CC -o $oldlib $oldobjs'
+ ;;
+ RCC)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ cxx)
+ 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" && echo -set_version $verstring` -update_registry ${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 $objdir/so_locations -o $lib~
+ $rm $lib.exp'
+
+ 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" | grep -v "ld:"`; templist=`echo $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; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+
+ 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 "\-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
+ ;;
+ sco*)
+ archive_cmds_need_lc_CXX=no
+ case $cc_basename in
+ CC)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+ 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)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ no_undefined_flag_CXX=' -zdefs'
+ archive_cmds_CXX='$CC -G${allow_undefined_flag} -nolib -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} -nolib ${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 C++ compiler is used as linker so we must use $wl
+ # flag to pass the commands to the underlying system
+ # linker.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ ;;
+ esac
+ link_all_deplibs_CXX=yes
+
+ # 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 -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[LR]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+ # 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 "$GXX" = yes && test "$with_gnu_ld" = no; then
+ no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
+ if $CC --version | grep -v '^2\.7' > /dev/null; then
+ archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $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 -nostdlib ${wl}-M $wl$lib.exp -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 \"\-L\""
+ else
+ # g++ 2.7 appears to require `-G' NOT `-shared' on this
+ # platform.
+ archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $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 -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 \"\-L\""
+ fi
+
+ hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
+ fi
+ ;;
+ esac
+ ;;
+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
+ archive_cmds_need_lc_CXX=no
+ ;;
+ 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
+echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+echo "${ECHO_T}$ld_shlibs_CXX" >&6
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+GCC_CXX="$GXX"
+LD_CXX="$LD"
+
+
+cat > conftest.$ac_ext <<EOF
+class Foo
+{
+public:
+ Foo (void) { a = 0; }
+private:
+ int a;
+};
+EOF
+
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; 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
+
+ # The `*' in the case matches for architectures that use `case' in
+ # $output_verbose_cmd can trigger glob expansion during the loop
+ # eval without this substitution.
+ output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`"
+
+ for p in `eval $output_verbose_link_cmd`; do
+ case $p in
+
+ -L* | -R* | -l*)
+ # Some compilers place space between "-{L,R}" and the path.
+ # Remove the space.
+ if test $p = "-L" \
+ || test $p = "-R"; then
+ prev=$p
+ continue
+ else
+ prev=
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ case $p 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
+ ;;
+
+ *.$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 "$pre_test_object_deps_done" = no; 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
+
+case " $postdeps_CXX " in
+*" -lc "*) archive_cmds_need_lc_CXX=no ;;
+esac
+
+lt_prog_compiler_wl_CXX=
+lt_prog_compiler_pic_CXX=
+lt_prog_compiler_static_CXX=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+ # C++ specific cases for pic, static, wl, etc.
+ if test "$GXX" = yes; 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 "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_CXX='-Bstatic'
+ fi
+ ;;
+ amigaos*)
+ # 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'
+ ;;
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+ mingw* | os2* | pw32*)
+ # 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'
+ ;;
+ 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=
+ ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic_CXX=-Kconform_pic
+ fi
+ ;;
+ hpux*)
+ # 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*)
+ ;;
+ *)
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+ esac
+ ;;
+ *)
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+ esac
+ else
+ case $host_os in
+ aix4* | aix5*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; 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_AC_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
+ ;;
+ 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* | kfreebsd*-gnu)
+ # FreeBSD uses GNU C++
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $cc_basename in
+ CC)
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+ if test "$host_cpu" != ia64; then
+ lt_prog_compiler_pic_CXX='+Z'
+ fi
+ ;;
+ aCC)
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic_CXX='+Z'
+ ;;
+ esac
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ 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*)
+ case $cc_basename in
+ KCC)
+ # KAI C++ Compiler
+ lt_prog_compiler_wl_CXX='--backend -Wl,'
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+ icpc)
+ # Intel C++
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_pic_CXX='-KPIC'
+ lt_prog_compiler_static_CXX='-static'
+ ;;
+ 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'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ lynxos*)
+ ;;
+ m88k*)
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx)
+ lt_prog_compiler_pic_CXX='-W c,exportall'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ netbsd*)
+ ;;
+ 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*)
+ ;;
+ sco*)
+ case $cc_basename in
+ CC)
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC)
+ # 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
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC)
+ # NonStop-UX NCC 3.20
+ lt_prog_compiler_pic_CXX='-KPIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ unixware*)
+ ;;
+ vxworks*)
+ ;;
+ *)
+ lt_prog_compiler_can_build_shared_CXX=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_CXX"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_pic_works_CXX=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
+ # 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}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:12740: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:12744: \$? = $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
+ if test ! -s conftest.err; then
+ lt_prog_compiler_pic_works_CXX=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6
+
+if test x"$lt_prog_compiler_pic_works_CXX" = xyes; 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
+case "$host_os" in
+ # For platforms which 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
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_c_o_CXX=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$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}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:12800: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:12804: \$? = $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
+ if test ! -s out/conftest.err; then
+ lt_cv_prog_compiler_c_o_CXX=yes
+ fi
+ fi
+ chmod u+w .
+ $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 ..
+ rmdir conftest
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&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
+ echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+ if test "$hard_links" = no; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+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
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ case $host_os in
+ aix4* | aix5*)
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU 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")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ fi
+ ;;
+ pw32*)
+ export_symbols_cmds_CXX="$ltdll_cmds"
+ ;;
+ cygwin* | mingw*)
+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ *)
+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ esac
+
+echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+echo "${ECHO_T}$ld_shlibs_CXX" >&6
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# 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 "$enable_shared" = yes && test "$GCC" = yes; 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.
+ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl_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:$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=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ then
+ archive_cmds_need_lc_CXX=no
+ else
+ 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*
+ echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&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"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # 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.
+ 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
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+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
+ 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'
+ ;;
+
+aix4* | aix5*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; 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
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.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}'
+ else
+ # 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'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ 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=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $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'
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi4*)
+ version_type=linux
+ 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*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ 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'
+ 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="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ 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
+ ;;
+ 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
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # 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}${versuffix}$shared_ext ${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)'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ 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
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+kfreebsd*-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='GNU ld.so'
+ ;;
+
+freebsd*)
+ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ 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
+ ;;
+ *) # from 3.2 on
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+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
+ 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 "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ 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'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ 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
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ 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'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # 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
+
+ # find out which ABI we are using
+ libsuff=
+ case "$host_cpu" in
+ x86_64*|s390x*|powerpc64*)
+ echo '#line 13311 "configure"' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *64-bit*)
+ libsuff=64
+ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+ esac
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $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'
+ ;;
+
+knetbsd*-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='GNU ld.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
+ 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=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=yes
+ ;;
+
+openbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=yes
+ 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
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[89] | openbsd2.[89].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+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"
+ ;;
+
+sco3.2v5*)
+ version_type=osf
+ 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
+ ;;
+
+solaris*)
+ 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=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 "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ version_type=linux
+ 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
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ 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
+ 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
+ ;;
+
+uts4*)
+ version_type=linux
+ 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
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_CXX=
+if test -n "$hardcode_libdir_flag_spec_CXX" || \
+ test -n "$runpath_var CXX" || \
+ test "X$hardcode_automatic_CXX"="Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$hardcode_direct_CXX" != no &&
+ # 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 "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
+ test "$hardcode_minus_L_CXX" != no; 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
+echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5
+echo "${ECHO_T}$hardcode_action_CXX" >&6
+
+if test "$hardcode_action_CXX" = relink; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&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"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}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"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+ ;;
+ *)
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ ;;
+ esac
+fi
+
+if test "x$enable_dlopen" != xyes; 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*)
+ 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
+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dl_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; 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
+
+ ;;
+
+ *)
+ echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+if test "${ac_cv_func_shl_load+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define shl_load innocuous_shl_load
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char shl_load (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shl_load
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char shl_load ();
+/* 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_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+char (*f) () = shl_load;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shl_load;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_shl_load=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+if test $ac_cv_func_shl_load = yes; then
+ lt_cv_dlopen="shl_load"
+else
+ echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char shl_load ();
+int
+main ()
+{
+shl_load ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dld_shl_load=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+if test $ac_cv_lib_dld_shl_load = yes; then
+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+ echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+if test "${ac_cv_func_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define dlopen innocuous_dlopen
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char dlopen (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef dlopen
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+/* 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_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+char (*f) () = dlopen;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != dlopen;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+if test $ac_cv_func_dlopen = yes; then
+ lt_cv_dlopen="dlopen"
+else
+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dl_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+ echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_svld_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+if test $ac_cv_lib_svld_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+ echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dld_link ();
+int
+main ()
+{
+dld_link ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dld_dld_link=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_dld_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+if test $ac_cv_lib_dld_dld_link = yes; then
+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+ ;;
+ esac
+
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; 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 <<EOF
+#line 14182 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#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
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=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;
+ /* dlclose (self); */
+ }
+
+ exit (status);
+}
+EOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) 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_unknown|x*) lt_cv_dlopen_self=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ LDFLAGS="$LDFLAGS $link_static_flag"
+ echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; 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 <<EOF
+#line 14280 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#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
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=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;
+ /* dlclose (self); */
+ }
+
+ exit (status);
+}
+EOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) 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_unknown|x*) lt_cv_dlopen_self_static=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self_static=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$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
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ compiler_CXX \
+ CC_CXX \
+ LD_CXX \
+ lt_prog_compiler_wl_CXX \
+ lt_prog_compiler_pic_CXX \
+ lt_prog_compiler_static_CXX \
+ lt_prog_compiler_no_builtin_flag_CXX \
+ export_dynamic_flag_spec_CXX \
+ thread_safe_flag_spec_CXX \
+ whole_archive_flag_spec_CXX \
+ enable_shared_with_static_runtimes_CXX \
+ old_archive_cmds_CXX \
+ old_archive_from_new_cmds_CXX \
+ predep_objects_CXX \
+ postdep_objects_CXX \
+ predeps_CXX \
+ postdeps_CXX \
+ compiler_lib_search_path_CXX \
+ archive_cmds_CXX \
+ archive_expsym_cmds_CXX \
+ postinstall_cmds_CXX \
+ postuninstall_cmds_CXX \
+ old_archive_from_expsyms_cmds_CXX \
+ allow_undefined_flag_CXX \
+ no_undefined_flag_CXX \
+ export_symbols_cmds_CXX \
+ hardcode_libdir_flag_spec_CXX \
+ hardcode_libdir_flag_spec_ld_CXX \
+ hardcode_libdir_separator_CXX \
+ hardcode_automatic_CXX \
+ module_cmds_CXX \
+ module_expsym_cmds_CXX \
+ lt_cv_prog_compiler_c_o_CXX \
+ exclude_expsyms_CXX \
+ include_expsyms_CXX; do
+
+ case $var in
+ old_archive_cmds_CXX | \
+ old_archive_from_new_cmds_CXX | \
+ archive_cmds_CXX | \
+ archive_expsym_cmds_CXX | \
+ module_cmds_CXX | \
+ module_expsym_cmds_CXX | \
+ old_archive_from_expsyms_cmds_CXX | \
+ export_symbols_cmds_CXX | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\$0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+
+cfgfile="$ofile"
+
+ cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# 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
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_CXX
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_CXX
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_CXX
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_CXX
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_CXX
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# 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
+
+# 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
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_CXX
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_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
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX
+
+# Library versioning type.
+version_type=$version_type
+
+# 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
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_CXX
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# 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 and install a shared archive.
+archive_cmds=$lt_archive_cmds_CXX
+archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_CXX
+module_expsym_cmds=$lt_module_expsym_cmds_CXX
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_CXX
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_CXX
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_CXX
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+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
+
+# 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
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_CXX
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_CXX
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# 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 in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_CXX
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# 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
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
+
+# 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 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
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_CXX
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_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
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# 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
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ 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
+
+CC=$lt_save_CC
+LDCXX=$LD
+LD=$lt_save_LD
+GCC=$lt_save_GCC
+with_gnu_ldcxx=$with_gnu_ld
+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
+
+ else
+ tagname=""
+ fi
+ ;;
+
+ F77)
+ if test -n "$F77" && test "X$F77" != "Xno"; then
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+
+
+archive_cmds_need_lc_F77=no
+allow_undefined_flag_F77=
+always_export_symbols_F77=no
+archive_expsym_cmds_F77=
+export_dynamic_flag_spec_F77=
+hardcode_direct_F77=no
+hardcode_libdir_flag_spec_F77=
+hardcode_libdir_flag_spec_ld_F77=
+hardcode_libdir_separator_F77=
+hardcode_minus_L_F77=no
+hardcode_automatic_F77=no
+module_cmds_F77=
+module_expsym_cmds_F77=
+link_all_deplibs_F77=unknown
+old_archive_cmds_F77=$old_archive_cmds
+no_undefined_flag_F77=
+whole_archive_flag_spec_F77=
+enable_shared_with_static_runtimes_F77=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+objext_F77=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code=" subroutine t\n return\n end\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code=" program t\n end\n"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${F77-"f77"}
+compiler=$CC
+compiler_F77=$CC
+cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+
+echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $can_build_shared" >&5
+echo "${ECHO_T}$can_build_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
+test "$can_build_shared" = "no" && 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 "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+aix4* | aix5*)
+ test "$enable_shared" = yes && enable_static=no
+ ;;
+esac
+echo "$as_me:$LINENO: result: $enable_shared" >&5
+echo "${ECHO_T}$enable_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+echo "$as_me:$LINENO: result: $enable_static" >&5
+echo "${ECHO_T}$enable_static" >&6
+
+test "$ld_shlibs_F77" = no && can_build_shared=no
+
+GCC_F77="$G77"
+LD_F77="$LD"
+
+lt_prog_compiler_wl_F77=
+lt_prog_compiler_pic_F77=
+lt_prog_compiler_static_F77=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_static_F77='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_F77='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ # 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_F77='-m68020 -resident32 -malways-restore-a4'
+ ;;
+
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | pw32* | os2*)
+ # 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_F77='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic_F77='-fno-common'
+ ;;
+
+ 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_F77=no
+ enable_shared=no
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic_F77=-Kconform_pic
+ fi
+ ;;
+
+ hpux*)
+ # 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_F77='-fPIC'
+ ;;
+ esac
+ ;;
+
+ *)
+ lt_prog_compiler_pic_F77='-fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_F77='-Bstatic'
+ else
+ lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+
+ mingw* | pw32* | os2*)
+ # 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_F77='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ lt_prog_compiler_wl_F77='-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_F77='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ lt_prog_compiler_static_F77='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ # PIC (with -KPIC) is the default.
+ lt_prog_compiler_static_F77='-non_shared'
+ ;;
+
+ newsos6)
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ linux*)
+ case $CC in
+ icc* | ecc*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-static'
+ ;;
+ ccc*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ # All Alpha code is PIC.
+ lt_prog_compiler_static_F77='-non_shared'
+ ;;
+ esac
+ ;;
+
+ osf3* | osf4* | osf5*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ # All OSF/1 code is PIC.
+ lt_prog_compiler_static_F77='-non_shared'
+ ;;
+
+ sco3.2v5*)
+ lt_prog_compiler_pic_F77='-Kpic'
+ lt_prog_compiler_static_F77='-dn'
+ ;;
+
+ solaris*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ sunos4*)
+ lt_prog_compiler_wl_F77='-Qoption ld '
+ lt_prog_compiler_pic_F77='-PIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ lt_prog_compiler_pic_F77='-Kconform_pic'
+ lt_prog_compiler_static_F77='-Bstatic'
+ fi
+ ;;
+
+ uts4*)
+ lt_prog_compiler_pic_F77='-pic'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ *)
+ lt_prog_compiler_can_build_shared_F77=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_F77"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_pic_works_F77=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic_F77"
+ # 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}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:15107: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:15111: \$? = $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
+ if test ! -s conftest.err; then
+ lt_prog_compiler_pic_works_F77=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6
+
+if test x"$lt_prog_compiler_pic_works_F77" = xyes; then
+ case $lt_prog_compiler_pic_F77 in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;;
+ esac
+else
+ lt_prog_compiler_pic_F77=
+ lt_prog_compiler_can_build_shared_F77=no
+fi
+
+fi
+case "$host_os" in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic_F77=
+ ;;
+ *)
+ lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77"
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_c_o_F77=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$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}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:15167: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:15171: \$? = $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
+ if test ! -s out/conftest.err; then
+ lt_cv_prog_compiler_c_o_F77=yes
+ fi
+ fi
+ chmod u+w .
+ $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 ..
+ rmdir conftest
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&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
+ echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+ if test "$hard_links" = no; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+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
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+ runpath_var=
+ allow_undefined_flag_F77=
+ enable_shared_with_static_runtimes_F77=no
+ archive_cmds_F77=
+ archive_expsym_cmds_F77=
+ old_archive_From_new_cmds_F77=
+ old_archive_from_expsyms_cmds_F77=
+ export_dynamic_flag_spec_F77=
+ whole_archive_flag_spec_F77=
+ thread_safe_flag_spec_F77=
+ hardcode_libdir_flag_spec_F77=
+ hardcode_libdir_flag_spec_ld_F77=
+ hardcode_libdir_separator_F77=
+ hardcode_direct_F77=no
+ hardcode_minus_L_F77=no
+ hardcode_shlibpath_var_F77=unsupported
+ link_all_deplibs_F77=unknown
+ hardcode_automatic_F77=no
+ module_cmds_F77=
+ module_expsym_cmds_F77=
+ always_export_symbols_F77=no
+ export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ include_expsyms_F77=
+ # 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_F77="_GLOBAL_OFFSET_TABLE_"
+ # 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.
+ extract_expsyms_cmds=
+
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+ # 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 "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ ld_shlibs_F77=yes
+ if test "$with_gnu_ld" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix3* | aix4* | aix5*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs_F77=no
+ cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, 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 modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds_F77='$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_F77='-L$libdir'
+ hardcode_minus_L_F77=yes
+
+ # Samuel A. Falvo II <kc5tja at dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we can't use
+ # them.
+ ld_shlibs_F77=no
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag_F77=unsupported
+ # Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ allow_undefined_flag_F77=unsupported
+ always_export_symbols_F77=no
+ enable_shared_with_static_runtimes_F77=yes
+ export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; 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}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris* | sysv5*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ ld_shlibs_F77=no
+ cat <<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.
+
+EOF
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+
+ sunos4*)
+ archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ linux*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_cmds_F77="$tmp_archive_cmds"
+ supports_anon_versioning=no
+ case `$LD -v 2>/dev/null` in
+ *\ 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
+ if test $supports_anon_versioning = yes; then
+ archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~
+cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+$echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ else
+ archive_expsym_cmds_F77="$tmp_archive_cmds"
+ fi
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+ esac
+
+ if test "$ld_shlibs_F77" = yes; then
+ runpath_var=LD_RUN_PATH
+ hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir'
+ export_dynamic_flag_spec_F77='${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_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec_F77=
+ fi
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ allow_undefined_flag_F77=unsupported
+ always_export_symbols_F77=yes
+ archive_expsym_cmds_F77='$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_F77=yes
+ if test "$GCC" = yes && test -z "$link_static_flag"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct_F77=unsupported
+ fi
+ ;;
+
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; 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 AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | 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
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ 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_F77=''
+ hardcode_direct_F77=yes
+ hardcode_libdir_separator_F77=':'
+ link_all_deplibs_F77=yes
+
+ if test "$GCC" = yes; 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
+ hardcode_direct_F77=yes
+ else
+ # We have old collect2
+ hardcode_direct_F77=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_F77=yes
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_libdir_separator_F77=
+ fi
+ esac
+ shared_flag='-shared'
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; 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 "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # 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_F77=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag_F77='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+ program main
+
+ end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_f77_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag_F77="-z nodefs"
+ archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+ program main
+
+ end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_f77_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_F77='${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_F77=' ${wl}-bernotok'
+ allow_undefined_flag_F77=' ${wl}-berok'
+ # -bexpall does not export symbols beginning with underscore (_)
+ always_export_symbols_F77=yes
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec_F77=' '
+ archive_cmds_need_lc_F77=yes
+ # This is similar to how AIX traditionally builds it's shared libraries.
+ archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds_F77='$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_F77='-L$libdir'
+ hardcode_minus_L_F77=yes
+ # see comment about different semantics on the GNU ld section
+ ld_shlibs_F77=no
+ ;;
+
+ bsdi4*)
+ export_dynamic_flag_spec_F77=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # 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.
+ hardcode_libdir_flag_spec_F77=' '
+ allow_undefined_flag_F77=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_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ old_archive_From_new_cmds_F77='true'
+ # FIXME: Should let the user specify the lib program.
+ old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs'
+ fix_srcfile_path='`cygpath -w "$srcfile"`'
+ enable_shared_with_static_runtimes_F77=yes
+ ;;
+
+ darwin* | rhapsody*)
+ if test "$GXX" = yes ; then
+ archive_cmds_need_lc_F77=no
+ case "$host_os" in
+ rhapsody* | darwin1.[012])
+ allow_undefined_flag_F77='-undefined suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ allow_undefined_flag_F77='-flat_namespace -undefined suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[012])
+ allow_undefined_flag_F77='-flat_namespace -undefined suppress'
+ ;;
+ 10.*)
+ allow_undefined_flag_F77='-undefined dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ lt_int_apple_cc_single_mod=no
+ output_verbose_link_cmd='echo'
+ if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
+ lt_int_apple_cc_single_mod=yes
+ fi
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ archive_cmds_F77='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ else
+ archive_cmds_F77='$CC -r ${wl}-bind_at_load -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'
+ fi
+ module_cmds_F77='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ hardcode_direct_F77=no
+ hardcode_automatic_F77=yes
+ hardcode_shlibpath_var_F77=unsupported
+ whole_archive_flag_spec_F77='-all_load $convenience'
+ link_all_deplibs_F77=yes
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+
+ dgux*)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ freebsd1*)
+ ld_shlibs_F77=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_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=yes
+ hardcode_minus_L_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | kfreebsd*-gnu)
+ archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ hardcode_direct_F77=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_F77=yes
+ export_dynamic_flag_spec_F77='${wl}-E'
+ ;;
+
+ hpux10* | hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ *)
+ archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ case "$host_cpu" in
+ hppa*64*)
+ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec_ld_F77='+b $libdir'
+ hardcode_libdir_separator_F77=:
+ hardcode_direct_F77=no
+ hardcode_shlibpath_var_F77=no
+ ;;
+ ia64*)
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_direct_F77=no
+ hardcode_shlibpath_var_F77=no
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_F77=yes
+ ;;
+ *)
+ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ hardcode_direct_F77=yes
+ export_dynamic_flag_spec_F77='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_F77=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_ld_F77='-rpath $libdir'
+ fi
+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ link_all_deplibs_F77=yes
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ newsos6)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=yes
+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ openbsd*)
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_F77='${wl}-E'
+ else
+ case $host_os in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ ;;
+ *)
+ archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ ;;
+
+ os2*)
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_minus_L_F77=yes
+ allow_undefined_flag_F77=unsupported
+ archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ allow_undefined_flag_F77=' -expect_unresolved \*'
+ archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag_F77=' -expect_unresolved \*'
+ archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec_F77='-rpath $libdir'
+ fi
+ hardcode_libdir_separator_F77=:
+ ;;
+
+ sco3.2v5*)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_F77=no
+ export_dynamic_flag_spec_F77='${wl}-Bexport'
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ;;
+
+ solaris*)
+ no_undefined_flag_F77=' -z text'
+ if test "$GCC" = yes; then
+ archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+ archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds_F77='$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'
+ fi
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ hardcode_shlibpath_var_F77=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *) # Supported since Solaris 2.6 (maybe 2.5.1?)
+ whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;;
+ esac
+ link_all_deplibs_F77=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_direct_F77=yes
+ hardcode_minus_L_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ reload_cmds_F77='$CC -r -o $output$reload_objs'
+ hardcode_direct_F77=no
+ ;;
+ motorola)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ sysv4.3*)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_F77=no
+ export_dynamic_flag_spec_F77='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_F77=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ld_shlibs_F77=yes
+ fi
+ ;;
+
+ sysv4.2uw2*)
+ archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=yes
+ hardcode_minus_L_F77=no
+ hardcode_shlibpath_var_F77=no
+ hardcode_runpath_var=yes
+ runpath_var=LD_RUN_PATH
+ ;;
+
+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
+ no_undefined_flag_F77='${wl}-z ${wl}text'
+ if test "$GCC" = yes; then
+ archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ sysv5*)
+ no_undefined_flag_F77=' -z text'
+ # $CC -shared without GNU ld will not create a library from C++
+ # object files and a static libstdc++, better avoid it by now
+ archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds_F77='$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'
+ hardcode_libdir_flag_spec_F77=
+ hardcode_shlibpath_var_F77=no
+ runpath_var='LD_RUN_PATH'
+ ;;
+
+ uts4*)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ *)
+ ld_shlibs_F77=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5
+echo "${ECHO_T}$ld_shlibs_F77" >&6
+test "$ld_shlibs_F77" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_F77" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc_F77=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds_F77 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.
+ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl_F77
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag_F77
+ allow_undefined_flag_F77=
+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+ (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ then
+ archive_cmds_need_lc_F77=no
+ else
+ archive_cmds_need_lc_F77=yes
+ fi
+ allow_undefined_flag_F77=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&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"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # 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.
+ 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
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+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
+ 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'
+ ;;
+
+aix4* | aix5*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; 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
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.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}'
+ else
+ # 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'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ 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=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $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'
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi4*)
+ version_type=linux
+ 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*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ 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'
+ 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="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ 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
+ ;;
+ 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
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # 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}${versuffix}$shared_ext ${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)'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ 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
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+kfreebsd*-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='GNU ld.so'
+ ;;
+
+freebsd*)
+ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ 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
+ ;;
+ *) # from 3.2 on
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+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
+ 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 "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ 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'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ 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
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ 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'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # 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
+
+ # find out which ABI we are using
+ libsuff=
+ case "$host_cpu" in
+ x86_64*|s390x*|powerpc64*)
+ echo '#line 16481 "configure"' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *64-bit*)
+ libsuff=64
+ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+ esac
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $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'
+ ;;
+
+knetbsd*-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='GNU ld.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
+ 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=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=yes
+ ;;
+
+openbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=yes
+ 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
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[89] | openbsd2.[89].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+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"
+ ;;
+
+sco3.2v5*)
+ version_type=osf
+ 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
+ ;;
+
+solaris*)
+ 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=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 "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ version_type=linux
+ 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
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ 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
+ 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
+ ;;
+
+uts4*)
+ version_type=linux
+ 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
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_F77=
+if test -n "$hardcode_libdir_flag_spec_F77" || \
+ test -n "$runpath_var F77" || \
+ test "X$hardcode_automatic_F77"="Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$hardcode_direct_F77" != no &&
+ # 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 "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no &&
+ test "$hardcode_minus_L_F77" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action_F77=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action_F77=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action_F77=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5
+echo "${ECHO_T}$hardcode_action_F77" >&6
+
+if test "$hardcode_action_F77" = relink; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&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"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}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"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+ ;;
+ *)
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ ;;
+ esac
+fi
+
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ compiler_F77 \
+ CC_F77 \
+ LD_F77 \
+ lt_prog_compiler_wl_F77 \
+ lt_prog_compiler_pic_F77 \
+ lt_prog_compiler_static_F77 \
+ lt_prog_compiler_no_builtin_flag_F77 \
+ export_dynamic_flag_spec_F77 \
+ thread_safe_flag_spec_F77 \
+ whole_archive_flag_spec_F77 \
+ enable_shared_with_static_runtimes_F77 \
+ old_archive_cmds_F77 \
+ old_archive_from_new_cmds_F77 \
+ predep_objects_F77 \
+ postdep_objects_F77 \
+ predeps_F77 \
+ postdeps_F77 \
+ compiler_lib_search_path_F77 \
+ archive_cmds_F77 \
+ archive_expsym_cmds_F77 \
+ postinstall_cmds_F77 \
+ postuninstall_cmds_F77 \
+ old_archive_from_expsyms_cmds_F77 \
+ allow_undefined_flag_F77 \
+ no_undefined_flag_F77 \
+ export_symbols_cmds_F77 \
+ hardcode_libdir_flag_spec_F77 \
+ hardcode_libdir_flag_spec_ld_F77 \
+ hardcode_libdir_separator_F77 \
+ hardcode_automatic_F77 \
+ module_cmds_F77 \
+ module_expsym_cmds_F77 \
+ lt_cv_prog_compiler_c_o_F77 \
+ exclude_expsyms_F77 \
+ include_expsyms_F77; do
+
+ case $var in
+ old_archive_cmds_F77 | \
+ old_archive_from_new_cmds_F77 | \
+ archive_cmds_F77 | \
+ archive_expsym_cmds_F77 | \
+ module_cmds_F77 | \
+ module_expsym_cmds_F77 | \
+ old_archive_from_expsyms_cmds_F77 | \
+ export_symbols_cmds_F77 | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\$0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+
+cfgfile="$ofile"
+
+ cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_F77
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_F77
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_F77
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_F77
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_F77
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_F77
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# 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
+
+# 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
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_F77
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77
+
+# Library versioning type.
+version_type=$version_type
+
+# 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
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_F77
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_F77
+archive_expsym_cmds=$lt_archive_expsym_cmds_F77
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_F77
+module_expsym_cmds=$lt_module_expsym_cmds_F77
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_F77
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_F77
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_F77
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_F77
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_F77
+
+# 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
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_F77
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_F77
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# 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 in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_F77
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# 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_F77
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_F77
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_F77
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_F77
+
+# 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_F77
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_F77
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_F77"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_F77
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_F77
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_F77
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_F77
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ 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
+
+CC="$lt_save_CC"
+
+ else
+ tagname=""
+ fi
+ ;;
+
+ GCJ)
+ if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+
+
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+objext_GCJ=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String argv) {}; }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${GCJ-"gcj"}
+compiler=$CC
+compiler_GCJ=$CC
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+archive_cmds_need_lc_GCJ=no
+
+
+lt_prog_compiler_no_builtin_flag_GCJ=
+
+if test "$GCC" = yes; then
+ lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin'
+
+
+echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_rtti_exceptions=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="-fno-rtti -fno-exceptions"
+ # 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}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:17222: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:17226: \$? = $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
+ if test ! -s conftest.err; then
+ lt_cv_prog_compiler_rtti_exceptions=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+ lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions"
+else
+ :
+fi
+
+fi
+
+lt_prog_compiler_wl_GCJ=
+lt_prog_compiler_pic_GCJ=
+lt_prog_compiler_static_GCJ=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_static_GCJ='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ # 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_GCJ='-m68020 -resident32 -malways-restore-a4'
+ ;;
+
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | pw32* | os2*)
+ # 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_GCJ='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic_GCJ='-fno-common'
+ ;;
+
+ 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_GCJ=no
+ enable_shared=no
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic_GCJ=-Kconform_pic
+ fi
+ ;;
+
+ hpux*)
+ # 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_GCJ='-fPIC'
+ ;;
+ esac
+ ;;
+
+ *)
+ lt_prog_compiler_pic_GCJ='-fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ else
+ lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+
+ mingw* | pw32* | os2*)
+ # 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_GCJ='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ lt_prog_compiler_wl_GCJ='-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_GCJ='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ # PIC (with -KPIC) is the default.
+ lt_prog_compiler_static_GCJ='-non_shared'
+ ;;
+
+ newsos6)
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+ linux*)
+ case $CC in
+ icc* | ecc*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-static'
+ ;;
+ ccc*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ # All Alpha code is PIC.
+ lt_prog_compiler_static_GCJ='-non_shared'
+ ;;
+ esac
+ ;;
+
+ osf3* | osf4* | osf5*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ # All OSF/1 code is PIC.
+ lt_prog_compiler_static_GCJ='-non_shared'
+ ;;
+
+ sco3.2v5*)
+ lt_prog_compiler_pic_GCJ='-Kpic'
+ lt_prog_compiler_static_GCJ='-dn'
+ ;;
+
+ solaris*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+ sunos4*)
+ lt_prog_compiler_wl_GCJ='-Qoption ld '
+ lt_prog_compiler_pic_GCJ='-PIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ lt_prog_compiler_pic_GCJ='-Kconform_pic'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ fi
+ ;;
+
+ uts4*)
+ lt_prog_compiler_pic_GCJ='-pic'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+ *)
+ lt_prog_compiler_can_build_shared_GCJ=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_GCJ"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_pic_works_GCJ=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic_GCJ"
+ # 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}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:17455: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:17459: \$? = $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
+ if test ! -s conftest.err; then
+ lt_prog_compiler_pic_works_GCJ=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6
+
+if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then
+ case $lt_prog_compiler_pic_GCJ in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;;
+ esac
+else
+ lt_prog_compiler_pic_GCJ=
+ lt_prog_compiler_can_build_shared_GCJ=no
+fi
+
+fi
+case "$host_os" in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic_GCJ=
+ ;;
+ *)
+ lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ"
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_c_o_GCJ=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$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}? :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:17515: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:17519: \$? = $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
+ if test ! -s out/conftest.err; then
+ lt_cv_prog_compiler_c_o_GCJ=yes
+ fi
+ fi
+ chmod u+w .
+ $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 ..
+ rmdir conftest
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&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
+ echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+ if test "$hard_links" = no; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+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
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+ runpath_var=
+ allow_undefined_flag_GCJ=
+ enable_shared_with_static_runtimes_GCJ=no
+ archive_cmds_GCJ=
+ archive_expsym_cmds_GCJ=
+ old_archive_From_new_cmds_GCJ=
+ old_archive_from_expsyms_cmds_GCJ=
+ export_dynamic_flag_spec_GCJ=
+ whole_archive_flag_spec_GCJ=
+ thread_safe_flag_spec_GCJ=
+ hardcode_libdir_flag_spec_GCJ=
+ hardcode_libdir_flag_spec_ld_GCJ=
+ hardcode_libdir_separator_GCJ=
+ hardcode_direct_GCJ=no
+ hardcode_minus_L_GCJ=no
+ hardcode_shlibpath_var_GCJ=unsupported
+ link_all_deplibs_GCJ=unknown
+ hardcode_automatic_GCJ=no
+ module_cmds_GCJ=
+ module_expsym_cmds_GCJ=
+ always_export_symbols_GCJ=no
+ export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ include_expsyms_GCJ=
+ # 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_GCJ="_GLOBAL_OFFSET_TABLE_"
+ # 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.
+ extract_expsyms_cmds=
+
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+ # 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 "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ ld_shlibs_GCJ=yes
+ if test "$with_gnu_ld" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix3* | aix4* | aix5*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs_GCJ=no
+ cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, 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 modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds_GCJ='$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_GCJ='-L$libdir'
+ hardcode_minus_L_GCJ=yes
+
+ # Samuel A. Falvo II <kc5tja at dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we can't use
+ # them.
+ ld_shlibs_GCJ=no
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag_GCJ=unsupported
+ # Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ allow_undefined_flag_GCJ=unsupported
+ always_export_symbols_GCJ=no
+ enable_shared_with_static_runtimes_GCJ=yes
+ export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; 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}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris* | sysv5*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ ld_shlibs_GCJ=no
+ cat <<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.
+
+EOF
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+
+ sunos4*)
+ archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ linux*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_cmds_GCJ="$tmp_archive_cmds"
+ supports_anon_versioning=no
+ case `$LD -v 2>/dev/null` in
+ *\ 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
+ if test $supports_anon_versioning = yes; then
+ archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~
+cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+$echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ else
+ archive_expsym_cmds_GCJ="$tmp_archive_cmds"
+ fi
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+ esac
+
+ if test "$ld_shlibs_GCJ" = yes; then
+ runpath_var=LD_RUN_PATH
+ hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir'
+ export_dynamic_flag_spec_GCJ='${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_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec_GCJ=
+ fi
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ allow_undefined_flag_GCJ=unsupported
+ always_export_symbols_GCJ=yes
+ archive_expsym_cmds_GCJ='$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_GCJ=yes
+ if test "$GCC" = yes && test -z "$link_static_flag"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct_GCJ=unsupported
+ fi
+ ;;
+
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; 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 AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | 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
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ 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_GCJ=''
+ hardcode_direct_GCJ=yes
+ hardcode_libdir_separator_GCJ=':'
+ link_all_deplibs_GCJ=yes
+
+ if test "$GCC" = yes; 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
+ hardcode_direct_GCJ=yes
+ else
+ # We have old collect2
+ hardcode_direct_GCJ=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_GCJ=yes
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_libdir_separator_GCJ=
+ fi
+ esac
+ shared_flag='-shared'
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; 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 "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # 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_GCJ=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag_GCJ='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag_GCJ="-z nodefs"
+ archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_GCJ='${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_GCJ=' ${wl}-bernotok'
+ allow_undefined_flag_GCJ=' ${wl}-berok'
+ # -bexpall does not export symbols beginning with underscore (_)
+ always_export_symbols_GCJ=yes
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec_GCJ=' '
+ archive_cmds_need_lc_GCJ=yes
+ # This is similar to how AIX traditionally builds it's shared libraries.
+ archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds_GCJ='$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_GCJ='-L$libdir'
+ hardcode_minus_L_GCJ=yes
+ # see comment about different semantics on the GNU ld section
+ ld_shlibs_GCJ=no
+ ;;
+
+ bsdi4*)
+ export_dynamic_flag_spec_GCJ=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # 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.
+ hardcode_libdir_flag_spec_GCJ=' '
+ allow_undefined_flag_GCJ=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_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ old_archive_From_new_cmds_GCJ='true'
+ # FIXME: Should let the user specify the lib program.
+ old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs'
+ fix_srcfile_path='`cygpath -w "$srcfile"`'
+ enable_shared_with_static_runtimes_GCJ=yes
+ ;;
+
+ darwin* | rhapsody*)
+ if test "$GXX" = yes ; then
+ archive_cmds_need_lc_GCJ=no
+ case "$host_os" in
+ rhapsody* | darwin1.[012])
+ allow_undefined_flag_GCJ='-undefined suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ allow_undefined_flag_GCJ='-flat_namespace -undefined suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[012])
+ allow_undefined_flag_GCJ='-flat_namespace -undefined suppress'
+ ;;
+ 10.*)
+ allow_undefined_flag_GCJ='-undefined dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ lt_int_apple_cc_single_mod=no
+ output_verbose_link_cmd='echo'
+ if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
+ lt_int_apple_cc_single_mod=yes
+ fi
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ archive_cmds_GCJ='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ else
+ archive_cmds_GCJ='$CC -r ${wl}-bind_at_load -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'
+ fi
+ module_cmds_GCJ='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ hardcode_direct_GCJ=no
+ hardcode_automatic_GCJ=yes
+ hardcode_shlibpath_var_GCJ=unsupported
+ whole_archive_flag_spec_GCJ='-all_load $convenience'
+ link_all_deplibs_GCJ=yes
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+
+ dgux*)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ freebsd1*)
+ ld_shlibs_GCJ=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_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_GCJ=yes
+ hardcode_minus_L_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | kfreebsd*-gnu)
+ archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+ hardcode_direct_GCJ=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_GCJ=yes
+ export_dynamic_flag_spec_GCJ='${wl}-E'
+ ;;
+
+ hpux10* | hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case "$host_cpu" in
+ hppa*64*|ia64*)
+ archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ *)
+ archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ case "$host_cpu" in
+ hppa*64*)
+ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec_ld_GCJ='+b $libdir'
+ hardcode_libdir_separator_GCJ=:
+ hardcode_direct_GCJ=no
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+ ia64*)
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_direct_GCJ=no
+ hardcode_shlibpath_var_GCJ=no
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_GCJ=yes
+ ;;
+ *)
+ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+ hardcode_direct_GCJ=yes
+ export_dynamic_flag_spec_GCJ='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_GCJ=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir'
+ fi
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+ link_all_deplibs_GCJ=yes
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ newsos6)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_GCJ=yes
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ openbsd*)
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_GCJ='${wl}-E'
+ else
+ case $host_os in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ ;;
+ *)
+ archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ ;;
+
+ os2*)
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_minus_L_GCJ=yes
+ allow_undefined_flag_GCJ=unsupported
+ archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ allow_undefined_flag_GCJ=' -expect_unresolved \*'
+ archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag_GCJ=' -expect_unresolved \*'
+ archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec_GCJ='-rpath $libdir'
+ fi
+ hardcode_libdir_separator_GCJ=:
+ ;;
+
+ sco3.2v5*)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_GCJ=no
+ export_dynamic_flag_spec_GCJ='${wl}-Bexport'
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ;;
+
+ solaris*)
+ no_undefined_flag_GCJ=' -z text'
+ if test "$GCC" = yes; then
+ archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+ archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds_GCJ='$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'
+ fi
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ hardcode_shlibpath_var_GCJ=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *) # Supported since Solaris 2.6 (maybe 2.5.1?)
+ whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;;
+ esac
+ link_all_deplibs_GCJ=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_direct_GCJ=yes
+ hardcode_minus_L_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_GCJ=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ reload_cmds_GCJ='$CC -r -o $output$reload_objs'
+ hardcode_direct_GCJ=no
+ ;;
+ motorola)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ sysv4.3*)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_GCJ=no
+ export_dynamic_flag_spec_GCJ='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_GCJ=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ld_shlibs_GCJ=yes
+ fi
+ ;;
+
+ sysv4.2uw2*)
+ archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_GCJ=yes
+ hardcode_minus_L_GCJ=no
+ hardcode_shlibpath_var_GCJ=no
+ hardcode_runpath_var=yes
+ runpath_var=LD_RUN_PATH
+ ;;
+
+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
+ no_undefined_flag_GCJ='${wl}-z ${wl}text'
+ if test "$GCC" = yes; then
+ archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ sysv5*)
+ no_undefined_flag_GCJ=' -z text'
+ # $CC -shared without GNU ld will not create a library from C++
+ # object files and a static libstdc++, better avoid it by now
+ archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds_GCJ='$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'
+ hardcode_libdir_flag_spec_GCJ=
+ hardcode_shlibpath_var_GCJ=no
+ runpath_var='LD_RUN_PATH'
+ ;;
+
+ uts4*)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ *)
+ ld_shlibs_GCJ=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5
+echo "${ECHO_T}$ld_shlibs_GCJ" >&6
+test "$ld_shlibs_GCJ" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_GCJ" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc_GCJ=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds_GCJ 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.
+ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl_GCJ
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ
+ allow_undefined_flag_GCJ=
+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+ (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ then
+ archive_cmds_need_lc_GCJ=no
+ else
+ archive_cmds_need_lc_GCJ=yes
+ fi
+ allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&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"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # 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.
+ 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
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+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
+ 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'
+ ;;
+
+aix4* | aix5*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; 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
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.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}'
+ else
+ # 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'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ 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=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $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'
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi4*)
+ version_type=linux
+ 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*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ 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'
+ 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="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ 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
+ ;;
+ 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
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # 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}${versuffix}$shared_ext ${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)'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ 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
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+kfreebsd*-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='GNU ld.so'
+ ;;
+
+freebsd*)
+ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ 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
+ ;;
+ *) # from 3.2 on
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+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
+ 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 "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ 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'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ 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
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ 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'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # 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
+
+ # find out which ABI we are using
+ libsuff=
+ case "$host_cpu" in
+ x86_64*|s390x*|powerpc64*)
+ echo '#line 18849 "configure"' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *64-bit*)
+ libsuff=64
+ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+ esac
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $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'
+ ;;
+
+knetbsd*-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='GNU ld.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
+ 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=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=yes
+ ;;
+
+openbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=yes
+ 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
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[89] | openbsd2.[89].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+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"
+ ;;
+
+sco3.2v5*)
+ version_type=osf
+ 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
+ ;;
+
+solaris*)
+ 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=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 "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ version_type=linux
+ 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
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ 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
+ 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
+ ;;
+
+uts4*)
+ version_type=linux
+ 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
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_GCJ=
+if test -n "$hardcode_libdir_flag_spec_GCJ" || \
+ test -n "$runpath_var GCJ" || \
+ test "X$hardcode_automatic_GCJ"="Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$hardcode_direct_GCJ" != no &&
+ # 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 "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no &&
+ test "$hardcode_minus_L_GCJ" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action_GCJ=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action_GCJ=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action_GCJ=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5
+echo "${ECHO_T}$hardcode_action_GCJ" >&6
+
+if test "$hardcode_action_GCJ" = relink; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&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"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}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"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+ ;;
+ *)
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ ;;
+ esac
+fi
+
+if test "x$enable_dlopen" != xyes; 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*)
+ 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
+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dl_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; 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
+
+ ;;
+
+ *)
+ echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+if test "${ac_cv_func_shl_load+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define shl_load innocuous_shl_load
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char shl_load (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shl_load
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char shl_load ();
+/* 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_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+char (*f) () = shl_load;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shl_load;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_shl_load=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+if test $ac_cv_func_shl_load = yes; then
+ lt_cv_dlopen="shl_load"
+else
+ echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char shl_load ();
+int
+main ()
+{
+shl_load ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dld_shl_load=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+if test $ac_cv_lib_dld_shl_load = yes; then
+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+ echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+if test "${ac_cv_func_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define dlopen innocuous_dlopen
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char dlopen (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef dlopen
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+/* 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_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+char (*f) () = dlopen;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != dlopen;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+if test $ac_cv_func_dlopen = yes; then
+ lt_cv_dlopen="dlopen"
+else
+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dl_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+ echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_svld_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+if test $ac_cv_lib_svld_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+ echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dld_link ();
+int
+main ()
+{
+dld_link ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dld_dld_link=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_dld_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+if test $ac_cv_lib_dld_dld_link = yes; then
+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+ ;;
+ esac
+
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; 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 <<EOF
+#line 19720 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#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
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=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;
+ /* dlclose (self); */
+ }
+
+ exit (status);
+}
+EOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) 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_unknown|x*) lt_cv_dlopen_self=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ LDFLAGS="$LDFLAGS $link_static_flag"
+ echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; 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 <<EOF
+#line 19818 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#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
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=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;
+ /* dlclose (self); */
+ }
+
+ exit (status);
+}
+EOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) 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_unknown|x*) lt_cv_dlopen_self_static=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self_static=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$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
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ compiler_GCJ \
+ CC_GCJ \
+ LD_GCJ \
+ lt_prog_compiler_wl_GCJ \
+ lt_prog_compiler_pic_GCJ \
+ lt_prog_compiler_static_GCJ \
+ lt_prog_compiler_no_builtin_flag_GCJ \
+ export_dynamic_flag_spec_GCJ \
+ thread_safe_flag_spec_GCJ \
+ whole_archive_flag_spec_GCJ \
+ enable_shared_with_static_runtimes_GCJ \
+ old_archive_cmds_GCJ \
+ old_archive_from_new_cmds_GCJ \
+ predep_objects_GCJ \
+ postdep_objects_GCJ \
+ predeps_GCJ \
+ postdeps_GCJ \
+ compiler_lib_search_path_GCJ \
+ archive_cmds_GCJ \
+ archive_expsym_cmds_GCJ \
+ postinstall_cmds_GCJ \
+ postuninstall_cmds_GCJ \
+ old_archive_from_expsyms_cmds_GCJ \
+ allow_undefined_flag_GCJ \
+ no_undefined_flag_GCJ \
+ export_symbols_cmds_GCJ \
+ hardcode_libdir_flag_spec_GCJ \
+ hardcode_libdir_flag_spec_ld_GCJ \
+ hardcode_libdir_separator_GCJ \
+ hardcode_automatic_GCJ \
+ module_cmds_GCJ \
+ module_expsym_cmds_GCJ \
+ lt_cv_prog_compiler_c_o_GCJ \
+ exclude_expsyms_GCJ \
+ include_expsyms_GCJ; do
+
+ case $var in
+ old_archive_cmds_GCJ | \
+ old_archive_from_new_cmds_GCJ | \
+ archive_cmds_GCJ | \
+ archive_expsym_cmds_GCJ | \
+ module_cmds_GCJ | \
+ module_expsym_cmds_GCJ | \
+ old_archive_from_expsyms_cmds_GCJ | \
+ export_symbols_cmds_GCJ | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\$0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+
+cfgfile="$ofile"
+
+ cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_GCJ
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_GCJ
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_GCJ
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_GCJ
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_GCJ
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_GCJ
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# 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
+
+# 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
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_GCJ
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ
+
+# Library versioning type.
+version_type=$version_type
+
+# 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
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_GCJ
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_GCJ
+archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_GCJ
+module_expsym_cmds=$lt_module_expsym_cmds_GCJ
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_GCJ
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_GCJ
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_GCJ
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_GCJ
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ
+
+# 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
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_GCJ
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_GCJ
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# 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 in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_GCJ
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# 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_GCJ
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_GCJ
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_GCJ
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ
+
+# 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_GCJ
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_GCJ
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_GCJ"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_GCJ
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_GCJ
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_GCJ
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_GCJ
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ 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
+
+CC="$lt_save_CC"
+
+ else
+ tagname=""
+ fi
+ ;;
+
+ RC)
+
+
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+objext_RC=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+
+# 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.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${RC-"windres"}
+compiler=$CC
+compiler_RC=$CC
+lt_cv_prog_compiler_c_o_RC=yes
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ compiler_RC \
+ CC_RC \
+ LD_RC \
+ lt_prog_compiler_wl_RC \
+ lt_prog_compiler_pic_RC \
+ lt_prog_compiler_static_RC \
+ lt_prog_compiler_no_builtin_flag_RC \
+ export_dynamic_flag_spec_RC \
+ thread_safe_flag_spec_RC \
+ whole_archive_flag_spec_RC \
+ enable_shared_with_static_runtimes_RC \
+ old_archive_cmds_RC \
+ old_archive_from_new_cmds_RC \
+ predep_objects_RC \
+ postdep_objects_RC \
+ predeps_RC \
+ postdeps_RC \
+ compiler_lib_search_path_RC \
+ archive_cmds_RC \
+ archive_expsym_cmds_RC \
+ postinstall_cmds_RC \
+ postuninstall_cmds_RC \
+ old_archive_from_expsyms_cmds_RC \
+ allow_undefined_flag_RC \
+ no_undefined_flag_RC \
+ export_symbols_cmds_RC \
+ hardcode_libdir_flag_spec_RC \
+ hardcode_libdir_flag_spec_ld_RC \
+ hardcode_libdir_separator_RC \
+ hardcode_automatic_RC \
+ module_cmds_RC \
+ module_expsym_cmds_RC \
+ lt_cv_prog_compiler_c_o_RC \
+ exclude_expsyms_RC \
+ include_expsyms_RC; do
+
+ case $var in
+ old_archive_cmds_RC | \
+ old_archive_from_new_cmds_RC | \
+ archive_cmds_RC | \
+ archive_expsym_cmds_RC | \
+ module_cmds_RC | \
+ module_expsym_cmds_RC | \
+ old_archive_from_expsyms_cmds_RC | \
+ export_symbols_cmds_RC | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\$0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+
+cfgfile="$ofile"
+
+ cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_RC
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_RC
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_RC
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_RC
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_RC
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_RC
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# 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
+
+# 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
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_RC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC
+
+# Library versioning type.
+version_type=$version_type
+
+# 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
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_RC
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_RC
+archive_expsym_cmds=$lt_archive_expsym_cmds_RC
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_RC
+module_expsym_cmds=$lt_module_expsym_cmds_RC
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_RC
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_RC
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_RC
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_RC
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_RC
+
+# 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
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_RC
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_RC
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# 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 in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_RC
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# 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_RC
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_RC
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_RC
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_RC
+
+# 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_RC
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_RC
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_RC"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_RC
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_RC
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_RC
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_RC
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ 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
+
+CC="$lt_save_CC"
+
+ ;;
+
+ *)
+ { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5
+echo "$as_me: error: Unsupported tag name: $tagname" >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
+ esac
+
+ # Append the new tag name to the list of available tags.
+ if test -n "$tagname" ; then
+ available_tags="$available_tags $tagname"
+ fi
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ # Now substitute the updated list of available tags.
+ if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
+ mv "${ofile}T" "$ofile"
+ chmod +x "$ofile"
+ else
+ rm -f "${ofile}T"
+ { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5
+echo "$as_me: error: unable to update list of available tagged configurations." >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+fi
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+# Prevent multiple expansion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+THUNAR_VERINFO=0:0:0
+THUNAR_VERSION_API=1
+THUNAR_VERSION_MAJOR=0
+THUNAR_VERSION_MINOR=1
+THUNAR_VERSION_MICRO=4
+
+
+
+
+
+
+echo "$as_me:$LINENO: checking for int" >&5
+echo $ECHO_N "checking for int... $ECHO_C" >&6
+if test "${ac_cv_type_int+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((int *) 0)
+ return 0;
+if (sizeof (int))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_int=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_int=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5
+echo "${ECHO_T}$ac_cv_type_int" >&6
+
+echo "$as_me:$LINENO: checking size of int" >&5
+echo $ECHO_N "checking size of int... $ECHO_C" >&6
+if test "${ac_cv_sizeof_int+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$ac_cv_type_int" = yes; then
+ # The cast to unsigned long 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.
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (int))) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (int))) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (int))) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_int=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (int), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; } ;;
+esac
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+long longval () { return (long) (sizeof (int)); }
+unsigned long ulongval () { return (long) (sizeof (int)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ exit (1);
+ if (((long) (sizeof (int))) < 0)
+ {
+ long i = longval ();
+ if (i != ((long) (sizeof (int))))
+ exit (1);
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+ unsigned long i = ulongval ();
+ if (i != ((long) (sizeof (int))))
+ exit (1);
+ fprintf (f, "%lu\n", i);
+ }
+ exit (ferror (f) || fclose (f) != 0);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_int=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (int), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+ ac_cv_sizeof_int=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5
+echo "${ECHO_T}$ac_cv_sizeof_int" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_INT $ac_cv_sizeof_int
+_ACEOF
+
+
+echo "$as_me:$LINENO: checking for long" >&5
+echo $ECHO_N "checking for long... $ECHO_C" >&6
+if test "${ac_cv_type_long+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((long *) 0)
+ return 0;
+if (sizeof (long))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_long=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_long=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5
+echo "${ECHO_T}$ac_cv_type_long" >&6
+
+echo "$as_me:$LINENO: checking size of long" >&5
+echo $ECHO_N "checking size of long... $ECHO_C" >&6
+if test "${ac_cv_sizeof_long+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$ac_cv_type_long" = yes; then
+ # The cast to unsigned long 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.
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long))) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long))) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long))) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_long=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (long), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; } ;;
+esac
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+long longval () { return (long) (sizeof (long)); }
+unsigned long ulongval () { return (long) (sizeof (long)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ exit (1);
+ if (((long) (sizeof (long))) < 0)
+ {
+ long i = longval ();
+ if (i != ((long) (sizeof (long))))
+ exit (1);
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+ unsigned long i = ulongval ();
+ if (i != ((long) (sizeof (long))))
+ exit (1);
+ fprintf (f, "%lu\n", i);
+ }
+ exit (ferror (f) || fclose (f) != 0);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_long=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (long), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+ ac_cv_sizeof_long=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5
+echo "${ECHO_T}$ac_cv_sizeof_long" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_LONG $ac_cv_sizeof_long
+_ACEOF
+
+
+echo "$as_me:$LINENO: checking for short" >&5
+echo $ECHO_N "checking for short... $ECHO_C" >&6
+if test "${ac_cv_type_short+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((short *) 0)
+ return 0;
+if (sizeof (short))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_short=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_short=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_short" >&5
+echo "${ECHO_T}$ac_cv_type_short" >&6
+
+echo "$as_me:$LINENO: checking size of short" >&5
+echo $ECHO_N "checking size of short... $ECHO_C" >&6
+if test "${ac_cv_sizeof_short+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$ac_cv_type_short" = yes; then
+ # The cast to unsigned long 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.
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (short))) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (short))) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (short))) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_short=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (short), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; } ;;
+esac
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+long longval () { return (long) (sizeof (short)); }
+unsigned long ulongval () { return (long) (sizeof (short)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ exit (1);
+ if (((long) (sizeof (short))) < 0)
+ {
+ long i = longval ();
+ if (i != ((long) (sizeof (short))))
+ exit (1);
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+ unsigned long i = ulongval ();
+ if (i != ((long) (sizeof (short))))
+ exit (1);
+ fprintf (f, "%lu\n", i);
+ }
+ exit (ferror (f) || fclose (f) != 0);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_short=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (short), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+ ac_cv_sizeof_short=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5
+echo "${ECHO_T}$ac_cv_sizeof_short" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_SHORT $ac_cv_sizeof_short
+_ACEOF
+
+
+echo "$as_me:$LINENO: checking for 32bit unsigned integer" >&5
+echo $ECHO_N "checking for 32bit unsigned integer... $ECHO_C" >&6
+case 4 in
+$ac_cv_sizeof_int) TDB_U32_TYPE="unsigned int" ;;
+$ac_cv_sizeof_long) TDB_U32_TYPE="unsigned long" ;;
+$ac_cv_sizeof_short) TDB_U32_TYPE="unsigned short" ;;
+esac
+
+echo "$as_me:$LINENO: result: $TDB_U32_TYPE" >&5
+echo "${ECHO_T}$TDB_U32_TYPE" >&6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+for ac_header in ctype.h dirent.h errno.h fcntl.h fnmatch.h fstab.h grp.h \
+ locale.h math.h memory.h mmintrin.h pwd.h sched.h setjmp.h \
+ stdarg.h stdlib.h string.h sys/xattr.h sys/extattr.h \
+ sys/cdio.h sys/mman.h \
+ sys/mount.h sys/param.h sys/stat.h sys/time.h sys/uio.h \
+ sys/wait.h time.h wchar.h wctype.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ----------------------------- ##
+## Report this to benny at xfce.org ##
+## ----------------------------- ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+for ac_header in stdlib.h unistd.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ----------------------------- ##
+## Report this to benny at xfce.org ##
+## ----------------------------- ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_func in getpagesize
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* 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_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+echo "$as_me:$LINENO: checking for working mmap" >&5
+echo $ECHO_N "checking for working mmap... $ECHO_C" >&6
+if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_func_mmap_fixed_mapped=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+/* malloc might have been renamed as rpl_malloc. */
+#undef malloc
+
+/* Thanks to Mike Haertel and Jim Avera for this test.
+ Here is a matrix of mmap possibilities:
+ mmap private not fixed
+ mmap private fixed at somewhere currently unmapped
+ mmap private fixed at somewhere already mapped
+ mmap shared not fixed
+ mmap shared fixed at somewhere currently unmapped
+ mmap shared fixed at somewhere already mapped
+ For private mappings, we should verify that changes cannot be read()
+ back from the file, nor mmap's back from the file at a different
+ address. (There have been systems where private was not correctly
+ implemented like the infamous i386 svr4.0, and systems where the
+ VM page cache was not coherent with the file system buffer cache
+ like early versions of FreeBSD and possibly contemporary NetBSD.)
+ For shared mappings, we should conversely verify that changes get
+ propagated back to all the places they're supposed to be.
+
+ Grep wants private fixed already mapped.
+ The main things grep needs to know about mmap are:
+ * does it exist and is it safe to write into the mmap'd area
+ * how to use it (BSD variants) */
+
+#include <fcntl.h>
+#include <sys/mman.h>
+
+#if !STDC_HEADERS && !HAVE_STDLIB_H
+char *malloc ();
+#endif
+
+/* This mess was copied from the GNU getpagesize.h. */
+#if !HAVE_GETPAGESIZE
+/* Assume that all systems that can run configure have sys/param.h. */
+# if !HAVE_SYS_PARAM_H
+# define HAVE_SYS_PARAM_H 1
+# endif
+
+# ifdef _SC_PAGESIZE
+# define getpagesize() sysconf(_SC_PAGESIZE)
+# else /* no _SC_PAGESIZE */
+# if HAVE_SYS_PARAM_H
+# include <sys/param.h>
+# ifdef EXEC_PAGESIZE
+# define getpagesize() EXEC_PAGESIZE
+# else /* no EXEC_PAGESIZE */
+# ifdef NBPG
+# define getpagesize() NBPG * CLSIZE
+# ifndef CLSIZE
+# define CLSIZE 1
+# endif /* no CLSIZE */
+# else /* no NBPG */
+# ifdef NBPC
+# define getpagesize() NBPC
+# else /* no NBPC */
+# ifdef PAGESIZE
+# define getpagesize() PAGESIZE
+# endif /* PAGESIZE */
+# endif /* no NBPC */
+# endif /* no NBPG */
+# endif /* no EXEC_PAGESIZE */
+# else /* no HAVE_SYS_PARAM_H */
+# define getpagesize() 8192 /* punt totally */
+# endif /* no HAVE_SYS_PARAM_H */
+# endif /* no _SC_PAGESIZE */
+
+#endif /* no HAVE_GETPAGESIZE */
+
+int
+main ()
+{
+ char *data, *data2, *data3;
+ int i, pagesize;
+ int fd;
+
+ pagesize = getpagesize ();
+
+ /* First, make a file with some known garbage in it. */
+ data = (char *) malloc (pagesize);
+ if (!data)
+ exit (1);
+ for (i = 0; i < pagesize; ++i)
+ *(data + i) = rand ();
+ umask (0);
+ fd = creat ("conftest.mmap", 0600);
+ if (fd < 0)
+ exit (1);
+ if (write (fd, data, pagesize) != pagesize)
+ exit (1);
+ close (fd);
+
+ /* Next, try to mmap the file at a fixed address which already has
+ something else allocated at it. If we can, also make sure that
+ we see the same garbage. */
+ fd = open ("conftest.mmap", O_RDWR);
+ if (fd < 0)
+ exit (1);
+ data2 = (char *) malloc (2 * pagesize);
+ if (!data2)
+ exit (1);
+ data2 += (pagesize - ((long) data2 & (pagesize - 1))) & (pagesize - 1);
+ if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE,
+ MAP_PRIVATE | MAP_FIXED, fd, 0L))
+ exit (1);
+ for (i = 0; i < pagesize; ++i)
+ if (*(data + i) != *(data2 + i))
+ exit (1);
+
+ /* Finally, make sure that changes to the mapped area do not
+ percolate back to the file as seen by read(). (This is a bug on
+ some variants of i386 svr4.0.) */
+ for (i = 0; i < pagesize; ++i)
+ *(data2 + i) = *(data2 + i) + 1;
+ data3 = (char *) malloc (pagesize);
+ if (!data3)
+ exit (1);
+ if (read (fd, data3, pagesize) != pagesize)
+ exit (1);
+ for (i = 0; i < pagesize; ++i)
+ if (*(data + i) != *(data3 + i))
+ exit (1);
+ close (fd);
+ exit (0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_mmap_fixed_mapped=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_mmap_fixed_mapped=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5
+echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6
+if test $ac_cv_func_mmap_fixed_mapped = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_MMAP 1
+_ACEOF
+
+fi
+rm -f conftest.mmap
+
+
+
+
+
+
+
+
+
+
+
+
+
+for ac_func in attropen extattr_get_fd fgetxattr lchmod localtime_r \
+ mbrtowc pread pwrite readdir_r \
+ sched_yield setgroupent setpassent
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* 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_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+
+echo "$as_me:$LINENO: checking for working posix_madvise" >&5
+echo $ECHO_N "checking for working posix_madvise... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/mman.h>
+int
+main ()
+{
+
+posix_madvise (0, 0, POSIX_MADV_NORMAL);
+posix_madvise (0, 0, POSIX_MADV_SEQUENTIAL);
+posix_madvise (0, 0, POSIX_MADV_RANDOM);
+posix_madvise (0, 0, POSIX_MADV_WILLNEED);
+posix_madvise (0, 0, POSIX_MADV_DONTNEED);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_POSIX_MADVISE 1
+_ACEOF
+
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+ ac_save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS -D__USE_XOPEN2K"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/mman.h>
+int
+main ()
+{
+
+posix_madvise (0, 0, POSIX_MADV_NORMAL);
+posix_madvise (0, 0, POSIX_MADV_SEQUENTIAL);
+posix_madvise (0, 0, POSIX_MADV_RANDOM);
+posix_madvise (0, 0, POSIX_MADV_WILLNEED);
+posix_madvise (0, 0, POSIX_MADV_DONTNEED);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_POSIX_MADVISE 1
+_ACEOF
+
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+ CPPFLAGS="$ac_save_CPPFLAGS"
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+
+ GETTEXT_PACKAGE=Thunar
+
+cat >>confdefs.h <<_ACEOF
+#define GETTEXT_PACKAGE "$GETTEXT_PACKAGE"
+_ACEOF
+
+
+
+ ALL_LINGUAS="de el es hu ja"
+
+
+for ac_header in locale.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ----------------------------- ##
+## Report this to benny at xfce.org ##
+## ----------------------------- ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ if test $ac_cv_header_locale_h = yes; then
+ echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5
+echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6
+if test "${am_cv_val_LC_MESSAGES+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <locale.h>
+int
+main ()
+{
+return LC_MESSAGES
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ am_cv_val_LC_MESSAGES=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+am_cv_val_LC_MESSAGES=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5
+echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6
+ if test $am_cv_val_LC_MESSAGES = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LC_MESSAGES 1
+_ACEOF
+
+ fi
+ fi
+ USE_NLS=yes
+
+
+ gt_cv_have_gettext=no
+
+ CATOBJEXT=NONE
+ XGETTEXT=:
+ INTLLIBS=
+
+ if test "${ac_cv_header_libintl_h+set}" = set; then
+ echo "$as_me:$LINENO: checking for libintl.h" >&5
+echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6
+if test "${ac_cv_header_libintl_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5
+echo "${ECHO_T}$ac_cv_header_libintl_h" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking libintl.h usability" >&5
+echo $ECHO_N "checking libintl.h usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <libintl.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking libintl.h presence" >&5
+echo $ECHO_N "checking libintl.h presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <libintl.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: libintl.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: libintl.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: libintl.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: libintl.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: libintl.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: libintl.h: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: libintl.h: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: libintl.h: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: libintl.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: libintl.h: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: libintl.h: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: libintl.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: libintl.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: libintl.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: libintl.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: libintl.h: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ----------------------------- ##
+## Report this to benny at xfce.org ##
+## ----------------------------- ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for libintl.h" >&5
+echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6
+if test "${ac_cv_header_libintl_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_header_libintl_h=$ac_header_preproc
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5
+echo "${ECHO_T}$ac_cv_header_libintl_h" >&6
+
+fi
+if test $ac_cv_header_libintl_h = yes; then
+ gt_cv_func_dgettext_libintl="no"
+ libintl_extra_libs=""
+
+ #
+ # First check in libc
+ #
+ echo "$as_me:$LINENO: checking for dgettext in libc" >&5
+echo $ECHO_N "checking for dgettext in libc... $ECHO_C" >&6
+if test "${gt_cv_func_dgettext_libc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <libintl.h>
+
+int
+main ()
+{
+return (int) dgettext ("","")
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gt_cv_func_dgettext_libc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+gt_cv_func_dgettext_libc=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $gt_cv_func_dgettext_libc" >&5
+echo "${ECHO_T}$gt_cv_func_dgettext_libc" >&6
+
+ if test "$gt_cv_func_dgettext_libc" = "yes" ; then
+
+for ac_func in bind_textdomain_codeset
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* 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_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 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 "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then
+
+ echo "$as_me:$LINENO: checking for bindtextdomain in -lintl" >&5
+echo $ECHO_N "checking for bindtextdomain in -lintl... $ECHO_C" >&6
+if test "${ac_cv_lib_intl_bindtextdomain+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char bindtextdomain ();
+int
+main ()
+{
+bindtextdomain ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_intl_bindtextdomain=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_intl_bindtextdomain=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_intl_bindtextdomain" >&5
+echo "${ECHO_T}$ac_cv_lib_intl_bindtextdomain" >&6
+if test $ac_cv_lib_intl_bindtextdomain = yes; then
+ echo "$as_me:$LINENO: checking for dgettext in -lintl" >&5
+echo $ECHO_N "checking for dgettext in -lintl... $ECHO_C" >&6
+if test "${ac_cv_lib_intl_dgettext+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dgettext ();
+int
+main ()
+{
+dgettext ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_intl_dgettext=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_intl_dgettext=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_intl_dgettext" >&5
+echo "${ECHO_T}$ac_cv_lib_intl_dgettext" >&6
+if test $ac_cv_lib_intl_dgettext = yes; then
+ gt_cv_func_dgettext_libintl=yes
+fi
+
+fi
+
+
+ if test "$gt_cv_func_dgettext_libintl" != "yes" ; then
+ echo "$as_me:$LINENO: checking if -liconv is needed to use gettext" >&5
+echo $ECHO_N "checking if -liconv is needed to use gettext... $ECHO_C" >&6
+ echo "$as_me:$LINENO: result: " >&5
+echo "${ECHO_T}" >&6
+ echo "$as_me:$LINENO: checking for dcgettext in -lintl" >&5
+echo $ECHO_N "checking for dcgettext in -lintl... $ECHO_C" >&6
+if test "${ac_cv_lib_intl_dcgettext+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl -liconv $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dcgettext ();
+int
+main ()
+{
+dcgettext ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_intl_dcgettext=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_intl_dcgettext=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_intl_dcgettext" >&5
+echo "${ECHO_T}$ac_cv_lib_intl_dcgettext" >&6
+if test $ac_cv_lib_intl_dcgettext = yes; then
+ gt_cv_func_dgettext_libintl=yes
+ libintl_extra_libs=-liconv
+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
+ #
+ 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
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* 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_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 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"; 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
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_GETTEXT 1
+_ACEOF
+
+ # Extract the first word of "msgfmt", so it can be a program name with args.
+set dummy msgfmt; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_MSGFMT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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
+ echo "$as_me:$LINENO: result: $MSGFMT" >&5
+echo "${ECHO_T}$MSGFMT" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+ if test "$MSGFMT" != "no"; then
+ glib_save_LIBS="$LIBS"
+ LIBS="$LIBS $INTLLIBS"
+
+for ac_func in dcgettext
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* 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_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ # Extract the first word of "gmsgfmt", so it can be a program name with args.
+set dummy gmsgfmt; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_GMSGFMT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
+ ;;
+esac
+fi
+GMSGFMT=$ac_cv_path_GMSGFMT
+
+if test -n "$GMSGFMT"; then
+ echo "$as_me:$LINENO: result: $GMSGFMT" >&5
+echo "${ECHO_T}$GMSGFMT" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ # Extract the first word of "xgettext", so it can be a program name with args.
+set dummy xgettext; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_XGETTEXT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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
+ echo "$as_me:$LINENO: result: $XGETTEXT" >&5
+echo "${ECHO_T}$XGETTEXT" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+extern int _nl_msg_cat_cntr;
+ return _nl_msg_cat_cntr
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ CATOBJEXT=.gmo
+ DATADIRNAME=share
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+case $host in
+ *-*-solaris*)
+ echo "$as_me:$LINENO: checking for bind_textdomain_codeset" >&5
+echo $ECHO_N "checking for bind_textdomain_codeset... $ECHO_C" >&6
+if test "${ac_cv_func_bind_textdomain_codeset+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define bind_textdomain_codeset to an innocuous variant, in case <limits.h> declares bind_textdomain_codeset.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define bind_textdomain_codeset innocuous_bind_textdomain_codeset
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char bind_textdomain_codeset (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef bind_textdomain_codeset
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char bind_textdomain_codeset ();
+/* 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_bind_textdomain_codeset) || defined (__stub___bind_textdomain_codeset)
+choke me
+#else
+char (*f) () = bind_textdomain_codeset;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != bind_textdomain_codeset;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_bind_textdomain_codeset=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_bind_textdomain_codeset=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_bind_textdomain_codeset" >&5
+echo "${ECHO_T}$ac_cv_func_bind_textdomain_codeset" >&6
+if test $ac_cv_func_bind_textdomain_codeset = yes; then
+ CATOBJEXT=.gmo
+ DATADIRNAME=share
+else
+ CATOBJEXT=.mo
+ DATADIRNAME=lib
+fi
+
+ ;;
+ *)
+ CATOBJEXT=.mo
+ DATADIRNAME=lib
+ ;;
+ esac
+fi
+rm -f 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
+
+cat >>confdefs.h <<\_ACEOF
+#define ENABLE_NLS 1
+_ACEOF
+
+ fi
+
+ if test "$XGETTEXT" != ":"; then
+ if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
+ : ;
+ else
+ echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5
+echo "${ECHO_T}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
+ echo "$as_me:$LINENO: checking for catalogs to be installed" >&5
+echo $ECHO_N "checking for catalogs to be installed... $ECHO_C" >&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
+ echo "$as_me:$LINENO: result: $LINGUAS" >&5
+echo "${ECHO_T}$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
+
+
+ echo "$as_me:$LINENO: checking for bind_textdomain_codeset" >&5
+echo $ECHO_N "checking for bind_textdomain_codeset... $ECHO_C" >&6
+if test "${ac_cv_func_bind_textdomain_codeset+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define bind_textdomain_codeset to an innocuous variant, in case <limits.h> declares bind_textdomain_codeset.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define bind_textdomain_codeset innocuous_bind_textdomain_codeset
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char bind_textdomain_codeset (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef bind_textdomain_codeset
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char bind_textdomain_codeset ();
+/* 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_bind_textdomain_codeset) || defined (__stub___bind_textdomain_codeset)
+choke me
+#else
+char (*f) () = bind_textdomain_codeset;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != bind_textdomain_codeset;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_bind_textdomain_codeset=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_bind_textdomain_codeset=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_bind_textdomain_codeset" >&5
+echo "${ECHO_T}$ac_cv_func_bind_textdomain_codeset" >&6
+
+
+ echo "$as_me:$LINENO: checking for locales directory" >&5
+echo $ECHO_N "checking for locales directory... $ECHO_C" >&6
+
+# Check whether --with-locales-dir or --without-locales-dir was given.
+if test "${with_locales_dir+set}" = set; then
+ withval="$with_locales_dir"
+ localedir=$withval
+else
+
+ if test x"$CATOBJEXT" = x".mo"; then
+ localedir=$libdir/locale
+ else
+ localedir=$datadir/locale
+ fi
+
+fi;
+ echo "$as_me:$LINENO: result: $localedir" >&5
+echo "${ECHO_T}$localedir" >&6
+
+
+ echo "$as_me:$LINENO: checking for additional xgettext flags" >&5
+echo $ECHO_N "checking for additional xgettext flags... $ECHO_C" >&6
+ if test x"$XGETTEXT_ARGS" = x""; then
+ XGETTEXT_ARGS="--keyword=Q_";
+ else
+ XGETTEXT_ARGS="$XGETTEXT_ARGS --keyword=Q_";
+ fi
+
+ echo "$as_me:$LINENO: result: $XGETTEXT_ARGS" >&5
+echo "${ECHO_T}$XGETTEXT_ARGS" >&6
+
+
+
+
+ # minimum supported version of pkg-config
+ xdt_cv_PKG_CONFIG_MIN_VERSION=0.9.0
+
+ # lookup pkg-config utility
+ if test x"$PKG_CONFIG" = x""; then
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+ ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+
+if test -n "$PKG_CONFIG"; then
+ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+echo "${ECHO_T}$PKG_CONFIG" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+
+ if test x"$PKG_CONFIG" = x"no"; then
+ echo "*** The pkg-config utility could not be found on your system."
+ echo "*** Make sure it is in your path, or set the PKG_CONFIG"
+ echo "*** environment variable to the full path to pkg-config."
+ echo "*** You can download pkg-config from the freedesktop.org"
+ echo "*** software repository at"
+ echo "***"
+ echo "*** http://www.freedesktop.org/software/pkgconfig"
+ echo "***"
+ exit 1
+ fi
+
+ # check pkg-config version
+ echo "$as_me:$LINENO: checking for pkg-config >= $xdt_cv_PKG_CONFIG_MIN_VERSION" >&5
+echo $ECHO_N "checking for pkg-config >= $xdt_cv_PKG_CONFIG_MIN_VERSION... $ECHO_C" >&6
+ if $PKG_CONFIG --atleast-pkgconfig-version $xdt_cv_PKG_CONFIG_MIN_VERSION; then
+ xdt_cv_PKG_CONFIG_VERSION=`$PKG_CONFIG --version`
+ echo "$as_me:$LINENO: result: $xdt_cv_PKG_CONFIG_VERSION" >&5
+echo "${ECHO_T}$xdt_cv_PKG_CONFIG_VERSION" >&6
+ else
+ xdt_cv_PKG_CONFIG_VERSION=`$PKG_CONFIG --version`
+ echo "$as_me:$LINENO: result: $xdt_cv_PKG_CONFIG_VERSION" >&5
+echo "${ECHO_T}$xdt_cv_PKG_CONFIG_VERSION" >&6
+ echo "*** Your version of pkg-config is too old. You need atleast"
+ echo "*** pkg-config $xdt_cv_PKG_CONFIG_MIN_VERSION or newer. You can download pkg-config "
+ echo "*** from the freedesktop.org software repository at"
+ echo "***"
+ echo "*** http://www.freedesktop.org/software/pkgconfig"
+ echo "***"
+ exit 1
+ fi
+ fi
+
+
+ echo "$as_me:$LINENO: checking for exo-0.3 >= 0.3.1.1" >&5
+echo $ECHO_N "checking for exo-0.3 >= 0.3.1.1... $ECHO_C" >&6
+ if $PKG_CONFIG "--atleast-version=0.3.1.1" "exo-0.3" >/dev/null 2>&1; then
+ EXO_VERSION=`$PKG_CONFIG --modversion "exo-0.3"`
+ echo "$as_me:$LINENO: result: $EXO_VERSION" >&5
+echo "${ECHO_T}$EXO_VERSION" >&6
+
+ echo "$as_me:$LINENO: checking EXO_CFLAGS" >&5
+echo $ECHO_N "checking EXO_CFLAGS... $ECHO_C" >&6
+ EXO_CFLAGS=`$PKG_CONFIG --cflags "exo-0.3"`
+ echo "$as_me:$LINENO: result: $EXO_CFLAGS" >&5
+echo "${ECHO_T}$EXO_CFLAGS" >&6
+
+ echo "$as_me:$LINENO: checking EXO_LIBS" >&5
+echo $ECHO_N "checking EXO_LIBS... $ECHO_C" >&6
+ EXO_LIBS=`$PKG_CONFIG --libs "exo-0.3"`
+ echo "$as_me:$LINENO: result: $EXO_LIBS" >&5
+echo "${ECHO_T}$EXO_LIBS" >&6
+
+ EXO_REQUIRED_VERSION=0.3.1.1
+
+
+
+
+
+
+
+ elif $PKG_CONFIG --exists "exo-0.3" >/dev/null 2>&1; then
+ xdg_cv_version=`$PKG_CONFIG --modversion "exo-0.3"`
+ echo "$as_me:$LINENO: result: found, but $xdt_cv_version" >&5
+echo "${ECHO_T}found, but $xdt_cv_version" >&6
+
+
+ echo "*** The required package exo-0.3 was found on your system,"
+ echo "*** but the installed version ($xdt_cv_version) is too old."
+ echo "*** Please upgrade exo-0.3 to atleast version 0.3.1.1, or adjust"
+ echo "*** the PKG_CONFIG_PATH environment variable if you installed"
+ echo "*** the new version of the package in a nonstandard prefix so"
+ echo "*** pkg-config is able to find it."
+ exit 1
+
+ else
+ echo "$as_me:$LINENO: result: not found" >&5
+echo "${ECHO_T}not found" >&6
+
+
+ echo "*** The required package exo-0.3 was not found on your system."
+ echo "*** Please install exo-0.3 (atleast version 0.3.1.1) or adjust"
+ echo "*** the PKG_CONFIG_PATH environment variable if you"
+ echo "*** installed the package in a nonstandard prefix so that"
+ echo "*** pkg-config is able to find it."
+ exit 1
+
+ fi
+
+
+
+ # minimum supported version of pkg-config
+ xdt_cv_PKG_CONFIG_MIN_VERSION=0.9.0
+
+ # lookup pkg-config utility
+ if test x"$PKG_CONFIG" = x""; then
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+ ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+
+if test -n "$PKG_CONFIG"; then
+ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+echo "${ECHO_T}$PKG_CONFIG" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+
+ if test x"$PKG_CONFIG" = x"no"; then
+ echo "*** The pkg-config utility could not be found on your system."
+ echo "*** Make sure it is in your path, or set the PKG_CONFIG"
+ echo "*** environment variable to the full path to pkg-config."
+ echo "*** You can download pkg-config from the freedesktop.org"
+ echo "*** software repository at"
+ echo "***"
+ echo "*** http://www.freedesktop.org/software/pkgconfig"
+ echo "***"
+ exit 1
+ fi
+
+ # check pkg-config version
+ echo "$as_me:$LINENO: checking for pkg-config >= $xdt_cv_PKG_CONFIG_MIN_VERSION" >&5
+echo $ECHO_N "checking for pkg-config >= $xdt_cv_PKG_CONFIG_MIN_VERSION... $ECHO_C" >&6
+ if $PKG_CONFIG --atleast-pkgconfig-version $xdt_cv_PKG_CONFIG_MIN_VERSION; then
+ xdt_cv_PKG_CONFIG_VERSION=`$PKG_CONFIG --version`
+ echo "$as_me:$LINENO: result: $xdt_cv_PKG_CONFIG_VERSION" >&5
+echo "${ECHO_T}$xdt_cv_PKG_CONFIG_VERSION" >&6
+ else
+ xdt_cv_PKG_CONFIG_VERSION=`$PKG_CONFIG --version`
+ echo "$as_me:$LINENO: result: $xdt_cv_PKG_CONFIG_VERSION" >&5
+echo "${ECHO_T}$xdt_cv_PKG_CONFIG_VERSION" >&6
+ echo "*** Your version of pkg-config is too old. You need atleast"
+ echo "*** pkg-config $xdt_cv_PKG_CONFIG_MIN_VERSION or newer. You can download pkg-config "
+ echo "*** from the freedesktop.org software repository at"
+ echo "***"
+ echo "*** http://www.freedesktop.org/software/pkgconfig"
+ echo "***"
+ exit 1
+ fi
+ fi
+
+
+ echo "$as_me:$LINENO: checking for glib-2.0 >= 2.6.4" >&5
+echo $ECHO_N "checking for glib-2.0 >= 2.6.4... $ECHO_C" >&6
+ if $PKG_CONFIG "--atleast-version=2.6.4" "glib-2.0" >/dev/null 2>&1; then
+ GLIB_VERSION=`$PKG_CONFIG --modversion "glib-2.0"`
+ echo "$as_me:$LINENO: result: $GLIB_VERSION" >&5
+echo "${ECHO_T}$GLIB_VERSION" >&6
+
+ echo "$as_me:$LINENO: checking GLIB_CFLAGS" >&5
+echo $ECHO_N "checking GLIB_CFLAGS... $ECHO_C" >&6
+ GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0"`
+ echo "$as_me:$LINENO: result: $GLIB_CFLAGS" >&5
+echo "${ECHO_T}$GLIB_CFLAGS" >&6
+
+ echo "$as_me:$LINENO: checking GLIB_LIBS" >&5
+echo $ECHO_N "checking GLIB_LIBS... $ECHO_C" >&6
+ GLIB_LIBS=`$PKG_CONFIG --libs "glib-2.0"`
+ echo "$as_me:$LINENO: result: $GLIB_LIBS" >&5
+echo "${ECHO_T}$GLIB_LIBS" >&6
+
+ GLIB_REQUIRED_VERSION=2.6.4
+
+
+
+
+
+
+
+ elif $PKG_CONFIG --exists "glib-2.0" >/dev/null 2>&1; then
+ xdg_cv_version=`$PKG_CONFIG --modversion "glib-2.0"`
+ echo "$as_me:$LINENO: result: found, but $xdt_cv_version" >&5
+echo "${ECHO_T}found, but $xdt_cv_version" >&6
+
+
+ echo "*** The required package glib-2.0 was found on your system,"
+ echo "*** but the installed version ($xdt_cv_version) is too old."
+ echo "*** Please upgrade glib-2.0 to atleast version 2.6.4, or adjust"
+ echo "*** the PKG_CONFIG_PATH environment variable if you installed"
+ echo "*** the new version of the package in a nonstandard prefix so"
+ echo "*** pkg-config is able to find it."
+ exit 1
+
+ else
+ echo "$as_me:$LINENO: result: not found" >&5
+echo "${ECHO_T}not found" >&6
+
+
+ echo "*** The required package glib-2.0 was not found on your system."
+ echo "*** Please install glib-2.0 (atleast version 2.6.4) or adjust"
+ echo "*** the PKG_CONFIG_PATH environment variable if you"
+ echo "*** installed the package in a nonstandard prefix so that"
+ echo "*** pkg-config is able to find it."
+ exit 1
+
+ fi
+
+
+
+ # minimum supported version of pkg-config
+ xdt_cv_PKG_CONFIG_MIN_VERSION=0.9.0
+
+ # lookup pkg-config utility
+ if test x"$PKG_CONFIG" = x""; then
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+ ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+
+if test -n "$PKG_CONFIG"; then
+ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+echo "${ECHO_T}$PKG_CONFIG" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+
+ if test x"$PKG_CONFIG" = x"no"; then
+ echo "*** The pkg-config utility could not be found on your system."
+ echo "*** Make sure it is in your path, or set the PKG_CONFIG"
+ echo "*** environment variable to the full path to pkg-config."
+ echo "*** You can download pkg-config from the freedesktop.org"
+ echo "*** software repository at"
+ echo "***"
+ echo "*** http://www.freedesktop.org/software/pkgconfig"
+ echo "***"
+ exit 1
+ fi
+
+ # check pkg-config version
+ echo "$as_me:$LINENO: checking for pkg-config >= $xdt_cv_PKG_CONFIG_MIN_VERSION" >&5
+echo $ECHO_N "checking for pkg-config >= $xdt_cv_PKG_CONFIG_MIN_VERSION... $ECHO_C" >&6
+ if $PKG_CONFIG --atleast-pkgconfig-version $xdt_cv_PKG_CONFIG_MIN_VERSION; then
+ xdt_cv_PKG_CONFIG_VERSION=`$PKG_CONFIG --version`
+ echo "$as_me:$LINENO: result: $xdt_cv_PKG_CONFIG_VERSION" >&5
+echo "${ECHO_T}$xdt_cv_PKG_CONFIG_VERSION" >&6
+ else
+ xdt_cv_PKG_CONFIG_VERSION=`$PKG_CONFIG --version`
+ echo "$as_me:$LINENO: result: $xdt_cv_PKG_CONFIG_VERSION" >&5
+echo "${ECHO_T}$xdt_cv_PKG_CONFIG_VERSION" >&6
+ echo "*** Your version of pkg-config is too old. You need atleast"
+ echo "*** pkg-config $xdt_cv_PKG_CONFIG_MIN_VERSION or newer. You can download pkg-config "
+ echo "*** from the freedesktop.org software repository at"
+ echo "***"
+ echo "*** http://www.freedesktop.org/software/pkgconfig"
+ echo "***"
+ exit 1
+ fi
+ fi
+
+
+ echo "$as_me:$LINENO: checking for gthread-2.0 >= 2.6.4" >&5
+echo $ECHO_N "checking for gthread-2.0 >= 2.6.4... $ECHO_C" >&6
+ if $PKG_CONFIG "--atleast-version=2.6.4" "gthread-2.0" >/dev/null 2>&1; then
+ GTHREAD_VERSION=`$PKG_CONFIG --modversion "gthread-2.0"`
+ echo "$as_me:$LINENO: result: $GTHREAD_VERSION" >&5
+echo "${ECHO_T}$GTHREAD_VERSION" >&6
+
+ echo "$as_me:$LINENO: checking GTHREAD_CFLAGS" >&5
+echo $ECHO_N "checking GTHREAD_CFLAGS... $ECHO_C" >&6
+ GTHREAD_CFLAGS=`$PKG_CONFIG --cflags "gthread-2.0"`
+ echo "$as_me:$LINENO: result: $GTHREAD_CFLAGS" >&5
+echo "${ECHO_T}$GTHREAD_CFLAGS" >&6
+
+ echo "$as_me:$LINENO: checking GTHREAD_LIBS" >&5
+echo $ECHO_N "checking GTHREAD_LIBS... $ECHO_C" >&6
+ GTHREAD_LIBS=`$PKG_CONFIG --libs "gthread-2.0"`
+ echo "$as_me:$LINENO: result: $GTHREAD_LIBS" >&5
+echo "${ECHO_T}$GTHREAD_LIBS" >&6
+
+ GTHREAD_REQUIRED_VERSION=2.6.4
+
+
+
+
+
+
+
+ elif $PKG_CONFIG --exists "gthread-2.0" >/dev/null 2>&1; then
+ xdg_cv_version=`$PKG_CONFIG --modversion "gthread-2.0"`
+ echo "$as_me:$LINENO: result: found, but $xdt_cv_version" >&5
+echo "${ECHO_T}found, but $xdt_cv_version" >&6
+
+
+ echo "*** The required package gthread-2.0 was found on your system,"
+ echo "*** but the installed version ($xdt_cv_version) is too old."
+ echo "*** Please upgrade gthread-2.0 to atleast version 2.6.4, or adjust"
+ echo "*** the PKG_CONFIG_PATH environment variable if you installed"
+ echo "*** the new version of the package in a nonstandard prefix so"
+ echo "*** pkg-config is able to find it."
+ exit 1
+
+ else
+ echo "$as_me:$LINENO: result: not found" >&5
+echo "${ECHO_T}not found" >&6
+
+
+ echo "*** The required package gthread-2.0 was not found on your system."
+ echo "*** Please install gthread-2.0 (atleast version 2.6.4) or adjust"
+ echo "*** the PKG_CONFIG_PATH environment variable if you"
+ echo "*** installed the package in a nonstandard prefix so that"
+ echo "*** pkg-config is able to find it."
+ exit 1
+
+ fi
+
+
+
+ # minimum supported version of pkg-config
+ xdt_cv_PKG_CONFIG_MIN_VERSION=0.9.0
+
+ # lookup pkg-config utility
+ if test x"$PKG_CONFIG" = x""; then
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+ ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+
+if test -n "$PKG_CONFIG"; then
+ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+echo "${ECHO_T}$PKG_CONFIG" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+
+ if test x"$PKG_CONFIG" = x"no"; then
+ echo "*** The pkg-config utility could not be found on your system."
+ echo "*** Make sure it is in your path, or set the PKG_CONFIG"
+ echo "*** environment variable to the full path to pkg-config."
+ echo "*** You can download pkg-config from the freedesktop.org"
+ echo "*** software repository at"
+ echo "***"
+ echo "*** http://www.freedesktop.org/software/pkgconfig"
+ echo "***"
+ exit 1
+ fi
+
+ # check pkg-config version
+ echo "$as_me:$LINENO: checking for pkg-config >= $xdt_cv_PKG_CONFIG_MIN_VERSION" >&5
+echo $ECHO_N "checking for pkg-config >= $xdt_cv_PKG_CONFIG_MIN_VERSION... $ECHO_C" >&6
+ if $PKG_CONFIG --atleast-pkgconfig-version $xdt_cv_PKG_CONFIG_MIN_VERSION; then
+ xdt_cv_PKG_CONFIG_VERSION=`$PKG_CONFIG --version`
+ echo "$as_me:$LINENO: result: $xdt_cv_PKG_CONFIG_VERSION" >&5
+echo "${ECHO_T}$xdt_cv_PKG_CONFIG_VERSION" >&6
+ else
+ xdt_cv_PKG_CONFIG_VERSION=`$PKG_CONFIG --version`
+ echo "$as_me:$LINENO: result: $xdt_cv_PKG_CONFIG_VERSION" >&5
+echo "${ECHO_T}$xdt_cv_PKG_CONFIG_VERSION" >&6
+ echo "*** Your version of pkg-config is too old. You need atleast"
+ echo "*** pkg-config $xdt_cv_PKG_CONFIG_MIN_VERSION or newer. You can download pkg-config "
+ echo "*** from the freedesktop.org software repository at"
+ echo "***"
+ echo "*** http://www.freedesktop.org/software/pkgconfig"
+ echo "***"
+ exit 1
+ fi
+ fi
+
+
+ echo "$as_me:$LINENO: checking for gtk+-2.0 >= 2.6.0" >&5
+echo $ECHO_N "checking for gtk+-2.0 >= 2.6.0... $ECHO_C" >&6
+ if $PKG_CONFIG "--atleast-version=2.6.0" "gtk+-2.0" >/dev/null 2>&1; then
+ GTK_VERSION=`$PKG_CONFIG --modversion "gtk+-2.0"`
+ echo "$as_me:$LINENO: result: $GTK_VERSION" >&5
+echo "${ECHO_T}$GTK_VERSION" >&6
+
+ echo "$as_me:$LINENO: checking GTK_CFLAGS" >&5
+echo $ECHO_N "checking GTK_CFLAGS... $ECHO_C" >&6
+ GTK_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0"`
+ echo "$as_me:$LINENO: result: $GTK_CFLAGS" >&5
+echo "${ECHO_T}$GTK_CFLAGS" >&6
+
+ echo "$as_me:$LINENO: checking GTK_LIBS" >&5
+echo $ECHO_N "checking GTK_LIBS... $ECHO_C" >&6
+ GTK_LIBS=`$PKG_CONFIG --libs "gtk+-2.0"`
+ echo "$as_me:$LINENO: result: $GTK_LIBS" >&5
+echo "${ECHO_T}$GTK_LIBS" >&6
+
+ GTK_REQUIRED_VERSION=2.6.0
+
+
+
+
+
+
+
+ elif $PKG_CONFIG --exists "gtk+-2.0" >/dev/null 2>&1; then
+ xdg_cv_version=`$PKG_CONFIG --modversion "gtk+-2.0"`
+ echo "$as_me:$LINENO: result: found, but $xdt_cv_version" >&5
+echo "${ECHO_T}found, but $xdt_cv_version" >&6
+
+
+ echo "*** The required package gtk+-2.0 was found on your system,"
+ echo "*** but the installed version ($xdt_cv_version) is too old."
+ echo "*** Please upgrade gtk+-2.0 to atleast version 2.6.0, or adjust"
+ echo "*** the PKG_CONFIG_PATH environment variable if you installed"
+ echo "*** the new version of the package in a nonstandard prefix so"
+ echo "*** pkg-config is able to find it."
+ exit 1
+
+ else
+ echo "$as_me:$LINENO: result: not found" >&5
+echo "${ECHO_T}not found" >&6
+
+
+ echo "*** The required package gtk+-2.0 was not found on your system."
+ echo "*** Please install gtk+-2.0 (atleast version 2.6.0) or adjust"
+ echo "*** the PKG_CONFIG_PATH environment variable if you"
+ echo "*** installed the package in a nonstandard prefix so that"
+ echo "*** pkg-config is able to find it."
+ exit 1
+
+ fi
+
+
+
+ # minimum supported version of pkg-config
+ xdt_cv_PKG_CONFIG_MIN_VERSION=0.9.0
+
+ # lookup pkg-config utility
+ if test x"$PKG_CONFIG" = x""; then
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+ ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+
+if test -n "$PKG_CONFIG"; then
+ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+echo "${ECHO_T}$PKG_CONFIG" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+
+ if test x"$PKG_CONFIG" = x"no"; then
+ echo "*** The pkg-config utility could not be found on your system."
+ echo "*** Make sure it is in your path, or set the PKG_CONFIG"
+ echo "*** environment variable to the full path to pkg-config."
+ echo "*** You can download pkg-config from the freedesktop.org"
+ echo "*** software repository at"
+ echo "***"
+ echo "*** http://www.freedesktop.org/software/pkgconfig"
+ echo "***"
+ exit 1
+ fi
+
+ # check pkg-config version
+ echo "$as_me:$LINENO: checking for pkg-config >= $xdt_cv_PKG_CONFIG_MIN_VERSION" >&5
+echo $ECHO_N "checking for pkg-config >= $xdt_cv_PKG_CONFIG_MIN_VERSION... $ECHO_C" >&6
+ if $PKG_CONFIG --atleast-pkgconfig-version $xdt_cv_PKG_CONFIG_MIN_VERSION; then
+ xdt_cv_PKG_CONFIG_VERSION=`$PKG_CONFIG --version`
+ echo "$as_me:$LINENO: result: $xdt_cv_PKG_CONFIG_VERSION" >&5
+echo "${ECHO_T}$xdt_cv_PKG_CONFIG_VERSION" >&6
+ else
+ xdt_cv_PKG_CONFIG_VERSION=`$PKG_CONFIG --version`
+ echo "$as_me:$LINENO: result: $xdt_cv_PKG_CONFIG_VERSION" >&5
+echo "${ECHO_T}$xdt_cv_PKG_CONFIG_VERSION" >&6
+ echo "*** Your version of pkg-config is too old. You need atleast"
+ echo "*** pkg-config $xdt_cv_PKG_CONFIG_MIN_VERSION or newer. You can download pkg-config "
+ echo "*** from the freedesktop.org software repository at"
+ echo "***"
+ echo "*** http://www.freedesktop.org/software/pkgconfig"
+ echo "***"
+ exit 1
+ fi
+ fi
+
+
+ echo "$as_me:$LINENO: checking for libpng12 >= 1.2.0" >&5
+echo $ECHO_N "checking for libpng12 >= 1.2.0... $ECHO_C" >&6
+ if $PKG_CONFIG "--atleast-version=1.2.0" "libpng12" >/dev/null 2>&1; then
+ LIBPNG_VERSION=`$PKG_CONFIG --modversion "libpng12"`
+ echo "$as_me:$LINENO: result: $LIBPNG_VERSION" >&5
+echo "${ECHO_T}$LIBPNG_VERSION" >&6
+
+ echo "$as_me:$LINENO: checking LIBPNG_CFLAGS" >&5
+echo $ECHO_N "checking LIBPNG_CFLAGS... $ECHO_C" >&6
+ LIBPNG_CFLAGS=`$PKG_CONFIG --cflags "libpng12"`
+ echo "$as_me:$LINENO: result: $LIBPNG_CFLAGS" >&5
+echo "${ECHO_T}$LIBPNG_CFLAGS" >&6
+
+ echo "$as_me:$LINENO: checking LIBPNG_LIBS" >&5
+echo $ECHO_N "checking LIBPNG_LIBS... $ECHO_C" >&6
+ LIBPNG_LIBS=`$PKG_CONFIG --libs "libpng12"`
+ echo "$as_me:$LINENO: result: $LIBPNG_LIBS" >&5
+echo "${ECHO_T}$LIBPNG_LIBS" >&6
+
+ LIBPNG_REQUIRED_VERSION=1.2.0
+
+
+
+
+
+
+
+ elif $PKG_CONFIG --exists "libpng12" >/dev/null 2>&1; then
+ xdg_cv_version=`$PKG_CONFIG --modversion "libpng12"`
+ echo "$as_me:$LINENO: result: found, but $xdt_cv_version" >&5
+echo "${ECHO_T}found, but $xdt_cv_version" >&6
+
+
+ echo "*** The required package libpng12 was found on your system,"
+ echo "*** but the installed version ($xdt_cv_version) is too old."
+ echo "*** Please upgrade libpng12 to atleast version 1.2.0, or adjust"
+ echo "*** the PKG_CONFIG_PATH environment variable if you installed"
+ echo "*** the new version of the package in a nonstandard prefix so"
+ echo "*** pkg-config is able to find it."
+ exit 1
+
+ else
+ echo "$as_me:$LINENO: result: not found" >&5
+echo "${ECHO_T}not found" >&6
+
+
+ echo "*** The required package libpng12 was not found on your system."
+ echo "*** Please install libpng12 (atleast version 1.2.0) or adjust"
+ echo "*** the PKG_CONFIG_PATH environment variable if you"
+ echo "*** installed the package in a nonstandard prefix so that"
+ echo "*** pkg-config is able to find it."
+ exit 1
+
+ fi
+
+
+
+
+
+ # Check whether --enable-cairo or --disable-cairo was given.
+if test "${enable_cairo+set}" = set; then
+ enableval="$enable_cairo"
+ xdt_cv_CAIRO_check=$enableval
+else
+ xdt_cv_CAIRO_check=yes
+fi;
+
+ if test x"$xdt_cv_CAIRO_check" = x"yes"; then
+ if $PKG_CONFIG --exists "cairo >= 0.5" >/dev/null 2>&1; then
+
+
+ # minimum supported version of pkg-config
+ xdt_cv_PKG_CONFIG_MIN_VERSION=0.9.0
+
+ # lookup pkg-config utility
+ if test x"$PKG_CONFIG" = x""; then
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+ ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+
+if test -n "$PKG_CONFIG"; then
+ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+echo "${ECHO_T}$PKG_CONFIG" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+
+ if test x"$PKG_CONFIG" = x"no"; then
+ echo "*** The pkg-config utility could not be found on your system."
+ echo "*** Make sure it is in your path, or set the PKG_CONFIG"
+ echo "*** environment variable to the full path to pkg-config."
+ echo "*** You can download pkg-config from the freedesktop.org"
+ echo "*** software repository at"
+ echo "***"
+ echo "*** http://www.freedesktop.org/software/pkgconfig"
+ echo "***"
+ exit 1
+ fi
+
+ # check pkg-config version
+ echo "$as_me:$LINENO: checking for pkg-config >= $xdt_cv_PKG_CONFIG_MIN_VERSION" >&5
+echo $ECHO_N "checking for pkg-config >= $xdt_cv_PKG_CONFIG_MIN_VERSION... $ECHO_C" >&6
+ if $PKG_CONFIG --atleast-pkgconfig-version $xdt_cv_PKG_CONFIG_MIN_VERSION; then
+ xdt_cv_PKG_CONFIG_VERSION=`$PKG_CONFIG --version`
+ echo "$as_me:$LINENO: result: $xdt_cv_PKG_CONFIG_VERSION" >&5
+echo "${ECHO_T}$xdt_cv_PKG_CONFIG_VERSION" >&6
+ else
+ xdt_cv_PKG_CONFIG_VERSION=`$PKG_CONFIG --version`
+ echo "$as_me:$LINENO: result: $xdt_cv_PKG_CONFIG_VERSION" >&5
+echo "${ECHO_T}$xdt_cv_PKG_CONFIG_VERSION" >&6
+ echo "*** Your version of pkg-config is too old. You need atleast"
+ echo "*** pkg-config $xdt_cv_PKG_CONFIG_MIN_VERSION or newer. You can download pkg-config "
+ echo "*** from the freedesktop.org software repository at"
+ echo "***"
+ echo "*** http://www.freedesktop.org/software/pkgconfig"
+ echo "***"
+ exit 1
+ fi
+ fi
+
+
+ echo "$as_me:$LINENO: checking for cairo >= 0.5" >&5
+echo $ECHO_N "checking for cairo >= 0.5... $ECHO_C" >&6
+ if $PKG_CONFIG "--atleast-version=0.5" "cairo" >/dev/null 2>&1; then
+ CAIRO_VERSION=`$PKG_CONFIG --modversion "cairo"`
+ echo "$as_me:$LINENO: result: $CAIRO_VERSION" >&5
+echo "${ECHO_T}$CAIRO_VERSION" >&6
+
+ echo "$as_me:$LINENO: checking CAIRO_CFLAGS" >&5
+echo $ECHO_N "checking CAIRO_CFLAGS... $ECHO_C" >&6
+ CAIRO_CFLAGS=`$PKG_CONFIG --cflags "cairo"`
+ echo "$as_me:$LINENO: result: $CAIRO_CFLAGS" >&5
+echo "${ECHO_T}$CAIRO_CFLAGS" >&6
+
+ echo "$as_me:$LINENO: checking CAIRO_LIBS" >&5
+echo $ECHO_N "checking CAIRO_LIBS... $ECHO_C" >&6
+ CAIRO_LIBS=`$PKG_CONFIG --libs "cairo"`
+ echo "$as_me:$LINENO: result: $CAIRO_LIBS" >&5
+echo "${ECHO_T}$CAIRO_LIBS" >&6
+
+ CAIRO_REQUIRED_VERSION=0.5
+
+
+
+
+
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_CAIRO 1
+_ACEOF
+
+ CAIRO_FOUND="yes"
+
+ elif $PKG_CONFIG --exists "cairo" >/dev/null 2>&1; then
+ xdg_cv_version=`$PKG_CONFIG --modversion "cairo"`
+ echo "$as_me:$LINENO: result: found, but $xdt_cv_version" >&5
+echo "${ECHO_T}found, but $xdt_cv_version" >&6
+
+
+ echo "*** The required package cairo was found on your system,"
+ echo "*** but the installed version ($xdt_cv_version) is too old."
+ echo "*** Please upgrade cairo to atleast version 0.5, or adjust"
+ echo "*** the PKG_CONFIG_PATH environment variable if you installed"
+ echo "*** the new version of the package in a nonstandard prefix so"
+ echo "*** pkg-config is able to find it."
+ exit 1
+
+ else
+ echo "$as_me:$LINENO: result: not found" >&5
+echo "${ECHO_T}not found" >&6
+
+
+ echo "*** The required package cairo was not found on your system."
+ echo "*** Please install cairo (atleast version 0.5) or adjust"
+ echo "*** the PKG_CONFIG_PATH environment variable if you"
+ echo "*** installed the package in a nonstandard prefix so that"
+ echo "*** pkg-config is able to find it."
+ exit 1
+
+ fi
+
+ else
+ echo "$as_me:$LINENO: checking for optional package cairo >= 0.5" >&5
+echo $ECHO_N "checking for optional package cairo >= 0.5... $ECHO_C" >&6
+ echo "$as_me:$LINENO: result: not found" >&5
+echo "${ECHO_T}not found" >&6
+ fi
+ else
+ echo "$as_me:$LINENO: checking for optional package cairo" >&5
+echo $ECHO_N "checking for optional package cairo... $ECHO_C" >&6
+ echo "$as_me:$LINENO: result: disabled" >&5
+echo "${ECHO_T}disabled" >&6
+ fi
+
+
+
+if test x"$CAIRO_FOUND" = x"yes"; then
+ HAVE_CAIRO_TRUE=
+ HAVE_CAIRO_FALSE='#'
+else
+ HAVE_CAIRO_TRUE='#'
+ HAVE_CAIRO_FALSE=
+fi
+
+
+
+
+
+
+ # Check whether --enable-gnome-thumbnailers or --disable-gnome-thumbnailers was given.
+if test "${enable_gnome_thumbnailers+set}" = set; then
+ enableval="$enable_gnome_thumbnailers"
+ xdt_cv_GCONF_check=$enableval
+else
+ xdt_cv_GCONF_check=yes
+fi;
+
+ if test x"$xdt_cv_GCONF_check" = x"yes"; then
+ if $PKG_CONFIG --exists "gconf-2.0 >= 2.4.0" >/dev/null 2>&1; then
+
+
+ # minimum supported version of pkg-config
+ xdt_cv_PKG_CONFIG_MIN_VERSION=0.9.0
+
+ # lookup pkg-config utility
+ if test x"$PKG_CONFIG" = x""; then
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+ ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+
+if test -n "$PKG_CONFIG"; then
+ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+echo "${ECHO_T}$PKG_CONFIG" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+
+ if test x"$PKG_CONFIG" = x"no"; then
+ echo "*** The pkg-config utility could not be found on your system."
+ echo "*** Make sure it is in your path, or set the PKG_CONFIG"
+ echo "*** environment variable to the full path to pkg-config."
+ echo "*** You can download pkg-config from the freedesktop.org"
+ echo "*** software repository at"
+ echo "***"
+ echo "*** http://www.freedesktop.org/software/pkgconfig"
+ echo "***"
+ exit 1
+ fi
+
+ # check pkg-config version
+ echo "$as_me:$LINENO: checking for pkg-config >= $xdt_cv_PKG_CONFIG_MIN_VERSION" >&5
+echo $ECHO_N "checking for pkg-config >= $xdt_cv_PKG_CONFIG_MIN_VERSION... $ECHO_C" >&6
+ if $PKG_CONFIG --atleast-pkgconfig-version $xdt_cv_PKG_CONFIG_MIN_VERSION; then
+ xdt_cv_PKG_CONFIG_VERSION=`$PKG_CONFIG --version`
+ echo "$as_me:$LINENO: result: $xdt_cv_PKG_CONFIG_VERSION" >&5
+echo "${ECHO_T}$xdt_cv_PKG_CONFIG_VERSION" >&6
+ else
+ xdt_cv_PKG_CONFIG_VERSION=`$PKG_CONFIG --version`
+ echo "$as_me:$LINENO: result: $xdt_cv_PKG_CONFIG_VERSION" >&5
+echo "${ECHO_T}$xdt_cv_PKG_CONFIG_VERSION" >&6
+ echo "*** Your version of pkg-config is too old. You need atleast"
+ echo "*** pkg-config $xdt_cv_PKG_CONFIG_MIN_VERSION or newer. You can download pkg-config "
+ echo "*** from the freedesktop.org software repository at"
+ echo "***"
+ echo "*** http://www.freedesktop.org/software/pkgconfig"
+ echo "***"
+ exit 1
+ fi
+ fi
+
+
+ echo "$as_me:$LINENO: checking for gconf-2.0 >= 2.4.0" >&5
+echo $ECHO_N "checking for gconf-2.0 >= 2.4.0... $ECHO_C" >&6
+ if $PKG_CONFIG "--atleast-version=2.4.0" "gconf-2.0" >/dev/null 2>&1; then
+ GCONF_VERSION=`$PKG_CONFIG --modversion "gconf-2.0"`
+ echo "$as_me:$LINENO: result: $GCONF_VERSION" >&5
+echo "${ECHO_T}$GCONF_VERSION" >&6
+
+ echo "$as_me:$LINENO: checking GCONF_CFLAGS" >&5
+echo $ECHO_N "checking GCONF_CFLAGS... $ECHO_C" >&6
+ GCONF_CFLAGS=`$PKG_CONFIG --cflags "gconf-2.0"`
+ echo "$as_me:$LINENO: result: $GCONF_CFLAGS" >&5
+echo "${ECHO_T}$GCONF_CFLAGS" >&6
+
+ echo "$as_me:$LINENO: checking GCONF_LIBS" >&5
+echo $ECHO_N "checking GCONF_LIBS... $ECHO_C" >&6
+ GCONF_LIBS=`$PKG_CONFIG --libs "gconf-2.0"`
+ echo "$as_me:$LINENO: result: $GCONF_LIBS" >&5
+echo "${ECHO_T}$GCONF_LIBS" >&6
+
+ GCONF_REQUIRED_VERSION=2.4.0
+
+
+
+
+
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_GCONF 1
+_ACEOF
+
+ GCONF_FOUND="yes"
+
+ elif $PKG_CONFIG --exists "gconf-2.0" >/dev/null 2>&1; then
+ xdg_cv_version=`$PKG_CONFIG --modversion "gconf-2.0"`
+ echo "$as_me:$LINENO: result: found, but $xdt_cv_version" >&5
+echo "${ECHO_T}found, but $xdt_cv_version" >&6
+
+
+ echo "*** The required package gconf-2.0 was found on your system,"
+ echo "*** but the installed version ($xdt_cv_version) is too old."
+ echo "*** Please upgrade gconf-2.0 to atleast version 2.4.0, or adjust"
+ echo "*** the PKG_CONFIG_PATH environment variable if you installed"
+ echo "*** the new version of the package in a nonstandard prefix so"
+ echo "*** pkg-config is able to find it."
+ exit 1
+
+ else
+ echo "$as_me:$LINENO: result: not found" >&5
+echo "${ECHO_T}not found" >&6
+
+
+ echo "*** The required package gconf-2.0 was not found on your system."
+ echo "*** Please install gconf-2.0 (atleast version 2.4.0) or adjust"
+ echo "*** the PKG_CONFIG_PATH environment variable if you"
+ echo "*** installed the package in a nonstandard prefix so that"
+ echo "*** pkg-config is able to find it."
+ exit 1
+
+ fi
+
+ else
+ echo "$as_me:$LINENO: checking for optional package gconf-2.0 >= 2.4.0" >&5
+echo $ECHO_N "checking for optional package gconf-2.0 >= 2.4.0... $ECHO_C" >&6
+ echo "$as_me:$LINENO: result: not found" >&5
+echo "${ECHO_T}not found" >&6
+ fi
+ else
+ echo "$as_me:$LINENO: checking for optional package gconf-2.0" >&5
+echo $ECHO_N "checking for optional package gconf-2.0... $ECHO_C" >&6
+ echo "$as_me:$LINENO: result: disabled" >&5
+echo "${ECHO_T}disabled" >&6
+ fi
+
+
+
+if test x"$GCONF_FOUND" = x"yes"; then
+ HAVE_GCONF_TRUE=
+ HAVE_GCONF_FALSE='#'
+else
+ HAVE_GCONF_TRUE='#'
+ HAVE_GCONF_FALSE=
+fi
+
+
+
+
+
+
+ # Check whether --enable-startup-notification or --disable-startup-notification was given.
+if test "${enable_startup_notification+set}" = set; then
+ enableval="$enable_startup_notification"
+ xdt_cv_LIBSTARTUP_NOTIFICATION_check=$enableval
+else
+ xdt_cv_LIBSTARTUP_NOTIFICATION_check=yes
+fi;
+
+ if test x"$xdt_cv_LIBSTARTUP_NOTIFICATION_check" = x"yes"; then
+ if $PKG_CONFIG --exists "libstartup-notification-1.0 >= 0.4" >/dev/null 2>&1; then
+
+
+ # minimum supported version of pkg-config
+ xdt_cv_PKG_CONFIG_MIN_VERSION=0.9.0
+
+ # lookup pkg-config utility
+ if test x"$PKG_CONFIG" = x""; then
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+ ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+
+if test -n "$PKG_CONFIG"; then
+ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+echo "${ECHO_T}$PKG_CONFIG" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+
+ if test x"$PKG_CONFIG" = x"no"; then
+ echo "*** The pkg-config utility could not be found on your system."
+ echo "*** Make sure it is in your path, or set the PKG_CONFIG"
+ echo "*** environment variable to the full path to pkg-config."
+ echo "*** You can download pkg-config from the freedesktop.org"
+ echo "*** software repository at"
+ echo "***"
+ echo "*** http://www.freedesktop.org/software/pkgconfig"
+ echo "***"
+ exit 1
+ fi
+
+ # check pkg-config version
+ echo "$as_me:$LINENO: checking for pkg-config >= $xdt_cv_PKG_CONFIG_MIN_VERSION" >&5
+echo $ECHO_N "checking for pkg-config >= $xdt_cv_PKG_CONFIG_MIN_VERSION... $ECHO_C" >&6
+ if $PKG_CONFIG --atleast-pkgconfig-version $xdt_cv_PKG_CONFIG_MIN_VERSION; then
+ xdt_cv_PKG_CONFIG_VERSION=`$PKG_CONFIG --version`
+ echo "$as_me:$LINENO: result: $xdt_cv_PKG_CONFIG_VERSION" >&5
+echo "${ECHO_T}$xdt_cv_PKG_CONFIG_VERSION" >&6
+ else
+ xdt_cv_PKG_CONFIG_VERSION=`$PKG_CONFIG --version`
+ echo "$as_me:$LINENO: result: $xdt_cv_PKG_CONFIG_VERSION" >&5
+echo "${ECHO_T}$xdt_cv_PKG_CONFIG_VERSION" >&6
+ echo "*** Your version of pkg-config is too old. You need atleast"
+ echo "*** pkg-config $xdt_cv_PKG_CONFIG_MIN_VERSION or newer. You can download pkg-config "
+ echo "*** from the freedesktop.org software repository at"
+ echo "***"
+ echo "*** http://www.freedesktop.org/software/pkgconfig"
+ echo "***"
+ exit 1
+ fi
+ fi
+
+
+ echo "$as_me:$LINENO: checking for libstartup-notification-1.0 >= 0.4" >&5
+echo $ECHO_N "checking for libstartup-notification-1.0 >= 0.4... $ECHO_C" >&6
+ if $PKG_CONFIG "--atleast-version=0.4" "libstartup-notification-1.0" >/dev/null 2>&1; then
+ LIBSTARTUP_NOTIFICATION_VERSION=`$PKG_CONFIG --modversion "libstartup-notification-1.0"`
+ echo "$as_me:$LINENO: result: $LIBSTARTUP_NOTIFICATION_VERSION" >&5
+echo "${ECHO_T}$LIBSTARTUP_NOTIFICATION_VERSION" >&6
+
+ echo "$as_me:$LINENO: checking LIBSTARTUP_NOTIFICATION_CFLAGS" >&5
+echo $ECHO_N "checking LIBSTARTUP_NOTIFICATION_CFLAGS... $ECHO_C" >&6
+ LIBSTARTUP_NOTIFICATION_CFLAGS=`$PKG_CONFIG --cflags "libstartup-notification-1.0"`
+ echo "$as_me:$LINENO: result: $LIBSTARTUP_NOTIFICATION_CFLAGS" >&5
+echo "${ECHO_T}$LIBSTARTUP_NOTIFICATION_CFLAGS" >&6
+
+ echo "$as_me:$LINENO: checking LIBSTARTUP_NOTIFICATION_LIBS" >&5
+echo $ECHO_N "checking LIBSTARTUP_NOTIFICATION_LIBS... $ECHO_C" >&6
+ LIBSTARTUP_NOTIFICATION_LIBS=`$PKG_CONFIG --libs "libstartup-notification-1.0"`
+ echo "$as_me:$LINENO: result: $LIBSTARTUP_NOTIFICATION_LIBS" >&5
+echo "${ECHO_T}$LIBSTARTUP_NOTIFICATION_LIBS" >&6
+
+ LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION=0.4
+
+
+
+
+
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LIBSTARTUP_NOTIFICATION 1
+_ACEOF
+
+ LIBSTARTUP_NOTIFICATION_FOUND="yes"
+
+ elif $PKG_CONFIG --exists "libstartup-notification-1.0" >/dev/null 2>&1; then
+ xdg_cv_version=`$PKG_CONFIG --modversion "libstartup-notification-1.0"`
+ echo "$as_me:$LINENO: result: found, but $xdt_cv_version" >&5
+echo "${ECHO_T}found, but $xdt_cv_version" >&6
+
+
+ echo "*** The required package libstartup-notification-1.0 was found on your system,"
+ echo "*** but the installed version ($xdt_cv_version) is too old."
+ echo "*** Please upgrade libstartup-notification-1.0 to atleast version 0.4, or adjust"
+ echo "*** the PKG_CONFIG_PATH environment variable if you installed"
+ echo "*** the new version of the package in a nonstandard prefix so"
+ echo "*** pkg-config is able to find it."
+ exit 1
+
+ else
+ echo "$as_me:$LINENO: result: not found" >&5
+echo "${ECHO_T}not found" >&6
+
+
+ echo "*** The required package libstartup-notification-1.0 was not found on your system."
+ echo "*** Please install libstartup-notification-1.0 (atleast version 0.4) or adjust"
+ echo "*** the PKG_CONFIG_PATH environment variable if you"
+ echo "*** installed the package in a nonstandard prefix so that"
+ echo "*** pkg-config is able to find it."
+ exit 1
+
+ fi
+
+ else
+ echo "$as_me:$LINENO: checking for optional package libstartup-notification-1.0 >= 0.4" >&5
+echo $ECHO_N "checking for optional package libstartup-notification-1.0 >= 0.4... $ECHO_C" >&6
+ echo "$as_me:$LINENO: result: not found" >&5
+echo "${ECHO_T}not found" >&6
+ fi
+ else
+ echo "$as_me:$LINENO: checking for optional package libstartup-notification-1.0" >&5
+echo $ECHO_N "checking for optional package libstartup-notification-1.0... $ECHO_C" >&6
+ echo "$as_me:$LINENO: result: disabled" >&5
+echo "${ECHO_T}disabled" >&6
+ fi
+
+
+
+if test x"$LIBSTARTUP_NOTIFICATION_FOUND" = x"yes"; then
+ HAVE_LIBSTARTUP_NOTIFICATION_TRUE=
+ HAVE_LIBSTARTUP_NOTIFICATION_FALSE='#'
+else
+ HAVE_LIBSTARTUP_NOTIFICATION_TRUE='#'
+ HAVE_LIBSTARTUP_NOTIFICATION_FALSE=
+fi
+
+
+
+LIBJPEG_LIBS=""
+LIBJPEG_CFLAGS=""
+echo "$as_me:$LINENO: checking for jpeg_start_decompress in -ljpeg" >&5
+echo $ECHO_N "checking for jpeg_start_decompress in -ljpeg... $ECHO_C" >&6
+if test "${ac_cv_lib_jpeg_jpeg_start_decompress+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ljpeg $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char jpeg_start_decompress ();
+int
+main ()
+{
+jpeg_start_decompress ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_jpeg_jpeg_start_decompress=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_jpeg_jpeg_start_decompress=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_jpeg_jpeg_start_decompress" >&5
+echo "${ECHO_T}$ac_cv_lib_jpeg_jpeg_start_decompress" >&6
+if test $ac_cv_lib_jpeg_jpeg_start_decompress = yes; then
+
+ if test "${ac_cv_header_jpeglib_h+set}" = set; then
+ echo "$as_me:$LINENO: checking for jpeglib.h" >&5
+echo $ECHO_N "checking for jpeglib.h... $ECHO_C" >&6
+if test "${ac_cv_header_jpeglib_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_jpeglib_h" >&5
+echo "${ECHO_T}$ac_cv_header_jpeglib_h" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking jpeglib.h usability" >&5
+echo $ECHO_N "checking jpeglib.h usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <jpeglib.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking jpeglib.h presence" >&5
+echo $ECHO_N "checking jpeglib.h presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <jpeglib.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: jpeglib.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: jpeglib.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: jpeglib.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: jpeglib.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: jpeglib.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: jpeglib.h: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: jpeglib.h: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: jpeglib.h: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: jpeglib.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: jpeglib.h: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: jpeglib.h: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: jpeglib.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: jpeglib.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: jpeglib.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: jpeglib.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: jpeglib.h: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ----------------------------- ##
+## Report this to benny at xfce.org ##
+## ----------------------------- ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for jpeglib.h" >&5
+echo $ECHO_N "checking for jpeglib.h... $ECHO_C" >&6
+if test "${ac_cv_header_jpeglib_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_header_jpeglib_h=$ac_header_preproc
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_jpeglib_h" >&5
+echo "${ECHO_T}$ac_cv_header_jpeglib_h" >&6
+
+fi
+if test $ac_cv_header_jpeglib_h = yes; then
+
+ LIBJPEG_LIBS="-ljpeg -lm"
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LIBJPEG 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_JPEGLIB_H 1
+_ACEOF
+
+
+fi
+
+
+
+else
+ -lm
+fi
+
+
+
+
+
+
+# Check whether --with-html-dir or --without-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 or --disable-gtk-doc was given.
+if test "${enable_gtk_doc+set}" = set; then
+ enableval="$enable_gtk_doc"
+
+else
+ enable_gtk_doc=no
+fi;
+
+ have_gtk_doc=no
+ if test x$enable_gtk_doc = xyes; then
+ if test -z "$PKG_CONFIG"; then
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+ ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+
+if test -n "$PKG_CONFIG"; then
+ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+echo "${ECHO_T}$PKG_CONFIG" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ fi
+ if test "$PKG_CONFIG" != "no" && $PKG_CONFIG --exists gtk-doc; then
+ have_gtk_doc=yes
+ fi
+
+ gtk_doc_min_version=1.0
+ if test "$have_gtk_doc" = yes; then
+ echo "$as_me:$LINENO: checking gtk-doc version >= $gtk_doc_min_version" >&5
+echo $ECHO_N "checking gtk-doc version >= $gtk_doc_min_version... $ECHO_C" >&6
+ if $PKG_CONFIG --atleast-version $gtk_doc_min_version gtk-doc; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ have_gtk_doc=no
+ fi
+ fi
+
+ if test "$have_gtk_doc" != yes; then
+ enable_gtk_doc=no
+ fi
+ 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 -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
+
+
+
+LIBFAM_CFLAGS=""
+LIBFAM_LIBS=""
+have_libfam=no
+
+
+ # minimum supported version of pkg-config
+ xdt_cv_PKG_CONFIG_MIN_VERSION=0.9.0
+
+ # lookup pkg-config utility
+ if test x"$PKG_CONFIG" = x""; then
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+ ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+
+if test -n "$PKG_CONFIG"; then
+ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+echo "${ECHO_T}$PKG_CONFIG" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+
+ if test x"$PKG_CONFIG" = x"no"; then
+ echo "*** The pkg-config utility could not be found on your system."
+ echo "*** Make sure it is in your path, or set the PKG_CONFIG"
+ echo "*** environment variable to the full path to pkg-config."
+ echo "*** You can download pkg-config from the freedesktop.org"
+ echo "*** software repository at"
+ echo "***"
+ echo "*** http://www.freedesktop.org/software/pkgconfig"
+ echo "***"
+ exit 1
+ fi
+
+ # check pkg-config version
+ echo "$as_me:$LINENO: checking for pkg-config >= $xdt_cv_PKG_CONFIG_MIN_VERSION" >&5
+echo $ECHO_N "checking for pkg-config >= $xdt_cv_PKG_CONFIG_MIN_VERSION... $ECHO_C" >&6
+ if $PKG_CONFIG --atleast-pkgconfig-version $xdt_cv_PKG_CONFIG_MIN_VERSION; then
+ xdt_cv_PKG_CONFIG_VERSION=`$PKG_CONFIG --version`
+ echo "$as_me:$LINENO: result: $xdt_cv_PKG_CONFIG_VERSION" >&5
+echo "${ECHO_T}$xdt_cv_PKG_CONFIG_VERSION" >&6
+ else
+ xdt_cv_PKG_CONFIG_VERSION=`$PKG_CONFIG --version`
+ echo "$as_me:$LINENO: result: $xdt_cv_PKG_CONFIG_VERSION" >&5
+echo "${ECHO_T}$xdt_cv_PKG_CONFIG_VERSION" >&6
+ echo "*** Your version of pkg-config is too old. You need atleast"
+ echo "*** pkg-config $xdt_cv_PKG_CONFIG_MIN_VERSION or newer. You can download pkg-config "
+ echo "*** from the freedesktop.org software repository at"
+ echo "***"
+ echo "*** http://www.freedesktop.org/software/pkgconfig"
+ echo "***"
+ exit 1
+ fi
+ fi
+
+
+ echo "$as_me:$LINENO: checking for gamin >= 0.1.0" >&5
+echo $ECHO_N "checking for gamin >= 0.1.0... $ECHO_C" >&6
+ if $PKG_CONFIG "--atleast-version=0.1.0" "gamin" >/dev/null 2>&1; then
+ LIBFAM_VERSION=`$PKG_CONFIG --modversion "gamin"`
+ echo "$as_me:$LINENO: result: $LIBFAM_VERSION" >&5
+echo "${ECHO_T}$LIBFAM_VERSION" >&6
+
+ echo "$as_me:$LINENO: checking LIBFAM_CFLAGS" >&5
+echo $ECHO_N "checking LIBFAM_CFLAGS... $ECHO_C" >&6
+ LIBFAM_CFLAGS=`$PKG_CONFIG --cflags "gamin"`
+ echo "$as_me:$LINENO: result: $LIBFAM_CFLAGS" >&5
+echo "${ECHO_T}$LIBFAM_CFLAGS" >&6
+
+ echo "$as_me:$LINENO: checking LIBFAM_LIBS" >&5
+echo $ECHO_N "checking LIBFAM_LIBS... $ECHO_C" >&6
+ LIBFAM_LIBS=`$PKG_CONFIG --libs "gamin"`
+ echo "$as_me:$LINENO: result: $LIBFAM_LIBS" >&5
+echo "${ECHO_T}$LIBFAM_LIBS" >&6
+
+ LIBFAM_REQUIRED_VERSION=0.1.0
+
+
+
+
+
+
+ have_libfam=yes
+ elif $PKG_CONFIG --exists "gamin" >/dev/null 2>&1; then
+ xdg_cv_version=`$PKG_CONFIG --modversion "gamin"`
+ echo "$as_me:$LINENO: result: found, but $xdt_cv_version" >&5
+echo "${ECHO_T}found, but $xdt_cv_version" >&6
+
+
+
+for ac_header in fam.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ----------------------------- ##
+## Report this to benny at xfce.org ##
+## ----------------------------- ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+ echo "$as_me:$LINENO: checking for FAMOpen in -lfam" >&5
+echo $ECHO_N "checking for FAMOpen in -lfam... $ECHO_C" >&6
+if test "${ac_cv_lib_fam_FAMOpen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lfam $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char FAMOpen ();
+int
+main ()
+{
+FAMOpen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_fam_FAMOpen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_fam_FAMOpen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_fam_FAMOpen" >&5
+echo "${ECHO_T}$ac_cv_lib_fam_FAMOpen" >&6
+if test $ac_cv_lib_fam_FAMOpen = yes; then
+ have_libfam="yes" LIBFAM_LIBS="-lfam"
+fi
+
+
+fi
+
+done
+
+
+ else
+ echo "$as_me:$LINENO: result: not found" >&5
+echo "${ECHO_T}not found" >&6
+
+
+
+for ac_header in fam.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ----------------------------- ##
+## Report this to benny at xfce.org ##
+## ----------------------------- ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+ echo "$as_me:$LINENO: checking for FAMOpen in -lfam" >&5
+echo $ECHO_N "checking for FAMOpen in -lfam... $ECHO_C" >&6
+if test "${ac_cv_lib_fam_FAMOpen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lfam $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char FAMOpen ();
+int
+main ()
+{
+FAMOpen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_fam_FAMOpen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_fam_FAMOpen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_fam_FAMOpen" >&5
+echo "${ECHO_T}$ac_cv_lib_fam_FAMOpen" >&6
+if test $ac_cv_lib_fam_FAMOpen = yes; then
+ have_libfam="yes" LIBFAM_LIBS="-lfam"
+fi
+
+
+fi
+
+done
+
+
+ fi
+
+if test x"$have_libfam" = x"yes"; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_FAM_H 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LIBFAM 1
+_ACEOF
+
+
+ save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBFAM_LIBS"
+
+for ac_func in FAMNoExists
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* 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_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ LIBS="$save_LIBS"
+fi
+
+
+
+echo "$as_me:$LINENO: checking for system flavour" >&5
+echo $ECHO_N "checking for system flavour... $ECHO_C" >&6
+case "$target_os" in
+*bsd*)
+ FLAVOUR="bsd"
+ ;;
+*)
+ FLAVOUR="sysv"
+ ;;
+esac
+echo "$as_me:$LINENO: result: $FLAVOUR" >&5
+echo "${ECHO_T}$FLAVOUR" >&6
+
+ ac_config_links="$ac_config_links thunar-vfs/thunar-vfs-volume-impl.c:thunar-vfs/thunar-vfs-volume-$FLAVOUR.c thunar-vfs/thunar-vfs-volume-impl.h:thunar-vfs/thunar-vfs-volume-$FLAVOUR.h"
+
+
+# Check whether --enable-debug or --disable-debug was given.
+if test "${enable_debug+set}" = set; then
+ enableval="$enable_debug"
+
+else
+ enable_debug=yes
+fi;
+echo "$as_me:$LINENO: checking whether to enable debugging support" >&5
+echo $ECHO_N "checking whether to enable debugging support... $ECHO_C" >&6
+if test x"$enable_debug" != x"no"; then
+ PLATFORM_CFLAGS="$PLATFORM_CFLAGS -O0 -g3 -DG_DISABLE_DEPRECATED -Werror -Wall"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+ save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -fno-strict-aliasing"
+ echo "$as_me:$LINENO: checking whether $CC accepts -fno-strict-aliasing" >&5
+echo $ECHO_N "checking whether $CC accepts -fno-strict-aliasing... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+int x;
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ PLATFORM_CFLAGS="$PLATFORM_CFLAGS -fno-strict-aliasing"
+
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ CFLAGS="$save_CFLAGS"
+else
+ PLATFORM_CPPFLAGS="$PLATFORM_CPPFLAGS -DG_DISABLE_ASSERT -DG_DISABLE_CAST_CHECKS -DG_DISABLE_CHECKS"
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+
+ echo "$as_me:$LINENO: checking whether $LD accepts -O1" >&5
+echo $ECHO_N "checking whether $LD accepts -O1... $ECHO_C" >&6
+ case `$LD -O1 -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -Wl,-O1"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ ;;
+ *)
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ ;;
+ esac
+fi
+
+# Check whether --enable-visibility or --disable-visibility was given.
+if test "${enable_visibility+set}" = set; then
+ enableval="$enable_visibility"
+
+else
+ enable_visibility=yes
+fi;
+have_gnuc_visibility=no
+if test x"$enable_visibility" != x"no"; then
+ echo "$as_me:$LINENO: checking whether $CC supports the GNUC visibility attribute" >&5
+echo $ECHO_N "checking whether $CC supports the GNUC visibility attribute... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ void __attribute__ ((visibility("default"))) test_default (void) {}
+ void __attribute__ ((visibility("hidden"))) test_hidden (void) {}
+ int main (int argc, char **argv) { test_default (); test_hidden (); return 0; }
+
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+ have_gnuc_visibility=yes
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+if test x"$have_gnuc_visibility" = x"yes"; then
+ PLATFORM_CPPFLAGS="$PLATFORM_CPPFLAGS -DHAVE_GNUC_VISIBILITY"
+fi
+
+
+if test x"$have_gnuc_visibility" = x"yes"; then
+ HAVE_GNUC_VISIBILITY_TRUE=
+ HAVE_GNUC_VISIBILITY_FALSE='#'
+else
+ HAVE_GNUC_VISIBILITY_TRUE='#'
+ HAVE_GNUC_VISIBILITY_FALSE=
+fi
+
+
+
+
+
+
+ ac_config_files="$ac_config_files Makefile docs/Makefile docs/design/Makefile docs/papers/Makefile docs/reference/Makefile docs/reference/thunar-vfs/Makefile docs/reference/thunar-vfs/version.xml docs/reference/thunarx/Makefile docs/reference/thunarx/version.xml examples/Makefile examples/open-terminal-here/Makefile icons/Makefile icons/24x24/Makefile icons/48x48/Makefile po/Makefile.in tdb/Makefile tdb/tdbconfig.h pixmaps/Makefile tests/Makefile tests/data/Makefile thunar/Makefile thunar-vfs/Makefile thunar-vfs/thunar-vfs-1.pc thunar-vfs/thunar-vfs-config.h thunarx/Makefile thunarx/thunarx-1.pc thunarx/thunarx-config.h"
+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, don't put newlines in cache variables' values.
+# 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.
+{
+ (set) 2>&1 |
+ case `(ac_space=' '; set | grep ac_space) 2>&1` in
+ *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 \
+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+ ;;
+ esac;
+} |
+ sed '
+ t clear
+ : clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ : end' >>confcache
+if diff $cache_file confcache >/dev/null 2>&1; then :; else
+ if test -w $cache_file; then
+ test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
+ cat confcache >$cache_file
+ else
+ echo "not updating unwritable cache $cache_file"
+ 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}'
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ 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[ ]*=/{
+s/:*\$(srcdir):*/:/;
+s/:*\${srcdir}:*/:/;
+s/:*@srcdir@:*/:/;
+s/^\([^=]*=[ ]*\):*/\1/;
+s/:*$//;
+s/^[^=]*=[ ]*$//;
+}'
+fi
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_i=`echo "$ac_i" |
+ sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
+ # 2. Add them.
+ ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
+ ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+
+ mv -f po/POTFILES po/POTFILES.tmp
+ sed -e '/\[encoding.*\]/d' -e 's/\[.*\] *//' < po/POTFILES.tmp > po/POTFILES
+ rm -f po/POTFILES.tmp
+
+
+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${HAVE_CAIRO_TRUE}" && test -z "${HAVE_CAIRO_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"HAVE_CAIRO\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"HAVE_CAIRO\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${HAVE_GCONF_TRUE}" && test -z "${HAVE_GCONF_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"HAVE_GCONF\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"HAVE_GCONF\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${HAVE_LIBSTARTUP_NOTIFICATION_TRUE}" && test -z "${HAVE_LIBSTARTUP_NOTIFICATION_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"HAVE_LIBSTARTUP_NOTIFICATION\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"HAVE_LIBSTARTUP_NOTIFICATION\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${ENABLE_GTK_DOC_TRUE}" && test -z "${ENABLE_GTK_DOC_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"ENABLE_GTK_DOC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"ENABLE_GTK_DOC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${GTK_DOC_USE_LIBTOOL_TRUE}" && test -z "${GTK_DOC_USE_LIBTOOL_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"GTK_DOC_USE_LIBTOOL\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"GTK_DOC_USE_LIBTOOL\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${HAVE_GNUC_VISIBILITY_TRUE}" && test -z "${HAVE_GNUC_VISIBILITY_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"HAVE_GNUC_VISIBILITY\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"HAVE_GNUC_VISIBILITY\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+: ${CONFIG_STATUS=./config.status}
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
+#! $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}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+## --------------------- ##
+## M4sh Initialization. ##
+## --------------------- ##
+
+# 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+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+ set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+ LC_TELEPHONE LC_TIME
+do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+ $as_unset $as_var
+ fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; 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
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)$' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+ /^X\/\(\/\/\)$/{ s//\1/; q; }
+ /^X\/\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# 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
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" || {
+ # Find who we are. Look in the path if we contain no path at all
+ # relative or not.
+ 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
+
+ ;;
+ 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
+ { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
+echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ case $CONFIG_SHELL in
+ '')
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for as_base in sh bash ksh sh5; do
+ case $as_dir in
+ /*)
+ if ("$as_dir/$as_base" -c '
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
+ $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+ $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+ CONFIG_SHELL=$as_dir/$as_base
+ export CONFIG_SHELL
+ exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+ fi;;
+ esac
+ done
+done
+;;
+ esac
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+ # line-number line before each line; the second 'sed' does the real
+ # work. The second script uses 'N' to pair each line-number line
+ # with the numbered line, and appends trailing '-' during
+ # substitution so that $LINENO is not a special case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
+ sed '=' <$as_myself |
+ sed '
+ N
+ s,$,-,
+ : loop
+ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+ t loop
+ s,-$,,
+ s,^['$as_cr_digits']*\n,,
+ ' >$as_me.lineno &&
+ chmod +x $as_me.lineno ||
+ { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
+echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
+ { (exit 1); exit 1; }; }
+
+ # 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 sensible to this).
+ . ./$as_me.lineno
+ # Exit status is that of the last command.
+ exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+ *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T=' ' ;;
+ *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+ *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+ # We could just check for DJGPP; but this test a) works b) is more generic
+ # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+ if test -f conf$$.exe; then
+ # Don't use ln at all; we don't have any links
+ as_ln_s='cp -p'
+ else
+ as_ln_s='ln -s'
+ fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# 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'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" $as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+exec 6>&1
+
+# Open the log real soon, to keep \$[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling. Logging --version etc. is OK.
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+} >&5
+cat >&5 <<_CSEOF
+
+This file was extended by Thunar $as_me 0.1.4pre-alpha-r18850, which was
+generated by GNU Autoconf 2.59. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+_CSEOF
+echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
+echo >&5
+_ACEOF
+
+# Files that config.status was made for.
+if test -n "$ac_config_files"; then
+ echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_headers"; then
+ echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_links"; then
+ echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_commands"; then
+ echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+ -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
+ --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 links:
+$config_links
+
+Configuration commands:
+$config_commands
+
+Report bugs to <bug-autoconf at gnu.org>."
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+ac_cs_version="\\
+Thunar config.status 0.1.4pre-alpha-r18850
+configured by $0, generated by GNU Autoconf 2.59,
+ with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+srcdir=$srcdir
+INSTALL="$INSTALL"
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# If no file are specified by the user, then we need to provide default
+# value. By we need to know if files were specified by the user.
+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=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ *) # This is not an option, so the user has probably given explicit
+ # arguments.
+ ac_option=$1
+ ac_need_defaults=false;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --vers* | -V )
+ echo "$ac_cs_version"; exit 0 ;;
+ --he | --h)
+ # Conflict between --help and --header
+ { { echo "$as_me:$LINENO: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2;}
+ { (exit 1); exit 1; }; };;
+ --help | --hel | -h )
+ echo "$ac_cs_usage"; exit 0 ;;
+ --debug | --d* | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+ ac_need_defaults=false;;
+ --header | --heade | --head | --hea )
+ $ac_shift
+ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+ ac_need_defaults=false;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2;}
+ { (exit 1); exit 1; }; } ;;
+
+ *) ac_config_targets="$ac_config_targets $1" ;;
+
+ 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
+if \$ac_cs_recheck; then
+ echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+ exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+fi
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+#
+# INIT-COMMANDS section.
+#
+
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+INTLTOOL_PERL='${INTLTOOL_PERL}' ac_aux_dir=${ac_aux_dir}
+INTLTOOL_EXTRACT='${INTLTOOL_EXTRACT}' ICONV='${INTLTOOL_ICONV}'
+MSGFMT='${INTLTOOL_MSGFMT}' MSGMERGE='${INTLTOOL_MSGMERGE}'
+XGETTEXT='${INTLTOOL_XGETTEXT}'
+
+
+_ACEOF
+
+
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_config_target in $ac_config_targets
+do
+ case "$ac_config_target" in
+ # Handling of arguments.
+ "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "docs/Makefile" ) CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;;
+ "docs/design/Makefile" ) CONFIG_FILES="$CONFIG_FILES docs/design/Makefile" ;;
+ "docs/papers/Makefile" ) CONFIG_FILES="$CONFIG_FILES docs/papers/Makefile" ;;
+ "docs/reference/Makefile" ) CONFIG_FILES="$CONFIG_FILES docs/reference/Makefile" ;;
+ "docs/reference/thunar-vfs/Makefile" ) CONFIG_FILES="$CONFIG_FILES docs/reference/thunar-vfs/Makefile" ;;
+ "docs/reference/thunar-vfs/version.xml" ) CONFIG_FILES="$CONFIG_FILES docs/reference/thunar-vfs/version.xml" ;;
+ "docs/reference/thunarx/Makefile" ) CONFIG_FILES="$CONFIG_FILES docs/reference/thunarx/Makefile" ;;
+ "docs/reference/thunarx/version.xml" ) CONFIG_FILES="$CONFIG_FILES docs/reference/thunarx/version.xml" ;;
+ "examples/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;;
+ "examples/open-terminal-here/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/open-terminal-here/Makefile" ;;
+ "icons/Makefile" ) CONFIG_FILES="$CONFIG_FILES icons/Makefile" ;;
+ "icons/24x24/Makefile" ) CONFIG_FILES="$CONFIG_FILES icons/24x24/Makefile" ;;
+ "icons/48x48/Makefile" ) CONFIG_FILES="$CONFIG_FILES icons/48x48/Makefile" ;;
+ "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
+ "tdb/Makefile" ) CONFIG_FILES="$CONFIG_FILES tdb/Makefile" ;;
+ "tdb/tdbconfig.h" ) CONFIG_FILES="$CONFIG_FILES tdb/tdbconfig.h" ;;
+ "pixmaps/Makefile" ) CONFIG_FILES="$CONFIG_FILES pixmaps/Makefile" ;;
+ "tests/Makefile" ) CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
+ "tests/data/Makefile" ) CONFIG_FILES="$CONFIG_FILES tests/data/Makefile" ;;
+ "thunar/Makefile" ) CONFIG_FILES="$CONFIG_FILES thunar/Makefile" ;;
+ "thunar-vfs/Makefile" ) CONFIG_FILES="$CONFIG_FILES thunar-vfs/Makefile" ;;
+ "thunar-vfs/thunar-vfs-1.pc" ) CONFIG_FILES="$CONFIG_FILES thunar-vfs/thunar-vfs-1.pc" ;;
+ "thunar-vfs/thunar-vfs-config.h" ) CONFIG_FILES="$CONFIG_FILES thunar-vfs/thunar-vfs-config.h" ;;
+ "thunarx/Makefile" ) CONFIG_FILES="$CONFIG_FILES thunarx/Makefile" ;;
+ "thunarx/thunarx-1.pc" ) CONFIG_FILES="$CONFIG_FILES thunarx/thunarx-1.pc" ;;
+ "thunarx/thunarx-config.h" ) CONFIG_FILES="$CONFIG_FILES thunarx/thunarx-config.h" ;;
+ "thunar-vfs/thunar-vfs-volume-impl.c" ) CONFIG_LINKS="$CONFIG_LINKS thunar-vfs/thunar-vfs-volume-impl.c:thunar-vfs/thunar-vfs-volume-$FLAVOUR.c" ;;
+ "thunar-vfs/thunar-vfs-volume-impl.h" ) CONFIG_LINKS="$CONFIG_LINKS thunar-vfs/thunar-vfs-volume-impl.h:thunar-vfs/thunar-vfs-volume-$FLAVOUR.h" ;;
+ "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+ "intltool" ) CONFIG_COMMANDS="$CONFIG_COMMANDS intltool" ;;
+ "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
+ "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+ { (exit 1); exit 1; }; };;
+ 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_LINKS+set}" = set || CONFIG_LINKS=$config_links
+ 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 to put it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Create a temporary directory, and hook for its removal unless debugging.
+$debug ||
+{
+ trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
+ trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+} ||
+{
+ tmp=./confstat$$-$RANDOM
+ (umask 077 && mkdir $tmp)
+} ||
+{
+ echo "$me: cannot create a temporary directory in ." >&2
+ { (exit 1); exit 1; }
+}
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+
+#
+# CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "\$CONFIG_FILES"; then
+ # Protect against being on the right side of a sed subst in config.status.
+ sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
+ s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
+s, at SHELL@,$SHELL,;t t
+s, at PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
+s, at PACKAGE_NAME@,$PACKAGE_NAME,;t t
+s, at PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
+s, at PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
+s, at PACKAGE_STRING@,$PACKAGE_STRING,;t t
+s, at PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
+s, at exec_prefix@,$exec_prefix,;t t
+s, at prefix@,$prefix,;t t
+s, at program_transform_name@,$program_transform_name,;t t
+s, at bindir@,$bindir,;t t
+s, at sbindir@,$sbindir,;t t
+s, at libexecdir@,$libexecdir,;t t
+s, at datadir@,$datadir,;t t
+s, at sysconfdir@,$sysconfdir,;t t
+s, at sharedstatedir@,$sharedstatedir,;t t
+s, at localstatedir@,$localstatedir,;t t
+s, at libdir@,$libdir,;t t
+s, at includedir@,$includedir,;t t
+s, at oldincludedir@,$oldincludedir,;t t
+s, at infodir@,$infodir,;t t
+s, at mandir@,$mandir,;t t
+s, at build_alias@,$build_alias,;t t
+s, at host_alias@,$host_alias,;t t
+s, at target_alias@,$target_alias,;t t
+s, at DEFS@,$DEFS,;t t
+s, at ECHO_C@,$ECHO_C,;t t
+s, at ECHO_N@,$ECHO_N,;t t
+s, at ECHO_T@,$ECHO_T,;t t
+s, at LIBS@,$LIBS,;t t
+s, at build@,$build,;t t
+s, at build_cpu@,$build_cpu,;t t
+s, at build_vendor@,$build_vendor,;t t
+s, at build_os@,$build_os,;t t
+s, at host@,$host,;t t
+s, at host_cpu@,$host_cpu,;t t
+s, at host_vendor@,$host_vendor,;t t
+s, at host_os@,$host_os,;t t
+s, at target@,$target,;t t
+s, at target_cpu@,$target_cpu,;t t
+s, at target_vendor@,$target_vendor,;t t
+s, at target_os@,$target_os,;t t
+s, at INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
+s, at INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
+s, at INSTALL_DATA@,$INSTALL_DATA,;t t
+s, at CYGPATH_W@,$CYGPATH_W,;t t
+s, at PACKAGE@,$PACKAGE,;t t
+s, at VERSION@,$VERSION,;t t
+s, at ACLOCAL@,$ACLOCAL,;t t
+s, at AUTOCONF@,$AUTOCONF,;t t
+s, at AUTOMAKE@,$AUTOMAKE,;t t
+s, at AUTOHEADER@,$AUTOHEADER,;t t
+s, at MAKEINFO@,$MAKEINFO,;t t
+s, at install_sh@,$install_sh,;t t
+s, at STRIP@,$STRIP,;t t
+s, at ac_ct_STRIP@,$ac_ct_STRIP,;t t
+s, at INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t
+s, at mkdir_p@,$mkdir_p,;t t
+s, at AWK@,$AWK,;t t
+s, at SET_MAKE@,$SET_MAKE,;t t
+s, at am__leading_dot@,$am__leading_dot,;t t
+s, at AMTAR@,$AMTAR,;t t
+s, at am__tar@,$am__tar,;t t
+s, at am__untar@,$am__untar,;t t
+s, at MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t
+s, at MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t
+s, at MAINT@,$MAINT,;t t
+s, at CC@,$CC,;t t
+s, at CFLAGS@,$CFLAGS,;t t
+s, at LDFLAGS@,$LDFLAGS,;t t
+s, at CPPFLAGS@,$CPPFLAGS,;t t
+s, at ac_ct_CC@,$ac_ct_CC,;t t
+s, at EXEEXT@,$EXEEXT,;t t
+s, at OBJEXT@,$OBJEXT,;t t
+s, at DEPDIR@,$DEPDIR,;t t
+s, at am__include@,$am__include,;t t
+s, at am__quote@,$am__quote,;t t
+s, at AMDEP_TRUE@,$AMDEP_TRUE,;t t
+s, at AMDEP_FALSE@,$AMDEP_FALSE,;t t
+s, at AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t
+s, at CCDEPMODE@,$CCDEPMODE,;t t
+s, at am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t
+s, at am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t
+s, at CPP@,$CPP,;t t
+s, at EGREP@,$EGREP,;t t
+s, at INTLTOOL_DESKTOP_RULE@,$INTLTOOL_DESKTOP_RULE,;t t
+s, at INTLTOOL_DIRECTORY_RULE@,$INTLTOOL_DIRECTORY_RULE,;t t
+s, at INTLTOOL_KEYS_RULE@,$INTLTOOL_KEYS_RULE,;t t
+s, at INTLTOOL_PROP_RULE@,$INTLTOOL_PROP_RULE,;t t
+s, at INTLTOOL_OAF_RULE@,$INTLTOOL_OAF_RULE,;t t
+s, at INTLTOOL_PONG_RULE@,$INTLTOOL_PONG_RULE,;t t
+s, at INTLTOOL_SERVER_RULE@,$INTLTOOL_SERVER_RULE,;t t
+s, at INTLTOOL_SHEET_RULE@,$INTLTOOL_SHEET_RULE,;t t
+s, at INTLTOOL_SOUNDLIST_RULE@,$INTLTOOL_SOUNDLIST_RULE,;t t
+s, at INTLTOOL_UI_RULE@,$INTLTOOL_UI_RULE,;t t
+s, at INTLTOOL_XAM_RULE@,$INTLTOOL_XAM_RULE,;t t
+s, at INTLTOOL_KBD_RULE@,$INTLTOOL_KBD_RULE,;t t
+s, at INTLTOOL_XML_RULE@,$INTLTOOL_XML_RULE,;t t
+s, at INTLTOOL_XML_NOMERGE_RULE@,$INTLTOOL_XML_NOMERGE_RULE,;t t
+s, at INTLTOOL_CAVES_RULE@,$INTLTOOL_CAVES_RULE,;t t
+s, at INTLTOOL_SCHEMAS_RULE@,$INTLTOOL_SCHEMAS_RULE,;t t
+s, at INTLTOOL_THEME_RULE@,$INTLTOOL_THEME_RULE,;t t
+s, at INTLTOOL_EXTRACT@,$INTLTOOL_EXTRACT,;t t
+s, at INTLTOOL_MERGE@,$INTLTOOL_MERGE,;t t
+s, at INTLTOOL_UPDATE@,$INTLTOOL_UPDATE,;t t
+s, at INTLTOOL_PERL@,$INTLTOOL_PERL,;t t
+s, at INTLTOOL_ICONV@,$INTLTOOL_ICONV,;t t
+s, at INTLTOOL_MSGFMT@,$INTLTOOL_MSGFMT,;t t
+s, at INTLTOOL_MSGMERGE@,$INTLTOOL_MSGMERGE,;t t
+s, at INTLTOOL_XGETTEXT@,$INTLTOOL_XGETTEXT,;t t
+s, at PERL@,$PERL,;t t
+s, at LN_S@,$LN_S,;t t
+s, at ECHO@,$ECHO,;t t
+s, at AR@,$AR,;t t
+s, at ac_ct_AR@,$ac_ct_AR,;t t
+s, at RANLIB@,$RANLIB,;t t
+s, at ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
+s, at CXX@,$CXX,;t t
+s, at CXXFLAGS@,$CXXFLAGS,;t t
+s, at ac_ct_CXX@,$ac_ct_CXX,;t t
+s, at CXXDEPMODE@,$CXXDEPMODE,;t t
+s, at am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t
+s, at am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t
+s, at CXXCPP@,$CXXCPP,;t t
+s, at F77@,$F77,;t t
+s, at FFLAGS@,$FFLAGS,;t t
+s, at ac_ct_F77@,$ac_ct_F77,;t t
+s, at LIBTOOL@,$LIBTOOL,;t t
+s, at THUNAR_VERINFO@,$THUNAR_VERINFO,;t t
+s, at THUNAR_VERSION_API@,$THUNAR_VERSION_API,;t t
+s, at THUNAR_VERSION_MAJOR@,$THUNAR_VERSION_MAJOR,;t t
+s, at THUNAR_VERSION_MINOR@,$THUNAR_VERSION_MINOR,;t t
+s, at THUNAR_VERSION_MICRO@,$THUNAR_VERSION_MICRO,;t t
+s, at TDB_U32_TYPE@,$TDB_U32_TYPE,;t t
+s, at GETTEXT_PACKAGE@,$GETTEXT_PACKAGE,;t t
+s, at USE_NLS@,$USE_NLS,;t t
+s, at MSGFMT@,$MSGFMT,;t t
+s, at GMSGFMT@,$GMSGFMT,;t t
+s, at XGETTEXT@,$XGETTEXT,;t t
+s, at CATALOGS@,$CATALOGS,;t t
+s, at CATOBJEXT@,$CATOBJEXT,;t t
+s, at DATADIRNAME@,$DATADIRNAME,;t t
+s, at GMOFILES@,$GMOFILES,;t t
+s, at INSTOBJEXT@,$INSTOBJEXT,;t t
+s, at INTLLIBS@,$INTLLIBS,;t t
+s, at PO_IN_DATADIR_TRUE@,$PO_IN_DATADIR_TRUE,;t t
+s, at PO_IN_DATADIR_FALSE@,$PO_IN_DATADIR_FALSE,;t t
+s, at POFILES@,$POFILES,;t t
+s, at POSUB@,$POSUB,;t t
+s, at MKINSTALLDIRS@,$MKINSTALLDIRS,;t t
+s, at localedir@,$localedir,;t t
+s, at XGETTEXT_ARGS@,$XGETTEXT_ARGS,;t t
+s, at PKG_CONFIG@,$PKG_CONFIG,;t t
+s, at EXO_VERSION@,$EXO_VERSION,;t t
+s, at EXO_CFLAGS@,$EXO_CFLAGS,;t t
+s, at EXO_LIBS@,$EXO_LIBS,;t t
+s, at EXO_REQUIRED_VERSION@,$EXO_REQUIRED_VERSION,;t t
+s, at GLIB_VERSION@,$GLIB_VERSION,;t t
+s, at GLIB_CFLAGS@,$GLIB_CFLAGS,;t t
+s, at GLIB_LIBS@,$GLIB_LIBS,;t t
+s, at GLIB_REQUIRED_VERSION@,$GLIB_REQUIRED_VERSION,;t t
+s, at GTHREAD_VERSION@,$GTHREAD_VERSION,;t t
+s, at GTHREAD_CFLAGS@,$GTHREAD_CFLAGS,;t t
+s, at GTHREAD_LIBS@,$GTHREAD_LIBS,;t t
+s, at GTHREAD_REQUIRED_VERSION@,$GTHREAD_REQUIRED_VERSION,;t t
+s, at GTK_VERSION@,$GTK_VERSION,;t t
+s, at GTK_CFLAGS@,$GTK_CFLAGS,;t t
+s, at GTK_LIBS@,$GTK_LIBS,;t t
+s, at GTK_REQUIRED_VERSION@,$GTK_REQUIRED_VERSION,;t t
+s, at LIBPNG_VERSION@,$LIBPNG_VERSION,;t t
+s, at LIBPNG_CFLAGS@,$LIBPNG_CFLAGS,;t t
+s, at LIBPNG_LIBS@,$LIBPNG_LIBS,;t t
+s, at LIBPNG_REQUIRED_VERSION@,$LIBPNG_REQUIRED_VERSION,;t t
+s, at CAIRO_VERSION@,$CAIRO_VERSION,;t t
+s, at CAIRO_CFLAGS@,$CAIRO_CFLAGS,;t t
+s, at CAIRO_LIBS@,$CAIRO_LIBS,;t t
+s, at CAIRO_REQUIRED_VERSION@,$CAIRO_REQUIRED_VERSION,;t t
+s, at HAVE_CAIRO_TRUE@,$HAVE_CAIRO_TRUE,;t t
+s, at HAVE_CAIRO_FALSE@,$HAVE_CAIRO_FALSE,;t t
+s, at GCONF_VERSION@,$GCONF_VERSION,;t t
+s, at GCONF_CFLAGS@,$GCONF_CFLAGS,;t t
+s, at GCONF_LIBS@,$GCONF_LIBS,;t t
+s, at GCONF_REQUIRED_VERSION@,$GCONF_REQUIRED_VERSION,;t t
+s, at HAVE_GCONF_TRUE@,$HAVE_GCONF_TRUE,;t t
+s, at HAVE_GCONF_FALSE@,$HAVE_GCONF_FALSE,;t t
+s, at LIBSTARTUP_NOTIFICATION_VERSION@,$LIBSTARTUP_NOTIFICATION_VERSION,;t t
+s, at LIBSTARTUP_NOTIFICATION_CFLAGS@,$LIBSTARTUP_NOTIFICATION_CFLAGS,;t t
+s, at LIBSTARTUP_NOTIFICATION_LIBS@,$LIBSTARTUP_NOTIFICATION_LIBS,;t t
+s, at LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION@,$LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION,;t t
+s, at HAVE_LIBSTARTUP_NOTIFICATION_TRUE@,$HAVE_LIBSTARTUP_NOTIFICATION_TRUE,;t t
+s, at HAVE_LIBSTARTUP_NOTIFICATION_FALSE@,$HAVE_LIBSTARTUP_NOTIFICATION_FALSE,;t t
+s, at LIBJPEG_CFLAGS@,$LIBJPEG_CFLAGS,;t t
+s, at LIBJPEG_LIBS@,$LIBJPEG_LIBS,;t t
+s, at HTML_DIR@,$HTML_DIR,;t t
+s, at ENABLE_GTK_DOC_TRUE@,$ENABLE_GTK_DOC_TRUE,;t t
+s, at ENABLE_GTK_DOC_FALSE@,$ENABLE_GTK_DOC_FALSE,;t t
+s, at GTK_DOC_USE_LIBTOOL_TRUE@,$GTK_DOC_USE_LIBTOOL_TRUE,;t t
+s, at GTK_DOC_USE_LIBTOOL_FALSE@,$GTK_DOC_USE_LIBTOOL_FALSE,;t t
+s, at LIBFAM_VERSION@,$LIBFAM_VERSION,;t t
+s, at LIBFAM_CFLAGS@,$LIBFAM_CFLAGS,;t t
+s, at LIBFAM_LIBS@,$LIBFAM_LIBS,;t t
+s, at LIBFAM_REQUIRED_VERSION@,$LIBFAM_REQUIRED_VERSION,;t t
+s, at HAVE_GNUC_VISIBILITY_TRUE@,$HAVE_GNUC_VISIBILITY_TRUE,;t t
+s, at HAVE_GNUC_VISIBILITY_FALSE@,$HAVE_GNUC_VISIBILITY_FALSE,;t t
+s, at PLATFORM_CFLAGS@,$PLATFORM_CFLAGS,;t t
+s, at PLATFORM_CPPFLAGS@,$PLATFORM_CPPFLAGS,;t t
+s, at PLATFORM_LDFLAGS@,$PLATFORM_LDFLAGS,;t t
+s, at LIBOBJS@,$LIBOBJS,;t t
+s, at LTLIBOBJS@,$LTLIBOBJS,;t t
+CEOF
+
+_ACEOF
+
+ cat >>$CONFIG_STATUS <<\_ACEOF
+ # Split the substitutions into bite-sized pieces for seds with
+ # small command number limits, like on Digital OSF/1 and HP-UX.
+ ac_max_sed_lines=48
+ ac_sed_frag=1 # Number of current file.
+ ac_beg=1 # First line for current file.
+ ac_end=$ac_max_sed_lines # Line after last line for current file.
+ ac_more_lines=:
+ ac_sed_cmds=
+ while $ac_more_lines; do
+ if test $ac_beg -gt 1; then
+ sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+ else
+ sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+ fi
+ if test ! -s $tmp/subs.frag; then
+ ac_more_lines=false
+ else
+ # The purpose of the label and of the branching condition is to
+ # speed up the sed processing (if there are no `@' at all, there
+ # is no need to browse any of the substitutions).
+ # These are the two extra sed commands mentioned above.
+ (echo ':t
+ /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+ if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+ else
+ ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+ fi
+ ac_sed_frag=`expr $ac_sed_frag + 1`
+ ac_beg=$ac_end
+ ac_end=`expr $ac_end + $ac_max_sed_lines`
+ fi
+ done
+ if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds=cat
+ fi
+fi # test -n "$CONFIG_FILES"
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case $ac_file in
+ - | *:- | *:-:* ) # input from stdin
+ cat >$tmp/stdin
+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ * ) ac_file_in=$ac_file.in ;;
+ esac
+
+ # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+ ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p "$ac_dir"
+ else
+ as_dir="$ac_dir"
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+ { (exit 1); exit 1; }; }; }
+
+ ac_builddir=.
+
+if test "$ac_dir" != .; then
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ # A "../" for each directory in $ac_dir_suffix.
+ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+ ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+ .) # No --srcdir option. We are building in place.
+ ac_srcdir=.
+ if test -z "$ac_top_builddir"; then
+ ac_top_srcdir=.
+ else
+ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+ fi ;;
+ [\\/]* | ?:[\\/]* ) # Absolute path.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir ;;
+ *) # Relative path.
+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+ case "$ac_dir" in
+ .) ac_abs_builddir=`pwd`;;
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+ case ${ac_top_builddir}. in
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+ case $ac_srcdir in
+ .) ac_abs_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+ case $ac_top_srcdir in
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+ esac;;
+esac
+
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+ *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
+ esac
+
+ if test x"$ac_file" != x-; then
+ { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+ rm -f "$ac_file"
+ fi
+ # 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. */
+ if test x"$ac_file" = x-; then
+ configure_input=
+ else
+ configure_input="$ac_file. "
+ fi
+ configure_input=$configure_input"Generated from `echo $ac_file_in |
+ sed 's,.*/,,'` by configure."
+
+ # First look for the input files in the build tree, otherwise in the
+ # src tree.
+ ac_file_inputs=`IFS=:
+ for f in $ac_file_in; do
+ case $f in
+ -) echo $tmp/stdin ;;
+ [\\/$]*)
+ # Absolute (can't be DOS-style, as IFS=:)
+ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ echo "$f";;
+ *) # Relative
+ if test -f "$f"; then
+ # Build tree
+ echo "$f"
+ elif test -f "$srcdir/$f"; then
+ # Source tree
+ echo "$srcdir/$f"
+ else
+ # /dev/null tree
+ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ fi;;
+ esac
+ done` || { (exit 1); exit 1; }
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+ sed "$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s, at configure_input@,$configure_input,;t t
+s, at srcdir@,$ac_srcdir,;t t
+s, at abs_srcdir@,$ac_abs_srcdir,;t t
+s, at top_srcdir@,$ac_top_srcdir,;t t
+s, at abs_top_srcdir@,$ac_abs_top_srcdir,;t t
+s, at builddir@,$ac_builddir,;t t
+s, at abs_builddir@,$ac_abs_builddir,;t t
+s, at top_builddir@,$ac_top_builddir,;t t
+s, at abs_top_builddir@,$ac_abs_top_builddir,;t t
+s, at INSTALL@,$ac_INSTALL,;t t
+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+ rm -f $tmp/stdin
+ if test x"$ac_file" != x-; then
+ mv $tmp/out $ac_file
+ else
+ cat $tmp/out
+ rm -f $tmp/out
+ fi
+
+done
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+#
+# CONFIG_HEADER section.
+#
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
+ac_dB='[ ].*$,\1#\2'
+ac_dC=' '
+ac_dD=',;t'
+# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
+ac_uB='$,\1#\2define\3'
+ac_uC=' '
+ac_uD=',;t'
+
+for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case $ac_file in
+ - | *:- | *:-:* ) # input from stdin
+ cat >$tmp/stdin
+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ * ) ac_file_in=$ac_file.in ;;
+ esac
+
+ test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+
+ # First look for the input files in the build tree, otherwise in the
+ # src tree.
+ ac_file_inputs=`IFS=:
+ for f in $ac_file_in; do
+ case $f in
+ -) echo $tmp/stdin ;;
+ [\\/$]*)
+ # Absolute (can't be DOS-style, as IFS=:)
+ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ # Do quote $f, to prevent DOS paths from being IFS'd.
+ echo "$f";;
+ *) # Relative
+ if test -f "$f"; then
+ # Build tree
+ echo "$f"
+ elif test -f "$srcdir/$f"; then
+ # Source tree
+ echo "$srcdir/$f"
+ else
+ # /dev/null tree
+ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ fi;;
+ esac
+ done` || { (exit 1); exit 1; }
+ # Remove the trailing spaces.
+ sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
+
+_ACEOF
+
+# Transform confdefs.h into two sed scripts, `conftest.defines' and
+# `conftest.undefs', that substitutes the proper values into
+# config.h.in to produce config.h. The first handles `#define'
+# templates, and the second `#undef' templates.
+# And first: Protect against being on the right side of a sed subst in
+# config.status. Protect against being in an unquoted here document
+# in config.status.
+rm -f conftest.defines conftest.undefs
+# Using a here document instead of a string reduces the quoting nightmare.
+# Putting comments in sed scripts is not portable.
+#
+# `end' is used to avoid that the second main sed command (meant for
+# 0-ary CPP macros) applies to n-ary macro definitions.
+# See the Autoconf documentation for `clear'.
+cat >confdef2sed.sed <<\_ACEOF
+s/[\\&,]/\\&/g
+s,[\\$`],\\&,g
+t clear
+: clear
+s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
+t end
+s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
+: end
+_ACEOF
+# If some macros were called several times there might be several times
+# the same #defines, which is useless. Nevertheless, we may not want to
+# sort them, since we want the *last* AC-DEFINE to be honored.
+uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
+sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
+rm -f confdef2sed.sed
+
+# This sed command replaces #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.
+cat >>conftest.undefs <<\_ACEOF
+s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
+_ACEOF
+
+# Break up conftest.defines because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
+echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
+echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
+echo ' :' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.defines >/dev/null
+do
+ # Write a limited-size here document to $tmp/defines.sed.
+ echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
+ # Speed up: don't consider the non `#define' lines.
+ echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS
+ # Work around the forget-to-reset-the-flag bug.
+ echo 't clr' >>$CONFIG_STATUS
+ echo ': clr' >>$CONFIG_STATUS
+ sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
+ echo 'CEOF
+ sed -f $tmp/defines.sed $tmp/in >$tmp/out
+ rm -f $tmp/in
+ mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+ sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
+ rm -f conftest.defines
+ mv conftest.tail conftest.defines
+done
+rm -f conftest.defines
+echo ' fi # grep' >>$CONFIG_STATUS
+echo >>$CONFIG_STATUS
+
+# Break up conftest.undefs because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo ' # Handle all the #undef templates' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.undefs >/dev/null
+do
+ # Write a limited-size here document to $tmp/undefs.sed.
+ echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
+ # Speed up: don't consider the non `#undef'
+ echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS
+ # Work around the forget-to-reset-the-flag bug.
+ echo 't clr' >>$CONFIG_STATUS
+ echo ': clr' >>$CONFIG_STATUS
+ sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
+ echo 'CEOF
+ sed -f $tmp/undefs.sed $tmp/in >$tmp/out
+ rm -f $tmp/in
+ mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+ sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
+ rm -f conftest.undefs
+ mv conftest.tail conftest.undefs
+done
+rm -f conftest.undefs
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+ # 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. */
+ if test x"$ac_file" = x-; then
+ echo "/* Generated by configure. */" >$tmp/config.h
+ else
+ echo "/* $ac_file. Generated by configure. */" >$tmp/config.h
+ fi
+ cat $tmp/in >>$tmp/config.h
+ rm -f $tmp/in
+ if test x"$ac_file" != x-; then
+ if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
+ { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+echo "$as_me: $ac_file is unchanged" >&6;}
+ else
+ ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p "$ac_dir"
+ else
+ as_dir="$ac_dir"
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+ { (exit 1); exit 1; }; }; }
+
+ rm -f $ac_file
+ mv $tmp/config.h $ac_file
+ fi
+ else
+ cat $tmp/config.h
+ rm -f $tmp/config.h
+ fi
+# Compute $ac_file's index in $config_headers.
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $ac_file | $ac_file:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null ||
+$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X$ac_file : 'X\(//\)[^/]' \| \
+ X$ac_file : 'X\(//\)$' \| \
+ X$ac_file : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X$ac_file |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`/stamp-h$_am_stamp_count
+done
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+#
+# CONFIG_LINKS section.
+#
+
+for ac_file in : $CONFIG_LINKS; do test "x$ac_file" = x: && continue
+ ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
+ ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
+
+ { echo "$as_me:$LINENO: linking $srcdir/$ac_source to $ac_dest" >&5
+echo "$as_me: linking $srcdir/$ac_source to $ac_dest" >&6;}
+
+ if test ! -r $srcdir/$ac_source; then
+ { { echo "$as_me:$LINENO: error: $srcdir/$ac_source: file not found" >&5
+echo "$as_me: error: $srcdir/$ac_source: file not found" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ rm -f $ac_dest
+
+ # Make relative symlinks.
+ ac_dest_dir=`(dirname "$ac_dest") 2>/dev/null ||
+$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_dest" : 'X\(//\)[^/]' \| \
+ X"$ac_dest" : 'X\(//\)$' \| \
+ X"$ac_dest" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$ac_dest" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p "$ac_dest_dir"
+ else
+ as_dir="$ac_dest_dir"
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dest_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dest_dir\"" >&2;}
+ { (exit 1); exit 1; }; }; }
+
+ ac_builddir=.
+
+if test "$ac_dest_dir" != .; then
+ ac_dir_suffix=/`echo "$ac_dest_dir" | sed 's,^\.[\\/],,'`
+ # A "../" for each directory in $ac_dir_suffix.
+ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+ ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+ .) # No --srcdir option. We are building in place.
+ ac_srcdir=.
+ if test -z "$ac_top_builddir"; then
+ ac_top_srcdir=.
+ else
+ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+ fi ;;
+ [\\/]* | ?:[\\/]* ) # Absolute path.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir ;;
+ *) # Relative path.
+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dest_dir";;
+*)
+ case "$ac_dest_dir" in
+ .) ac_abs_builddir=`pwd`;;
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dest_dir";;
+ *) ac_abs_builddir=`pwd`/"$ac_dest_dir";;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+ case ${ac_top_builddir}. in
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+ case $ac_srcdir in
+ .) ac_abs_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+ case $ac_top_srcdir in
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+ esac;;
+esac
+
+
+ case $srcdir in
+ [\\/$]* | ?:[\\/]* ) ac_rel_source=$srcdir/$ac_source ;;
+ *) ac_rel_source=$ac_top_builddir$srcdir/$ac_source ;;
+ esac
+
+ # Try a symlink, then a hard link, then a copy.
+ ln -s $ac_rel_source $ac_dest 2>/dev/null ||
+ ln $srcdir/$ac_source $ac_dest 2>/dev/null ||
+ cp -p $srcdir/$ac_source $ac_dest ||
+ { { echo "$as_me:$LINENO: error: cannot link or copy $srcdir/$ac_source to $ac_dest" >&5
+echo "$as_me: error: cannot link or copy $srcdir/$ac_source to $ac_dest" >&2;}
+ { (exit 1); exit 1; }; }
+done
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+#
+# CONFIG_COMMANDS section.
+#
+for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
+ ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
+ ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
+$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_dest" : 'X\(//\)[^/]' \| \
+ X"$ac_dest" : 'X\(//\)$' \| \
+ X"$ac_dest" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$ac_dest" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p "$ac_dir"
+ else
+ as_dir="$ac_dir"
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+ { (exit 1); exit 1; }; }; }
+
+ ac_builddir=.
+
+if test "$ac_dir" != .; then
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ # A "../" for each directory in $ac_dir_suffix.
+ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+ ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+ .) # No --srcdir option. We are building in place.
+ ac_srcdir=.
+ if test -z "$ac_top_builddir"; then
+ ac_top_srcdir=.
+ else
+ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+ fi ;;
+ [\\/]* | ?:[\\/]* ) # Absolute path.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir ;;
+ *) # Relative path.
+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+ case "$ac_dir" in
+ .) ac_abs_builddir=`pwd`;;
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+ case ${ac_top_builddir}. in
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+ case $ac_srcdir in
+ .) ac_abs_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+ case $ac_top_srcdir in
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+ esac;;
+esac
+
+
+ { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
+echo "$as_me: executing $ac_dest commands" >&6;}
+ case $ac_dest in
+ depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; 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.
+ # So let's grep whole file.
+ if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
+ dirpart=`(dirname "$mf") 2>/dev/null ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$mf" : 'X\(//\)[^/]' \| \
+ X"$mf" : 'X\(//\)$' \| \
+ X"$mf" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+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"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //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' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`(dirname "$file") 2>/dev/null ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$file" : 'X\(//\)[^/]' \| \
+ X"$file" : 'X\(//\)$' \| \
+ X"$file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p $dirpart/$fdir
+ else
+ as_dir=$dirpart/$fdir
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5
+echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;}
+ { (exit 1); exit 1; }; }; }
+
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+done
+ ;;
+ intltool )
+
+intltool_edit="-e 's#@INTLTOOL_EXTRACT@#`pwd`/intltool-extract#g' \
+ -e 's#@INTLTOOL_ICONV@#${INTLTOOL_ICONV}#g' \
+ -e 's#@INTLTOOL_MSGFMT@#${INTLTOOL_MSGFMT}#g' \
+ -e 's#@INTLTOOL_MSGMERGE@#${INTLTOOL_MSGMERGE}#g' \
+ -e 's#@INTLTOOL_XGETTEXT@#${INTLTOOL_XGETTEXT}#g' \
+ -e 's#@INTLTOOL_PERL@#${INTLTOOL_PERL}#g'"
+
+eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-extract.in \
+ > intltool-extract.out
+if cmp -s intltool-extract intltool-extract.out 2>/dev/null; then
+ rm -f intltool-extract.out
+else
+ mv -f intltool-extract.out intltool-extract
+fi
+chmod ugo+x intltool-extract
+chmod u+w intltool-extract
+
+eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-merge.in \
+ > intltool-merge.out
+if cmp -s intltool-merge intltool-merge.out 2>/dev/null; then
+ rm -f intltool-merge.out
+else
+ mv -f intltool-merge.out intltool-merge
+fi
+chmod ugo+x intltool-merge
+chmod u+w intltool-merge
+
+eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-update.in \
+ > intltool-update.out
+if cmp -s intltool-update intltool-update.out 2>/dev/null; then
+ rm -f intltool-update.out
+else
+ mv -f intltool-update.out intltool-update
+fi
+chmod ugo+x intltool-update
+chmod u+w intltool-update
+
+ ;;
+ default-1 ) case "$CONFIG_FILES" in *po/Makefile.in*)
+ sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
+ esac ;;
+ esac
+done
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+
+# 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 || { (exit 1); exit 1; }
+fi
+
Property changes on: desktop/trunk/thunar/branches/upstream/current/configure
___________________________________________________________________
Name: svn:executable
+
Added: desktop/trunk/thunar/branches/upstream/current/configure.in
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/configure.in 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/configure.in 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,348 @@
+dnl $Id: configure.in.in 18846 2005-11-14 17:33:30Z benny $
+dnl
+dnl Copyright (c) 2004-2005
+dnl The Thunar development team. All rights reserved.
+dnl
+dnl Written for Thunar by Benedikt Meurer <benny at xfce.org>.
+dnl
+
+dnl ***************************
+dnl *** Version information ***
+dnl ***************************
+m4_define([thunar_verinfo], [0:0:0])
+m4_define([thunar_version_api], [1])
+m4_define([thunar_version_major], [0])
+m4_define([thunar_version_minor], [1])
+m4_define([thunar_version_micro], [4])
+m4_define([thunar_version_build], [r18850])
+m4_define([thunar_version_tag], [pre-alpha])
+m4_define([thunar_version], [thunar_version_major().thunar_version_minor().thunar_version_micro()ifelse(thunar_version_tag(), [], [], [thunar_version_tag()-thunar_version_build()])])
+
+dnl ***************************
+dnl *** Initialize autoconf ***
+dnl ***************************
+AC_COPYRIGHT([Copyright (c) 2004-2005
+ The Thunar development team. All rights reserved.
+
+Written for Thunar by Benedikt Meurer <benny at xfce.org>.])
+AC_INIT([Thunar], [thunar_version()], [benny at xfce.org], [Thunar])
+AC_PREREQ([2.50])
+AC_CANONICAL_TARGET()
+AC_REVISION([$Id: configure.in.in 18846 2005-11-14 17:33:30Z benny $])
+
+dnl ***************************
+dnl *** Initialize automake ***
+dnl ***************************
+AM_INIT_AUTOMAKE([AC_PACKAGE_TARNAME()], [AC_PACKAGE_VERSION()])
+AM_CONFIG_HEADER([config.h])
+AM_MAINTAINER_MODE()
+
+dnl *******************************
+dnl *** Check for UNIX variants ***
+dnl *******************************
+AC_AIX()
+AC_ISC_POSIX()
+AC_MINIX()
+
+dnl ********************************
+dnl *** Check for basic programs ***
+dnl ********************************
+AC_PROG_CC()
+AC_PROG_LD()
+AC_PROG_INSTALL()
+AC_PROG_INTLTOOL()
+AC_CHECK_PROGS([PERL], [perl5 perl])
+
+dnl **************************
+dnl *** Initialize libtool ***
+dnl **************************
+AC_DISABLE_STATIC()
+AC_PROG_LIBTOOL()
+
+dnl **************************************
+dnl *** Substitute version information ***
+dnl **************************************
+THUNAR_VERINFO=thunar_verinfo()
+THUNAR_VERSION_API=thunar_version_api()
+THUNAR_VERSION_MAJOR=thunar_version_major()
+THUNAR_VERSION_MINOR=thunar_version_minor()
+THUNAR_VERSION_MICRO=thunar_version_micro()
+AC_SUBST([THUNAR_VERINFO])
+AC_SUBST([THUNAR_VERSION_API])
+AC_SUBST([THUNAR_VERSION_MAJOR])
+AC_SUBST([THUNAR_VERSION_MINOR])
+AC_SUBST([THUNAR_VERSION_MICRO])
+
+dnl ***********************************************
+dnl *** Determine the u32 type required for tdb ***
+dnl ***********************************************
+AC_CHECK_SIZEOF([int])
+AC_CHECK_SIZEOF([long])
+AC_CHECK_SIZEOF([short])
+AC_MSG_CHECKING([for 32bit unsigned integer])
+case 4 in
+$ac_cv_sizeof_int) TDB_U32_TYPE="unsigned int" ;;
+$ac_cv_sizeof_long) TDB_U32_TYPE="unsigned long" ;;
+$ac_cv_sizeof_short) TDB_U32_TYPE="unsigned short" ;;
+esac
+AC_SUBST([TDB_U32_TYPE])
+AC_MSG_RESULT([$TDB_U32_TYPE])
+
+dnl **********************************
+dnl *** Check for standard headers ***
+dnl **********************************
+AC_CHECK_HEADERS([ctype.h dirent.h errno.h fcntl.h fnmatch.h fstab.h grp.h \
+ locale.h math.h memory.h mmintrin.h pwd.h sched.h setjmp.h \
+ stdarg.h stdlib.h string.h sys/xattr.h sys/extattr.h \
+ sys/cdio.h sys/mman.h \
+ sys/mount.h sys/param.h sys/stat.h sys/time.h sys/uio.h \
+ sys/wait.h time.h wchar.h wctype.h])
+
+dnl ************************************
+dnl *** Check for standard functions ***
+dnl ************************************
+AC_FUNC_MMAP()
+AC_CHECK_FUNCS([attropen extattr_get_fd fgetxattr lchmod localtime_r \
+ mbrtowc pread pwrite readdir_r \
+ sched_yield setgroupent setpassent])
+
+dnl ***************************************
+dnl *** Check for working posix_madvise ***
+dnl ***************************************
+m4_define([posix_madvise_test],
+[
+posix_madvise (0, 0, POSIX_MADV_NORMAL);
+posix_madvise (0, 0, POSIX_MADV_SEQUENTIAL);
+posix_madvise (0, 0, POSIX_MADV_RANDOM);
+posix_madvise (0, 0, POSIX_MADV_WILLNEED);
+posix_madvise (0, 0, POSIX_MADV_DONTNEED);
+])
+AC_MSG_CHECKING([for working posix_madvise])
+AC_TRY_LINK([#include <sys/mman.h>], posix_madvise_test(),
+[
+ AC_DEFINE([HAVE_POSIX_MADVISE], [1], [Define if posix_madvise is working])
+ AC_MSG_RESULT([yes])
+],
+[
+ dnl As usual, Linux/glibc doesn't work properly out-of-the-box
+ ac_save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS -D__USE_XOPEN2K"
+ AC_TRY_LINK([#include <sys/mman.h>], posix_madvise_test(),
+ [
+ AC_DEFINE([HAVE_POSIX_MADVISE], [1], [Define if posix_madvise is working])
+ AC_MSG_RESULT([yes])
+ ],
+ [
+ CPPFLAGS="$ac_save_CPPFLAGS"
+ AC_MSG_RESULT([no])
+ ])
+])
+
+dnl ******************************
+dnl *** Check for i18n support ***
+dnl ******************************
+XDT_I18N([de el es hu ja])
+
+dnl ***********************************
+dnl *** Check for required packages ***
+dnl ***********************************
+XDT_CHECK_PACKAGE([EXO], [exo-0.3], [0.3.1.1])
+XDT_CHECK_PACKAGE([GLIB], [glib-2.0], [2.6.4])
+XDT_CHECK_PACKAGE([GTHREAD], [gthread-2.0], [2.6.4])
+XDT_CHECK_PACKAGE([GTK], [gtk+-2.0], [2.6.0])
+XDT_CHECK_PACKAGE([LIBPNG], [libpng12], [1.2.0])
+
+dnl **********************************
+dnl *** Optional support for cairo ***
+dnl **********************************
+XDT_CHECK_OPTIONAL_PACKAGE([CAIRO], [cairo], [0.5], [cairo], [Cairo])
+
+dnl *******************************************************
+dnl *** Optional support for gconf (GNOME thumbnailers) ***
+dnl *******************************************************
+XDT_CHECK_OPTIONAL_PACKAGE([GCONF], [gconf-2.0],
+ [2.4.0], [gnome-thumbnailers],
+ [GNOME thumbnailer support])
+
+dnl *************************************************
+dnl *** Optional support for startup notification ***
+dnl *************************************************
+XDT_CHECK_OPTIONAL_PACKAGE([LIBSTARTUP_NOTIFICATION],
+ [libstartup-notification-1.0],
+ [0.4], [startup-notification],
+ [startup notification library])
+
+dnl *************************
+dnl *** Check for libjpeg ***
+dnl *************************
+LIBJPEG_LIBS=""
+LIBJPEG_CFLAGS=""
+AC_CHECK_LIB([jpeg], [jpeg_start_decompress],
+[
+ AC_CHECK_HEADER([jpeglib.h],
+ [
+ LIBJPEG_LIBS="-ljpeg -lm"
+ AC_DEFINE([HAVE_LIBJPEG], [1], [Define to 1 if libjpeg is found])
+ AC_DEFINE([HAVE_JPEGLIB_H], [1], [Define to 1 if jpeglib.h is found])
+ ])
+], [-lm])
+AC_SUBST([LIBJPEG_CFLAGS])
+AC_SUBST([LIBJPEG_LIBS])
+
+dnl *************************
+dnl *** Check for gtk-doc ***
+dnl *************************
+GTK_DOC_CHECK([1.0])
+
+dnl ***************************
+dnl *** Check for Gamin/FAM ***
+dnl ***************************
+LIBFAM_CFLAGS=""
+LIBFAM_LIBS=""
+have_libfam=no
+XDT_CHECK_PACKAGE([LIBFAM], [gamin], [0.1.0], [have_libfam=yes],
+[
+ dnl Fallback to a generic FAM check
+ AC_CHECK_HEADERS([fam.h],
+ [
+ AC_CHECK_LIB([fam], [FAMOpen], [have_libfam="yes" LIBFAM_LIBS="-lfam"])
+ ])
+])
+if test x"$have_libfam" = x"yes"; then
+ dnl Define appropriate symbols
+ AC_DEFINE([HAVE_FAM_H], [1], [Define to 1 if you have the <fam.h> header file.])
+ AC_DEFINE([HAVE_LIBFAM], [1], [Define to 1 if the File Alteration Monitor is available.])
+
+ dnl Check for FAMNoExists (currently Gamin only)
+ save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBFAM_LIBS"
+ AC_CHECK_FUNCS([FAMNoExists])
+ LIBS="$save_LIBS"
+fi
+AC_SUBST([LIBFAM_CFLAGS])
+AC_SUBST([LIBFAM_LIBS])
+
+dnl ************************************
+dnl *** Check for the system flavour ***
+dnl ************************************
+AC_MSG_CHECKING([for system flavour])
+case "$target_os" in
+*bsd*)
+ FLAVOUR="bsd"
+ ;;
+*)
+ FLAVOUR="sysv"
+ ;;
+esac
+AC_MSG_RESULT([$FLAVOUR])
+
+dnl **********************************************************
+dnl *** Create links for the volume manager implementation ***
+dnl **********************************************************
+AC_CONFIG_LINKS(
+[
+ thunar-vfs/thunar-vfs-volume-impl.c:thunar-vfs/thunar-vfs-volume-$FLAVOUR.c
+ thunar-vfs/thunar-vfs-volume-impl.h:thunar-vfs/thunar-vfs-volume-$FLAVOUR.h
+])
+
+dnl ***********************************
+dnl *** Check for debugging support ***
+dnl ***********************************
+AC_ARG_ENABLE([debug], AC_HELP_STRING([--disable-debug], [Disable debugging support]), [], [enable_debug=yes])
+AC_MSG_CHECKING([whether to enable debugging support])
+if test x"$enable_debug" != x"no"; then
+ PLATFORM_CFLAGS="$PLATFORM_CFLAGS -O0 -g3 -DG_DISABLE_DEPRECATED -Werror -Wall"
+ AC_MSG_RESULT([yes])
+
+ dnl Check whether the compiler accepts the -fno-strict-aliasing
+ dnl switch, as certain packages - like Glib - still don't work
+ dnl properly with newer compilers.
+ save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -fno-strict-aliasing"
+ AC_MSG_CHECKING([whether $CC accepts -fno-strict-aliasing])
+ AC_COMPILE_IFELSE(AC_LANG_SOURCE([int x;]), [
+ AC_MSG_RESULT([yes])
+ PLATFORM_CFLAGS="$PLATFORM_CFLAGS -fno-strict-aliasing"
+ ], [
+ AC_MSG_RESULT([no])
+ ])
+ CFLAGS="$save_CFLAGS"
+else
+ PLATFORM_CPPFLAGS="$PLATFORM_CPPFLAGS -DG_DISABLE_ASSERT -DG_DISABLE_CAST_CHECKS -DG_DISABLE_CHECKS"
+ AC_MSG_RESULT([no])
+
+ AC_MSG_CHECKING([whether $LD accepts -O1])
+ case `$LD -O1 -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -Wl,-O1"
+ AC_MSG_RESULT([yes])
+ ;;
+ *)
+ AC_MSG_RESULT([no])
+ ;;
+ esac
+fi
+
+dnl ****************************************
+dnl *** Check for ELF visibility support ***
+dnl ****************************************
+AC_ARG_ENABLE([visibility], AC_HELP_STRING([--disable-visibility], [Don't use ELF visibility attributes]), [], [enable_visibility=yes])
+have_gnuc_visibility=no
+if test x"$enable_visibility" != x"no"; then
+ dnl Check whether the compiler supports the visibility attribute
+ AC_MSG_CHECKING([whether $CC supports the GNUC visibility attribute])
+ AC_COMPILE_IFELSE(AC_LANG_SOURCE(
+ [
+ void __attribute__ ((visibility("default"))) test_default (void) {}
+ void __attribute__ ((visibility("hidden"))) test_hidden (void) {}
+ int main (int argc, char **argv) { test_default (); test_hidden (); return 0; }
+ ]),
+ [
+ have_gnuc_visibility=yes
+ AC_MSG_RESULT([yes])
+ ],
+ [
+ AC_MSG_RESULT([no])
+ ])
+fi
+if test x"$have_gnuc_visibility" = x"yes"; then
+ PLATFORM_CPPFLAGS="$PLATFORM_CPPFLAGS -DHAVE_GNUC_VISIBILITY"
+fi
+AM_CONDITIONAL([HAVE_GNUC_VISIBILITY], [test x"$have_gnuc_visibility" = x"yes"])
+
+dnl *********************************
+dnl *** Substitute platform flags ***
+dnl *********************************
+AC_SUBST([PLATFORM_CFLAGS])
+AC_SUBST([PLATFORM_CPPFLAGS])
+AC_SUBST([PLATFORM_LDFLAGS])
+
+AC_OUTPUT([
+Makefile
+docs/Makefile
+docs/design/Makefile
+docs/papers/Makefile
+docs/reference/Makefile
+docs/reference/thunar-vfs/Makefile
+docs/reference/thunar-vfs/version.xml
+docs/reference/thunarx/Makefile
+docs/reference/thunarx/version.xml
+examples/Makefile
+examples/open-terminal-here/Makefile
+icons/Makefile
+icons/24x24/Makefile
+icons/48x48/Makefile
+po/Makefile.in
+tdb/Makefile
+tdb/tdbconfig.h
+pixmaps/Makefile
+tests/Makefile
+tests/data/Makefile
+thunar/Makefile
+thunar-vfs/Makefile
+thunar-vfs/thunar-vfs-1.pc
+thunar-vfs/thunar-vfs-config.h
+thunarx/Makefile
+thunarx/thunarx-1.pc
+thunarx/thunarx-config.h
+])
Added: desktop/trunk/thunar/branches/upstream/current/depcomp
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/depcomp 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/depcomp 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,522 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2004-05-31.23
+
+# Copyright (C) 1999, 2000, 2003, 2004 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# 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 <oliva at dcc.unicamp.br>.
+
+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 outputing dependencies.
+ libtool Whether libtool is used (yes/no).
+
+Report bugs to <bug-automake at gnu.org>.
+EOF
+ exit 0
+ ;;
+ -v | --v*)
+ echo "depcomp $scriptversion"
+ exit 0
+ ;;
+esac
+
+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"
+
+# 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
+
+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.
+ "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ mv "$tmpdepfile" "$depfile"
+ ;;
+
+gcc)
+## 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).
+## - 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 -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
+ 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.
+ tr ' ' '
+' < "$tmpdepfile" |
+## Some versions of gcc put a space before the `:'. On the theory
+## that the space means something, we add a space to the output as
+## well.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ 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 -eq 0; then :
+ else
+ 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 ' ' '
+' < "$tmpdepfile" \
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+ tr '
+' ' ' >> $depfile
+ echo >> $depfile
+
+ # The second pass generates a dummy entry for each header file.
+ tr ' ' '
+' < "$tmpdepfile" \
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+ >> $depfile
+ else
+ # The sourcefile does not contain any dependencies, so just
+ # store a dummy comment line, to avoid errors with the Makefile
+ # "include basename.Plo" scheme.
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+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.
+ stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
+ tmpdepfile="$stripped.u"
+ if test "$libtool" = yes; then
+ "$@" -Wc,-M
+ else
+ "$@" -M
+ fi
+ stat=$?
+
+ if test -f "$tmpdepfile"; then :
+ else
+ stripped=`echo "$stripped" | sed 's,^.*/,,'`
+ tmpdepfile="$stripped.u"
+ fi
+
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+
+ if test -f "$tmpdepfile"; then
+ outname="$stripped.o"
+ # Each line is of the form `foo.o: dependent.h'.
+ # Do two passes, one to just change these to
+ # `$object: dependent.h' and one to simply `dependent.h:'.
+ sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
+ sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
+ else
+ # The sourcefile does not contain any dependencies, so just
+ # store a dummy comment line, to avoid errors with the Makefile
+ # "include basename.Plo" scheme.
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+icc)
+ # Intel's C compiler understands `-MD -MF file'. However on
+ # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+ # ICC 7.0 will fill foo.d with something like
+ # foo.o: sub/foo.c
+ # foo.o: sub/foo.h
+ # which is wrong. We want:
+ # sub/foo.o: sub/foo.c
+ # sub/foo.o: sub/foo.h
+ # sub/foo.c:
+ # sub/foo.h:
+ # ICC 7.1 will output
+ # foo.o: sub/foo.c sub/foo.h
+ # and will wrap long lines using \ :
+ # foo.o: sub/foo.c ... \
+ # sub/foo.h ... \
+ # ...
+
+ "$@" -MD -MF "$tmpdepfile"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ 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"
+ ;;
+
+tru64)
+ # The Tru64 compiler uses -MD to generate dependencies as a side
+ # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+ # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+ # dependencies in `foo.d' instead, so we check for that too.
+ # Subdirectories are respected.
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+ test "x$dir" = "x$object" && dir=
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+ if test "$libtool" = yes; then
+ # Dependencies are output in .lo.d with libtool 1.4.
+ # With libtool 1.5 they are output both in $dir.libs/$base.o.d
+ # and in $dir.libs/$base.o.d and $dir$base.o.d. We process the
+ # latter, because the former will be cleaned when $dir.libs is
+ # erased.
+ tmpdepfile1="$dir.libs/$base.lo.d"
+ tmpdepfile2="$dir$base.o.d"
+ tmpdepfile3="$dir.libs/$base.d"
+ "$@" -Wc,-MD
+ else
+ tmpdepfile1="$dir$base.o.d"
+ tmpdepfile2="$dir$base.d"
+ tmpdepfile3="$dir$base.d"
+ "$@" -MD
+ fi
+
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+ exit $stat
+ fi
+
+ if test -f "$tmpdepfile1"; then
+ tmpdepfile="$tmpdepfile1"
+ elif test -f "$tmpdepfile2"; then
+ tmpdepfile="$tmpdepfile2"
+ else
+ tmpdepfile="$tmpdepfile3"
+ fi
+ if test -f "$tmpdepfile"; then
+ sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+ # That's a tab and a space in the [].
+ sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+ else
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+#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 $1 != '--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:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
+ rm -f "$depfile"
+ cat < "$tmpdepfile" > "$depfile"
+ tr ' ' '
+' < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ 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 $1 != '--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+ # X makedepend
+ shift
+ cleared=no
+ for arg in "$@"; do
+ case $cleared in
+ no)
+ set ""; shift
+ cleared=yes ;;
+ esac
+ 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.
+ -*|$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"
+ cat < "$tmpdepfile" > "$depfile"
+ sed '1,2d' "$tmpdepfile" | tr ' ' '
+' | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ 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 $1 != '--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 '/^# [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, regardless of -o,
+ # because we must use -o when running libtool.
+ "$@" || exit $?
+ IFS=" "
+ for arg
+ do
+ case "$arg" in
+ "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+ set fnord "$@"
+ shift
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift
+ shift
+ ;;
+ esac
+ done
+ "$@" -E |
+ sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
+ echo " " >> "$depfile"
+ . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+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-end: "$"
+# End:
Property changes on: desktop/trunk/thunar/branches/upstream/current/depcomp
___________________________________________________________________
Name: svn:executable
+
Added: desktop/trunk/thunar/branches/upstream/current/docs/Makefile.am
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/Makefile.am 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/Makefile.am 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,8 @@
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+
+SUBDIRS = \
+ design \
+ papers \
+ reference
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
Added: desktop/trunk/thunar/branches/upstream/current/docs/Makefile.in
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/Makefile.in 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/Makefile.in 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,575 @@
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004 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.
+
+ at SET_MAKE@
+
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+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@
+target_triplet = @target@
+subdir = docs
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-exec-recursive install-info-recursive \
+ install-recursive installcheck-recursive installdirs-recursive \
+ pdf-recursive ps-recursive uninstall-info-recursive \
+ uninstall-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CAIRO_REQUIRED_VERSION = @CAIRO_REQUIRED_VERSION@
+CAIRO_VERSION = @CAIRO_VERSION@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@
+ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@
+EXEEXT = @EXEEXT@
+EXO_CFLAGS = @EXO_CFLAGS@
+EXO_LIBS = @EXO_LIBS@
+EXO_REQUIRED_VERSION = @EXO_REQUIRED_VERSION@
+EXO_VERSION = @EXO_VERSION@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GCONF_CFLAGS = @GCONF_CFLAGS@
+GCONF_LIBS = @GCONF_LIBS@
+GCONF_REQUIRED_VERSION = @GCONF_REQUIRED_VERSION@
+GCONF_VERSION = @GCONF_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_REQUIRED_VERSION = @GLIB_REQUIRED_VERSION@
+GLIB_VERSION = @GLIB_VERSION@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTHREAD_REQUIRED_VERSION = @GTHREAD_REQUIRED_VERSION@
+GTHREAD_VERSION = @GTHREAD_VERSION@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+GTK_LIBS = @GTK_LIBS@
+GTK_REQUIRED_VERSION = @GTK_REQUIRED_VERSION@
+GTK_VERSION = @GTK_VERSION@
+HAVE_CAIRO_FALSE = @HAVE_CAIRO_FALSE@
+HAVE_CAIRO_TRUE = @HAVE_CAIRO_TRUE@
+HAVE_GCONF_FALSE = @HAVE_GCONF_FALSE@
+HAVE_GCONF_TRUE = @HAVE_GCONF_TRUE@
+HAVE_GNUC_VISIBILITY_FALSE = @HAVE_GNUC_VISIBILITY_FALSE@
+HAVE_GNUC_VISIBILITY_TRUE = @HAVE_GNUC_VISIBILITY_TRUE@
+HAVE_LIBSTARTUP_NOTIFICATION_FALSE = @HAVE_LIBSTARTUP_NOTIFICATION_FALSE@
+HAVE_LIBSTARTUP_NOTIFICATION_TRUE = @HAVE_LIBSTARTUP_NOTIFICATION_TRUE@
+HTML_DIR = @HTML_DIR@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LIBFAM_CFLAGS = @LIBFAM_CFLAGS@
+LIBFAM_LIBS = @LIBFAM_LIBS@
+LIBFAM_REQUIRED_VERSION = @LIBFAM_REQUIRED_VERSION@
+LIBFAM_VERSION = @LIBFAM_VERSION@
+LIBJPEG_CFLAGS = @LIBJPEG_CFLAGS@
+LIBJPEG_LIBS = @LIBJPEG_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
+LIBPNG_LIBS = @LIBPNG_LIBS@
+LIBPNG_REQUIRED_VERSION = @LIBPNG_REQUIRED_VERSION@
+LIBPNG_VERSION = @LIBPNG_VERSION@
+LIBS = @LIBS@
+LIBSTARTUP_NOTIFICATION_CFLAGS = @LIBSTARTUP_NOTIFICATION_CFLAGS@
+LIBSTARTUP_NOTIFICATION_LIBS = @LIBSTARTUP_NOTIFICATION_LIBS@
+LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION = @LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION@
+LIBSTARTUP_NOTIFICATION_VERSION = @LIBSTARTUP_NOTIFICATION_VERSION@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_CFLAGS = @PLATFORM_CFLAGS@
+PLATFORM_CPPFLAGS = @PLATFORM_CPPFLAGS@
+PLATFORM_LDFLAGS = @PLATFORM_LDFLAGS@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TDB_U32_TYPE = @TDB_U32_TYPE@
+THUNAR_VERINFO = @THUNAR_VERINFO@
+THUNAR_VERSION_API = @THUNAR_VERSION_API@
+THUNAR_VERSION_MAJOR = @THUNAR_VERSION_MAJOR@
+THUNAR_VERSION_MICRO = @THUNAR_VERSION_MICRO@
+THUNAR_VERSION_MINOR = @THUNAR_VERSION_MINOR@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_ARGS = @XGETTEXT_ARGS@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+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@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+SUBDIRS = \
+ design \
+ papers \
+ reference
+
+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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu docs/Makefile
+.PRECIOUS: 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
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+
+# 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.
+$(RECURSIVE_TARGETS):
+ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; 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; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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 || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+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)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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 \
+ test -d "$(distdir)/$$subdir" \
+ || $(mkdir_p) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ 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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-libtool \
+ distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+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: uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
+ clean clean-generic clean-libtool clean-recursive ctags \
+ ctags-recursive distclean distclean-generic distclean-libtool \
+ distclean-recursive distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-exec install-exec-am install-info \
+ install-info-am install-man install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic maintainer-clean-recursive \
+ mostlyclean mostlyclean-generic mostlyclean-libtool \
+ mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
+ uninstall uninstall-am uninstall-info-am
+
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
+# 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:
Added: desktop/trunk/thunar/branches/upstream/current/docs/design/Makefile.am
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/design/Makefile.am 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/design/Makefile.am 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,7 @@
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+
+EXTRA_DIST = \
+ mime.xmi \
+ overview.xmi
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
Added: desktop/trunk/thunar/branches/upstream/current/docs/design/Makefile.in
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/design/Makefile.in 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/design/Makefile.in 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,429 @@
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004 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.
+
+ at SET_MAKE@
+
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+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@
+target_triplet = @target@
+subdir = docs/design
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CAIRO_REQUIRED_VERSION = @CAIRO_REQUIRED_VERSION@
+CAIRO_VERSION = @CAIRO_VERSION@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@
+ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@
+EXEEXT = @EXEEXT@
+EXO_CFLAGS = @EXO_CFLAGS@
+EXO_LIBS = @EXO_LIBS@
+EXO_REQUIRED_VERSION = @EXO_REQUIRED_VERSION@
+EXO_VERSION = @EXO_VERSION@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GCONF_CFLAGS = @GCONF_CFLAGS@
+GCONF_LIBS = @GCONF_LIBS@
+GCONF_REQUIRED_VERSION = @GCONF_REQUIRED_VERSION@
+GCONF_VERSION = @GCONF_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_REQUIRED_VERSION = @GLIB_REQUIRED_VERSION@
+GLIB_VERSION = @GLIB_VERSION@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTHREAD_REQUIRED_VERSION = @GTHREAD_REQUIRED_VERSION@
+GTHREAD_VERSION = @GTHREAD_VERSION@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+GTK_LIBS = @GTK_LIBS@
+GTK_REQUIRED_VERSION = @GTK_REQUIRED_VERSION@
+GTK_VERSION = @GTK_VERSION@
+HAVE_CAIRO_FALSE = @HAVE_CAIRO_FALSE@
+HAVE_CAIRO_TRUE = @HAVE_CAIRO_TRUE@
+HAVE_GCONF_FALSE = @HAVE_GCONF_FALSE@
+HAVE_GCONF_TRUE = @HAVE_GCONF_TRUE@
+HAVE_GNUC_VISIBILITY_FALSE = @HAVE_GNUC_VISIBILITY_FALSE@
+HAVE_GNUC_VISIBILITY_TRUE = @HAVE_GNUC_VISIBILITY_TRUE@
+HAVE_LIBSTARTUP_NOTIFICATION_FALSE = @HAVE_LIBSTARTUP_NOTIFICATION_FALSE@
+HAVE_LIBSTARTUP_NOTIFICATION_TRUE = @HAVE_LIBSTARTUP_NOTIFICATION_TRUE@
+HTML_DIR = @HTML_DIR@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LIBFAM_CFLAGS = @LIBFAM_CFLAGS@
+LIBFAM_LIBS = @LIBFAM_LIBS@
+LIBFAM_REQUIRED_VERSION = @LIBFAM_REQUIRED_VERSION@
+LIBFAM_VERSION = @LIBFAM_VERSION@
+LIBJPEG_CFLAGS = @LIBJPEG_CFLAGS@
+LIBJPEG_LIBS = @LIBJPEG_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
+LIBPNG_LIBS = @LIBPNG_LIBS@
+LIBPNG_REQUIRED_VERSION = @LIBPNG_REQUIRED_VERSION@
+LIBPNG_VERSION = @LIBPNG_VERSION@
+LIBS = @LIBS@
+LIBSTARTUP_NOTIFICATION_CFLAGS = @LIBSTARTUP_NOTIFICATION_CFLAGS@
+LIBSTARTUP_NOTIFICATION_LIBS = @LIBSTARTUP_NOTIFICATION_LIBS@
+LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION = @LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION@
+LIBSTARTUP_NOTIFICATION_VERSION = @LIBSTARTUP_NOTIFICATION_VERSION@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_CFLAGS = @PLATFORM_CFLAGS@
+PLATFORM_CPPFLAGS = @PLATFORM_CPPFLAGS@
+PLATFORM_LDFLAGS = @PLATFORM_LDFLAGS@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TDB_U32_TYPE = @TDB_U32_TYPE@
+THUNAR_VERINFO = @THUNAR_VERINFO@
+THUNAR_VERSION_API = @THUNAR_VERSION_API@
+THUNAR_VERSION_MAJOR = @THUNAR_VERSION_MAJOR@
+THUNAR_VERSION_MICRO = @THUNAR_VERSION_MICRO@
+THUNAR_VERSION_MINOR = @THUNAR_VERSION_MINOR@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_ARGS = @XGETTEXT_ARGS@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+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@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+EXTRA_DIST = \
+ mime.xmi \
+ overview.xmi
+
+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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/design/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu docs/design/Makefile
+.PRECIOUS: 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
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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 distclean-libtool
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+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-info-am
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ distclean distclean-generic distclean-libtool distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-exec install-exec-am \
+ install-info install-info-am install-man install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
+ uninstall-info-am
+
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
+# 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:
Added: desktop/trunk/thunar/branches/upstream/current/docs/design/mime.xmi
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/design/mime.xmi 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/design/mime.xmi 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,2118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<XMI xmlns:UML="http://schema.omg.org/spec/UML/1.3" verified="false" timestamp="2005-08-06T16:29:34" xmi.version="1.2" >
+ <XMI.header>
+ <XMI.documentation>
+ <XMI.exporter>umbrello uml modeller http://uml.sf.net</XMI.exporter>
+ <XMI.exporterVersion>1.4</XMI.exporterVersion>
+ <XMI.exporterEncoding>UnicodeUTF8</XMI.exporterEncoding>
+ </XMI.documentation>
+ <XMI.metamodel xmi.name="UML" href="UML.xml" xmi.version="1.3" />
+ </XMI.header>
+ <XMI.content>
+ <UML:Model isSpecification="false" isLeaf="false" isRoot="false" isAbstract="false" >
+ <UML:Namespace.ownedElement>
+ <UML:Stereotype isSpecification="false" isLeaf="false" visibility="public" xmi.id="3" isRoot="false" isAbstract="false" name="datatype" />
+ <UML:Stereotype isSpecification="false" isLeaf="false" visibility="public" xmi.id="12" isRoot="false" isAbstract="false" name="interface" />
+ <UML:DataType stereotype="3" isSpecification="false" isLeaf="false" visibility="public" xmi.id="2" isRoot="false" isAbstract="false" name="int" />
+ <UML:DataType stereotype="3" isSpecification="false" isLeaf="false" visibility="public" xmi.id="4" isRoot="false" isAbstract="false" name="char" />
+ <UML:DataType stereotype="3" isSpecification="false" isLeaf="false" visibility="public" xmi.id="5" isRoot="false" isAbstract="false" name="bool" />
+ <UML:DataType stereotype="3" isSpecification="false" isLeaf="false" visibility="public" xmi.id="6" isRoot="false" isAbstract="false" name="float" />
+ <UML:DataType stereotype="3" isSpecification="false" isLeaf="false" visibility="public" xmi.id="7" isRoot="false" isAbstract="false" name="double" />
+ <UML:DataType stereotype="3" isSpecification="false" isLeaf="false" visibility="public" xmi.id="8" isRoot="false" isAbstract="false" name="long" />
+ <UML:DataType stereotype="3" isSpecification="false" isLeaf="false" visibility="public" xmi.id="9" isRoot="false" isAbstract="false" name="short" />
+ <UML:DataType stereotype="3" isSpecification="false" isLeaf="false" visibility="public" xmi.id="10" isRoot="false" isAbstract="false" name="string" />
+ <UML:DataType stereotype="3" isSpecification="false" isLeaf="false" visibility="public" xmi.id="14" isRoot="false" isAbstract="false" name="void" />
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="45" isRoot="false" isAbstract="true" name="ThunarVfsMimeProvider" >
+ <UML:Classifier.feature>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="46" isRoot="false" isAbstract="true" name="lookup_data" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="677" type="10" />
+ <UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="47" isRoot="false" value="" type="10" isAbstract="false" name="data" />
+ <UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="48" isRoot="false" value="" type="2" isAbstract="false" name="length" />
+ <UML:Parameter isSpecification="false" kind="out" isLeaf="false" visibility="private" xmi.id="49" isRoot="false" value="" type="2" isAbstract="false" name="priority" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="51" isRoot="false" isAbstract="true" name="lookup_literal" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="678" type="10" />
+ <UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="52" isRoot="false" value="" type="10" isAbstract="false" name="filename" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="54" isRoot="false" isAbstract="true" name="lookup_suffix" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="679" type="10" />
+ <UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="55" isRoot="false" value="" type="10" isAbstract="false" name="suffix" />
+ <UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="58" isRoot="false" value="" type="5" isAbstract="false" name="ignore_case" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="61" isRoot="false" isAbstract="true" name="lookup_glob" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="680" type="10" />
+ <UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="62" isRoot="false" value="" type="10" isAbstract="false" name="filename" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="66" isRoot="false" isAbstract="true" name="get_stop_characters" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="681" type="10" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="67" isRoot="false" isAbstract="true" name="get_max_buffer_extents" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="682" type="2" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="92" isRoot="false" isAbstract="false" name="ThunarVfsMimeCache" >
+ <UML:GeneralizableElement.generalization>
+ <UML:Generalization xmi.idref="142" />
+ </UML:GeneralizableElement.generalization>
+ </UML:Class>
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="99" isRoot="false" isAbstract="false" name="ThunarVfsMimeLegacy" >
+ <UML:GeneralizableElement.generalization>
+ <UML:Generalization xmi.idref="157" />
+ </UML:GeneralizableElement.generalization>
+ </UML:Class>
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="196" isRoot="false" isAbstract="false" name="ThunarVfsMimeDatabase" >
+ <UML:Classifier.feature>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="232" isRoot="false" isAbstract="false" name="get_info" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="683" type="204" />
+ <UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="233" isRoot="false" value="" type="10" isAbstract="false" name="mime_type" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="245" isRoot="false" isAbstract="false" name="get_info_for_data" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="684" type="204" />
+ <UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="246" isRoot="false" value="" type="10" isAbstract="false" name="data" />
+ <UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="258" isRoot="false" value="" type="2" isAbstract="false" name="length" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="270" isRoot="false" isAbstract="false" name="get_info_for_name" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="685" type="204" />
+ <UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="271" isRoot="false" value="" type="10" isAbstract="false" name="name" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="284" isRoot="false" isAbstract="false" name="get_info_for_file" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="686" type="204" />
+ <UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="285" isRoot="false" value="" type="10" isAbstract="false" name="path" />
+ <UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="299" isRoot="false" value="" type="10" isAbstract="false" name="name" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="204" isRoot="false" isAbstract="false" name="ThunarVfsMimeInfo" >
+ <UML:Classifier.feature>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="217" isRoot="false" isAbstract="false" name="get_comment" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="687" type="10" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="218" isRoot="false" isAbstract="false" name="get_name" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="688" type="10" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="219" isRoot="false" isAbstract="false" name="get_media" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="689" type="10" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="220" isRoot="false" isAbstract="false" name="get_subtype" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="690" type="10" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Generalization isSpecification="false" child="92" visibility="public" xmi.id="142" parent="45" discriminator="" name="" />
+ <UML:Generalization isSpecification="false" child="99" visibility="public" xmi.id="157" parent="45" discriminator="" name="" />
+ <UML:Association isSpecification="false" visibility="public" xmi.id="453" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="454" aggregation="none" type="196" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="private" changeability="changeable" isNavigable="true" xmi.id="455" aggregation="none" type="45" name="" multiplicity="*" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association isSpecification="false" visibility="public" xmi.id="544" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="545" aggregation="none" type="196" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="private" changeability="changeable" isNavigable="true" xmi.id="546" aggregation="none" type="204" name="" multiplicity="*" />
+ </UML:Association.connection>
+ </UML:Association>
+ </UML:Namespace.ownedElement>
+ </UML:Model>
+ </XMI.content>
+ <XMI.extensions xmi.extender="umbrello" >
+ <docsettings viewid="1" documentation="" uniqueid="690" />
+ <diagrams>
+ <diagram snapgrid="1" showattsig="1" fillcolor="#ffffc0" linewidth="0" zoom="100" showgrid="1" showopsig="1" usefillcolor="1" snapx="10" canvaswidth="886" snapy="10" showatts="1" xmi.id="1" documentation="" type="402" showops="1" showpackage="0" name="ThunarVFS MIME components" localid="900000" showstereotype="1" showscope="1" snapcsgrid="1" font="Bitstream Vera Sans,11,-1,5,50,0,0,0,0,0" linecolor="#ff0000" canvasheight="745" >
+ <widgets>
+ <classwidget usesdiagramfillcolour="0" width="540" showattsigs="601" usesdiagramusefillcolour="0" x="30" linecolour="#ff0000" y="235" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="170" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="45" showoperations="1" showpackage="0" showscope="1" showstereotype="1" font="Bitstream Vera Sans,11,-1,5,75,1,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="190" showattsigs="603" usesdiagramusefillcolour="0" x="105" linecolour="#ff0000" y="490" showopsigs="603" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="40" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="92" showoperations="0" showpackage="0" showscope="0" showstereotype="0" font="Bitstream Vera Sans,11,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="200" showattsigs="603" usesdiagramusefillcolour="0" x="310" linecolour="#ff0000" y="490" showopsigs="603" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="40" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="99" showoperations="0" showpackage="0" showscope="0" showstereotype="0" font="Bitstream Vera Sans,11,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="580" showattsigs="601" usesdiagramusefillcolour="0" x="10" linecolour="#ff0000" y="25" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="130" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="196" showoperations="1" showpackage="0" showscope="1" showstereotype="1" font="Bitstream Vera Sans,11,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="220" showattsigs="601" usesdiagramusefillcolour="0" x="590" linecolour="#ff0000" y="235" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="130" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="204" showoperations="1" showpackage="0" showscope="1" showstereotype="1" font="Bitstream Vera Sans,11,-1,5,75,0,0,0,0,0" />
+ </widgets>
+ <messages/>
+ <associations>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="3" indexb="1" widgetbid="45" widgetaid="92" xmi.id="142" >
+ <linepath>
+ <startpoint startx="200" starty="490" />
+ <endpoint endx="210" endy="405" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="3" indexb="2" widgetbid="45" widgetaid="99" xmi.id="157" >
+ <linepath>
+ <startpoint startx="410" starty="490" />
+ <endpoint endx="390" endy="405" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="45" widgetaid="196" xmi.id="453" >
+ <linepath>
+ <startpoint startx="300" starty="155" />
+ <endpoint endx="300" endy="235" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="20" usesdiagramusefillcolour="1" x="300" linecolour="none" y="205" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="702" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="501" text="*" font="Bitstream Vera Sans,11,-1,5,50,0,0,0,0,0" />
+ <floatingtext usesdiagramfillcolour="1" width="80" usesdiagramusefillcolour="1" x="205" linecolour="none" y="205" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="710" fillcolour="none" height="30" usefillcolor="1" pretext="-" isinstance="0" xmi.id="499" text="providers" font="Bitstream Vera Sans,11,-1,5,50,0,0,0,0,0" />
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="204" widgetaid="196" xmi.id="544" >
+ <linepath>
+ <startpoint startx="590" starty="90" />
+ <endpoint endx="700" endy="235" />
+ <point x="700" y="90" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="20" usesdiagramusefillcolour="1" x="700" linecolour="none" y="205" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="702" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="620" text="*" font="Bitstream Vera Sans,11,-1,5,50,0,0,0,0,0" />
+ <floatingtext usesdiagramfillcolour="1" width="50" usesdiagramusefillcolour="1" x="640" linecolour="none" y="205" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="710" fillcolour="none" height="30" usefillcolor="1" pretext="-" isinstance="0" xmi.id="618" text="infos" font="Bitstream Vera Sans,11,-1,5,50,0,0,0,0,0" />
+ </assocwidget>
+ </associations>
+ </diagram>
+ </diagrams>
+ <listview>
+ <listitem open="1" type="800" label="Views" >
+ <listitem open="1" type="801" label="Logical View" >
+ <listitem open="0" type="807" id="1" label="ThunarVFS MIME components" />
+ <listitem open="1" type="813" id="92" />
+ <listitem open="1" type="813" id="196" >
+ <listitem open="0" type="815" id="232" />
+ <listitem open="0" type="815" id="245" />
+ <listitem open="0" type="815" id="270" />
+ <listitem open="0" type="815" id="284" />
+ </listitem>
+ <listitem open="1" type="813" id="204" >
+ <listitem open="0" type="815" id="217" />
+ <listitem open="0" type="815" id="218" />
+ <listitem open="0" type="815" id="219" />
+ <listitem open="0" type="815" id="220" />
+ </listitem>
+ <listitem open="1" type="813" id="99" />
+ <listitem open="1" type="813" id="45" >
+ <listitem open="0" type="815" id="46" />
+ <listitem open="0" type="815" id="51" />
+ <listitem open="0" type="815" id="54" />
+ <listitem open="0" type="815" id="61" />
+ <listitem open="0" type="815" id="66" />
+ <listitem open="0" type="815" id="67" />
+ </listitem>
+ <listitem open="1" type="830" label="Datatypes" >
+ <listitem open="1" type="829" id="5" />
+ <listitem open="1" type="829" id="4" />
+ <listitem open="1" type="829" id="7" />
+ <listitem open="1" type="829" id="6" />
+ <listitem open="1" type="829" id="2" />
+ <listitem open="1" type="829" id="8" />
+ <listitem open="1" type="829" id="9" />
+ <listitem open="1" type="829" id="10" />
+ <listitem open="1" type="829" id="14" />
+ </listitem>
+ </listitem>
+ <listitem open="1" type="802" label="Use Case View" />
+ <listitem open="1" type="821" label="Component View" />
+ <listitem open="1" type="827" label="Deployment View" />
+ <listitem open="1" type="836" label="Entity Relationship Model" />
+ </listitem>
+ </listview>
+ <codegeneration>
+ <codegenerator language="Cpp" >
+ <codedocument writeOutCode="false" package="" id="Makefile_DOC" fileExt="" fileName="Makefile" >
+ <textblocks/>
+ <header>
+ <codecomment tag="" />
+ </header>
+ </codedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="45" parent_class="45" fileExt=".cpp" fileName="thunarvfsmimeprovider" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunarvfsmimeprovider.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks>
+ <codeoperation parent_id="46" tag="operation_46" canDelete="false" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="51" tag="operation_51" canDelete="false" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="54" tag="operation_54" canDelete="false" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="61" tag="operation_61" canDelete="false" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="66" tag="operation_66" canDelete="false" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="67" tag="operation_67" canDelete="false" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarvfsmimeprovider.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Sat Aug 6 2005 at 16:28:09&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields>
+ <codeclassfield parent_id="142" field_type="6619252" initialValue="" role_id="0" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="142" tag="" canDelete="false" writeOutText="false" indentLevel="1" role_id="1" text="FIX ME;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="142" tag="" canDelete="false" writeOutText="false" classfield_id="142" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="142" tag="" canDelete="false" writeOutText="false" classfield_id="142" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="142" tag="" canDelete="false" writeOutText="false" classfield_id="142" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="142" tag="" canDelete="false" writeOutText="false" classfield_id="142" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="142" tag="" canDelete="false" writeOutText="false" classfield_id="142" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="157" field_type="6619252" initialValue="" role_id="0" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="157" tag="" canDelete="false" writeOutText="false" indentLevel="1" role_id="1" text="FIX ME;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="157" tag="" canDelete="false" writeOutText="false" classfield_id="157" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="157" tag="" canDelete="false" writeOutText="false" classfield_id="157" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="157" tag="" canDelete="false" writeOutText="false" classfield_id="157" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="157" tag="" canDelete="false" writeOutText="false" classfield_id="157" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="157" tag="" canDelete="false" writeOutText="false" classfield_id="157" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="453" field_type="6619252" initialValue="" role_id="0" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="453" tag="" canDelete="false" writeOutText="false" indentLevel="1" role_id="1" text="FIX ME;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="453" tag="" canDelete="false" writeOutText="false" classfield_id="453" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="453" tag="" canDelete="false" writeOutText="false" classfield_id="453" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="453" tag="" canDelete="false" writeOutText="false" classfield_id="453" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="453" tag="" canDelete="false" writeOutText="false" classfield_id="453" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="453" tag="" canDelete="false" writeOutText="false" classfield_id="453" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ </classfields>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="92" parent_class="92" fileExt=".cpp" fileName="thunarvfsmimecache" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunarvfsmimecache.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarvfsmimecache.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Sat Aug 6 2005 at 16:28:57&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields>
+ <codeclassfield parent_id="142" field_type="7667816" initialValue="" role_id="1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="142" tag="" canDelete="false" writeOutText="false" indentLevel="1" role_id="0" text="FIX ME;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="142" tag="" canDelete="false" writeOutText="false" classfield_id="142" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="142" tag="" canDelete="false" writeOutText="false" classfield_id="142" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="142" tag="" canDelete="false" writeOutText="false" classfield_id="142" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="142" tag="" canDelete="false" writeOutText="false" classfield_id="142" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="142" tag="" canDelete="false" writeOutText="false" classfield_id="142" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ </classfields>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="99" parent_class="99" fileExt=".cpp" fileName="thunarvfsmimelegacy" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunarvfsmimelegacy.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarvfsmimelegacy.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Sat Aug 6 2005 at 16:28:59&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields>
+ <codeclassfield parent_id="157" field_type="6815828" initialValue="" role_id="1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="157" tag="" canDelete="false" writeOutText="false" indentLevel="1" role_id="0" text="FIX ME;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="157" tag="" canDelete="false" writeOutText="false" classfield_id="157" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="157" tag="" canDelete="false" writeOutText="false" classfield_id="157" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="157" tag="" canDelete="false" writeOutText="false" classfield_id="157" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="157" tag="" canDelete="false" writeOutText="false" classfield_id="157" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="157" tag="" canDelete="false" writeOutText="false" classfield_id="157" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ </classfields>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="196" parent_class="196" fileExt=".cpp" fileName="thunarvfsmimedatabase" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunarvfsmimedatabase.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks>
+ <codeoperation parent_id="232" tag="operation_232" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="245" tag="operation_245" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="270" tag="operation_270" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="284" tag="operation_284" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarvfsmimedatabase.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Sat Aug 6 2005 at 16:28:34&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields>
+ <codeclassfield parent_id="453" field_type="6226034" initialValue=" new vector( )" role_id="1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="453" tag="" canDelete="false" indentLevel="1" role_id="0" text="FIX ME;" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="453" tag="" canDelete="false" writeOutText="false" classfield_id="453" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="453" tag="" canDelete="false" writeOutText="false" classfield_id="453" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="453" tag="" canDelete="false" classfield_id="453" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="453" tag="" canDelete="false" classfield_id="453" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="453" tag="" canDelete="false" classfield_id="453" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="544" field_type="6226034" initialValue=" new vector( )" role_id="1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="544" tag="" canDelete="false" indentLevel="1" role_id="0" text="FIX ME;" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="544" tag="" canDelete="false" writeOutText="false" classfield_id="544" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="544" tag="" canDelete="false" writeOutText="false" classfield_id="544" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="544" tag="" canDelete="false" classfield_id="544" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="544" tag="" canDelete="false" classfield_id="544" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="544" tag="" canDelete="false" classfield_id="544" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ </classfields>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="204" parent_class="204" fileExt=".cpp" fileName="thunarvfsmimeinfo" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunarvfsmimeinfo.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks>
+ <codeoperation parent_id="217" tag="operation_217" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="218" tag="operation_218" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="219" tag="operation_219" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="220" tag="operation_220" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarvfsmimeinfo.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Sat Aug 6 2005 at 16:28:43&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields>
+ <codeclassfield parent_id="544" field_type="6684773" initialValue="" role_id="0" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="544" tag="" canDelete="false" writeOutText="false" indentLevel="1" role_id="1" text="FIX ME;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="544" tag="" canDelete="false" writeOutText="false" classfield_id="544" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="544" tag="" canDelete="false" writeOutText="false" classfield_id="544" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="544" tag="" canDelete="false" writeOutText="false" classfield_id="544" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="544" tag="" canDelete="false" writeOutText="false" classfield_id="544" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="544" tag="" canDelete="false" writeOutText="false" classfield_id="544" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ </classfields>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader45" parent_class="45" fileExt=".h" fileName="thunarvfsmimeprovider" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARVFSMIMEPROVIDER_H&#010;#define THUNARVFSMIMEPROVIDER_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;#include "thunarvfsmimedatabase.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="45" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarVfsMimeProvider&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarVfsMimeProvider ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks>
+ <codeoperation parent_id="46" tag="operation_46" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="&#010;@param data &#010;@param length &#010;@param priority " />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="51" tag="operation_51" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="&#010;@param filename " />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="54" tag="operation_54" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="&#010;@param suffix &#010;@param ignore_case " />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="61" tag="operation_61" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="&#010;@param filename " />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="66" tag="operation_66" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="67" tag="operation_67" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeoperation>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARVFSMIMEPROVIDER_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarvfsmimeprovider.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Sat Aug 6 2005 at 16:28:09&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields>
+ <codeclassfield parent_id="142" field_type="7143519" initialValue="" role_id="0" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="142" tag="" canDelete="false" writeOutText="false" indentLevel="1" role_id="1" text=" ThunarVfsMimeCache ;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="142" tag="" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="142" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="142" tag="" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="142" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="142" tag="" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="142" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="142" tag="" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="142" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="142" tag="" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="142" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="157" field_type="7143519" initialValue="" role_id="0" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="157" tag="" canDelete="false" writeOutText="false" indentLevel="1" role_id="1" text=" ThunarVfsMimeLegacy ;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="157" tag="" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="157" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="157" tag="" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="157" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="157" tag="" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="157" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="157" tag="" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="157" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="157" tag="" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="157" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="453" field_type="7143519" initialValue="" role_id="0" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="453" tag="" canDelete="false" writeOutText="false" indentLevel="1" role_id="1" text=" ThunarVfsMimeDatabase ;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="453" tag="" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="453" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="453" tag="" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="453" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="453" tag="" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="453" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="453" tag="" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="453" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="453" tag="" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="453" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ </classfields>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader92" parent_class="92" fileExt=".h" fileName="thunarvfsmimecache" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARVFSMIMECACHE_H&#010;#define THUNARVFSMIMECACHE_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;#include "thunarvfsmimeprovider.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="92" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarVfsMimeCache&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarVfsMimeCache ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARVFSMIMECACHE_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarvfsmimecache.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Sat Aug 6 2005 at 16:28:57&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields>
+ <codeclassfield parent_id="142" field_type="6815860" initialValue="" role_id="1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="142" tag="" canDelete="false" writeOutText="false" indentLevel="1" role_id="0" text=" ThunarVfsMimeProvider ;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="142" tag="" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="142" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="142" tag="" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="142" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="142" tag="" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="142" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="142" tag="" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="142" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="142" tag="" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="142" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ </classfields>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader99" parent_class="99" fileExt=".h" fileName="thunarvfsmimelegacy" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARVFSMIMELEGACY_H&#010;#define THUNARVFSMIMELEGACY_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;#include "thunarvfsmimeprovider.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="99" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarVfsMimeLegacy&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarVfsMimeLegacy ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARVFSMIMELEGACY_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarvfsmimelegacy.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Sat Aug 6 2005 at 16:28:59&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields>
+ <codeclassfield parent_id="157" field_type="6815860" initialValue="" role_id="1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="157" tag="" canDelete="false" writeOutText="false" indentLevel="1" role_id="0" text=" ThunarVfsMimeProvider ;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="157" tag="" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="157" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="157" tag="" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="157" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="157" tag="" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="157" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="157" tag="" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="157" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="157" tag="" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="157" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ </classfields>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader196" parent_class="196" fileExt=".h" fileName="thunarvfsmimedatabase" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARVFSMIMEDATABASE_H&#010;#define THUNARVFSMIMEDATABASE_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;#include <vector>&#010;#include "thunarvfsmimeprovider.h"&#010;#include "thunarvfsmimeinfo.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="196" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarVfsMimeDatabase&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarVfsMimeDatabase ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks>
+ <codeoperation parent_id="232" tag="operation_232" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="&#010;@param mime_type " />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="245" tag="operation_245" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="&#010;@param data &#010;@param length " />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="270" tag="operation_270" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="&#010;@param name " />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="284" tag="operation_284" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="&#010;@param path &#010;@param name " />
+ </header>
+ </codeoperation>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARVFSMIMEDATABASE_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarvfsmimedatabase.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Sat Aug 6 2005 at 16:28:34&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields>
+ <codeclassfield parent_id="453" field_type="4456549" initialValue=" new vector( )" role_id="1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="453" tag="" canDelete="false" indentLevel="1" role_id="0" text=" vector providersVector;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="453" tag="" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="453" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="453" tag="" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="453" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="453" tag="" canDelete="false" indentLevel="1" classfield_id="453" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="453" tag="" canDelete="false" indentLevel="1" classfield_id="453" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="453" tag="" canDelete="false" indentLevel="1" classfield_id="453" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="544" field_type="4456549" initialValue=" new vector( )" role_id="1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="544" tag="" canDelete="false" indentLevel="1" role_id="0" text=" vector infosVector;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="544" tag="" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="544" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="544" tag="" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="544" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="544" tag="" canDelete="false" indentLevel="1" classfield_id="544" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="544" tag="" canDelete="false" indentLevel="1" classfield_id="544" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="544" tag="" canDelete="false" indentLevel="1" classfield_id="544" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ </classfields>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader204" parent_class="204" fileExt=".h" fileName="thunarvfsmimeinfo" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARVFSMIMEINFO_H&#010;#define THUNARVFSMIMEINFO_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;#include "thunarvfsmimedatabase.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="204" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarVfsMimeInfo&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarVfsMimeInfoi ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks>
+ <codeoperation parent_id="217" tag="operation_217" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="218" tag="operation_218" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="219" tag="operation_219" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="220" tag="operation_220" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeoperation>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARVFSMIMEINFO_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarvfsmimeinfo.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Sat Aug 6 2005 at 16:28:43&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields>
+ <codeclassfield parent_id="544" field_type="7667827" initialValue="" role_id="0" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="544" tag="" canDelete="false" writeOutText="false" indentLevel="1" role_id="1" text=" ThunarVfsMimeDatabase ;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="544" tag="" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="544" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="544" tag="" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="544" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="544" tag="" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="544" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="544" tag="" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="544" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="544" tag="" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="544" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ </classfields>
+ </classifiercodedocument>
+ </codegenerator>
+ </codegeneration>
+ </XMI.extensions>
+</XMI>
Added: desktop/trunk/thunar/branches/upstream/current/docs/design/overview.xmi
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/design/overview.xmi 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/design/overview.xmi 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,15653 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<XMI xmlns:UML="http://schema.omg.org/spec/UML/1.3" verified="false" timestamp="2005-06-14T22:18:04" xmi.version="1.2" >
+ <XMI.header>
+ <XMI.documentation>
+ <XMI.exporter>umbrello uml modeller http://uml.sf.net</XMI.exporter>
+ <XMI.exporterVersion>1.4</XMI.exporterVersion>
+ <XMI.exporterEncoding>UnicodeUTF8</XMI.exporterEncoding>
+ </XMI.documentation>
+ <XMI.metamodel xmi.name="UML" href="UML.xml" xmi.version="1.3" />
+ </XMI.header>
+ <XMI.content>
+ <UML:Model isSpecification="false" isLeaf="false" isRoot="false" isAbstract="false" >
+ <UML:Namespace.ownedElement>
+ <UML:Stereotype isSpecification="false" isLeaf="false" visibility="public" xmi.id="62" isRoot="false" isAbstract="false" name="datatype" />
+ <UML:Stereotype isSpecification="false" isLeaf="false" visibility="public" xmi.id="119" isRoot="false" isAbstract="false" name="enum" />
+ <UML:Stereotype isSpecification="false" isLeaf="false" visibility="public" xmi.id="197" isRoot="false" isAbstract="false" name="interface" />
+ <UML:DataType stereotype="62" isSpecification="false" isLeaf="false" visibility="public" xmi.id="1638" isRoot="false" isAbstract="false" name="void" />
+ <UML:DataType stereotype="62" isSpecification="false" isLeaf="false" visibility="public" xmi.id="61" isRoot="false" isAbstract="false" name="int" />
+ <UML:DataType stereotype="62" isSpecification="false" isLeaf="false" visibility="public" xmi.id="63" isRoot="false" isAbstract="false" name="char" />
+ <UML:DataType stereotype="62" isSpecification="false" isLeaf="false" visibility="public" xmi.id="64" isRoot="false" isAbstract="false" name="bool" />
+ <UML:DataType stereotype="62" isSpecification="false" isLeaf="false" visibility="public" xmi.id="65" isRoot="false" isAbstract="false" name="float" />
+ <UML:DataType stereotype="62" isSpecification="false" isLeaf="false" visibility="public" xmi.id="66" isRoot="false" isAbstract="false" name="double" />
+ <UML:DataType stereotype="62" isSpecification="false" isLeaf="false" visibility="public" xmi.id="67" isRoot="false" isAbstract="false" name="long" />
+ <UML:DataType stereotype="62" isSpecification="false" isLeaf="false" visibility="public" xmi.id="68" isRoot="false" isAbstract="false" name="short" />
+ <UML:DataType stereotype="62" isSpecification="false" isLeaf="false" visibility="public" xmi.id="69" isRoot="false" isAbstract="false" name="string" />
+ <UML:DataType stereotype="62" isSpecification="false" isLeaf="false" visibility="public" xmi.id="173" isRoot="false" isAbstract="false" name="uid_t" />
+ <UML:DataType stereotype="62" isSpecification="false" isLeaf="false" visibility="public" xmi.id="175" isRoot="false" isAbstract="false" name="gid_t" />
+ <UML:DataType stereotype="62" isSpecification="false" isLeaf="false" visibility="public" xmi.id="177" isRoot="false" isAbstract="false" name="off_t" />
+ <UML:DataType stereotype="62" isSpecification="false" isLeaf="false" visibility="public" xmi.id="179" isRoot="false" isAbstract="false" name="time_t" />
+ <UML:DataType stereotype="62" isSpecification="false" isLeaf="false" visibility="public" xmi.id="183" isRoot="false" isAbstract="false" name="ino_t" />
+ <UML:DataType stereotype="62" isSpecification="false" isLeaf="false" visibility="public" xmi.id="185" isRoot="false" isAbstract="false" name="dev_t" />
+ <UML:DataType stereotype="62" isSpecification="false" isLeaf="false" visibility="public" xmi.id="422" isRoot="false" isAbstract="false" name="ThunarVfsURI" />
+ <UML:DataType stereotype="62" isSpecification="false" isLeaf="false" visibility="public" xmi.id="744" isRoot="false" isAbstract="false" name="ExoMimeInfo" />
+ <UML:DataType stereotype="62" isSpecification="false" isLeaf="false" visibility="public" xmi.id="767" isRoot="false" isAbstract="false" name="ThunarVfsFileSize" />
+ <UML:DataType stereotype="62" isSpecification="false" isLeaf="false" visibility="public" xmi.id="768" isRoot="false" isAbstract="false" name="ThunarVfsFileTime" />
+ <UML:DataType stereotype="62" isSpecification="false" isLeaf="false" visibility="public" xmi.id="769" isRoot="false" isAbstract="false" name="ThunarVfsFileInode" />
+ <UML:DataType stereotype="62" isSpecification="false" isLeaf="false" visibility="public" xmi.id="770" isRoot="false" isAbstract="false" name="ThunarVfsFileDevice" />
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="1637" isRoot="false" isAbstract="false" name="class" />
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="1636" isRoot="false" isAbstract="false" name="GError" />
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="70" isRoot="false" isAbstract="false" name="ThunarFile" >
+ <UML:Classifier.feature>
+ <UML:Attribute isSpecification="false" isLeaf="false" visibility="private" xmi.id="686" isRoot="false" initialValue="" type="69" isAbstract="false" name="display_name" />
+ <UML:Attribute isSpecification="false" isLeaf="false" visibility="private" xmi.id="743" isRoot="false" initialValue="" type="744" isAbstract="false" name="mime_info" />
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="692" isRoot="false" isAbstract="false" name="get_for_uri" ownerScope="classifier" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="2027" type="70" />
+ <UML:Parameter isSpecification="false" isLeaf="false" visibility="public" xmi.id="693" isRoot="false" value="" type="422" isAbstract="false" name="uri" />
+ <UML:Parameter isSpecification="false" kind="out" isLeaf="false" visibility="public" xmi.id="783" isRoot="false" value="" type="1636" isAbstract="false" name="error" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="745" isRoot="false" isAbstract="false" name="get_mode_string" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="2028" type="69" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="746" isRoot="false" isAbstract="false" name="get_size_string" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="2029" type="69" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="747" isRoot="false" isAbstract="false" name="is_hidden" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="2030" type="64" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="748" isRoot="false" isAbstract="false" name="is_directory" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="2031" type="64" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="749" isRoot="false" isAbstract="false" name="is_symlink" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="2032" type="64" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="71" isRoot="false" isAbstract="false" name="ThunarFolder" >
+ <UML:Classifier.feature>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="761" isRoot="false" isAbstract="false" name="get_for_file" ownerScope="classifier" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="2033" type="71" />
+ <UML:Parameter isSpecification="false" isLeaf="false" visibility="public" xmi.id="762" isRoot="false" value="" type="70" isAbstract="false" name="file" />
+ <UML:Parameter isSpecification="false" kind="out" isLeaf="false" visibility="public" xmi.id="763" isRoot="false" value="" type="1636" isAbstract="false" name="error" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="764" isRoot="false" isAbstract="false" name="get_for_uri" ownerScope="classifier" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="2034" type="71" />
+ <UML:Parameter isSpecification="false" isLeaf="false" visibility="public" xmi.id="765" isRoot="false" value="" type="422" isAbstract="false" name="uri" />
+ <UML:Parameter isSpecification="false" kind="out" isLeaf="false" visibility="public" xmi.id="766" isRoot="false" value="" type="1636" isAbstract="false" name="error" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Package isSpecification="false" isLeaf="false" visibility="public" xmi.id="78" isRoot="false" isAbstract="false" name="thunar-vfs" >
+ <UML:Namespace.ownedElement>
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="73" isRoot="false" isAbstract="false" name="ThunarVfsInfo" >
+ <UML:Classifier.feature>
+ <UML:Attribute isSpecification="false" isLeaf="false" visibility="public" xmi.id="117" isRoot="false" initialValue="" type="69" isAbstract="false" name="target" />
+ <UML:Attribute isSpecification="false" isLeaf="false" visibility="public" xmi.id="172" isRoot="false" initialValue="" type="173" isAbstract="false" name="uid" />
+ <UML:Attribute isSpecification="false" isLeaf="false" visibility="public" xmi.id="174" isRoot="false" initialValue="" type="175" isAbstract="false" name="gid" />
+ <UML:Attribute isSpecification="false" isLeaf="false" visibility="public" xmi.id="176" isRoot="false" initialValue="" type="767" isAbstract="false" name="size" />
+ <UML:Attribute isSpecification="false" isLeaf="false" visibility="public" xmi.id="178" isRoot="false" initialValue="" type="768" isAbstract="false" name="atime" />
+ <UML:Attribute isSpecification="false" isLeaf="false" visibility="public" xmi.id="180" isRoot="false" initialValue="" type="768" isAbstract="false" name="mtime" />
+ <UML:Attribute isSpecification="false" isLeaf="false" visibility="public" xmi.id="181" isRoot="false" initialValue="" type="768" isAbstract="false" name="ctime" />
+ <UML:Attribute isSpecification="false" isLeaf="false" visibility="public" xmi.id="182" isRoot="false" initialValue="" type="769" isAbstract="false" name="inode" />
+ <UML:Attribute isSpecification="false" isLeaf="false" visibility="public" xmi.id="184" isRoot="false" initialValue="" type="770" isAbstract="false" name="device" />
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="771" isRoot="false" isAbstract="false" name="get_mime_info" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="2035" type="744" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="72" isRoot="false" isAbstract="false" name="ThunarVfsURI" >
+ <UML:GeneralizableElement.generalization>
+ <UML:Generalization xmi.idref="288" />
+ </UML:GeneralizableElement.generalization>
+ <UML:Classifier.feature>
+ <UML:Attribute isSpecification="false" isLeaf="false" visibility="private" xmi.id="1187" isRoot="false" initialValue="" type="69" isAbstract="false" name="host" />
+ <UML:Attribute isSpecification="false" isLeaf="false" visibility="private" xmi.id="102" isRoot="false" initialValue="" type="69" isAbstract="false" name="path" />
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="114" isRoot="false" isAbstract="false" name="parent" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="2036" type="72" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="115" isRoot="false" isAbstract="false" name="relative" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="2037" type="72" />
+ <UML:Parameter isSpecification="false" isLeaf="false" visibility="public" xmi.id="116" isRoot="false" value="" type="69" isAbstract="false" name="name" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="169" isRoot="false" isAbstract="false" name="hash" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="2038" type="61" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="170" isRoot="false" isAbstract="false" name="equal" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="2039" type="64" />
+ <UML:Parameter isSpecification="false" isLeaf="false" visibility="public" xmi.id="171" isRoot="false" value="" type="422" isAbstract="false" name="uri" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="889" isRoot="false" isAbstract="false" name="is_local" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="2040" type="64" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="890" isRoot="false" isAbstract="false" name="is_root" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="2041" type="64" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="835" isRoot="false" isAbstract="false" name="ThunarVfsMonitor" >
+ <UML:Classifier.feature>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="836" isRoot="false" isAbstract="false" name="get_for_uri" ownerScope="classifier" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="2042" type="835" />
+ <UML:Parameter isSpecification="false" isLeaf="false" visibility="public" xmi.id="837" isRoot="false" value="" type="422" isAbstract="false" name="uri" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ </UML:Classifier.feature>
+ </UML:Class>
+ </UML:Namespace.ownedElement>
+ </UML:Package>
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="85" isRoot="false" isAbstract="false" name="ThunarDesktopFile" >
+ <UML:GeneralizableElement.generalization>
+ <UML:Generalization xmi.idref="86" />
+ </UML:GeneralizableElement.generalization>
+ </UML:Class>
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="87" isRoot="false" isAbstract="false" name="ThunarTrashedFile" >
+ <UML:GeneralizableElement.generalization>
+ <UML:Generalization xmi.idref="88" />
+ </UML:GeneralizableElement.generalization>
+ </UML:Class>
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="89" isRoot="false" isAbstract="false" name="ThunarTrashFolder" >
+ <UML:GeneralizableElement.generalization>
+ <UML:Generalization xmi.idref="90" />
+ </UML:GeneralizableElement.generalization>
+ </UML:Class>
+ <UML:Enumeration stereotype="119" isSpecification="false" isLeaf="false" visibility="public" xmi.id="118" isRoot="false" isAbstract="false" name="ThunarVfsFileType" >
+ <UML:EnumerationLiteral isSpecification="false" isLeaf="false" visibility="public" xmi.id="120" isRoot="false" isAbstract="false" name="SOCKET" />
+ <UML:EnumerationLiteral isSpecification="false" isLeaf="false" visibility="public" xmi.id="121" isRoot="false" isAbstract="false" name="SYMLINK" />
+ <UML:EnumerationLiteral isSpecification="false" isLeaf="false" visibility="public" xmi.id="122" isRoot="false" isAbstract="false" name="REGULAR" />
+ <UML:EnumerationLiteral isSpecification="false" isLeaf="false" visibility="public" xmi.id="123" isRoot="false" isAbstract="false" name="BLOCKDEV" />
+ <UML:EnumerationLiteral isSpecification="false" isLeaf="false" visibility="public" xmi.id="124" isRoot="false" isAbstract="false" name="DIRECTORY" />
+ <UML:EnumerationLiteral isSpecification="false" isLeaf="false" visibility="public" xmi.id="125" isRoot="false" isAbstract="false" name="CHARDEV" />
+ <UML:EnumerationLiteral isSpecification="false" isLeaf="false" visibility="public" xmi.id="126" isRoot="false" isAbstract="false" name="FIFO" />
+ <UML:EnumerationLiteral isSpecification="false" isLeaf="false" visibility="public" xmi.id="127" isRoot="false" isAbstract="false" name="UNKNOWN" />
+ </UML:Enumeration>
+ <UML:Enumeration stereotype="119" isSpecification="false" isLeaf="false" visibility="public" xmi.id="133" isRoot="false" isAbstract="false" name="ThunarVfsFileMode" >
+ <UML:EnumerationLiteral isSpecification="false" isLeaf="false" visibility="public" xmi.id="134" isRoot="false" isAbstract="false" name="SUID" />
+ <UML:EnumerationLiteral isSpecification="false" isLeaf="false" visibility="public" xmi.id="135" isRoot="false" isAbstract="false" name="SGID" />
+ <UML:EnumerationLiteral isSpecification="false" isLeaf="false" visibility="public" xmi.id="136" isRoot="false" isAbstract="false" name="STICKY" />
+ <UML:EnumerationLiteral isSpecification="false" isLeaf="false" visibility="public" xmi.id="137" isRoot="false" isAbstract="false" name="USR_ALL" />
+ <UML:EnumerationLiteral isSpecification="false" isLeaf="false" visibility="public" xmi.id="138" isRoot="false" isAbstract="false" name="USR_READ" />
+ <UML:EnumerationLiteral isSpecification="false" isLeaf="false" visibility="public" xmi.id="139" isRoot="false" isAbstract="false" name="USR_WRITE" />
+ <UML:EnumerationLiteral isSpecification="false" isLeaf="false" visibility="public" xmi.id="140" isRoot="false" isAbstract="false" name="USR_EXEC" />
+ <UML:EnumerationLiteral isSpecification="false" isLeaf="false" visibility="public" xmi.id="141" isRoot="false" isAbstract="false" name="GRP_ALL" />
+ <UML:EnumerationLiteral isSpecification="false" isLeaf="false" visibility="public" xmi.id="142" isRoot="false" isAbstract="false" name="GRP_READ" />
+ <UML:EnumerationLiteral isSpecification="false" isLeaf="false" visibility="public" xmi.id="143" isRoot="false" isAbstract="false" name="GRP_WRITE" />
+ <UML:EnumerationLiteral isSpecification="false" isLeaf="false" visibility="public" xmi.id="144" isRoot="false" isAbstract="false" name="GRP_EXEC" />
+ <UML:EnumerationLiteral isSpecification="false" isLeaf="false" visibility="public" xmi.id="145" isRoot="false" isAbstract="false" name="OTH_ALL" />
+ <UML:EnumerationLiteral isSpecification="false" isLeaf="false" visibility="public" xmi.id="146" isRoot="false" isAbstract="false" name="OTH_READ" />
+ <UML:EnumerationLiteral isSpecification="false" isLeaf="false" visibility="public" xmi.id="147" isRoot="false" isAbstract="false" name="OTH_WRITE" />
+ <UML:EnumerationLiteral isSpecification="false" isLeaf="false" visibility="public" xmi.id="148" isRoot="false" isAbstract="false" name="OTH_EXEC" />
+ </UML:Enumeration>
+ <UML:Enumeration stereotype="119" isSpecification="false" isLeaf="false" visibility="public" xmi.id="154" isRoot="false" isAbstract="false" name="ThunarVfsFileFlags" >
+ <UML:EnumerationLiteral isSpecification="false" isLeaf="false" visibility="public" xmi.id="155" isRoot="false" isAbstract="false" name="NONE" />
+ <UML:EnumerationLiteral isSpecification="false" isLeaf="false" visibility="public" xmi.id="156" isRoot="false" isAbstract="false" name="SYMLINK" />
+ </UML:Enumeration>
+ <UML:Package isSpecification="false" isLeaf="false" visibility="public" xmi.id="162" isRoot="false" isAbstract="false" name="exo" >
+ <UML:Namespace.ownedElement>
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="163" isRoot="false" isAbstract="false" name="ExoMimeInfo" />
+ </UML:Namespace.ownedElement>
+ </UML:Package>
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="195" isRoot="false" isAbstract="false" name="ThunarListModel" />
+ <UML:Package isSpecification="false" isLeaf="false" visibility="public" xmi.id="198" isRoot="false" isAbstract="false" name="gobject" >
+ <UML:Namespace.ownedElement>
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="186" isRoot="false" isAbstract="false" name="GSignal" >
+ <UML:ModelElement.templateParameter>
+ <UML:TemplateParameter isSpecification="false" isLeaf="false" visibility="public" xmi.id="187" isRoot="false" type="1637" isAbstract="false" name="type" />
+ </UML:ModelElement.templateParameter>
+ <UML:Namespace.ownedElement>
+ <UML:TemplateParameter isSpecification="false" isLeaf="false" visibility="public" xmi.id="187" isRoot="false" type="1637" isAbstract="false" name="type" />
+ </UML:Namespace.ownedElement>
+ </UML:Class>
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="267" isRoot="false" isAbstract="false" name="GObject" />
+ </UML:Namespace.ownedElement>
+ </UML:Package>
+ <UML:Package isSpecification="false" isLeaf="false" visibility="public" xmi.id="199" isRoot="false" isAbstract="false" name="gtk" >
+ <UML:Namespace.ownedElement>
+ <UML:Interface stereotype="197" isSpecification="false" isLeaf="false" visibility="public" xmi.id="196" isRoot="false" isAbstract="true" name="GtkTreeModel" />
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="226" isRoot="false" isAbstract="false" name="GtkTreeView" />
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="1009" isRoot="false" isAbstract="false" name="GtkContainer" />
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="1010" isRoot="false" isAbstract="false" name="GtkButton" />
+ </UML:Namespace.ownedElement>
+ </UML:Package>
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="202" isRoot="false" isAbstract="false" name="ThunarTreeModel" />
+ <UML:Interface stereotype="197" isSpecification="false" isLeaf="false" visibility="public" xmi.id="214" isRoot="false" isAbstract="true" name="ThunarView" />
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="220" isRoot="false" isAbstract="false" name="ThunarListView" />
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="221" isRoot="false" isAbstract="false" name="ThunarIconView" />
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="224" isRoot="false" isAbstract="false" name="ThunarTreeView" >
+ <UML:GeneralizableElement.generalization>
+ <UML:Generalization xmi.idref="227" />
+ </UML:GeneralizableElement.generalization>
+ </UML:Class>
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="234" isRoot="false" isAbstract="false" name="ThunarWindow" />
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="240" isRoot="false" isAbstract="false" name="ThunarStatusBar" >
+ <UML:Classifier.feature>
+ <UML:Attribute isSpecification="false" isLeaf="false" visibility="private" xmi.id="946" isRoot="false" initialValue="" type="69" isAbstract="false" name="text" />
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="251" isRoot="false" isAbstract="false" name="ThunarApplication" />
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="257" isRoot="false" isAbstract="false" name="ThunarDesktopView" />
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="264" isRoot="false" isAbstract="false" name="ThunarPreferences" >
+ <UML:GeneralizableElement.generalization>
+ <UML:Generalization xmi.idref="268" />
+ </UML:GeneralizableElement.generalization>
+ <UML:Classifier.feature>
+ <UML:Attribute isSpecification="false" isLeaf="false" visibility="private" xmi.id="265" isRoot="false" initialValue="" type="64" isAbstract="false" name="manage-desktop" />
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="269" isRoot="false" isAbstract="false" name="ThunarPreferencesDialog" >
+ <UML:Classifier.feature>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="270" isRoot="false" isAbstract="false" name="get_for_window" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="2043" type="269" />
+ <UML:Parameter isSpecification="false" isLeaf="false" visibility="public" xmi.id="271" isRoot="false" value="" type="234" isAbstract="false" name="window" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="279" isRoot="false" isAbstract="false" name="ThunarDesktopModel" >
+ <UML:GeneralizableElement.generalization>
+ <UML:Generalization xmi.idref="280" />
+ </UML:GeneralizableElement.generalization>
+ </UML:Class>
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="327" isRoot="false" isAbstract="true" name="ThunarSidePane" />
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="334" isRoot="false" isAbstract="false" name="ThunarTreePane" >
+ <UML:GeneralizableElement.generalization>
+ <UML:Generalization xmi.idref="337" />
+ </UML:GeneralizableElement.generalization>
+ </UML:Class>
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="335" isRoot="false" isAbstract="false" name="ThunarFavouritesPane" >
+ <UML:GeneralizableElement.generalization>
+ <UML:Generalization xmi.idref="338" />
+ </UML:GeneralizableElement.generalization>
+ </UML:Class>
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="336" isRoot="false" isAbstract="false" name="ThunarFavouritesView" >
+ <UML:GeneralizableElement.generalization>
+ <UML:Generalization xmi.idref="353" />
+ </UML:GeneralizableElement.generalization>
+ </UML:Class>
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="343" isRoot="false" isAbstract="false" name="ThunarFavouritesModel" />
+ <UML:Component executable="0" isSpecification="false" isLeaf="false" visibility="public" xmi.id="425" isRoot="false" isAbstract="false" name="GUI" />
+ <UML:Component executable="0" isSpecification="false" isLeaf="false" visibility="public" xmi.id="426" isRoot="false" isAbstract="false" name="Application Layer" />
+ <UML:Component executable="0" isSpecification="false" isLeaf="false" visibility="public" xmi.id="428" isRoot="false" isAbstract="false" name="Plugin interface" />
+ <UML:Component executable="0" isSpecification="false" isLeaf="false" visibility="public" xmi.id="429" isRoot="false" isAbstract="false" name="IPC interface" />
+ <UML:Component executable="0" isSpecification="false" isLeaf="false" visibility="public" xmi.id="432" isRoot="false" isAbstract="false" name="ThunarVFS" />
+ <UML:Component executable="0" isSpecification="false" isLeaf="false" visibility="public" xmi.id="479" isRoot="false" isAbstract="false" name="Backend" />
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="535" isRoot="false" isAbstract="false" name="ThunarMimeAction" />
+ <UML:Interface stereotype="197" isSpecification="false" isLeaf="false" visibility="public" xmi.id="1001" isRoot="false" isAbstract="true" name="ThunarLocationBar" />
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="1002" isRoot="false" isAbstract="false" name="ThunarLocationButtons" >
+ <UML:GeneralizableElement.generalization>
+ <UML:Generalization xmi.idref="1011" />
+ </UML:GeneralizableElement.generalization>
+ </UML:Class>
+ <UML:Interface stereotype="197" isSpecification="false" isLeaf="false" visibility="public" xmi.id="1068" isRoot="false" isAbstract="true" name="ThunarNavigator" >
+ <UML:Classifier.feature>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="1069" isRoot="false" isAbstract="false" name="get_current_directory" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="2044" type="70" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="1070" isRoot="false" isAbstract="false" name="set_current_directory" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter isSpecification="false" isLeaf="false" visibility="public" xmi.id="1071" isRoot="false" value="" type="70" isAbstract="false" name="current_directory" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="1072" isRoot="false" isAbstract="false" name="change_directory" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter isSpecification="false" isLeaf="false" visibility="public" xmi.id="1073" isRoot="false" value="" type="70" isAbstract="false" name="directory" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ </UML:Classifier.feature>
+ </UML:Interface>
+ <UML:Enumeration stereotype="119" isSpecification="false" isLeaf="false" visibility="public" xmi.id="1188" isRoot="false" isAbstract="false" name="ThunarVfsURIScheme" >
+ <UML:EnumerationLiteral isSpecification="false" isLeaf="false" visibility="public" xmi.id="1189" isRoot="false" isAbstract="false" name="FILE" />
+ <UML:EnumerationLiteral isSpecification="false" isLeaf="false" visibility="public" xmi.id="1190" isRoot="false" isAbstract="false" name="TRASH" />
+ </UML:Enumeration>
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="1253" isRoot="false" isAbstract="false" name="ThunarVfsVolumeManagerBSD" >
+ <UML:Classifier.feature>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="1342" isRoot="false" isAbstract="false" name="lookup_by_device" />
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="1343" isRoot="false" isAbstract="false" name="lookup_by_path" />
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="1254" isRoot="false" isAbstract="false" name="ThunarVfsVolumeBSD" >
+ <UML:Classifier.feature>
+ <UML:Attribute isSpecification="false" isLeaf="false" visibility="private" xmi.id="1255" isRoot="false" initialValue="" type="64" isAbstract="false" name="mount-status" />
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Enumeration stereotype="119" isSpecification="false" isLeaf="false" visibility="public" xmi.id="1263" isRoot="false" isAbstract="false" name="ThunarVfsVolumeKind" >
+ <UML:EnumerationLiteral isSpecification="false" isLeaf="false" visibility="public" xmi.id="1267" isRoot="false" isAbstract="false" name="UNKNOWN" />
+ <UML:EnumerationLiteral isSpecification="false" isLeaf="false" visibility="public" xmi.id="1406" isRoot="false" isAbstract="false" name="CDROM" />
+ <UML:EnumerationLiteral isSpecification="false" isLeaf="false" visibility="public" xmi.id="1407" isRoot="false" isAbstract="false" name="FLOPPY" />
+ <UML:EnumerationLiteral isSpecification="false" isLeaf="false" visibility="public" xmi.id="1408" isRoot="false" isAbstract="false" name="HARDDISK" />
+ </UML:Enumeration>
+ <UML:Interface stereotype="197" isSpecification="false" isLeaf="false" visibility="public" xmi.id="1409" isRoot="false" isAbstract="true" name="ThunarVfsVolumeManager" >
+ <UML:Classifier.feature>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="1416" isRoot="false" isAbstract="false" name="get_volumes" />
+ </UML:Classifier.feature>
+ </UML:Interface>
+ <UML:Interface stereotype="197" isSpecification="false" isLeaf="false" visibility="public" xmi.id="1410" isRoot="false" isAbstract="true" name="ThunarVfsVolume" >
+ <UML:Classifier.feature>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="1413" isRoot="false" isAbstract="false" name="get_kind" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="2045" type="1263" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="1414" isRoot="false" isAbstract="false" name="get_mount_point" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="2046" type="422" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="1415" isRoot="false" isAbstract="false" name="get_mount_status" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="2047" type="64" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ </UML:Classifier.feature>
+ </UML:Interface>
+ <UML:Actor isSpecification="false" isLeaf="false" visibility="public" xmi.id="1480" isRoot="false" isAbstract="false" name="Trash system" />
+ <UML:Actor isSpecification="false" isLeaf="false" visibility="public" xmi.id="1481" isRoot="false" isAbstract="false" name="Favourites/Tree pane" />
+ <UML:UseCase isSpecification="false" isLeaf="false" visibility="public" xmi.id="1483" isRoot="false" isAbstract="false" name="Query volume for a given path" />
+ <UML:UseCase isSpecification="false" isLeaf="false" visibility="public" xmi.id="1485" isRoot="false" isAbstract="false" name="Mount volume" />
+ <UML:UseCase isSpecification="false" isLeaf="false" visibility="public" xmi.id="1486" isRoot="false" isAbstract="false" name="Umount/eject volume" />
+ <UML:UseCase isSpecification="false" isLeaf="false" visibility="public" xmi.id="1487" isRoot="false" isAbstract="false" name="Query removable volumes" />
+ <UML:UseCase isSpecification="false" isLeaf="false" visibility="public" xmi.id="1488" isRoot="false" isAbstract="false" name="Change notification" />
+ <UML:UseCase isSpecification="false" isLeaf="false" visibility="public" xmi.id="1489" isRoot="false" isAbstract="false" name="Notifcation about added/removed drives" />
+ <UML:UseCase isSpecification="false" isLeaf="false" visibility="public" xmi.id="1490" isRoot="false" isAbstract="false" name="Notification about status changes" />
+ <UML:UseCase isSpecification="false" isLeaf="false" visibility="public" xmi.id="1491" isRoot="false" isAbstract="false" name="Query medium status" />
+ <UML:UseCase isSpecification="false" isLeaf="false" visibility="public" xmi.id="1492" isRoot="false" isAbstract="false" name="Query mount status" />
+ <UML:UseCase isSpecification="false" isLeaf="false" visibility="public" xmi.id="1493" isRoot="false" isAbstract="false" name="Query name/label" />
+ <UML:UseCase isSpecification="false" isLeaf="false" visibility="public" xmi.id="1494" isRoot="false" isAbstract="false" name="Query kind" />
+ <UML:UseCase isSpecification="false" isLeaf="false" visibility="public" xmi.id="1495" isRoot="false" isAbstract="false" name="Query icon" />
+ <UML:UseCase isSpecification="false" isLeaf="false" visibility="public" xmi.id="1496" isRoot="false" isAbstract="false" name="Query status" />
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="1788" isRoot="false" isAbstract="false" name="ThunarIconFactory" >
+ <UML:Classifier.feature>
+ <UML:Attribute isSpecification="false" isLeaf="false" visibility="private" xmi.id="1810" isRoot="false" initialValue="" type="1811" isAbstract="false" name="icon_theme" />
+ <UML:Operation isSpecification="false" isLeaf="false" visibility="public" xmi.id="1833" isRoot="false" isAbstract="false" name="load_icon" >
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="1834" isRoot="false" value="" type="69" isAbstract="false" name="name" />
+ <UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="1856" isRoot="false" value="" type="61" isAbstract="false" name="size" />
+ <UML:Parameter isSpecification="false" kind="out" isLeaf="false" visibility="private" xmi.id="1878" isRoot="false" value="" type="ThunarEmblemAttachPoints" isAbstract="false" name="attach_points" />
+ <UML:Parameter isSpecification="false" isLeaf="false" visibility="private" xmi.id="1900" isRoot="false" value="" type="64" isAbstract="false" name="wants_default" />
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class isSpecification="false" isLeaf="false" visibility="public" xmi.id="1811" isRoot="false" isAbstract="false" name="GtkIconTheme" />
+ <UML:Association isSpecification="false" visibility="public" xmi.id="75" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="95" aggregation="none" type="70" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="true" xmi.id="96" aggregation="none" type="72" name="" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association isSpecification="false" visibility="public" xmi.id="76" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="97" aggregation="none" type="71" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="true" xmi.id="98" aggregation="none" type="72" name="" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association isSpecification="false" visibility="public" xmi.id="77" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="99" aggregation="none" type="73" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="true" xmi.id="100" aggregation="none" type="72" name="uri" multiplicity="1" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Generalization isSpecification="false" child="85" visibility="public" xmi.id="86" parent="70" discriminator="" name="" />
+ <UML:Generalization isSpecification="false" child="87" visibility="public" xmi.id="88" parent="70" discriminator="" name="" />
+ <UML:Generalization isSpecification="false" child="89" visibility="public" xmi.id="90" parent="71" discriminator="" name="" />
+ <UML:Association isSpecification="false" visibility="public" xmi.id="128" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="101" aggregation="none" type="73" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="true" xmi.id="102" aggregation="none" type="118" name="type" multiplicity="1" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association isSpecification="false" visibility="public" xmi.id="149" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="103" aggregation="none" type="73" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="true" xmi.id="104" aggregation="none" type="133" name="mode" multiplicity="1" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association isSpecification="false" visibility="public" xmi.id="157" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="105" aggregation="none" type="73" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="true" xmi.id="106" aggregation="none" type="154" name="flags" multiplicity="1" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association isSpecification="false" visibility="public" xmi.id="189" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="107" aggregation="none" type="71" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="true" xmi.id="108" aggregation="none" type="186" name="files-added" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association isSpecification="false" visibility="public" xmi.id="192" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="109" aggregation="none" type="70" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="true" xmi.id="110" aggregation="none" type="73" name="" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Generalization isSpecification="false" child="195" visibility="public" xmi.id="200" parent="196" discriminator="" name="" />
+ <UML:Association isSpecification="false" visibility="public" xmi.id="201" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="111" aggregation="none" type="195" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="private" changeability="changeable" isNavigable="true" xmi.id="112" aggregation="none" type="71" name="folder" multiplicity="1" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Generalization isSpecification="false" child="202" visibility="public" xmi.id="203" parent="196" discriminator="" name="" />
+ <UML:Association isSpecification="false" visibility="public" xmi.id="204" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="113" aggregation="none" type="202" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="private" changeability="changeable" isNavigable="true" xmi.id="114" aggregation="none" type="71" name="folders" multiplicity="*" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Generalization isSpecification="false" child="214" visibility="public" xmi.id="215" parent="195" discriminator="" name="" />
+ <UML:Generalization isSpecification="false" child="220" visibility="public" xmi.id="222" parent="214" discriminator="" name="" />
+ <UML:Generalization isSpecification="false" child="221" visibility="public" xmi.id="223" parent="214" discriminator="" name="" />
+ <UML:Association isSpecification="false" visibility="public" xmi.id="225" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="117" aggregation="none" type="224" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="private" changeability="changeable" isNavigable="true" xmi.id="118" aggregation="none" type="202" name="model" multiplicity="1" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Generalization isSpecification="false" child="224" visibility="public" xmi.id="227" parent="226" discriminator="" name="" />
+ <UML:Association isSpecification="false" visibility="public" xmi.id="228" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="119" aggregation="none" type="226" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="protected" changeability="changeable" isNavigable="true" xmi.id="120" aggregation="none" type="202" name="" multiplicity="1" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Generalization isSpecification="false" child="234" visibility="public" xmi.id="242" parent="214" discriminator="" name="" />
+ <UML:Association isSpecification="false" visibility="public" xmi.id="243" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="123" aggregation="none" type="234" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="true" xmi.id="124" aggregation="none" type="240" name="" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association isSpecification="false" visibility="public" xmi.id="252" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="125" aggregation="none" type="251" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="true" xmi.id="126" aggregation="none" type="234" name="windows" multiplicity="*" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association isSpecification="false" visibility="public" xmi.id="258" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="127" aggregation="none" type="251" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="true" xmi.id="128" aggregation="none" type="257" name="desktop" multiplicity="0..1" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Generalization isSpecification="false" child="264" visibility="public" xmi.id="268" parent="267" discriminator="" name="" />
+ <UML:Association isSpecification="false" visibility="public" xmi.id="272" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="129" aggregation="none" type="269" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="private" changeability="changeable" isNavigable="true" xmi.id="130" aggregation="none" type="264" name="preferences" multiplicity="1" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Generalization isSpecification="false" child="279" visibility="public" xmi.id="280" parent="195" discriminator="" name="" />
+ <UML:Association isSpecification="false" visibility="public" xmi.id="281" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="131" aggregation="none" type="257" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="private" changeability="changeable" isNavigable="true" xmi.id="132" aggregation="none" type="279" name="model" multiplicity="1" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Generalization isSpecification="false" child="72" visibility="public" xmi.id="288" parent="267" discriminator="" name="" />
+ <UML:Association isSpecification="false" visibility="public" xmi.id="328" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="133" aggregation="none" type="234" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="private" changeability="changeable" isNavigable="true" xmi.id="134" aggregation="none" type="327" name="side_pane" multiplicity="0..1" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Generalization isSpecification="false" child="334" visibility="public" xmi.id="337" parent="327" discriminator="" name="" />
+ <UML:Generalization isSpecification="false" child="335" visibility="public" xmi.id="338" parent="327" discriminator="" name="" />
+ <UML:Association isSpecification="false" visibility="public" xmi.id="339" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="135" aggregation="none" type="334" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="true" xmi.id="136" aggregation="none" type="224" name="" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association isSpecification="false" visibility="public" xmi.id="340" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="137" aggregation="none" type="335" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="private" changeability="changeable" isNavigable="true" xmi.id="138" aggregation="none" type="336" name="view" multiplicity="1" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association isSpecification="false" visibility="public" xmi.id="344" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="139" aggregation="none" type="336" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="private" changeability="changeable" isNavigable="true" xmi.id="140" aggregation="none" type="343" name="model" multiplicity="1" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Generalization isSpecification="false" child="336" visibility="public" xmi.id="353" parent="226" discriminator="" name="" />
+ <UML:Generalization isSpecification="false" child="343" visibility="public" xmi.id="354" parent="196" discriminator="" name="" />
+ <UML:Association isSpecification="false" visibility="public" xmi.id="403" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="141" aggregation="none" type="224" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="private" changeability="changeable" isNavigable="true" xmi.id="142" aggregation="none" type="202" name="model" multiplicity="1" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association isSpecification="false" visibility="public" xmi.id="632" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="143" aggregation="none" type="279" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="private" changeability="changeable" isNavigable="true" xmi.id="144" aggregation="none" type="71" name="folder" multiplicity="1" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association isSpecification="false" visibility="public" xmi.id="687" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="true" xmi.id="145" aggregation="composite" type="70" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="true" xmi.id="146" aggregation="none" type="73" name="" multiplicity="1" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association isSpecification="false" visibility="public" xmi.id="751" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="true" xmi.id="147" aggregation="shared" type="71" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="private" changeability="changeable" isNavigable="true" xmi.id="148" aggregation="none" type="70" name="files" multiplicity="*" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association isSpecification="false" visibility="public" xmi.id="756" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="149" aggregation="none" type="71" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="private" changeability="changeable" isNavigable="true" xmi.id="150" aggregation="none" type="70" name="corresponding_file" multiplicity="1" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association isSpecification="false" visibility="public" xmi.id="772" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="true" xmi.id="151" aggregation="composite" type="70" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="private" changeability="changeable" isNavigable="true" xmi.id="152" aggregation="none" type="73" name="info" multiplicity="1" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association isSpecification="false" visibility="public" xmi.id="941" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="153" aggregation="none" type="327" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="private" changeability="changeable" isNavigable="true" xmi.id="154" aggregation="none" type="70" name="current_directory" multiplicity="0..1" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Generalization isSpecification="false" child="1002" visibility="public" xmi.id="1004" parent="1001" discriminator="" name="" />
+ <UML:Generalization isSpecification="false" child="1002" visibility="public" xmi.id="1011" parent="1009" discriminator="" name="" />
+ <UML:Association isSpecification="false" visibility="public" xmi.id="1012" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="155" aggregation="none" type="1002" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="private" changeability="changeable" isNavigable="true" xmi.id="156" aggregation="none" type="1010" name="" multiplicity="*" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Generalization isSpecification="false" child="1001" visibility="public" xmi.id="1074" parent="1068" discriminator="" name="" />
+ <UML:Generalization isSpecification="false" child="1068" visibility="public" xmi.id="1130" parent="186" discriminator="" name="" />
+ <UML:Association isSpecification="false" visibility="public" xmi.id="1191" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="159" aggregation="none" type="72" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="true" xmi.id="160" aggregation="none" type="1188" name="scheme" multiplicity="1" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association isSpecification="false" visibility="public" xmi.id="1258" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="161" aggregation="none" type="1253" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="true" xmi.id="162" aggregation="none" type="1254" name="volumes" multiplicity="0..*" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association isSpecification="false" visibility="public" xmi.id="1268" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="163" aggregation="none" type="1254" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="true" xmi.id="164" aggregation="none" type="1263" name="kind" multiplicity="1" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association isSpecification="false" visibility="public" xmi.id="1273" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="165" aggregation="none" type="1254" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="true" xmi.id="166" aggregation="none" type="72" name="mount_point" multiplicity="1" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Generalization isSpecification="false" child="1254" visibility="public" xmi.id="1411" parent="1410" discriminator="" name="" />
+ <UML:Generalization isSpecification="false" child="1253" visibility="public" xmi.id="1412" parent="1409" discriminator="" name="" />
+ <UML:Association isSpecification="false" visibility="public" xmi.id="1484" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="167" aggregation="none" type="1480" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="true" xmi.id="168" aggregation="none" type="1483" name="" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association isSpecification="false" visibility="public" xmi.id="1497" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="169" aggregation="none" type="1481" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="true" xmi.id="170" aggregation="none" type="1487" name="" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association isSpecification="false" visibility="public" xmi.id="1498" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="171" aggregation="none" type="1481" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="true" xmi.id="172" aggregation="none" type="1485" name="" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association isSpecification="false" visibility="public" xmi.id="1499" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="173" aggregation="none" type="1481" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="true" xmi.id="174" aggregation="none" type="1486" name="" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association isSpecification="false" visibility="public" xmi.id="1500" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="175" aggregation="none" type="1481" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="true" xmi.id="176" aggregation="none" type="1488" name="" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association isSpecification="false" visibility="public" xmi.id="1501" name="<<includes>>" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="177" aggregation="none" type="1488" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="true" xmi.id="178" aggregation="none" type="1490" name="" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association isSpecification="false" visibility="public" xmi.id="1502" name="<<includes>>" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="179" aggregation="none" type="1488" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="true" xmi.id="180" aggregation="none" type="1489" name="" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association isSpecification="false" visibility="public" xmi.id="1507" name="<<includes>>" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="181" aggregation="none" type="1487" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="true" xmi.id="182" aggregation="none" type="1496" name="" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association isSpecification="false" visibility="public" xmi.id="1508" name="<<includes>>" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="183" aggregation="none" type="1487" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="true" xmi.id="184" aggregation="none" type="1495" name="" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association isSpecification="false" visibility="public" xmi.id="1509" name="<<includes>>" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="185" aggregation="none" type="1487" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="true" xmi.id="186" aggregation="none" type="1494" name="" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association isSpecification="false" visibility="public" xmi.id="1510" name="<<includes>>" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="187" aggregation="none" type="1487" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="true" xmi.id="188" aggregation="none" type="1493" name="" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association isSpecification="false" visibility="public" xmi.id="1511" name="<<includes>>" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="189" aggregation="none" type="1496" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="true" xmi.id="190" aggregation="none" type="1491" name="" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association isSpecification="false" visibility="public" xmi.id="1512" name="" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="191" aggregation="none" type="1495" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="true" xmi.id="192" aggregation="none" type="1492" name="" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association isSpecification="false" visibility="public" xmi.id="1517" name="<<includes>>" >
+ <UML:Association.connection>
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="false" xmi.id="193" aggregation="none" type="1496" name="" />
+ <UML:AssociationEnd isSpecification="false" visibility="public" changeability="changeable" isNavigable="true" xmi.id="194" aggregation="none" type="1492" name="" />
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Dependency isSpecification="false" visibility="public" xmi.id="1532" client="70" name="" supplier="72" />
+ <UML:Dependency isSpecification="false" visibility="public" xmi.id="1535" client="71" name="" supplier="72" />
+ <UML:Dependency isSpecification="false" visibility="public" xmi.id="1538" client="71" name="" supplier="78" />
+ <UML:Dependency isSpecification="false" visibility="public" xmi.id="1541" client="70" name="" supplier="78" />
+ <UML:Dependency isSpecification="false" visibility="public" xmi.id="1547" client="89" name="" supplier="87" />
+ <UML:Dependency isSpecification="false" visibility="public" xmi.id="1582" client="251" name="" supplier="264" />
+ <UML:Dependency isSpecification="false" visibility="public" xmi.id="1595" client="343" name="" supplier="70" />
+ <UML:Dependency isSpecification="false" visibility="public" xmi.id="1602" client="425" name="" supplier="426" />
+ <UML:Dependency isSpecification="false" visibility="public" xmi.id="1605" client="426" name="" supplier="479" />
+ <UML:Dependency isSpecification="false" visibility="public" xmi.id="1614" client="835" name="" supplier="73" />
+ <UML:Dependency isSpecification="false" visibility="public" xmi.id="1632" client="1495" name="" supplier="1494" />
+ </UML:Namespace.ownedElement>
+ </UML:Model>
+ </XMI.content>
+ <XMI.extensions xmi.extender="umbrello" >
+ <docsettings viewid="1724" documentation="" uniqueid="2047" />
+ <diagrams>
+ <diagram snapgrid="1" showattsig="1" fillcolor="#ffffc0" linewidth="0" zoom="100" showgrid="1" showopsig="1" usefillcolor="1" snapx="10" canvaswidth="966" snapy="10" showatts="1" xmi.id="60" documentation="" type="402" showops="1" showpackage="0" name="ThunarVFS usage" localid="30000" showstereotype="0" showscope="1" snapcsgrid="1" font="helvetica,12,-1,5,50,0,0,0,0,0" linecolor="#ff0000" canvasheight="796" >
+ <widgets>
+ <classwidget usesdiagramfillcolour="0" width="100" showattsigs="600" usesdiagramusefillcolour="0" x="250" linecolour="#ff0000" y="70" showopsigs="600" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="40" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="70" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="120" showattsigs="600" usesdiagramusefillcolour="0" x="390" linecolour="#ff0000" y="70" showopsigs="600" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="40" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="71" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="120" showattsigs="600" usesdiagramusefillcolour="0" x="450" linecolour="#ff0000" y="245" showopsigs="600" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="70" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="72" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="120" showattsigs="600" usesdiagramusefillcolour="0" x="430" linecolour="#ff0000" y="360" showopsigs="600" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="40" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="73" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <packagewidget usesdiagramfillcolour="1" width="90" usesdiagramusefillcolour="1" x="155" linecolour="none" y="295" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="50" usefillcolor="1" isinstance="0" xmi.id="78" showstereotype="0" font="helvetica,12,-1,5,75,1,0,0,0,0" />
+ <notewidget usesdiagramfillcolour="1" width="190" usesdiagramusefillcolour="1" x="615" linecolour="none" y="230" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="60" usefillcolor="1" isinstance="0" xmi.id="79" text="To avoid extensive copying of path strings." font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ <notewidget usesdiagramfillcolour="1" width="220" usesdiagramusefillcolour="1" x="370" linecolour="none" y="480" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="80" usefillcolor="1" isinstance="0" xmi.id="80" text="Must be threadsafe and cachable (we cannot derive from GObject here because of that)." font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ <boxwidget usesdiagramfillcolour="1" width="770" usesdiagramusefillcolour="1" x="65" linecolour="none" y="215" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="370" usefillcolor="1" isinstance="0" xmi.id="81" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ <notewidget usesdiagramfillcolour="1" width="260" usesdiagramusefillcolour="1" x="70" linecolour="none" y="455" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="110" usefillcolor="1" isinstance="0" xmi.id="82" text="Provides thread-safe caching of VFS infos (if appropriate), a synchronous interface to the file system and asynchronous notifications." font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </widgets>
+ <messages/>
+ <associations>
+ <assocwidget totalcounta="3" indexa="2" totalcountb="2" indexb="1" widgetbid="72" widgetaid="73" xmi.id="77" >
+ <linepath>
+ <startpoint startx="510" starty="360" />
+ <endpoint endx="510" endy="315" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="20" usesdiagramusefillcolour="1" x="510" linecolour="none" y="305" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="702" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1531" text="1" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ <floatingtext usesdiagramfillcolour="1" width="40" usesdiagramusefillcolour="1" x="470" linecolour="none" y="305" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="710" fillcolour="none" height="30" usefillcolor="1" pretext="+" isinstance="0" xmi.id="1530" text="uri" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </assocwidget>
+ <assocwidget totalcounta="3" indexa="2" visibilityB="200" totalcountb="2" indexb="1" widgetbid="73" widgetaid="78" roleBdoc="" documentation="" roleAdoc="" type="509" changeabilityA="900" changeabilityB="900" visibilityA="200" >
+ <linepath>
+ <startpoint startx="245" starty="330" />
+ <endpoint endx="430" endy="380" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" visibilityB="200" totalcountb="2" indexb="1" widgetbid="72" widgetaid="79" roleBdoc="" documentation="" roleAdoc="" type="513" changeabilityA="900" changeabilityB="900" visibilityA="200" >
+ <linepath>
+ <startpoint startx="615" starty="260" />
+ <endpoint endx="570" endy="280" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" visibilityB="200" totalcountb="2" indexb="1" widgetbid="73" widgetaid="80" roleBdoc="" documentation="" roleAdoc="" type="513" changeabilityA="900" changeabilityB="900" visibilityA="200" >
+ <linepath>
+ <startpoint startx="480" starty="480" />
+ <endpoint endx="490" endy="400" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" visibilityB="200" totalcountb="2" indexb="1" widgetbid="78" widgetaid="82" roleBdoc="" documentation="" roleAdoc="" type="513" changeabilityA="900" changeabilityB="900" visibilityA="200" >
+ <linepath>
+ <startpoint startx="200" starty="455" />
+ <endpoint endx="200" endy="345" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="4" indexa="3" totalcountb="3" indexb="1" widgetbid="72" widgetaid="70" xmi.id="1532" >
+ <linepath>
+ <startpoint startx="330" starty="110" />
+ <endpoint endx="490" endy="245" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="3" indexa="2" totalcountb="3" indexb="2" widgetbid="72" widgetaid="71" xmi.id="1535" >
+ <linepath>
+ <startpoint startx="470" starty="110" />
+ <endpoint endx="530" endy="245" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="3" indexa="1" totalcountb="3" indexb="2" widgetbid="78" widgetaid="71" xmi.id="1538" >
+ <linepath>
+ <startpoint startx="430" starty="110" />
+ <endpoint endx="220" endy="295" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="4" indexa="1" totalcountb="3" indexb="1" widgetbid="78" widgetaid="70" xmi.id="1541" >
+ <linepath>
+ <startpoint startx="280" starty="110" />
+ <endpoint endx="190" endy="295" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="3" indexa="1" visibilityB="200" totalcountb="2" indexb="1" widgetbid="72" widgetaid="78" roleBdoc="" documentation="" roleAdoc="" type="509" changeabilityA="900" changeabilityB="900" visibilityA="200" >
+ <linepath>
+ <startpoint startx="245" starty="310" />
+ <endpoint endx="450" endy="280" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="4" indexa="2" totalcountb="3" indexb="1" widgetbid="73" widgetaid="70" xmi.id="772" >
+ <linepath>
+ <startpoint startx="300" starty="110" />
+ <endpoint endx="470" endy="360" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="20" usesdiagramusefillcolour="1" x="460" linecolour="none" y="325" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="702" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1545" text="1" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ <floatingtext usesdiagramfillcolour="1" width="40" usesdiagramusefillcolour="1" x="420" linecolour="none" y="325" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="710" fillcolour="none" height="30" usefillcolor="1" pretext="-" isinstance="0" xmi.id="1544" text="info" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </assocwidget>
+ </associations>
+ </diagram>
+ <diagram snapgrid="1" showattsig="1" fillcolor="#ffffc0" linewidth="0" zoom="100" showgrid="1" showopsig="1" usefillcolor="1" snapx="10" canvaswidth="966" snapy="10" showatts="1" xmi.id="84" documentation="" type="402" showops="1" showpackage="0" name="Filesystem hierarchy" localid="30000" showstereotype="0" showscope="1" snapcsgrid="1" font="helvetica,12,-1,5,50,0,0,0,0,0" linecolor="#ff0000" canvasheight="796" >
+ <widgets>
+ <classwidget usesdiagramfillcolour="0" width="160" showattsigs="600" usesdiagramusefillcolour="0" x="120" linecolour="#ff0000" y="290" showopsigs="600" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="40" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="85" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="100" showattsigs="600" usesdiagramusefillcolour="0" x="260" linecolour="#ff0000" y="80" showopsigs="600" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="40" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="70" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="160" showattsigs="600" usesdiagramusefillcolour="0" x="320" linecolour="#ff0000" y="290" showopsigs="600" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="40" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="87" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="120" showattsigs="601" usesdiagramusefillcolour="0" x="530" linecolour="#ff0000" y="80" showopsigs="600" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="40" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="71" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="160" showattsigs="600" usesdiagramusefillcolour="0" x="510" linecolour="#ff0000" y="290" showopsigs="600" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="40" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="89" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="90" showattsigs="600" usesdiagramusefillcolour="0" x="855" linecolour="#7ca332" y="65" showopsigs="600" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#c1ff4f" height="70" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="186" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <packagewidget usesdiagramfillcolour="0" width="70" usesdiagramusefillcolour="0" x="855" linecolour="#7ca332" y="205" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#c1ff4f" height="50" usefillcolor="1" isinstance="0" xmi.id="198" showstereotype="0" font="helvetica,12,-1,5,75,1,0,0,0,0" />
+ </widgets>
+ <messages/>
+ <associations>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="3" indexb="1" widgetbid="70" widgetaid="85" xmi.id="86" >
+ <linepath>
+ <startpoint startx="200" starty="290" />
+ <endpoint endx="290" endy="120" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="3" indexb="2" widgetbid="70" widgetaid="87" xmi.id="88" >
+ <linepath>
+ <startpoint startx="400" starty="290" />
+ <endpoint endx="330" endy="120" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="71" widgetaid="89" xmi.id="90" >
+ <linepath>
+ <startpoint startx="590" starty="290" />
+ <endpoint endx="590" endy="120" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="186" widgetaid="71" xmi.id="189" >
+ <linepath>
+ <startpoint startx="650" starty="100" />
+ <endpoint endx="855" endy="100" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="100" usesdiagramusefillcolour="1" x="760" linecolour="none" y="95" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="710" fillcolour="none" height="30" usefillcolor="1" pretext="+" isinstance="0" xmi.id="1546" text="files-added" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="87" widgetaid="89" xmi.id="1547" >
+ <linepath>
+ <startpoint startx="510" starty="310" />
+ <endpoint endx="480" endy="310" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" visibilityB="200" totalcountb="2" indexb="1" widgetbid="186" widgetaid="198" roleBdoc="" documentation="" roleAdoc="" type="509" changeabilityA="900" changeabilityB="900" visibilityA="200" >
+ <linepath>
+ <startpoint startx="890" starty="205" />
+ <endpoint endx="900" endy="135" />
+ </linepath>
+ </assocwidget>
+ </associations>
+ </diagram>
+ <diagram snapgrid="1" showattsig="1" fillcolor="#ffffc0" linewidth="0" zoom="100" showgrid="1" showopsig="1" usefillcolor="1" snapx="10" canvaswidth="966" snapy="10" showatts="1" xmi.id="109" documentation="" type="402" showops="1" showpackage="0" name="ThunarVFS module" localid="30000" showstereotype="0" showscope="1" snapcsgrid="1" font="helvetica,12,-1,5,50,0,0,0,0,0" linecolor="#ff0000" canvasheight="796" >
+ <widgets>
+ <classwidget usesdiagramfillcolour="0" width="160" showattsigs="600" usesdiagramusefillcolour="0" x="220" linecolour="#ff0000" y="125" showopsigs="600" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="210" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="73" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="290" showattsigs="601" usesdiagramusefillcolour="0" x="525" linecolour="#ff0000" y="140" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="160" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="72" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Helvetica,11,-1,5,75,0,0,0,0,0" />
+ <enumwidget usesdiagramfillcolour="0" width="160" usesdiagramusefillcolour="0" x="70" linecolour="#ff0000" y="445" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="190" usefillcolor="1" isinstance="0" xmi.id="118" showpackage="0" font="helvetica,12,-1,5,75,1,0,0,0,0" />
+ <enumwidget usesdiagramfillcolour="0" width="160" usesdiagramusefillcolour="0" x="220" linecolour="#ff0000" y="445" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="330" usefillcolor="1" isinstance="0" xmi.id="133" showpackage="0" font="helvetica,12,-1,5,75,1,0,0,0,0" />
+ <enumwidget usesdiagramfillcolour="0" width="160" usesdiagramusefillcolour="0" x="370" linecolour="#ff0000" y="450" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="80" usefillcolor="1" isinstance="0" xmi.id="154" showpackage="0" font="helvetica,12,-1,5,75,1,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="80" showattsigs="601" usesdiagramusefillcolour="0" x="640" linecolour="#7ca332" y="70" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#c1ff4f" height="40" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="267" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <notewidget usesdiagramfillcolour="1" width="140" usesdiagramusefillcolour="1" x="10" linecolour="none" y="150" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="140" usefillcolor="1" isinstance="0" xmi.id="289" text="Must be usable with threads. So we'll prefer copying over refcounting (GObject) when necessary." font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ <enumwidget usesdiagramfillcolour="0" width="180" usesdiagramusefillcolour="0" x="580" linecolour="#ff0000" y="390" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="80" usefillcolor="1" isinstance="0" xmi.id="1188" showpackage="0" font="helvetica,12,-1,5,75,1,0,0,0,0" />
+ </widgets>
+ <messages/>
+ <associations>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="72" widgetaid="73" xmi.id="77" >
+ <linepath>
+ <startpoint startx="380" starty="230" />
+ <endpoint endx="525" endy="220" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="20" usesdiagramusefillcolour="1" x="510" linecolour="none" y="225" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="702" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1551" text="1" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ <floatingtext usesdiagramfillcolour="1" width="40" usesdiagramusefillcolour="1" x="480" linecolour="none" y="205" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="710" fillcolour="none" height="30" usefillcolor="1" pretext="+" isinstance="0" xmi.id="1550" text="uri" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </assocwidget>
+ <assocwidget totalcounta="4" indexa="1" totalcountb="2" indexb="1" widgetbid="118" widgetaid="73" xmi.id="128" >
+ <linepath>
+ <startpoint startx="260" starty="335" />
+ <endpoint endx="150" endy="445" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="20" usesdiagramusefillcolour="1" x="120" linecolour="none" y="415" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="702" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1553" text="1" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ <floatingtext usesdiagramfillcolour="1" width="50" usesdiagramusefillcolour="1" x="145" linecolour="none" y="415" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="710" fillcolour="none" height="30" usefillcolor="1" pretext="+" isinstance="0" xmi.id="1552" text="type" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </assocwidget>
+ <assocwidget totalcounta="4" indexa="2" totalcountb="2" indexb="1" widgetbid="133" widgetaid="73" xmi.id="149" >
+ <linepath>
+ <startpoint startx="300" starty="335" />
+ <endpoint endx="300" endy="445" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="20" usesdiagramusefillcolour="1" x="300" linecolour="none" y="415" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="702" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1555" text="1" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ <floatingtext usesdiagramfillcolour="1" width="60" usesdiagramusefillcolour="1" x="230" linecolour="none" y="415" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="710" fillcolour="none" height="30" usefillcolor="1" pretext="+" isinstance="0" xmi.id="1554" text="mode" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </assocwidget>
+ <assocwidget totalcounta="4" indexa="3" totalcountb="2" indexb="1" widgetbid="154" widgetaid="73" xmi.id="157" >
+ <linepath>
+ <startpoint startx="340" starty="335" />
+ <endpoint endx="450" endy="450" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="20" usesdiagramusefillcolour="1" x="440" linecolour="none" y="415" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="702" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1557" text="1" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ <floatingtext usesdiagramfillcolour="1" width="60" usesdiagramusefillcolour="1" x="390" linecolour="none" y="415" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="710" fillcolour="none" height="30" usefillcolor="1" pretext="+" isinstance="0" xmi.id="1556" text="flags" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="267" widgetaid="72" xmi.id="288" >
+ <linepath>
+ <startpoint startx="670" starty="140" />
+ <endpoint endx="680" endy="110" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" visibilityB="200" totalcountb="2" indexb="1" widgetbid="73" widgetaid="289" roleBdoc="" documentation="" roleAdoc="" type="513" changeabilityA="900" changeabilityB="900" visibilityA="200" >
+ <linepath>
+ <startpoint startx="150" starty="220" />
+ <endpoint endx="220" endy="230" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="1188" widgetaid="72" xmi.id="1191" >
+ <linepath>
+ <startpoint startx="670" starty="300" />
+ <endpoint endx="670" endy="390" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="20" usesdiagramusefillcolour="1" x="680" linecolour="none" y="355" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="702" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1559" text="1" font="Helvetica,11,-1,5,50,0,0,0,0,0" />
+ <floatingtext usesdiagramfillcolour="1" width="70" usesdiagramusefillcolour="1" x="595" linecolour="none" y="355" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="710" fillcolour="none" height="30" usefillcolor="1" pretext="+" isinstance="0" xmi.id="1558" text="scheme" font="Helvetica,11,-1,5,50,0,0,0,0,0" />
+ </assocwidget>
+ </associations>
+ </diagram>
+ <diagram snapgrid="1" showattsig="1" fillcolor="#ffffc0" linewidth="0" zoom="100" showgrid="1" showopsig="1" usefillcolor="1" snapx="10" canvaswidth="966" snapy="10" showatts="1" xmi.id="194" documentation="" type="402" showops="1" showpackage="0" name="GUI bridge" localid="30000" showstereotype="0" showscope="1" snapcsgrid="1" font="helvetica,12,-1,5,50,0,0,0,0,0" linecolor="#ff0000" canvasheight="796" >
+ <widgets>
+ <classwidget usesdiagramfillcolour="0" width="120" showattsigs="601" usesdiagramusefillcolour="0" x="500" linecolour="#ff0000" y="490" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="40" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="71" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="140" showattsigs="601" usesdiagramusefillcolour="0" x="290" linecolour="#ff0000" y="380" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="40" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="195" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <interfacewidget usesdiagramfillcolour="0" width="120" usesdiagramusefillcolour="0" x="500" linecolour="#7ca332" y="375" drawascircle="0" showopsigs="600" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#c1ff4f" height="50" usefillcolor="1" isinstance="0" xmi.id="196" showoperations="0" showpackage="0" showscope="1" font="helvetica,12,-1,5,75,1,0,0,0,0" />
+ <packagewidget usesdiagramfillcolour="0" width="70" usesdiagramusefillcolour="0" x="515" linecolour="#7ca332" y="265" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#c1ff4f" height="50" usefillcolor="1" isinstance="0" xmi.id="199" showstereotype="0" font="helvetica,12,-1,5,75,1,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="150" showattsigs="601" usesdiagramusefillcolour="0" x="685" linecolour="#ff0000" y="380" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="40" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="202" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <interfacewidget usesdiagramfillcolour="0" width="110" usesdiagramusefillcolour="0" x="305" linecolour="#ff0000" y="235" drawascircle="0" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="50" usefillcolor="1" isinstance="0" xmi.id="214" showoperations="0" showpackage="0" showscope="1" font="helvetica,12,-1,5,75,1,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="140" showattsigs="601" usesdiagramusefillcolour="0" x="220" linecolour="#ff0000" y="140" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="40" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="220" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="140" showattsigs="601" usesdiagramusefillcolour="0" x="370" linecolour="#ff0000" y="140" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="40" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="221" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="140" showattsigs="601" usesdiagramusefillcolour="0" x="690" linecolour="#ff0000" y="140" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="40" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="224" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="110" showattsigs="601" usesdiagramusefillcolour="0" x="505" linecolour="#7ca332" y="140" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#c1ff4f" height="40" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="226" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="170" showattsigs="601" usesdiagramusefillcolour="0" x="55" linecolour="#ff0000" y="140" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="40" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="257" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="180" showattsigs="601" usesdiagramusefillcolour="0" x="60" linecolour="#ff0000" y="380" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="40" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="279" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ </widgets>
+ <messages/>
+ <associations>
+ <assocwidget totalcounta="2" indexa="1" visibilityB="200" totalcountb="2" indexb="1" widgetbid="196" widgetaid="199" roleBdoc="" documentation="" roleAdoc="" type="509" changeabilityA="900" changeabilityB="900" visibilityA="200" >
+ <linepath>
+ <startpoint startx="550" starty="315" />
+ <endpoint endx="560" endy="375" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="196" widgetaid="195" xmi.id="200" >
+ <linepath>
+ <startpoint startx="430" starty="400" />
+ <endpoint endx="500" endy="400" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="71" widgetaid="195" xmi.id="201" >
+ <linepath>
+ <startpoint startx="360" starty="420" />
+ <endpoint endx="500" endy="510" />
+ <point x="350" y="500" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="20" usesdiagramusefillcolour="1" x="480" linecolour="none" y="465" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="702" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1561" text="1" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ <floatingtext usesdiagramfillcolour="1" width="60" usesdiagramusefillcolour="1" x="450" linecolour="none" y="505" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="710" fillcolour="none" height="30" usefillcolor="1" pretext="-" isinstance="0" xmi.id="1560" text="folder" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="196" widgetaid="202" xmi.id="203" >
+ <linepath>
+ <startpoint startx="685" starty="400" />
+ <endpoint endx="620" endy="400" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="71" widgetaid="202" xmi.id="204" >
+ <linepath>
+ <startpoint startx="760" starty="420" />
+ <endpoint endx="620" endy="510" />
+ <point x="750" y="500" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="20" usesdiagramusefillcolour="1" x="600" linecolour="none" y="465" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="702" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1563" text="*" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ <floatingtext usesdiagramfillcolour="1" width="70" usesdiagramusefillcolour="1" x="605" linecolour="none" y="505" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="710" fillcolour="none" height="30" usefillcolor="1" pretext="-" isinstance="0" xmi.id="1562" text="folders" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="195" widgetaid="214" xmi.id="215" >
+ <linepath>
+ <startpoint startx="360" starty="285" />
+ <endpoint endx="360" endy="380" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="20" usesdiagramusefillcolour="1" x="350" linecolour="none" y="345" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="702" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1565" text="1" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ <floatingtext usesdiagramfillcolour="1" width="90" usesdiagramusefillcolour="1" x="255" linecolour="none" y="345" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="710" fillcolour="none" height="30" usefillcolor="1" pretext="#" isinstance="0" xmi.id="1564" text="list_model" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="3" indexb="1" widgetbid="214" widgetaid="220" xmi.id="222" >
+ <linepath>
+ <startpoint startx="290" starty="180" />
+ <endpoint endx="340" endy="235" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="3" indexb="2" widgetbid="214" widgetaid="221" xmi.id="223" >
+ <linepath>
+ <startpoint startx="440" starty="180" />
+ <endpoint endx="380" endy="235" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" visibilityB="200" totalcountb="2" indexb="1" widgetbid="226" widgetaid="199" roleBdoc="" documentation="" roleAdoc="" type="509" changeabilityA="900" changeabilityB="900" visibilityA="200" >
+ <linepath>
+ <startpoint startx="550" starty="265" />
+ <endpoint endx="560" endy="180" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="226" widgetaid="224" xmi.id="227" >
+ <linepath>
+ <startpoint startx="690" starty="160" />
+ <endpoint endx="615" endy="160" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="279" widgetaid="257" xmi.id="281" >
+ <linepath>
+ <startpoint startx="140" starty="180" />
+ <endpoint endx="150" endy="380" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="20" usesdiagramusefillcolour="1" x="140" linecolour="none" y="345" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="702" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1567" text="1" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ <floatingtext usesdiagramfillcolour="1" width="60" usesdiagramusefillcolour="1" x="70" linecolour="none" y="345" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="710" fillcolour="none" height="30" usefillcolor="1" pretext="-" isinstance="0" xmi.id="1566" text="model" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="202" widgetaid="224" xmi.id="403" >
+ <linepath>
+ <startpoint startx="760" starty="180" />
+ <endpoint endx="760" endy="380" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="20" usesdiagramusefillcolour="1" x="760" linecolour="none" y="345" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="702" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1569" text="1" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ <floatingtext usesdiagramfillcolour="1" width="60" usesdiagramusefillcolour="1" x="690" linecolour="none" y="345" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="710" fillcolour="none" height="30" usefillcolor="1" pretext="-" isinstance="0" xmi.id="1568" text="model" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="71" widgetaid="279" xmi.id="632" >
+ <linepath>
+ <startpoint startx="150" starty="420" />
+ <endpoint endx="560" endy="530" />
+ <point x="130" y="580" />
+ <point x="550" y="580" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="20" usesdiagramusefillcolour="1" x="550" linecolour="none" y="515" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="702" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1571" text="1" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ <floatingtext usesdiagramfillcolour="1" width="60" usesdiagramusefillcolour="1" x="500" linecolour="none" y="515" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="710" fillcolour="none" height="30" usefillcolor="1" pretext="-" isinstance="0" xmi.id="1570" text="folder" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </assocwidget>
+ </associations>
+ </diagram>
+ <diagram snapgrid="1" showattsig="1" fillcolor="#ffffc0" linewidth="0" zoom="100" showgrid="1" showopsig="1" usefillcolor="1" snapx="10" canvaswidth="1004" snapy="10" showatts="1" xmi.id="233" documentation="" type="402" showops="0" showpackage="0" name="Window GUI" localid="30000" showstereotype="0" showscope="1" snapcsgrid="1" font="helvetica,12,-1,5,50,0,0,0,0,0" linecolor="#ff0000" canvasheight="780" >
+ <widgets>
+ <classwidget usesdiagramfillcolour="0" width="130" showattsigs="601" usesdiagramusefillcolour="0" x="325" linecolour="#ff0000" y="100" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="40" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="234" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <interfacewidget usesdiagramfillcolour="0" width="110" usesdiagramusefillcolour="0" x="335" linecolour="#ff0000" y="225" drawascircle="0" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="50" usefillcolor="1" isinstance="0" xmi.id="214" showoperations="0" showpackage="0" showscope="1" font="helvetica,12,-1,5,75,1,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="140" showattsigs="601" usesdiagramusefillcolour="0" x="320" linecolour="#ff0000" y="320" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="40" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="195" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="150" showattsigs="601" usesdiagramusefillcolour="0" x="535" linecolour="#ff0000" y="235" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="50" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="240" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="120" showattsigs="601" usesdiagramusefillcolour="0" x="330" linecolour="#ff0000" y="410" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="40" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="71" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <notewidget usesdiagramfillcolour="1" width="260" usesdiagramusefillcolour="1" x="740" linecolour="none" y="190" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="120" usefillcolor="1" isinstance="0" xmi.id="249" text="Requires knowledge about the ThunarFolder in order to be able to display a progress bar, while the folder is loading. That should be
+fixed, better use ThunarListModel here." font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="140" showattsigs="601" usesdiagramusefillcolour="0" x="160" linecolour="#ff0000" y="230" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="40" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="327" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,1,0,0,0,0" />
+ </widgets>
+ <messages/>
+ <associations>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="195" widgetaid="214" xmi.id="215" >
+ <linepath>
+ <startpoint startx="390" starty="275" />
+ <endpoint endx="390" endy="320" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="20" usesdiagramusefillcolour="1" x="390" linecolour="none" y="275" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="702" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1573" text="1" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ <floatingtext usesdiagramfillcolour="1" width="90" usesdiagramusefillcolour="1" x="325" linecolour="none" y="275" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="710" fillcolour="none" height="30" usefillcolor="1" pretext="#" isinstance="0" xmi.id="1572" text="list_model" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </assocwidget>
+ <assocwidget totalcounta="4" indexa="2" totalcountb="2" indexb="1" widgetbid="214" widgetaid="234" xmi.id="242" >
+ <linepath>
+ <startpoint startx="390" starty="140" />
+ <endpoint endx="390" endy="225" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="4" indexa="3" totalcountb="2" indexb="1" widgetbid="240" widgetaid="234" xmi.id="243" >
+ <linepath>
+ <startpoint startx="420" starty="140" />
+ <endpoint endx="610" endy="235" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="71" widgetaid="195" xmi.id="201" >
+ <linepath>
+ <startpoint startx="390" starty="360" />
+ <endpoint endx="390" endy="410" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="20" usesdiagramusefillcolour="1" x="390" linecolour="none" y="375" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="702" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1575" text="1" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ <floatingtext usesdiagramfillcolour="1" width="60" usesdiagramusefillcolour="1" x="330" linecolour="none" y="375" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="710" fillcolour="none" height="30" usefillcolor="1" pretext="-" isinstance="0" xmi.id="1574" text="folder" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" visibilityB="200" totalcountb="2" indexb="1" widgetbid="240" widgetaid="249" roleBdoc="" documentation="" roleAdoc="" type="513" changeabilityA="900" changeabilityB="900" visibilityA="200" >
+ <linepath>
+ <startpoint startx="740" starty="250" />
+ <endpoint endx="685" endy="260" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="4" indexa="1" totalcountb="2" indexb="1" widgetbid="327" widgetaid="234" xmi.id="328" >
+ <linepath>
+ <startpoint startx="360" starty="140" />
+ <endpoint endx="230" endy="230" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="40" usesdiagramusefillcolour="1" x="180" linecolour="none" y="195" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="702" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1577" text="0..1" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ <floatingtext usesdiagramfillcolour="1" width="90" usesdiagramusefillcolour="1" x="255" linecolour="none" y="195" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="710" fillcolour="none" height="30" usefillcolor="1" pretext="-" isinstance="0" xmi.id="1576" text="side_pane" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </assocwidget>
+ </associations>
+ </diagram>
+ <diagram snapgrid="1" showattsig="1" fillcolor="#ffffc0" linewidth="0" zoom="100" showgrid="1" showopsig="1" usefillcolor="1" snapx="10" canvaswidth="966" snapy="10" showatts="1" xmi.id="250" documentation="" type="402" showops="1" showpackage="0" name="Application bridge" localid="30000" showstereotype="0" showscope="1" snapcsgrid="1" font="helvetica,12,-1,5,50,0,0,0,0,0" linecolor="#ff0000" canvasheight="796" >
+ <widgets>
+ <classwidget usesdiagramfillcolour="0" width="160" showattsigs="601" usesdiagramusefillcolour="0" x="170" linecolour="#ff0000" y="120" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="40" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="251" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="130" showattsigs="601" usesdiagramusefillcolour="0" x="515" linecolour="#ff0000" y="90" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="40" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="234" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="170" showattsigs="601" usesdiagramusefillcolour="0" x="515" linecolour="#ff0000" y="160" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="40" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="257" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="170" showattsigs="601" usesdiagramusefillcolour="0" x="165" linecolour="#ff0000" y="310" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="40" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="264" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ </widgets>
+ <messages/>
+ <associations>
+ <assocwidget totalcounta="3" indexa="1" totalcountb="2" indexb="1" widgetbid="234" widgetaid="251" xmi.id="252" >
+ <linepath>
+ <startpoint startx="330" starty="130" />
+ <endpoint endx="515" endy="110" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="20" usesdiagramusefillcolour="1" x="500" linecolour="none" y="65" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="702" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1579" text="*" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ <floatingtext usesdiagramfillcolour="1" width="80" usesdiagramusefillcolour="1" x="430" linecolour="none" y="105" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="710" fillcolour="none" height="30" usefillcolor="1" pretext="+" isinstance="0" xmi.id="1578" text="windows" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </assocwidget>
+ <assocwidget totalcounta="3" indexa="2" totalcountb="2" indexb="1" widgetbid="257" widgetaid="251" xmi.id="258" >
+ <linepath>
+ <startpoint startx="330" starty="150" />
+ <endpoint endx="515" endy="180" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="40" usesdiagramusefillcolour="1" x="480" linecolour="none" y="165" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="702" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1581" text="0..1" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ <floatingtext usesdiagramfillcolour="1" width="80" usesdiagramusefillcolour="1" x="450" linecolour="none" y="135" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="710" fillcolour="none" height="30" usefillcolor="1" pretext="+" isinstance="0" xmi.id="1580" text="desktop" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="264" widgetaid="251" xmi.id="1582" >
+ <linepath>
+ <startpoint startx="250" starty="160" />
+ <endpoint endx="250" endy="310" />
+ </linepath>
+ </assocwidget>
+ </associations>
+ </diagram>
+ <diagram snapgrid="1" showattsig="1" fillcolor="#ffffc0" linewidth="0" zoom="100" showgrid="1" showopsig="1" usefillcolor="1" snapx="10" canvaswidth="966" snapy="10" showatts="1" xmi.id="263" documentation="" type="402" showops="1" showpackage="0" name="Settings" localid="30000" showstereotype="0" showscope="1" snapcsgrid="1" font="helvetica,12,-1,5,50,0,0,0,0,0" linecolor="#ff0000" canvasheight="796" >
+ <widgets>
+ <classwidget usesdiagramfillcolour="0" width="190" showattsigs="601" usesdiagramusefillcolour="0" x="315" linecolour="#ff0000" y="85" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="50" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="264" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <packagewidget usesdiagramfillcolour="0" width="70" usesdiagramusefillcolour="0" x="675" linecolour="#7ca332" y="75" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#c1ff4f" height="50" usefillcolor="1" isinstance="0" xmi.id="198" showstereotype="0" font="helvetica,12,-1,5,75,1,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="80" showattsigs="601" usesdiagramusefillcolour="0" x="550" linecolour="#7ca332" y="90" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#c1ff4f" height="40" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="267" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="580" showattsigs="601" usesdiagramusefillcolour="0" x="150" linecolour="#ff0000" y="210" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="40" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="269" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <notewidget usesdiagramfillcolour="1" width="240" usesdiagramusefillcolour="1" x="30" linecolour="none" y="50" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="100" usefillcolor="1" isinstance="0" xmi.id="277" text="All thunar objects using the ThunarPreferences register notifications using the GObject "notify" signal to stay informed of changes." font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ <notewidget usesdiagramfillcolour="1" width="380" usesdiagramusefillcolour="1" x="210" linecolour="none" y="305" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="50" usefillcolor="1" isinstance="0" xmi.id="278" text="Not all settings will show up in the preferences dialog, there'll be hidden settings just like in Terminal." font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </widgets>
+ <messages/>
+ <associations>
+ <assocwidget totalcounta="2" indexa="1" visibilityB="200" totalcountb="2" indexb="1" widgetbid="267" widgetaid="198" roleBdoc="" documentation="" roleAdoc="" type="509" changeabilityA="900" changeabilityB="900" visibilityA="200" >
+ <linepath>
+ <startpoint startx="675" starty="100" />
+ <endpoint endx="630" endy="110" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="267" widgetaid="264" xmi.id="268" >
+ <linepath>
+ <startpoint startx="505" starty="110" />
+ <endpoint endx="550" endy="110" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="264" widgetaid="269" xmi.id="272" >
+ <linepath>
+ <startpoint startx="440" starty="210" />
+ <endpoint endx="410" endy="135" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="20" usesdiagramusefillcolour="1" x="400" linecolour="none" y="125" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="702" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1586" text="1" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ <floatingtext usesdiagramfillcolour="1" width="100" usesdiagramusefillcolour="1" x="310" linecolour="none" y="125" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="710" fillcolour="none" height="30" usefillcolor="1" pretext="-" isinstance="0" xmi.id="1585" text="preferences" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" visibilityB="200" totalcountb="2" indexb="1" widgetbid="264" widgetaid="277" roleBdoc="" documentation="" roleAdoc="" type="513" changeabilityA="900" changeabilityB="900" visibilityA="200" >
+ <linepath>
+ <startpoint startx="270" starty="100" />
+ <endpoint endx="315" endy="110" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" visibilityB="200" totalcountb="2" indexb="1" widgetbid="269" widgetaid="278" roleBdoc="" documentation="" roleAdoc="" type="513" changeabilityA="900" changeabilityB="900" visibilityA="200" >
+ <linepath>
+ <startpoint startx="400" starty="305" />
+ <endpoint endx="440" endy="250" />
+ </linepath>
+ </assocwidget>
+ </associations>
+ </diagram>
+ <diagram snapgrid="1" showattsig="1" fillcolor="#ffffc0" linewidth="0" zoom="100" showgrid="1" showopsig="1" usefillcolor="1" snapx="10" canvaswidth="966" snapy="10" showatts="1" xmi.id="333" documentation="" type="402" showops="1" showpackage="0" name="Sidepane GUI" localid="30000" showstereotype="0" showscope="1" snapcsgrid="1" font="helvetica,12,-1,5,50,0,0,0,0,0" linecolor="#ff0000" canvasheight="796" >
+ <widgets>
+ <classwidget usesdiagramfillcolour="0" width="140" showattsigs="601" usesdiagramusefillcolour="0" x="290" linecolour="#ff0000" y="60" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="40" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="327" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,1,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="1" width="140" showattsigs="601" usesdiagramusefillcolour="1" x="170" linecolour="none" y="180" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="40" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="334" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="1" width="190" showattsigs="601" usesdiagramusefillcolour="1" x="405" linecolour="none" y="180" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="40" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="335" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="1" width="190" showattsigs="601" usesdiagramusefillcolour="1" x="405" linecolour="none" y="300" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="40" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="336" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="1" width="140" showattsigs="601" usesdiagramusefillcolour="1" x="170" linecolour="none" y="300" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="40" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="224" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <notewidget usesdiagramfillcolour="1" width="210" usesdiagramusefillcolour="1" x="545" linecolour="none" y="45" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="70" usefillcolor="1" isinstance="0" xmi.id="341" text="Provides scrolling and other basic services for the sidepane implementations." font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </widgets>
+ <messages/>
+ <associations>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="3" indexb="1" widgetbid="327" widgetaid="334" xmi.id="337" >
+ <linepath>
+ <startpoint startx="240" starty="180" />
+ <endpoint endx="340" endy="100" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="3" indexb="2" widgetbid="327" widgetaid="335" xmi.id="338" >
+ <linepath>
+ <startpoint startx="500" starty="180" />
+ <endpoint endx="380" endy="100" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="224" widgetaid="334" xmi.id="339" >
+ <linepath>
+ <startpoint startx="240" starty="220" />
+ <endpoint endx="240" endy="300" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="336" widgetaid="335" xmi.id="340" >
+ <linepath>
+ <startpoint startx="500" starty="220" />
+ <endpoint endx="500" endy="300" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="20" usesdiagramusefillcolour="1" x="480" linecolour="none" y="265" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="702" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1590" text="1" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ <floatingtext usesdiagramfillcolour="1" width="50" usesdiagramusefillcolour="1" x="425" linecolour="none" y="265" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="710" fillcolour="none" height="30" usefillcolor="1" pretext="-" isinstance="0" xmi.id="1588" text="view" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" visibilityB="200" totalcountb="2" indexb="1" widgetbid="327" widgetaid="341" roleBdoc="" documentation="" roleAdoc="" type="513" changeabilityA="900" changeabilityB="900" visibilityA="200" >
+ <linepath>
+ <startpoint startx="545" starty="80" />
+ <endpoint endx="430" endy="80" />
+ </linepath>
+ </assocwidget>
+ </associations>
+ </diagram>
+ <diagram snapgrid="1" showattsig="1" fillcolor="#ffffc0" linewidth="0" zoom="100" showgrid="1" showopsig="1" usefillcolor="1" snapx="10" canvaswidth="1034" snapy="10" showatts="1" xmi.id="342" documentation="" type="402" showops="1" showpackage="0" name="Favourites GUI" localid="30000" showstereotype="0" showscope="1" snapcsgrid="1" font="helvetica,12,-1,5,50,0,0,0,0,0" linecolor="#ff0000" canvasheight="780" >
+ <widgets>
+ <classwidget usesdiagramfillcolour="1" width="190" showattsigs="601" usesdiagramusefillcolour="1" x="55" linecolour="none" y="80" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="40" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="335" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="1" width="190" showattsigs="601" usesdiagramusefillcolour="1" x="55" linecolour="none" y="220" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="40" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="336" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="140" showattsigs="601" usesdiagramusefillcolour="0" x="300" linecolour="#ff0000" y="80" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="40" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="327" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,1,0,0,0,0" />
+ <packagewidget usesdiagramfillcolour="0" width="70" usesdiagramusefillcolour="0" x="485" linecolour="#7ca332" y="255" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#c1ff4f" height="50" usefillcolor="1" isinstance="0" xmi.id="199" showstereotype="0" font="helvetica,12,-1,5,75,1,0,0,0,0" />
+ <interfacewidget usesdiagramfillcolour="0" width="120" usesdiagramusefillcolour="0" x="310" linecolour="#7ca332" y="315" drawascircle="0" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#c1ff4f" height="50" usefillcolor="1" isinstance="0" xmi.id="196" showoperations="0" showpackage="0" showscope="1" font="helvetica,12,-1,5,75,1,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="1" width="200" showattsigs="601" usesdiagramusefillcolour="1" x="50" linecolour="none" y="310" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="40" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="343" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="480" showattsigs="601" usesdiagramusefillcolour="0" x="550" linecolour="#ff0000" y="20" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="180" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="70" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="110" showattsigs="601" usesdiagramusefillcolour="0" x="315" linecolour="#7ca332" y="230" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#c1ff4f" height="40" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="226" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ </widgets>
+ <messages/>
+ <associations>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="336" widgetaid="335" xmi.id="340" >
+ <linepath>
+ <startpoint startx="150" starty="120" />
+ <endpoint endx="150" endy="220" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="20" usesdiagramusefillcolour="1" x="140" linecolour="none" y="185" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="702" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1592" text="1" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ <floatingtext usesdiagramfillcolour="1" width="50" usesdiagramusefillcolour="1" x="75" linecolour="none" y="185" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="710" fillcolour="none" height="30" usefillcolor="1" pretext="-" isinstance="0" xmi.id="1591" text="view" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="327" widgetaid="335" xmi.id="338" >
+ <linepath>
+ <startpoint startx="245" starty="100" />
+ <endpoint endx="300" endy="100" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="3" indexa="2" visibilityB="200" totalcountb="2" indexb="1" widgetbid="196" widgetaid="199" roleBdoc="" documentation="" roleAdoc="" type="509" changeabilityA="900" changeabilityB="900" visibilityA="200" >
+ <linepath>
+ <startpoint startx="485" starty="290" />
+ <endpoint endx="430" endy="340" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="343" widgetaid="336" xmi.id="344" >
+ <linepath>
+ <startpoint startx="150" starty="260" />
+ <endpoint endx="150" endy="310" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="20" usesdiagramusefillcolour="1" x="140" linecolour="none" y="275" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="702" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1594" text="1" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ <floatingtext usesdiagramfillcolour="1" width="60" usesdiagramusefillcolour="1" x="70" linecolour="none" y="275" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="710" fillcolour="none" height="30" usefillcolor="1" pretext="-" isinstance="0" xmi.id="1593" text="model" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="196" widgetaid="343" xmi.id="354" >
+ <linepath>
+ <startpoint startx="250" starty="330" />
+ <endpoint endx="310" endy="340" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="70" widgetaid="343" xmi.id="1595" >
+ <linepath>
+ <startpoint startx="150" starty="350" />
+ <endpoint endx="790" endy="200" />
+ <point x="130" y="450" />
+ <point x="760" y="450" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="226" widgetaid="336" xmi.id="353" >
+ <linepath>
+ <startpoint startx="245" starty="240" />
+ <endpoint endx="315" endy="250" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="3" indexa="1" visibilityB="200" totalcountb="2" indexb="1" widgetbid="226" widgetaid="199" roleBdoc="" documentation="" roleAdoc="" type="509" changeabilityA="900" changeabilityB="900" visibilityA="200" >
+ <linepath>
+ <startpoint startx="485" starty="270" />
+ <endpoint endx="425" endy="250" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="70" widgetaid="327" xmi.id="941" >
+ <linepath>
+ <startpoint startx="440" starty="100" />
+ <endpoint endx="550" endy="110" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="40" usesdiagramusefillcolour="1" x="510" linecolour="none" y="65" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="702" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1599" text="0..1" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ <floatingtext usesdiagramfillcolour="1" width="140" usesdiagramusefillcolour="1" x="420" linecolour="none" y="105" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="710" fillcolour="none" height="30" usefillcolor="1" pretext="-" isinstance="0" xmi.id="1598" text="current_directory" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </assocwidget>
+ </associations>
+ </diagram>
+ <diagram snapgrid="1" showattsig="1" fillcolor="#ffffc0" linewidth="0" zoom="100" showgrid="1" showopsig="1" usefillcolor="1" snapx="10" canvaswidth="966" snapy="10" showatts="0" xmi.id="355" documentation="" type="402" showops="0" showpackage="0" name="Treepane GUI" localid="30000" showstereotype="0" showscope="1" snapcsgrid="1" font="helvetica,12,-1,5,50,0,0,0,0,0" linecolor="#ff0000" canvasheight="796" >
+ <widgets>
+ <classwidget usesdiagramfillcolour="1" width="140" showattsigs="601" usesdiagramusefillcolour="1" x="130" linecolour="none" y="210" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="40" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="224" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="1" width="140" showattsigs="601" usesdiagramusefillcolour="1" x="130" linecolour="none" y="60" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="40" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="334" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="1" width="140" showattsigs="601" usesdiagramusefillcolour="1" x="360" linecolour="none" y="60" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="40" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="327" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,1,0,0,0,0" />
+ <packagewidget usesdiagramfillcolour="0" width="70" usesdiagramusefillcolour="0" x="515" linecolour="#7ca332" y="225" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#c1ff4f" height="50" usefillcolor="1" isinstance="0" xmi.id="199" showstereotype="0" font="helvetica,12,-1,5,75,1,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="110" showattsigs="601" usesdiagramusefillcolour="0" x="335" linecolour="#7ca332" y="210" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#c1ff4f" height="40" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="226" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <interfacewidget usesdiagramfillcolour="0" width="120" usesdiagramusefillcolour="0" x="330" linecolour="#7ca332" y="285" drawascircle="0" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#c1ff4f" height="50" usefillcolor="1" isinstance="0" xmi.id="196" showoperations="0" showpackage="0" showscope="1" font="helvetica,12,-1,5,75,1,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="1" width="150" showattsigs="601" usesdiagramusefillcolour="1" x="125" linecolour="none" y="290" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="40" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="202" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <notewidget usesdiagramfillcolour="1" width="220" usesdiagramusefillcolour="1" x="80" linecolour="none" y="345" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="50" usefillcolor="1" isinstance="0" xmi.id="420" text="May not be required (left as an implementation detail)." font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </widgets>
+ <messages/>
+ <associations>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="224" widgetaid="334" xmi.id="339" >
+ <linepath>
+ <startpoint startx="200" starty="100" />
+ <endpoint endx="200" endy="210" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="327" widgetaid="334" xmi.id="337" >
+ <linepath>
+ <startpoint startx="270" starty="80" />
+ <endpoint endx="360" endy="80" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="226" widgetaid="224" xmi.id="227" >
+ <linepath>
+ <startpoint startx="270" starty="230" />
+ <endpoint endx="335" endy="230" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="3" indexa="1" visibilityB="200" totalcountb="2" indexb="1" widgetbid="226" widgetaid="199" roleBdoc="" documentation="" roleAdoc="" type="509" changeabilityA="900" changeabilityB="900" visibilityA="200" >
+ <linepath>
+ <startpoint startx="515" starty="240" />
+ <endpoint endx="445" endy="230" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="3" indexa="2" visibilityB="200" totalcountb="2" indexb="1" widgetbid="196" widgetaid="199" roleBdoc="" documentation="" roleAdoc="" type="509" changeabilityA="900" changeabilityB="900" visibilityA="200" >
+ <linepath>
+ <startpoint startx="515" starty="260" />
+ <endpoint endx="450" endy="310" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="196" widgetaid="202" xmi.id="203" >
+ <linepath>
+ <startpoint startx="275" starty="310" />
+ <endpoint endx="330" endy="310" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="202" widgetaid="224" xmi.id="225" >
+ <linepath>
+ <startpoint startx="200" starty="250" />
+ <endpoint endx="200" endy="290" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="20" usesdiagramusefillcolour="1" x="190" linecolour="none" y="255" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="702" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1601" text="1" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ <floatingtext usesdiagramfillcolour="1" width="60" usesdiagramusefillcolour="1" x="130" linecolour="none" y="255" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="710" fillcolour="none" height="30" usefillcolor="1" pretext="-" isinstance="0" xmi.id="1600" text="model" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" visibilityB="200" totalcountb="2" indexb="1" widgetbid="224" widgetaid="420" roleBdoc="" documentation="" roleAdoc="" type="513" changeabilityA="900" changeabilityB="900" visibilityA="200" >
+ <linepath>
+ <startpoint startx="80" starty="370" />
+ <endpoint endx="130" endy="230" />
+ <point x="50" y="370" />
+ <point x="50" y="220" />
+ </linepath>
+ </assocwidget>
+ </associations>
+ </diagram>
+ <diagram snapgrid="1" showattsig="1" fillcolor="#ffffc0" linewidth="0" zoom="100" showgrid="1" showopsig="1" usefillcolor="1" snapx="10" canvaswidth="966" snapy="10" showatts="1" xmi.id="424" documentation="" type="406" showops="1" showpackage="0" name="Overview" localid="30000" showstereotype="0" showscope="1" snapcsgrid="1" font="helvetica,12,-1,5,50,0,0,0,0,0" linecolor="#ff0000" canvasheight="796" >
+ <widgets>
+ <componentwidget usesdiagramfillcolour="1" width="90" usesdiagramusefillcolour="1" x="265" linecolour="none" y="95" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="70" usefillcolor="1" isinstance="0" xmi.id="425" showstereotype="0" font="helvetica,12,-1,5,75,1,0,0,0,0" />
+ <componentwidget usesdiagramfillcolour="1" width="200" usesdiagramusefillcolour="1" x="220" linecolour="none" y="235" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="70" usefillcolor="1" isinstance="0" xmi.id="426" showstereotype="0" font="helvetica,12,-1,5,75,1,0,0,0,0" />
+ <componentwidget usesdiagramfillcolour="1" width="190" usesdiagramusefillcolour="1" x="625" linecolour="none" y="135" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="70" usefillcolor="1" isinstance="0" xmi.id="428" showstereotype="0" font="helvetica,12,-1,5,75,1,0,0,0,0" />
+ <componentwidget usesdiagramfillcolour="1" width="160" usesdiagramusefillcolour="1" x="640" linecolour="none" y="225" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="70" usefillcolor="1" isinstance="0" xmi.id="429" showstereotype="0" font="helvetica,12,-1,5,75,1,0,0,0,0" />
+ <boxwidget usesdiagramfillcolour="1" width="250" usesdiagramusefillcolour="1" x="605" linecolour="none" y="110" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="220" usefillcolor="1" isinstance="0" xmi.id="430" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ <floatingtext usesdiagramfillcolour="1" width="70" usesdiagramusefillcolour="1" x="605" linecolour="none" y="305" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="700" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="431" text="Optional" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ <componentwidget usesdiagramfillcolour="1" width="130" usesdiagramusefillcolour="1" x="255" linecolour="none" y="385" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="70" usefillcolor="1" isinstance="0" xmi.id="479" showstereotype="0" font="helvetica,12,-1,5,75,1,0,0,0,0" />
+ </widgets>
+ <messages/>
+ <associations>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="426" widgetaid="425" xmi.id="1602" >
+ <linepath>
+ <startpoint startx="310" starty="165" />
+ <endpoint endx="320" endy="235" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="479" widgetaid="426" xmi.id="1605" >
+ <linepath>
+ <startpoint startx="320" starty="305" />
+ <endpoint endx="320" endy="385" />
+ </linepath>
+ </assocwidget>
+ </associations>
+ </diagram>
+ <diagram snapgrid="1" showattsig="1" fillcolor="#ffffc0" linewidth="0" zoom="100" showgrid="1" showopsig="1" usefillcolor="1" snapx="10" canvaswidth="966" snapy="10" showatts="1" xmi.id="525" documentation="" type="402" showops="1" showpackage="0" name="Filesystem abstraction layer" localid="30000" showstereotype="0" showscope="1" snapcsgrid="1" font="helvetica,12,-1,5,50,0,0,0,0,0" linecolor="#ff0000" canvasheight="796" >
+ <widgets>
+ <classwidget usesdiagramfillcolour="0" width="480" showattsigs="601" usesdiagramusefillcolour="0" x="180" linecolour="#ff0000" y="70" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="180" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="70" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="500" showattsigs="601" usesdiagramusefillcolour="0" x="170" linecolour="#ff0000" y="465" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="70" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="71" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ </widgets>
+ <messages/>
+ <associations>
+ <assocwidget totalcounta="3" indexa="1" totalcountb="3" indexb="1" widgetbid="70" widgetaid="71" xmi.id="751" >
+ <linepath>
+ <startpoint startx="340" starty="465" />
+ <endpoint endx="340" endy="250" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="20" usesdiagramusefillcolour="1" x="320" linecolour="none" y="235" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="702" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1609" text="*" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ <floatingtext usesdiagramfillcolour="1" width="50" usesdiagramusefillcolour="1" x="285" linecolour="none" y="235" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="710" fillcolour="none" height="30" usefillcolor="1" pretext="-" isinstance="0" xmi.id="1608" text="files" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </assocwidget>
+ <assocwidget totalcounta="3" indexa="2" totalcountb="3" indexb="2" widgetbid="70" widgetaid="71" xmi.id="756" >
+ <linepath>
+ <startpoint startx="500" starty="465" />
+ <endpoint endx="500" endy="250" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="20" usesdiagramusefillcolour="1" x="440" linecolour="none" y="235" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="702" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1611" text="1" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ <floatingtext usesdiagramfillcolour="1" width="150" usesdiagramusefillcolour="1" x="465" linecolour="none" y="235" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="710" fillcolour="none" height="30" usefillcolor="1" pretext="-" isinstance="0" xmi.id="1610" text="corresponding_file" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </assocwidget>
+ </associations>
+ </diagram>
+ <diagram snapgrid="1" showattsig="1" fillcolor="#ffffc0" linewidth="0" zoom="100" showgrid="1" showopsig="1" usefillcolor="1" snapx="10" canvaswidth="966" snapy="10" showatts="1" xmi.id="534" documentation="" type="402" showops="1" showpackage="0" name="MIME actions" localid="30000" showstereotype="0" showscope="1" snapcsgrid="1" font="helvetica,12,-1,5,50,0,0,0,0,0" linecolor="#ff0000" canvasheight="796" >
+ <widgets>
+ <classwidget usesdiagramfillcolour="0" width="160" showattsigs="601" usesdiagramusefillcolour="0" x="220" linecolour="#ff0000" y="200" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="40" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="535" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <notewidget usesdiagramfillcolour="1" width="190" usesdiagramusefillcolour="1" x="445" linecolour="none" y="185" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="50" usefillcolor="1" isinstance="0" xmi.id="537" text="This should probably be handled in exo as well." font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </widgets>
+ <messages/>
+ <associations>
+ <assocwidget totalcounta="2" indexa="1" visibilityB="200" totalcountb="2" indexb="1" widgetbid="535" widgetaid="537" roleBdoc="" documentation="" roleAdoc="" type="513" changeabilityA="900" changeabilityB="900" visibilityA="200" >
+ <linepath>
+ <startpoint startx="445" starty="210" />
+ <endpoint endx="380" endy="220" />
+ </linepath>
+ </assocwidget>
+ </associations>
+ </diagram>
+ <diagram snapgrid="1" showattsig="1" fillcolor="#ffffc0" linewidth="0" zoom="100" showgrid="1" showopsig="1" usefillcolor="1" snapx="10" canvaswidth="966" snapy="10" showatts="1" xmi.id="777" documentation="" type="402" showops="1" showpackage="0" name="Desktop GUI" localid="30000" showstereotype="0" showscope="1" snapcsgrid="1" font="helvetica,12,-1,5,50,0,0,0,0,0" linecolor="#ff0000" canvasheight="796" >
+ <widgets>
+ <classwidget usesdiagramfillcolour="1" width="180" showattsigs="601" usesdiagramusefillcolour="1" x="270" linecolour="none" y="220" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="40" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="279" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="1" width="170" showattsigs="601" usesdiagramusefillcolour="1" x="265" linecolour="none" y="90" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="40" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="257" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <notewidget usesdiagramfillcolour="1" width="250" usesdiagramusefillcolour="1" x="175" linecolour="none" y="390" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="160" usefillcolor="1" isinstance="0" xmi.id="782" text="Store icon positions and backdrop settings into the ~/Desktop/.directory file as special attributes? Would be logical to keep the desktop folder attributes with the physical desktop folder." font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </widgets>
+ <messages/>
+ <associations>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="279" widgetaid="257" xmi.id="281" >
+ <linepath>
+ <startpoint startx="350" starty="130" />
+ <endpoint endx="360" endy="220" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="20" usesdiagramusefillcolour="1" x="350" linecolour="none" y="185" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="702" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1613" text="1" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ <floatingtext usesdiagramfillcolour="1" width="60" usesdiagramusefillcolour="1" x="280" linecolour="none" y="185" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="710" fillcolour="none" height="30" usefillcolor="1" pretext="-" isinstance="0" xmi.id="1612" text="model" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" visibilityB="200" totalcountb="2" indexb="1" widgetbid="279" widgetaid="782" roleBdoc="" documentation="" roleAdoc="" type="513" changeabilityA="900" changeabilityB="900" visibilityA="200" >
+ <linepath>
+ <startpoint startx="300" starty="390" />
+ <endpoint endx="360" endy="260" />
+ </linepath>
+ </assocwidget>
+ </associations>
+ </diagram>
+ <diagram snapgrid="1" showattsig="1" fillcolor="#ffffc0" linewidth="0" zoom="100" showgrid="1" showopsig="1" usefillcolor="1" snapx="10" canvaswidth="966" snapy="10" showatts="1" xmi.id="834" documentation="" type="402" showops="1" showpackage="0" name="ThunarVFS monitoring" localid="30000" showstereotype="0" showscope="1" snapcsgrid="1" font="helvetica,12,-1,5,50,0,0,0,0,0" linecolor="#ff0000" canvasheight="796" >
+ <widgets>
+ <classwidget usesdiagramfillcolour="0" width="430" showattsigs="601" usesdiagramusefillcolour="0" x="115" linecolour="#ff0000" y="105" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="50" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="835" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <packagewidget usesdiagramfillcolour="1" width="90" usesdiagramusefillcolour="1" x="185" linecolour="none" y="375" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="50" usefillcolor="1" isinstance="0" xmi.id="78" showstereotype="0" font="helvetica,12,-1,5,75,1,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="1" width="270" showattsigs="601" usesdiagramusefillcolour="1" x="345" linecolour="none" y="305" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="210" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="73" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <notewidget usesdiagramfillcolour="1" width="250" usesdiagramusefillcolour="1" x="595" linecolour="none" y="40" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="180" usefillcolor="1" isinstance="0" xmi.id="838" text="Provides asynchronous notifications to watched files. Primary backend will be a thread (or multiple threads), that periodically call stat() on the watched files.
+
+In addition, kqueue() and FAM can be used. dnotify is not thread-safe." font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </widgets>
+ <messages/>
+ <associations>
+ <assocwidget totalcounta="2" indexa="1" visibilityB="200" totalcountb="3" indexb="1" widgetbid="835" widgetaid="78" roleBdoc="" documentation="" roleAdoc="" type="509" changeabilityA="900" changeabilityB="900" visibilityA="200" >
+ <linepath>
+ <startpoint startx="230" starty="375" />
+ <endpoint endx="260" endy="155" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" visibilityB="200" totalcountb="2" indexb="1" widgetbid="73" widgetaid="78" roleBdoc="" documentation="" roleAdoc="" type="509" changeabilityA="900" changeabilityB="900" visibilityA="200" >
+ <linepath>
+ <startpoint startx="275" starty="400" />
+ <endpoint endx="345" endy="410" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="3" indexa="2" totalcountb="2" indexb="1" widgetbid="73" widgetaid="835" xmi.id="1614" >
+ <linepath>
+ <startpoint startx="400" starty="155" />
+ <endpoint endx="480" endy="305" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" visibilityB="200" totalcountb="2" indexb="1" widgetbid="835" widgetaid="838" roleBdoc="" documentation="" roleAdoc="" type="513" changeabilityA="900" changeabilityB="900" visibilityA="200" >
+ <linepath>
+ <startpoint startx="595" starty="130" />
+ <endpoint endx="545" endy="130" />
+ </linepath>
+ </assocwidget>
+ </associations>
+ </diagram>
+ <diagram snapgrid="1" showattsig="1" fillcolor="#ffffc0" linewidth="0" zoom="100" showgrid="1" showopsig="1" usefillcolor="1" snapx="10" canvaswidth="966" snapy="10" showatts="1" xmi.id="999" documentation="" type="402" showops="1" showpackage="0" name="Locationbar GUI" localid="30000" showstereotype="0" showscope="1" snapcsgrid="1" font="helvetica,12,-1,5,50,0,0,0,0,0" linecolor="#ff0000" canvasheight="796" >
+ <widgets>
+ <interfacewidget usesdiagramfillcolour="0" width="160" usesdiagramusefillcolour="0" x="160" linecolour="#ff0000" y="175" drawascircle="0" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="50" usefillcolor="1" isinstance="0" xmi.id="1001" showoperations="0" showpackage="0" showscope="1" font="helvetica,12,-1,5,75,1,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="200" showattsigs="601" usesdiagramusefillcolour="0" x="140" linecolour="#ff0000" y="260" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="40" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="1002" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <packagewidget usesdiagramfillcolour="0" width="70" usesdiagramusefillcolour="0" x="175" linecolour="#7ca332" y="485" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#c1ff4f" height="50" usefillcolor="1" isinstance="0" xmi.id="199" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="120" showattsigs="601" usesdiagramusefillcolour="0" x="110" linecolour="#7ca332" y="390" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#c1ff4f" height="40" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="1009" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="90" showattsigs="601" usesdiagramusefillcolour="0" x="235" linecolour="#7ca332" y="390" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#c1ff4f" height="40" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="1010" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ <interfacewidget usesdiagramfillcolour="0" width="450" usesdiagramusefillcolour="0" x="5" linecolour="#ff0000" y="30" drawascircle="0" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="100" usefillcolor="1" isinstance="0" xmi.id="1068" showoperations="1" showpackage="0" showscope="1" font="helvetica,12,-1,5,75,1,0,0,0,0" />
+ </widgets>
+ <messages/>
+ <associations>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="1001" widgetaid="1002" xmi.id="1004" >
+ <linepath>
+ <startpoint startx="240" starty="260" />
+ <endpoint endx="240" endy="225" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="3" indexa="1" visibilityB="200" totalcountb="2" indexb="1" widgetbid="1009" widgetaid="199" roleBdoc="" documentation="" roleAdoc="" type="509" changeabilityA="900" changeabilityB="900" visibilityA="200" >
+ <linepath>
+ <startpoint startx="200" starty="485" />
+ <endpoint endx="170" endy="430" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="3" indexa="2" visibilityB="200" totalcountb="2" indexb="1" widgetbid="1010" widgetaid="199" roleBdoc="" documentation="" roleAdoc="" type="509" changeabilityA="900" changeabilityB="900" visibilityA="200" >
+ <linepath>
+ <startpoint startx="220" starty="485" />
+ <endpoint endx="280" endy="430" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="3" indexa="1" totalcountb="2" indexb="1" widgetbid="1009" widgetaid="1002" xmi.id="1011" >
+ <linepath>
+ <startpoint startx="210" starty="300" />
+ <endpoint endx="170" endy="390" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="3" indexa="2" totalcountb="2" indexb="1" widgetbid="1010" widgetaid="1002" xmi.id="1012" >
+ <linepath>
+ <startpoint startx="270" starty="300" />
+ <endpoint endx="280" endy="390" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="20" usesdiagramusefillcolour="1" x="280" linecolour="none" y="355" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="702" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1617" text="*" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="1068" widgetaid="1001" xmi.id="1074" >
+ <linepath>
+ <startpoint startx="240" starty="175" />
+ <endpoint endx="230" endy="130" />
+ </linepath>
+ </assocwidget>
+ </associations>
+ </diagram>
+ <diagram snapgrid="1" showattsig="1" fillcolor="#ffffc0" linewidth="0" zoom="100" showgrid="1" showopsig="1" usefillcolor="1" snapx="10" canvaswidth="966" snapy="10" showatts="1" xmi.id="1128" documentation="" type="402" showops="1" showpackage="0" name="Navigator elements GUI" localid="30000" showstereotype="0" showscope="1" snapcsgrid="1" font="helvetica,12,-1,5,50,0,0,0,0,0" linecolor="#ff0000" canvasheight="796" >
+ <widgets>
+ <interfacewidget usesdiagramfillcolour="1" width="450" usesdiagramusefillcolour="1" x="45" linecolour="none" y="150" drawascircle="0" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="100" usefillcolor="1" isinstance="0" xmi.id="1068" showoperations="1" showpackage="0" showscope="1" font="helvetica,12,-1,5,75,1,0,0,0,0" />
+ <notewidget usesdiagramfillcolour="1" width="170" usesdiagramusefillcolour="1" x="45" linecolour="none" y="30" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="60" usefillcolor="1" isinstance="0" xmi.id="1129" text="Implemented by all navigational GUI elements in Thunar!" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ <interfacewidget usesdiagramfillcolour="1" width="160" usesdiagramusefillcolour="1" x="190" linecolour="none" y="345" drawascircle="0" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="50" usefillcolor="1" isinstance="0" xmi.id="1001" showoperations="1" showpackage="0" showscope="1" font="helvetica,12,-1,5,75,1,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="90" showattsigs="601" usesdiagramusefillcolour="0" x="655" linecolour="#7ca332" y="165" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#c1ff4f" height="70" usefillcolor="1" showpubliconly="0" showattributes="0" isinstance="0" xmi.id="186" showoperations="0" showpackage="0" showscope="1" showstereotype="0" font="helvetica,12,-1,5,75,0,0,0,0,0" />
+ </widgets>
+ <messages/>
+ <associations>
+ <assocwidget totalcounta="2" indexa="1" visibilityB="200" totalcountb="2" indexb="1" widgetbid="1068" widgetaid="1129" roleBdoc="" documentation="" roleAdoc="" type="513" changeabilityA="900" changeabilityB="900" visibilityA="200" >
+ <linepath>
+ <startpoint startx="215" starty="60" />
+ <endpoint endx="270" endy="150" />
+ <point x="260" y="60" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="1068" widgetaid="1001" xmi.id="1074" >
+ <linepath>
+ <startpoint startx="270" starty="345" />
+ <endpoint endx="270" endy="250" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="186" widgetaid="1068" xmi.id="1130" >
+ <linepath>
+ <startpoint startx="495" starty="200" />
+ <endpoint endx="655" endy="200" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="150" usesdiagramusefillcolour="1" x="515" linecolour="none" y="195" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="710" fillcolour="none" height="30" usefillcolor="1" pretext="+" isinstance="0" xmi.id="1618" text="change_directory" font="helvetica,12,-1,5,50,0,0,0,0,0" />
+ </assocwidget>
+ </associations>
+ </diagram>
+ <diagram snapgrid="1" showattsig="1" fillcolor="#ffffc0" linewidth="0" zoom="100" showgrid="1" showopsig="1" usefillcolor="1" snapx="10" canvaswidth="966" snapy="10" showatts="1" xmi.id="1252" documentation="" type="402" showops="1" showpackage="0" name="ThunarVFS volumes" localid="30000" showstereotype="0" showscope="1" snapcsgrid="1" font="helvetica,11,-1,0,50,0,0,0,0,0" linecolor="#ff0000" canvasheight="796" >
+ <widgets>
+ <classwidget usesdiagramfillcolour="0" width="230" showattsigs="601" usesdiagramusefillcolour="0" x="295" linecolour="#ff0000" y="100" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="60" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="1253" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Helvetica,11,-1,5,75,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="0" width="170" showattsigs="601" usesdiagramusefillcolour="0" x="325" linecolour="#ff0000" y="365" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="50" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="1254" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Helvetica,11,-1,5,75,0,0,0,0,0" />
+ <enumwidget usesdiagramfillcolour="0" width="170" usesdiagramusefillcolour="0" x="35" linecolour="#ff0000" y="335" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="110" usefillcolor="1" isinstance="0" xmi.id="1263" showpackage="0" font="Helvetica,11,-1,5,50,0,0,0,0,0" />
+ <classwidget usesdiagramfillcolour="1" width="290" showattsigs="601" usesdiagramusefillcolour="1" x="265" linecolour="none" y="490" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="160" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="72" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="helvetica,11,-1,0,75,0,0,0,0,0" />
+ <interfacewidget usesdiagramfillcolour="0" width="200" usesdiagramusefillcolour="0" x="680" linecolour="#ff0000" y="100" drawascircle="0" showopsigs="600" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="60" usefillcolor="1" isinstance="0" xmi.id="1409" showoperations="1" showpackage="0" showscope="1" font="Helvetica,11,-1,5,75,1,0,0,0,0" />
+ <interfacewidget usesdiagramfillcolour="0" width="270" usesdiagramusefillcolour="0" x="635" linecolour="#ff0000" y="345" drawascircle="0" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="90" usefillcolor="1" isinstance="0" xmi.id="1410" showoperations="1" showpackage="0" showscope="1" font="Helvetica,11,-1,5,75,1,0,0,0,0" />
+ </widgets>
+ <messages/>
+ <associations>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="1254" widgetaid="1253" xmi.id="1258" >
+ <linepath>
+ <startpoint startx="410" starty="160" />
+ <endpoint endx="410" endy="365" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="30" usesdiagramusefillcolour="1" x="415" linecolour="none" y="335" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="702" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1620" text="0..*" font="Helvetica,11,-1,5,50,0,0,0,0,0" />
+ <floatingtext usesdiagramfillcolour="1" width="70" usesdiagramusefillcolour="1" x="335" linecolour="none" y="335" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="710" fillcolour="none" height="30" usefillcolor="1" pretext="+" isinstance="0" xmi.id="1619" text="volumes" font="Helvetica,11,-1,5,50,0,0,0,0,0" />
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="1263" widgetaid="1254" xmi.id="1268" >
+ <linepath>
+ <startpoint startx="325" starty="390" />
+ <endpoint endx="205" endy="390" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="20" usesdiagramusefillcolour="1" x="210" linecolour="none" y="355" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="702" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1622" text="1" font="Helvetica,11,-1,5,50,0,0,0,0,0" />
+ <floatingtext usesdiagramfillcolour="1" width="50" usesdiagramusefillcolour="1" x="205" linecolour="none" y="395" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="710" fillcolour="none" height="30" usefillcolor="1" pretext="+" isinstance="0" xmi.id="1621" text="kind" font="Helvetica,11,-1,5,50,0,0,0,0,0" />
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="72" widgetaid="1254" xmi.id="1273" >
+ <linepath>
+ <startpoint startx="410" starty="415" />
+ <endpoint endx="410" endy="490" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="20" usesdiagramusefillcolour="1" x="410" linecolour="none" y="455" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="702" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1624" text="1" font="Helvetica,11,-1,5,50,0,0,0,0,0" />
+ <floatingtext usesdiagramfillcolour="1" width="100" usesdiagramusefillcolour="1" x="310" linecolour="none" y="455" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="710" fillcolour="none" height="30" usefillcolor="1" pretext="+" isinstance="0" xmi.id="1623" text="mount_point" font="Helvetica,11,-1,5,50,0,0,0,0,0" />
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="1410" widgetaid="1254" xmi.id="1411" >
+ <linepath>
+ <startpoint startx="495" starty="390" />
+ <endpoint endx="635" endy="390" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="1409" widgetaid="1253" xmi.id="1412" >
+ <linepath>
+ <startpoint startx="525" starty="130" />
+ <endpoint endx="680" endy="130" />
+ </linepath>
+ </assocwidget>
+ </associations>
+ </diagram>
+ <diagram snapgrid="1" showattsig="1" fillcolor="#ffffc0" linewidth="0" zoom="100" showgrid="1" showopsig="1" usefillcolor="1" snapx="10" canvaswidth="966" snapy="10" showatts="1" xmi.id="1479" documentation="" type="400" showops="1" showpackage="0" name="ThunarVFS volume manager requirements" localid="30000" showstereotype="0" showscope="1" snapcsgrid="1" font="helvetica,11,-1,0,50,0,0,0,0,0" linecolor="#ff0000" canvasheight="796" >
+ <widgets>
+ <actorwidget usesdiagramfillcolour="1" width="100" usesdiagramusefillcolour="1" x="810" linecolour="none" y="15" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="70" usefillcolor="1" isinstance="0" xmi.id="1480" font="helvetica,11,-1,0,50,0,0,0,0,0" />
+ <actorwidget usesdiagramfillcolour="1" width="150" usesdiagramusefillcolour="1" x="5" linecolour="none" y="65" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="70" usefillcolor="1" isinstance="0" xmi.id="1481" font="helvetica,11,-1,0,50,0,0,0,0,0" />
+ <usecasewidget usesdiagramfillcolour="0" width="200" usesdiagramusefillcolour="0" x="370" linecolour="#ff0000" y="20" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="60" usefillcolor="1" isinstance="0" xmi.id="1483" font="helvetica,11,-1,0,50,0,0,0,0,0" />
+ <usecasewidget usesdiagramfillcolour="1" width="100" usesdiagramusefillcolour="1" x="240" linecolour="none" y="60" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="60" usefillcolor="1" isinstance="0" xmi.id="1485" font="helvetica,11,-1,0,50,0,0,0,0,0" />
+ <usecasewidget usesdiagramfillcolour="0" width="140" usesdiagramusefillcolour="0" x="220" linecolour="#ff0000" y="160" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="60" usefillcolor="1" isinstance="0" xmi.id="1486" font="helvetica,11,-1,0,50,0,0,0,0,0" />
+ <usecasewidget usesdiagramfillcolour="1" width="180" usesdiagramusefillcolour="1" x="160" linecolour="none" y="260" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="60" usefillcolor="1" isinstance="0" xmi.id="1487" font="helvetica,11,-1,0,50,0,0,0,0,0" />
+ <usecasewidget usesdiagramfillcolour="1" width="140" usesdiagramusefillcolour="1" x="210" linecolour="none" y="510" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="60" usefillcolor="1" isinstance="0" xmi.id="1488" font="helvetica,11,-1,0,50,0,0,0,0,0" />
+ <usecasewidget usesdiagramfillcolour="1" width="260" usesdiagramusefillcolour="1" x="480" linecolour="none" y="540" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="60" usefillcolor="1" isinstance="0" xmi.id="1489" font="helvetica,11,-1,0,50,0,0,0,0,0" />
+ <usecasewidget usesdiagramfillcolour="1" width="220" usesdiagramusefillcolour="1" x="500" linecolour="none" y="470" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="60" usefillcolor="1" isinstance="0" xmi.id="1490" font="helvetica,11,-1,0,50,0,0,0,0,0" />
+ <usecasewidget usesdiagramfillcolour="1" width="150" usesdiagramusefillcolour="1" x="645" linecolour="none" y="100" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="60" usefillcolor="1" isinstance="0" xmi.id="1491" font="helvetica,11,-1,0,50,0,0,0,0,0" />
+ <usecasewidget usesdiagramfillcolour="1" width="140" usesdiagramusefillcolour="1" x="640" linecolour="none" y="170" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="60" usefillcolor="1" isinstance="0" xmi.id="1492" font="helvetica,11,-1,0,50,0,0,0,0,0" />
+ <usecasewidget usesdiagramfillcolour="1" width="120" usesdiagramusefillcolour="1" x="520" linecolour="none" y="400" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="60" usefillcolor="1" isinstance="0" xmi.id="1493" font="helvetica,11,-1,0,50,0,0,0,0,0" />
+ <usecasewidget usesdiagramfillcolour="1" width="80" usesdiagramusefillcolour="1" x="550" linecolour="none" y="330" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="60" usefillcolor="1" isinstance="0" xmi.id="1494" font="helvetica,11,-1,0,50,0,0,0,0,0" />
+ <usecasewidget usesdiagramfillcolour="1" width="80" usesdiagramusefillcolour="1" x="550" linecolour="none" y="230" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="60" usefillcolor="1" isinstance="0" xmi.id="1495" font="helvetica,11,-1,0,50,0,0,0,0,0" />
+ <usecasewidget usesdiagramfillcolour="1" width="90" usesdiagramusefillcolour="1" x="435" linecolour="none" y="130" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="60" usefillcolor="1" isinstance="0" xmi.id="1496" font="helvetica,11,-1,0,50,0,0,0,0,0" />
+ <boxwidget usesdiagramfillcolour="1" width="680" usesdiagramusefillcolour="1" x="120" linecolour="none" y="15" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="590" usefillcolor="1" isinstance="0" xmi.id="1526" font="helvetica,11,-1,0,50,0,0,0,0,0" />
+ <floatingtext usesdiagramfillcolour="1" width="160" usesdiagramusefillcolour="1" x="120" linecolour="none" y="15" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="700" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1527" text="Volume manager" font="helvetica,15,-1,0,50,0,0,0,0,0" />
+ <notewidget usesdiagramfillcolour="1" width="190" usesdiagramusefillcolour="1" x="265" linecolour="none" y="655" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="1" fillcolour="none" height="50" usefillcolor="1" isinstance="0" xmi.id="1529" text="May require superuser permissions." font="helvetica,11,-1,0,50,0,0,0,0,0" />
+ </widgets>
+ <messages/>
+ <associations>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="1483" widgetaid="1480" xmi.id="1484" >
+ <linepath>
+ <startpoint startx="810" starty="50" />
+ <endpoint endx="570" endy="50" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="3" indexa="2" totalcountb="3" indexb="1" widgetbid="1487" widgetaid="1481" xmi.id="1497" >
+ <linepath>
+ <startpoint startx="110" starty="135" />
+ <endpoint endx="220" endy="260" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="3" indexa="1" totalcountb="3" indexb="2" widgetbid="1485" widgetaid="1481" xmi.id="1498" >
+ <linepath>
+ <startpoint startx="155" starty="90" />
+ <endpoint endx="240" endy="100" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="3" indexa="2" totalcountb="2" indexb="1" widgetbid="1486" widgetaid="1481" xmi.id="1499" >
+ <linepath>
+ <startpoint startx="155" starty="110" />
+ <endpoint endx="290" endy="160" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="3" indexa="1" totalcountb="2" indexb="1" widgetbid="1488" widgetaid="1481" xmi.id="1500" >
+ <linepath>
+ <startpoint startx="60" starty="135" />
+ <endpoint endx="280" endy="510" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="3" indexa="1" totalcountb="2" indexb="1" widgetbid="1490" widgetaid="1488" xmi.id="1501" >
+ <linepath>
+ <startpoint startx="350" starty="530" />
+ <endpoint endx="500" endy="500" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="100" usesdiagramusefillcolour="1" x="380" linecolour="none" y="475" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="703" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1625" text="<<includes>>" font="helvetica,11,-1,0,50,0,0,0,0,0" />
+ </assocwidget>
+ <assocwidget totalcounta="3" indexa="2" totalcountb="2" indexb="1" widgetbid="1489" widgetaid="1488" xmi.id="1502" >
+ <linepath>
+ <startpoint startx="350" starty="550" />
+ <endpoint endx="480" endy="570" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="100" usesdiagramusefillcolour="1" x="390" linecolour="none" y="565" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="703" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1626" text="<<includes>>" font="helvetica,11,-1,0,50,0,0,0,0,0" />
+ </assocwidget>
+ <assocwidget totalcounta="3" indexa="2" totalcountb="2" indexb="1" widgetbid="1496" widgetaid="1487" xmi.id="1507" >
+ <linepath>
+ <startpoint startx="280" starty="260" />
+ <endpoint endx="435" endy="160" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="100" usesdiagramusefillcolour="1" x="380" linecolour="none" y="195" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="703" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1627" text="<<includes>>" font="helvetica,11,-1,0,50,0,0,0,0,0" />
+ </assocwidget>
+ <assocwidget totalcounta="3" indexa="1" totalcountb="2" indexb="1" widgetbid="1495" widgetaid="1487" xmi.id="1508" >
+ <linepath>
+ <startpoint startx="340" starty="280" />
+ <endpoint endx="550" endy="260" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="100" usesdiagramusefillcolour="1" x="460" linecolour="none" y="265" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="703" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1628" text="<<includes>>" font="helvetica,11,-1,0,50,0,0,0,0,0" />
+ </assocwidget>
+ <assocwidget totalcounta="3" indexa="2" totalcountb="2" indexb="1" widgetbid="1494" widgetaid="1487" xmi.id="1509" >
+ <linepath>
+ <startpoint startx="340" starty="300" />
+ <endpoint endx="550" endy="360" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="100" usesdiagramusefillcolour="1" x="450" linecolour="none" y="345" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="703" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1629" text="<<includes>>" font="helvetica,11,-1,0,50,0,0,0,0,0" />
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="1493" widgetaid="1487" xmi.id="1510" >
+ <linepath>
+ <startpoint startx="250" starty="320" />
+ <endpoint endx="520" endy="430" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="100" usesdiagramusefillcolour="1" x="410" linecolour="none" y="415" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="703" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1630" text="<<includes>>" font="helvetica,11,-1,0,50,0,0,0,0,0" />
+ </assocwidget>
+ <assocwidget totalcounta="3" indexa="1" totalcountb="2" indexb="1" widgetbid="1491" widgetaid="1496" xmi.id="1511" >
+ <linepath>
+ <startpoint startx="525" starty="150" />
+ <endpoint endx="645" endy="130" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="100" usesdiagramusefillcolour="1" x="520" linecolour="none" y="105" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="703" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1631" text="<<includes>>" font="helvetica,11,-1,0,50,0,0,0,0,0" />
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" totalcountb="2" indexb="1" widgetbid="1494" widgetaid="1495" xmi.id="1632" >
+ <linepath>
+ <startpoint startx="590" starty="290" />
+ <endpoint endx="590" endy="330" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="3" indexa="2" totalcountb="2" indexb="1" widgetbid="1492" widgetaid="1496" xmi.id="1517" >
+ <linepath>
+ <startpoint startx="525" starty="170" />
+ <endpoint endx="640" endy="200" />
+ </linepath>
+ <floatingtext usesdiagramfillcolour="1" width="100" usesdiagramusefillcolour="1" x="520" linecolour="none" y="185" linewidth="none" usesdiagramlinewidth="1" posttext="" usesdiagramlinecolour="1" role="703" fillcolour="none" height="30" usefillcolor="1" pretext="" isinstance="0" xmi.id="1635" text="<<includes>>" font="helvetica,11,-1,0,50,0,0,0,0,0" />
+ </assocwidget>
+ <assocwidget totalcounta="3" indexa="1" visibilityB="200" totalcountb="3" indexb="1" widgetbid="1529" widgetaid="1485" roleBdoc="" documentation="" roleAdoc="" type="513" changeabilityA="900" changeabilityB="900" visibilityA="200" >
+ <linepath>
+ <startpoint startx="240" starty="80" />
+ <endpoint endx="265" endy="670" />
+ <point x="100" y="80" />
+ <point x="100" y="670" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" visibilityB="200" totalcountb="3" indexb="2" widgetbid="1529" widgetaid="1486" roleBdoc="" documentation="" roleAdoc="" type="513" changeabilityA="900" changeabilityB="900" visibilityA="200" >
+ <linepath>
+ <startpoint startx="220" starty="190" />
+ <endpoint endx="265" endy="690" />
+ <point x="80" y="190" />
+ <point x="80" y="690" />
+ </linepath>
+ </assocwidget>
+ <assocwidget totalcounta="2" indexa="1" visibilityB="200" totalcountb="2" indexb="1" widgetbid="1529" widgetaid="1491" roleBdoc="" documentation="" roleAdoc="" type="513" changeabilityA="900" changeabilityB="900" visibilityA="200" >
+ <linepath>
+ <startpoint startx="795" starty="130" />
+ <endpoint endx="455" endy="680" />
+ <point x="870" y="130" />
+ <point x="870" y="680" />
+ </linepath>
+ </assocwidget>
+ </associations>
+ </diagram>
+ <diagram snapgrid="1" showattsig="1" fillcolor="#ffffc0" linewidth="0" zoom="100" showgrid="1" showopsig="1" usefillcolor="1" snapx="10" canvaswidth="966" snapy="10" showatts="1" xmi.id="1724" documentation="" type="402" showops="1" showpackage="0" name="ThunarIconFactory" localid="900000" showstereotype="0" showscope="1" snapcsgrid="1" font="helvetica,11,-1,0,50,0,0,0,0,0" linecolor="#ff0000" canvasheight="796" >
+ <widgets>
+ <classwidget usesdiagramfillcolour="0" width="520" showattsigs="601" usesdiagramusefillcolour="0" x="130" linecolour="#ff0000" y="200" showopsigs="601" linewidth="none" usesdiagramlinewidth="1" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="60" usefillcolor="1" showpubliconly="0" showattributes="1" isinstance="0" xmi.id="1788" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Helvetica,11,-1,5,75,0,0,0,0,0" />
+ </widgets>
+ <messages/>
+ <associations/>
+ </diagram>
+ </diagrams>
+ <listview>
+ <listitem open="1" type="800" label="Views" >
+ <listitem open="1" type="801" label="Logical View" >
+ <listitem open="1" type="813" id="1636" />
+ <listitem open="1" type="813" id="1811" />
+ <listitem open="1" type="813" id="251" />
+ <listitem open="1" type="813" id="85" />
+ <listitem open="1" type="813" id="279" />
+ <listitem open="1" type="813" id="257" />
+ <listitem open="1" type="813" id="343" />
+ <listitem open="1" type="813" id="335" />
+ <listitem open="1" type="813" id="336" />
+ <listitem open="0" type="813" id="70" >
+ <listitem open="0" type="814" id="686" />
+ <listitem open="0" type="814" id="743" />
+ <listitem open="0" type="815" id="692" />
+ <listitem open="0" type="815" id="745" />
+ <listitem open="0" type="815" id="746" />
+ <listitem open="0" type="815" id="747" />
+ <listitem open="0" type="815" id="748" />
+ <listitem open="0" type="815" id="749" />
+ </listitem>
+ <listitem open="0" type="813" id="71" >
+ <listitem open="0" type="815" id="761" />
+ <listitem open="0" type="815" id="764" />
+ </listitem>
+ <listitem open="1" type="813" id="1788" >
+ <listitem open="0" type="814" id="1810" />
+ <listitem open="0" type="815" id="1833" />
+ </listitem>
+ <listitem open="1" type="813" id="221" />
+ <listitem open="1" type="813" id="195" />
+ <listitem open="1" type="813" id="220" />
+ <listitem open="1" type="813" id="1002" />
+ <listitem open="1" type="813" id="535" />
+ <listitem open="0" type="813" id="264" >
+ <listitem open="0" type="814" id="265" />
+ </listitem>
+ <listitem open="0" type="813" id="269" >
+ <listitem open="0" type="815" id="270" />
+ </listitem>
+ <listitem open="1" type="813" id="327" />
+ <listitem open="0" type="813" id="240" >
+ <listitem open="0" type="814" id="946" />
+ </listitem>
+ <listitem open="1" type="813" id="89" />
+ <listitem open="1" type="813" id="87" />
+ <listitem open="1" type="813" id="202" />
+ <listitem open="1" type="813" id="334" />
+ <listitem open="1" type="813" id="224" />
+ <listitem open="1" type="813" id="1254" >
+ <listitem open="0" type="814" id="1255" />
+ </listitem>
+ <listitem open="1" type="813" id="1253" >
+ <listitem open="0" type="815" id="1342" />
+ <listitem open="0" type="815" id="1343" />
+ </listitem>
+ <listitem open="1" type="813" id="234" />
+ <listitem open="1" type="813" id="1637" />
+ <listitem open="1" type="817" id="1001" />
+ <listitem open="0" type="817" id="1068" >
+ <listitem open="0" type="815" id="1069" />
+ <listitem open="0" type="815" id="1070" />
+ <listitem open="0" type="815" id="1072" />
+ </listitem>
+ <listitem open="1" type="817" id="1410" >
+ <listitem open="0" type="815" id="1413" />
+ <listitem open="0" type="815" id="1414" />
+ <listitem open="0" type="815" id="1415" />
+ </listitem>
+ <listitem open="1" type="817" id="1409" >
+ <listitem open="0" type="815" id="1416" />
+ </listitem>
+ <listitem open="1" type="817" id="214" />
+ <listitem open="1" type="818" id="162" >
+ <listitem open="0" type="813" id="163" />
+ </listitem>
+ <listitem open="1" type="818" id="198" >
+ <listitem open="0" type="813" id="267" />
+ <listitem open="0" type="813" id="186" >
+ <listitem open="0" type="816" id="187" />
+ </listitem>
+ </listitem>
+ <listitem open="1" type="818" id="199" >
+ <listitem open="0" type="813" id="1010" />
+ <listitem open="0" type="813" id="1009" />
+ <listitem open="0" type="813" id="226" />
+ <listitem open="0" type="817" id="196" />
+ </listitem>
+ <listitem open="1" type="818" id="78" >
+ <listitem open="1" type="813" id="73" >
+ <listitem open="0" type="814" id="117" />
+ <listitem open="0" type="814" id="172" />
+ <listitem open="0" type="814" id="174" />
+ <listitem open="0" type="814" id="176" />
+ <listitem open="0" type="814" id="178" />
+ <listitem open="0" type="814" id="180" />
+ <listitem open="0" type="814" id="181" />
+ <listitem open="0" type="814" id="182" />
+ <listitem open="0" type="814" id="184" />
+ <listitem open="0" type="815" id="771" />
+ </listitem>
+ <listitem open="0" type="813" id="835" >
+ <listitem open="0" type="815" id="836" />
+ </listitem>
+ <listitem open="1" type="813" id="72" >
+ <listitem open="0" type="814" id="1187" />
+ <listitem open="0" type="814" id="102" />
+ <listitem open="0" type="815" id="114" />
+ <listitem open="0" type="815" id="115" />
+ <listitem open="0" type="815" id="169" />
+ <listitem open="0" type="815" id="170" />
+ <listitem open="0" type="815" id="889" />
+ <listitem open="0" type="815" id="890" />
+ </listitem>
+ </listitem>
+ <listitem open="0" type="830" label="Datatypes" >
+ <listitem open="1" type="829" id="744" />
+ <listitem open="1" type="829" id="770" />
+ <listitem open="1" type="829" id="769" />
+ <listitem open="1" type="829" id="767" />
+ <listitem open="1" type="829" id="768" />
+ <listitem open="1" type="829" id="422" />
+ <listitem open="1" type="829" id="64" />
+ <listitem open="1" type="829" id="63" />
+ <listitem open="1" type="829" id="185" />
+ <listitem open="1" type="829" id="66" />
+ <listitem open="1" type="829" id="65" />
+ <listitem open="1" type="829" id="175" />
+ <listitem open="1" type="829" id="183" />
+ <listitem open="1" type="829" id="61" />
+ <listitem open="1" type="829" id="67" />
+ <listitem open="1" type="829" id="177" />
+ <listitem open="1" type="829" id="68" />
+ <listitem open="1" type="829" id="69" />
+ <listitem open="1" type="829" id="179" />
+ <listitem open="1" type="829" id="173" />
+ <listitem open="1" type="829" id="1638" />
+ </listitem>
+ <listitem open="1" type="831" id="154" />
+ <listitem open="1" type="831" id="133" />
+ <listitem open="1" type="831" id="118" />
+ <listitem open="1" type="831" id="1188" />
+ <listitem open="1" type="831" id="1263" />
+ </listitem>
+ <listitem open="1" type="802" label="Use Case View" >
+ <listitem open="1" type="811" id="1481" />
+ <listitem open="1" type="811" id="1480" />
+ <listitem open="1" type="812" id="1488" />
+ <listitem open="1" type="812" id="1485" />
+ <listitem open="1" type="812" id="1489" />
+ <listitem open="1" type="812" id="1490" />
+ <listitem open="1" type="812" id="1495" />
+ <listitem open="1" type="812" id="1494" />
+ <listitem open="1" type="812" id="1491" />
+ <listitem open="1" type="812" id="1492" />
+ <listitem open="1" type="812" id="1493" />
+ <listitem open="1" type="812" id="1487" />
+ <listitem open="1" type="812" id="1496" />
+ <listitem open="1" type="812" id="1483" />
+ <listitem open="1" type="812" id="1486" />
+ </listitem>
+ <listitem open="1" type="821" label="Component View" >
+ <listitem open="1" type="822" id="426" />
+ <listitem open="1" type="822" id="479" />
+ <listitem open="1" type="822" id="425" />
+ <listitem open="1" type="822" id="429" />
+ <listitem open="1" type="822" id="428" />
+ <listitem open="1" type="822" id="432" />
+ </listitem>
+ <listitem open="1" type="827" label="Deployment View" />
+ <listitem open="1" type="836" label="Entity Relationship Model" />
+ </listitem>
+ </listview>
+ <codegeneration>
+ <codegenerator language="Cpp" >
+ <classifiercodedocument writeOutCode="true" package="" id="1637" parent_class="1637" fileExt=".cpp" fileName="class" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "class.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; class.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="1636" parent_class="1636" fileExt=".cpp" fileName="gerror" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "gerror.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; gerror.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="70" parent_class="70" fileExt=".cpp" fileName="thunarfile" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunarfile.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks>
+ <codeaccessormethod accessType="0" parent_id="687" tag="hblock_tag_11" canDelete="false" writeOutText="false" classfield_id="687" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="687" tag="hblock_tag_12" canDelete="false" writeOutText="false" classfield_id="687" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="687" tag="hblock_tag_13" canDelete="false" writeOutText="false" classfield_id="687" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="687" tag="hblock_tag_14" canDelete="false" writeOutText="false" classfield_id="687" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="687" tag="hblock_tag_15" canDelete="false" writeOutText="false" classfield_id="687" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeoperation parent_id="692" tag="operation_692" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="745" tag="operation_745" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="746" tag="operation_746" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="747" tag="operation_747" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="748" tag="operation_748" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="749" tag="operation_749" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ <codeaccessormethod accessType="0" parent_id="686" tag="hblock_tag_0" canDelete="false" classfield_id="686" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="751" tag="hblock_tag_18" canDelete="false" writeOutText="false" classfield_id="751" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="751" tag="hblock_tag_19" canDelete="false" writeOutText="false" classfield_id="751" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="751" tag="hblock_tag_20" canDelete="false" writeOutText="false" classfield_id="751" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="751" tag="hblock_tag_21" canDelete="false" writeOutText="false" classfield_id="751" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="0" parent_id="772" tag="hblock_tag_22" canDelete="false" classfield_id="772" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="772" tag="hblock_tag_23" canDelete="false" classfield_id="772" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="772" tag="hblock_tag_24" canDelete="false" writeOutText="false" classfield_id="772" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="772" tag="hblock_tag_25" canDelete="false" writeOutText="false" classfield_id="772" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="772" tag="hblock_tag_26" canDelete="false" writeOutText="false" classfield_id="772" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="686" tag="hblock_tag_1" canDelete="false" classfield_id="686" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="0" parent_id="743" tag="hblock_tag_2" canDelete="false" classfield_id="743" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="743" tag="hblock_tag_3" canDelete="false" classfield_id="743" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarfile.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields>
+ <codeclassfield parent_id="686" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="686" tag="" canDelete="false" indentLevel="1" text="FIX ME;" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="686" tag="hblock_tag_0" canDelete="false" classfield_id="686" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="686" tag="hblock_tag_1" canDelete="false" classfield_id="686" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="743" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="743" tag="" canDelete="false" indentLevel="1" text="FIX ME;" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="743" tag="hblock_tag_2" canDelete="false" classfield_id="743" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="743" tag="hblock_tag_3" canDelete="false" classfield_id="743" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="751" field_type="3" initialValue="" role_id="0" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="751" tag="" canDelete="false" writeOutText="false" indentLevel="1" role_id="1" text="FIX ME;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="751" tag="hblock_tag_0" canDelete="false" writeOutText="false" classfield_id="751" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="751" tag="hblock_tag_18" canDelete="false" writeOutText="false" classfield_id="751" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="751" tag="hblock_tag_19" canDelete="false" writeOutText="false" classfield_id="751" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="751" tag="hblock_tag_20" canDelete="false" writeOutText="false" classfield_id="751" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="751" tag="hblock_tag_21" canDelete="false" writeOutText="false" classfield_id="751" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="687" field_type="4" initialValue="" role_id="1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="687" tag="" canDelete="false" writeOutText="false" indentLevel="1" role_id="0" text="FIX ME;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="687" tag="hblock_tag_11" canDelete="false" writeOutText="false" classfield_id="687" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="687" tag="hblock_tag_12" canDelete="false" writeOutText="false" classfield_id="687" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="687" tag="hblock_tag_13" canDelete="false" writeOutText="false" classfield_id="687" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="687" tag="hblock_tag_14" canDelete="false" writeOutText="false" classfield_id="687" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="687" tag="hblock_tag_15" canDelete="false" writeOutText="false" classfield_id="687" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="772" field_type="4" initialValue="" role_id="1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="772" tag="" canDelete="false" indentLevel="1" role_id="0" text="FIX ME;" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="772" tag="hblock_tag_22" canDelete="false" classfield_id="772" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="772" tag="hblock_tag_23" canDelete="false" classfield_id="772" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="772" tag="hblock_tag_24" canDelete="false" writeOutText="false" classfield_id="772" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="772" tag="hblock_tag_25" canDelete="false" writeOutText="false" classfield_id="772" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="772" tag="hblock_tag_26" canDelete="false" writeOutText="false" classfield_id="772" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ </classfields>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="71" parent_class="71" fileExt=".cpp" fileName="thunarfolder" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunarfolder.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks>
+ <codeaccessormethod accessType="0" parent_id="751" tag="hblock_tag_7" canDelete="false" writeOutText="false" classfield_id="751" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="751" tag="hblock_tag_8" canDelete="false" writeOutText="false" classfield_id="751" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="751" tag="hblock_tag_9" canDelete="false" classfield_id="751" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="751" tag="hblock_tag_10" canDelete="false" classfield_id="751" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="751" tag="hblock_tag_11" canDelete="false" classfield_id="751" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeoperation parent_id="761" tag="operation_761" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="764" tag="operation_764" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarfolder.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields>
+ <codeclassfield parent_id="751" field_type="3" initialValue=" new vector( )" role_id="1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="751" tag="" canDelete="false" indentLevel="1" role_id="0" text="FIX ME;" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="751" tag="hblock_tag_7" canDelete="false" writeOutText="false" classfield_id="751" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="751" tag="hblock_tag_8" canDelete="false" writeOutText="false" classfield_id="751" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="751" tag="hblock_tag_9" canDelete="false" classfield_id="751" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="751" tag="hblock_tag_10" canDelete="false" classfield_id="751" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="751" tag="hblock_tag_11" canDelete="false" classfield_id="751" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ </classfields>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="thunar-vfs" id="73" parent_class="73" fileExt=".cpp" fileName="thunarvfsinfo" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunarvfsinfo.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks>
+ <codeaccessormethod accessType="0" parent_id="117" tag="hblock_tag_0" canDelete="false" classfield_id="117" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="117" tag="hblock_tag_1" canDelete="false" classfield_id="117" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="0" parent_id="172" tag="hblock_tag_2" canDelete="false" classfield_id="172" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="172" tag="hblock_tag_3" canDelete="false" classfield_id="172" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="0" parent_id="174" tag="hblock_tag_4" canDelete="false" classfield_id="174" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="174" tag="hblock_tag_5" canDelete="false" classfield_id="174" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="0" parent_id="176" tag="hblock_tag_6" canDelete="false" classfield_id="176" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="176" tag="hblock_tag_7" canDelete="false" classfield_id="176" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="0" parent_id="178" tag="hblock_tag_8" canDelete="false" classfield_id="178" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="178" tag="hblock_tag_9" canDelete="false" classfield_id="178" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="0" parent_id="180" tag="hblock_tag_10" canDelete="false" classfield_id="180" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="180" tag="hblock_tag_11" canDelete="false" classfield_id="180" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="0" parent_id="181" tag="hblock_tag_12" canDelete="false" classfield_id="181" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="181" tag="hblock_tag_13" canDelete="false" classfield_id="181" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="0" parent_id="182" tag="hblock_tag_14" canDelete="false" classfield_id="182" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="182" tag="hblock_tag_15" canDelete="false" classfield_id="182" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="0" parent_id="184" tag="hblock_tag_16" canDelete="false" classfield_id="184" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="184" tag="hblock_tag_17" canDelete="false" classfield_id="184" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="0" parent_id="687" tag="hblock_tag_18" canDelete="false" writeOutText="false" classfield_id="687" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="687" tag="hblock_tag_19" canDelete="false" writeOutText="false" classfield_id="687" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="687" tag="hblock_tag_20" canDelete="false" writeOutText="false" classfield_id="687" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="687" tag="hblock_tag_21" canDelete="false" writeOutText="false" classfield_id="687" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="687" tag="hblock_tag_22" canDelete="false" writeOutText="false" classfield_id="687" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="0" parent_id="772" tag="hblock_tag_23" canDelete="false" writeOutText="false" classfield_id="772" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="772" tag="hblock_tag_24" canDelete="false" writeOutText="false" classfield_id="772" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="772" tag="hblock_tag_25" canDelete="false" writeOutText="false" classfield_id="772" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="772" tag="hblock_tag_26" canDelete="false" writeOutText="false" classfield_id="772" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="772" tag="hblock_tag_27" canDelete="false" writeOutText="false" classfield_id="772" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeoperation parent_id="771" tag="operation_771" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarvfsinfo.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is thunar-vfs&#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields>
+ <codeclassfield parent_id="117" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="117" tag="" canDelete="false" indentLevel="1" text="FIX ME;" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="117" tag="hblock_tag_0" canDelete="false" classfield_id="117" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="117" tag="hblock_tag_1" canDelete="false" classfield_id="117" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="172" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="172" tag="" canDelete="false" indentLevel="1" text="FIX ME;" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="172" tag="hblock_tag_2" canDelete="false" classfield_id="172" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="172" tag="hblock_tag_3" canDelete="false" classfield_id="172" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="174" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="174" tag="" canDelete="false" indentLevel="1" text="FIX ME;" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="174" tag="hblock_tag_4" canDelete="false" classfield_id="174" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="174" tag="hblock_tag_5" canDelete="false" classfield_id="174" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="176" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="176" tag="" canDelete="false" indentLevel="1" text="FIX ME;" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="176" tag="hblock_tag_6" canDelete="false" classfield_id="176" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="176" tag="hblock_tag_7" canDelete="false" classfield_id="176" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="178" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="178" tag="" canDelete="false" indentLevel="1" text="FIX ME;" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="178" tag="hblock_tag_8" canDelete="false" classfield_id="178" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="178" tag="hblock_tag_9" canDelete="false" classfield_id="178" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="180" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="180" tag="" canDelete="false" indentLevel="1" text="FIX ME;" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="180" tag="hblock_tag_10" canDelete="false" classfield_id="180" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="180" tag="hblock_tag_11" canDelete="false" classfield_id="180" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="181" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="181" tag="" canDelete="false" indentLevel="1" text="FIX ME;" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="181" tag="hblock_tag_12" canDelete="false" classfield_id="181" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="181" tag="hblock_tag_13" canDelete="false" classfield_id="181" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="182" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="182" tag="" canDelete="false" indentLevel="1" text="FIX ME;" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="182" tag="hblock_tag_14" canDelete="false" classfield_id="182" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="182" tag="hblock_tag_15" canDelete="false" classfield_id="182" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="184" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="184" tag="" canDelete="false" indentLevel="1" text="FIX ME;" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="184" tag="hblock_tag_16" canDelete="false" classfield_id="184" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="184" tag="hblock_tag_17" canDelete="false" classfield_id="184" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="687" field_type="4" initialValue="" role_id="0" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="687" tag="" canDelete="false" writeOutText="false" indentLevel="1" role_id="1" text="FIX ME;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="687" tag="hblock_tag_18" canDelete="false" writeOutText="false" classfield_id="687" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="687" tag="hblock_tag_19" canDelete="false" writeOutText="false" classfield_id="687" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="687" tag="hblock_tag_20" canDelete="false" writeOutText="false" classfield_id="687" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="687" tag="hblock_tag_21" canDelete="false" writeOutText="false" classfield_id="687" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="687" tag="hblock_tag_22" canDelete="false" writeOutText="false" classfield_id="687" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="772" field_type="4" initialValue="" role_id="0" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="772" tag="" canDelete="false" writeOutText="false" indentLevel="1" role_id="1" text="FIX ME;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="772" tag="hblock_tag_23" canDelete="false" writeOutText="false" classfield_id="772" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="772" tag="hblock_tag_24" canDelete="false" writeOutText="false" classfield_id="772" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="772" tag="hblock_tag_25" canDelete="false" writeOutText="false" classfield_id="772" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="772" tag="hblock_tag_26" canDelete="false" writeOutText="false" classfield_id="772" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="772" tag="hblock_tag_27" canDelete="false" writeOutText="false" classfield_id="772" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ </classfields>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="thunar-vfs" id="72" parent_class="72" fileExt=".cpp" fileName="thunarvfsuri" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunarvfsuri.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks>
+ <codeaccessormethod accessType="0" parent_id="1187" tag="hblock_tag_0" canDelete="false" classfield_id="1187" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="1187" tag="hblock_tag_1" canDelete="false" classfield_id="1187" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeoperation parent_id="114" tag="operation_114" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="115" tag="operation_115" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="169" tag="operation_169" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="170" tag="operation_170" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="889" tag="operation_889" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="890" tag="operation_890" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ <codeaccessormethod accessType="0" parent_id="102" tag="hblock_tag_2" canDelete="false" classfield_id="102" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="102" tag="hblock_tag_3" canDelete="false" classfield_id="102" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarvfsuri.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is thunar-vfs&#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields>
+ <codeclassfield parent_id="1187" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="1187" tag="" canDelete="false" indentLevel="1" text="FIX ME;" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="1187" tag="hblock_tag_0" canDelete="false" classfield_id="1187" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="1187" tag="hblock_tag_1" canDelete="false" classfield_id="1187" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="102" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="102" tag="" canDelete="false" indentLevel="1" text="FIX ME;" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="102" tag="hblock_tag_2" canDelete="false" classfield_id="102" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="102" tag="hblock_tag_3" canDelete="false" classfield_id="102" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ </classfields>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="thunar-vfs" id="835" parent_class="835" fileExt=".cpp" fileName="thunarvfsmonitor" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunarvfsmonitor.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks>
+ <codeoperation parent_id="836" tag="operation_836" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarvfsmonitor.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is thunar-vfs&#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="85" parent_class="85" fileExt=".cpp" fileName="thunardesktopfile" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunardesktopfile.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunardesktopfile.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="87" parent_class="87" fileExt=".cpp" fileName="thunartrashedfile" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunartrashedfile.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunartrashedfile.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="89" parent_class="89" fileExt=".cpp" fileName="thunartrashfolder" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunartrashfolder.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunartrashfolder.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="118" parent_class="118" fileExt=".cpp" fileName="thunarvfsfiletype" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunarvfsfiletype.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarvfsfiletype.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="133" parent_class="133" fileExt=".cpp" fileName="thunarvfsfilemode" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunarvfsfilemode.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarvfsfilemode.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="154" parent_class="154" fileExt=".cpp" fileName="thunarvfsfileflags" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunarvfsfileflags.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarvfsfileflags.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="exo" id="163" parent_class="163" fileExt=".cpp" fileName="exomimeinfo" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "exomimeinfo.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; exomimeinfo.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is exo&#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="195" parent_class="195" fileExt=".cpp" fileName="thunarlistmodel" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunarlistmodel.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarlistmodel.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="gobject" id="186" parent_class="186" fileExt=".cpp" fileName="gsignal" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "gsignal.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; gsignal.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is gobject&#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="gobject" id="267" parent_class="267" fileExt=".cpp" fileName="gobject" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "gobject.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; gobject.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is gobject&#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="gtk" id="196" parent_class="196" fileExt=".cpp" fileName="gtktreemodel" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "gtktreemodel.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; gtktreemodel.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is gtk&#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="gtk" id="226" parent_class="226" fileExt=".cpp" fileName="gtktreeview" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "gtktreeview.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; gtktreeview.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is gtk&#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="gtk" id="1009" parent_class="1009" fileExt=".cpp" fileName="gtkcontainer" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "gtkcontainer.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; gtkcontainer.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is gtk&#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="gtk" id="1010" parent_class="1010" fileExt=".cpp" fileName="gtkbutton" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "gtkbutton.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; gtkbutton.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is gtk&#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="202" parent_class="202" fileExt=".cpp" fileName="thunartreemodel" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunartreemodel.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunartreemodel.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="214" parent_class="214" fileExt=".cpp" fileName="thunarview" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunarview.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarview.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="220" parent_class="220" fileExt=".cpp" fileName="thunarlistview" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunarlistview.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarlistview.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="221" parent_class="221" fileExt=".cpp" fileName="thunariconview" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunariconview.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunariconview.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="224" parent_class="224" fileExt=".cpp" fileName="thunartreeview" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunartreeview.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunartreeview.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="234" parent_class="234" fileExt=".cpp" fileName="thunarwindow" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunarwindow.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarwindow.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="240" parent_class="240" fileExt=".cpp" fileName="thunarstatusbar" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunarstatusbar.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks>
+ <codeaccessormethod accessType="0" parent_id="946" tag="hblock_tag_0" canDelete="false" classfield_id="946" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="946" tag="hblock_tag_1" canDelete="false" classfield_id="946" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarstatusbar.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields>
+ <codeclassfield parent_id="946" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="946" tag="" canDelete="false" indentLevel="1" text="FIX ME;" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="946" tag="hblock_tag_0" canDelete="false" classfield_id="946" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="946" tag="hblock_tag_1" canDelete="false" classfield_id="946" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ </classfields>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="251" parent_class="251" fileExt=".cpp" fileName="thunarapplication" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunarapplication.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarapplication.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="257" parent_class="257" fileExt=".cpp" fileName="thunardesktopview" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunardesktopview.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunardesktopview.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="264" parent_class="264" fileExt=".cpp" fileName="thunarpreferences" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunarpreferences.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks>
+ <codeaccessormethod accessType="0" parent_id="265" tag="hblock_tag_0" canDelete="false" classfield_id="265" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="265" tag="hblock_tag_1" canDelete="false" classfield_id="265" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarpreferences.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields>
+ <codeclassfield parent_id="265" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="265" tag="" canDelete="false" indentLevel="1" text="FIX ME;" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="265" tag="hblock_tag_0" canDelete="false" classfield_id="265" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="265" tag="hblock_tag_1" canDelete="false" classfield_id="265" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ </classfields>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="269" parent_class="269" fileExt=".cpp" fileName="thunarpreferencesdialog" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunarpreferencesdialog.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks>
+ <codeoperation parent_id="270" tag="operation_270" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarpreferencesdialog.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="279" parent_class="279" fileExt=".cpp" fileName="thunardesktopmodel" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunardesktopmodel.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunardesktopmodel.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="327" parent_class="327" fileExt=".cpp" fileName="thunarsidepane" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunarsidepane.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarsidepane.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="334" parent_class="334" fileExt=".cpp" fileName="thunartreepane" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunartreepane.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunartreepane.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="335" parent_class="335" fileExt=".cpp" fileName="thunarfavouritespane" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunarfavouritespane.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarfavouritespane.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="336" parent_class="336" fileExt=".cpp" fileName="thunarfavouritesview" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunarfavouritesview.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarfavouritesview.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="343" parent_class="343" fileExt=".cpp" fileName="thunarfavouritesmodel" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunarfavouritesmodel.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarfavouritesmodel.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="535" parent_class="535" fileExt=".cpp" fileName="thunarmimeaction" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunarmimeaction.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarmimeaction.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="1001" parent_class="1001" fileExt=".cpp" fileName="thunarlocationbar" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunarlocationbar.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarlocationbar.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="1002" parent_class="1002" fileExt=".cpp" fileName="thunarlocationbuttons" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunarlocationbuttons.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarlocationbuttons.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="1068" parent_class="1068" fileExt=".cpp" fileName="thunarnavigator" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunarnavigator.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks>
+ <codeoperation parent_id="1069" tag="operation_1069" canDelete="false" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="1070" tag="operation_1070" canDelete="false" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="1072" tag="operation_1072" canDelete="false" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarnavigator.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="1188" parent_class="1188" fileExt=".cpp" fileName="thunarvfsurischeme" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunarvfsurischeme.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarvfsurischeme.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="1253" parent_class="1253" fileExt=".cpp" fileName="thunarvfsvolumemanagerbsd" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunarvfsvolumemanagerbsd.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks>
+ <codeoperation parent_id="1342" tag="operation_1342" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="1343" tag="operation_1343" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarvfsvolumemanagerbsd.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="1254" parent_class="1254" fileExt=".cpp" fileName="thunarvfsvolumebsd" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunarvfsvolumebsd.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks>
+ <codeaccessormethod accessType="0" parent_id="1255" tag="hblock_tag_0" canDelete="false" classfield_id="1255" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="1255" tag="hblock_tag_1" canDelete="false" classfield_id="1255" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarvfsvolumebsd.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields>
+ <codeclassfield parent_id="1255" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="1255" tag="" canDelete="false" indentLevel="1" text="FIX ME;" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="1255" tag="hblock_tag_0" canDelete="false" classfield_id="1255" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="1255" tag="hblock_tag_1" canDelete="false" classfield_id="1255" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ </classfields>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="1263" parent_class="1263" fileExt=".cpp" fileName="thunarvfsvolumekind" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunarvfsvolumekind.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarvfsvolumekind.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="1409" parent_class="1409" fileExt=".cpp" fileName="thunarvfsvolumemanager" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunarvfsvolumemanager.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks>
+ <codeoperation parent_id="1416" tag="operation_1416" canDelete="false" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarvfsvolumemanager.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="1410" parent_class="1410" fileExt=".cpp" fileName="thunarvfsvolume" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunarvfsvolume.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks>
+ <codeoperation parent_id="1413" tag="operation_1413" canDelete="false" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="1414" tag="operation_1414" canDelete="false" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="1415" tag="operation_1415" canDelete="false" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarvfsvolume.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <codedocument writeOutCode="false" package="" id="Makefile_DOC" fileExt="" fileName="Makefile" >
+ <textblocks/>
+ <header>
+ <codecomment tag="" />
+ </header>
+ </codedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="1788" parent_class="1788" fileExt=".cpp" fileName="thunariconfactory" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "thunariconfactory.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks>
+ <codeaccessormethod accessType="0" parent_id="1810" tag="hblock_tag_0" canDelete="false" classfield_id="1810" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="1810" tag="hblock_tag_1" canDelete="false" classfield_id="1810" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeoperation parent_id="1833" tag="operation_1833" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeoperation>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunariconfactory.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:18:01&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields>
+ <codeclassfield parent_id="1810" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="1810" tag="" canDelete="false" indentLevel="1" text="FIX ME;" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="1810" tag="hblock_tag_0" canDelete="false" classfield_id="1810" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="1810" tag="hblock_tag_1" canDelete="false" classfield_id="1810" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ </classfields>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="1811" parent_class="1811" fileExt=".cpp" fileName="gtkicontheme" >
+ <textblocks>
+ <codeblockwithcomments tag="includes" text="#include "gtkicontheme.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="constructionMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Constructors/Destructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="otherMethodsBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Methods" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; gtkicontheme.cpp - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.cpp&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:17:43&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader1637" parent_class="1637" fileExt=".h" fileName="class" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef CLASS_H&#010;#define CLASS_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="1637" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class class&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="class ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //CLASS_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; class.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader1636" parent_class="1636" fileExt=".h" fileName="gerror" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef GERROR_H&#010;#define GERROR_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="1636" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class GError&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="GError ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //GERROR_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; gerror.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader70" parent_class="70" fileExt=".h" fileName="thunarfile" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARFILE_H&#010;#define THUNARFILE_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;#include "gerror.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="70" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarFile&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks>
+ <ccfdeclarationcodeblock parent_id="751" tag="tblock_0" canDelete="false" writeOutText="false" indentLevel="1" role_id="1" text=" ThunarFolder ;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <ccfdeclarationcodeblock parent_id="687" tag="tblock_14" canDelete="false" writeOutText="false" indentLevel="1" role_id="0" text=" ThunarVfsInfo ;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarFile ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks>
+ <codeaccessormethod accessType="0" parent_id="751" tag="hblock_tag_0" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="751" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="751" tag="hblock_tag_22" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="751" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="751" tag="hblock_tag_23" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="751" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="751" tag="hblock_tag_24" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="751" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="751" tag="hblock_tag_25" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="751" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="0" parent_id="687" tag="hblock_tag_15" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="687" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="687" tag="hblock_tag_16" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="687" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="687" tag="hblock_tag_17" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="687" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="687" tag="hblock_tag_18" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="687" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="687" tag="hblock_tag_19" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="687" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks>
+ <codeoperation parent_id="692" tag="operation_692" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="&#010;@param uri &#010;@param error " />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="745" tag="operation_745" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="746" tag="operation_746" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="747" tag="operation_747" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="748" tag="operation_748" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="749" tag="operation_749" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeoperation>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks>
+ <ccfdeclarationcodeblock parent_id="686" tag="tblock_2" canDelete="false" indentLevel="1" text=" string display_name;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <ccfdeclarationcodeblock parent_id="743" tag="tblock_3" canDelete="false" indentLevel="1" text=" ExoMimeInfo mime_info;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <ccfdeclarationcodeblock parent_id="772" tag="tblock_32" canDelete="false" indentLevel="1" role_id="0" text=" ThunarVfsInfo info;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks>
+ <codeaccessormethod accessType="0" parent_id="686" tag="hblock_tag_14" canDelete="false" indentLevel="1" classfield_id="686" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="686" tag="hblock_tag_15" canDelete="false" indentLevel="1" classfield_id="686" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="0" parent_id="743" tag="hblock_tag_16" canDelete="false" indentLevel="1" classfield_id="743" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="743" tag="hblock_tag_17" canDelete="false" indentLevel="1" classfield_id="743" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="0" parent_id="772" tag="hblock_tag_33" canDelete="false" indentLevel="1" classfield_id="772" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="772" tag="hblock_tag_34" canDelete="false" indentLevel="1" classfield_id="772" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="772" tag="hblock_tag_35" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="772" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="772" tag="hblock_tag_36" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="772" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="772" tag="hblock_tag_37" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="772" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARFILE_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarfile.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields>
+ <codeclassfield parent_id="686" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="686" tag="tblock_2" canDelete="false" indentLevel="1" text=" string display_name;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="686" tag="hblock_tag_14" canDelete="false" indentLevel="1" classfield_id="686" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="686" tag="hblock_tag_15" canDelete="false" indentLevel="1" classfield_id="686" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="743" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="743" tag="tblock_3" canDelete="false" indentLevel="1" text=" ExoMimeInfo mime_info;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="743" tag="hblock_tag_16" canDelete="false" indentLevel="1" classfield_id="743" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="743" tag="hblock_tag_17" canDelete="false" indentLevel="1" classfield_id="743" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="751" field_type="3" initialValue="" role_id="0" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="751" tag="tblock_0" canDelete="false" writeOutText="false" indentLevel="1" role_id="1" text=" ThunarFolder ;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="751" tag="hblock_tag_0" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="751" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="751" tag="hblock_tag_22" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="751" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="751" tag="hblock_tag_23" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="751" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="751" tag="hblock_tag_24" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="751" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="751" tag="hblock_tag_25" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="751" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="687" field_type="4" initialValue="" role_id="1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="687" tag="tblock_14" canDelete="false" writeOutText="false" indentLevel="1" role_id="0" text=" ThunarVfsInfo ;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="687" tag="hblock_tag_15" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="687" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="687" tag="hblock_tag_16" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="687" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="687" tag="hblock_tag_17" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="687" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="687" tag="hblock_tag_18" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="687" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="687" tag="hblock_tag_19" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="687" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="772" field_type="4" initialValue="" role_id="1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="772" tag="tblock_32" canDelete="false" indentLevel="1" role_id="0" text=" ThunarVfsInfo info;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="772" tag="hblock_tag_33" canDelete="false" indentLevel="1" classfield_id="772" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="772" tag="hblock_tag_34" canDelete="false" indentLevel="1" classfield_id="772" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="772" tag="hblock_tag_35" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="772" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="772" tag="hblock_tag_36" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="772" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="772" tag="hblock_tag_37" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="772" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ </classfields>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader71" parent_class="71" fileExt=".h" fileName="thunarfolder" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARFOLDER_H&#010;#define THUNARFOLDER_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;#include <vector>&#010;#include "thunarfile.h"&#010;#include "gerror.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="71" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarFolder&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarFolder ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks>
+ <codeoperation parent_id="761" tag="operation_761" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="&#010;@param file &#010;@param error " />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="764" tag="operation_764" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="&#010;@param uri &#010;@param error " />
+ </header>
+ </codeoperation>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks>
+ <ccfdeclarationcodeblock parent_id="751" tag="tblock_0" canDelete="false" indentLevel="1" role_id="0" text=" vector filesVector;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks>
+ <codeaccessormethod accessType="0" parent_id="751" tag="hblock_tag_0" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="751" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="751" tag="hblock_tag_8" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="751" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="751" tag="hblock_tag_9" canDelete="false" indentLevel="1" classfield_id="751" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="751" tag="hblock_tag_10" canDelete="false" indentLevel="1" classfield_id="751" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="751" tag="hblock_tag_11" canDelete="false" indentLevel="1" classfield_id="751" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARFOLDER_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarfolder.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields>
+ <codeclassfield parent_id="751" field_type="3" initialValue=" new vector( )" role_id="1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="751" tag="tblock_0" canDelete="false" indentLevel="1" role_id="0" text=" vector filesVector;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="751" tag="hblock_tag_0" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="751" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="751" tag="hblock_tag_8" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="751" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="751" tag="hblock_tag_9" canDelete="false" indentLevel="1" classfield_id="751" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="751" tag="hblock_tag_10" canDelete="false" indentLevel="1" classfield_id="751" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="751" tag="hblock_tag_11" canDelete="false" indentLevel="1" classfield_id="751" role_id="0" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ </classfields>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="thunar-vfs" id="cppheader73" parent_class="73" fileExt=".h" fileName="thunarvfsinfo" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARVFSINFO_H&#010;#define THUNARVFSINFO_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="73" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarVfsInfo&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks>
+ <ccfdeclarationcodeblock parent_id="117" tag="tblock_0" canDelete="false" indentLevel="1" text=" string target;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <ccfdeclarationcodeblock parent_id="172" tag="tblock_1" canDelete="false" indentLevel="1" text=" uid_t uid;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <ccfdeclarationcodeblock parent_id="174" tag="tblock_2" canDelete="false" indentLevel="1" text=" gid_t gid;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <ccfdeclarationcodeblock parent_id="176" tag="tblock_3" canDelete="false" indentLevel="1" text=" ThunarVfsFileSize size;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <ccfdeclarationcodeblock parent_id="178" tag="tblock_4" canDelete="false" indentLevel="1" text=" ThunarVfsFileTime atime;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <ccfdeclarationcodeblock parent_id="180" tag="tblock_5" canDelete="false" indentLevel="1" text=" ThunarVfsFileTime mtime;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <ccfdeclarationcodeblock parent_id="181" tag="tblock_6" canDelete="false" indentLevel="1" text=" ThunarVfsFileTime ctime;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <ccfdeclarationcodeblock parent_id="182" tag="tblock_7" canDelete="false" indentLevel="1" text=" ThunarVfsFileInode inode;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <ccfdeclarationcodeblock parent_id="184" tag="tblock_8" canDelete="false" indentLevel="1" text=" ThunarVfsFileDevice device;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <ccfdeclarationcodeblock parent_id="687" tag="tblock_26" canDelete="false" writeOutText="false" indentLevel="1" role_id="1" text=" ThunarFile ;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <ccfdeclarationcodeblock parent_id="772" tag="tblock_32" canDelete="false" writeOutText="false" indentLevel="1" role_id="1" text=" ThunarFile ;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarVfsInfo ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks>
+ <codeaccessormethod accessType="0" parent_id="117" tag="hblock_tag_0" canDelete="false" indentLevel="1" classfield_id="117" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="117" tag="hblock_tag_11" canDelete="false" indentLevel="1" classfield_id="117" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="0" parent_id="172" tag="hblock_tag_12" canDelete="false" indentLevel="1" classfield_id="172" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="172" tag="hblock_tag_13" canDelete="false" indentLevel="1" classfield_id="172" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="0" parent_id="174" tag="hblock_tag_14" canDelete="false" indentLevel="1" classfield_id="174" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="174" tag="hblock_tag_15" canDelete="false" indentLevel="1" classfield_id="174" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="0" parent_id="176" tag="hblock_tag_16" canDelete="false" indentLevel="1" classfield_id="176" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="176" tag="hblock_tag_17" canDelete="false" indentLevel="1" classfield_id="176" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="0" parent_id="178" tag="hblock_tag_18" canDelete="false" indentLevel="1" classfield_id="178" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="178" tag="hblock_tag_19" canDelete="false" indentLevel="1" classfield_id="178" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="0" parent_id="180" tag="hblock_tag_20" canDelete="false" indentLevel="1" classfield_id="180" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="180" tag="hblock_tag_21" canDelete="false" indentLevel="1" classfield_id="180" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="0" parent_id="181" tag="hblock_tag_22" canDelete="false" indentLevel="1" classfield_id="181" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="181" tag="hblock_tag_23" canDelete="false" indentLevel="1" classfield_id="181" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="0" parent_id="182" tag="hblock_tag_24" canDelete="false" indentLevel="1" classfield_id="182" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="182" tag="hblock_tag_25" canDelete="false" indentLevel="1" classfield_id="182" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="0" parent_id="184" tag="hblock_tag_26" canDelete="false" indentLevel="1" classfield_id="184" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="184" tag="hblock_tag_27" canDelete="false" indentLevel="1" classfield_id="184" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="687" tag="hblock_tag_28" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="687" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="687" tag="hblock_tag_29" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="687" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="687" tag="hblock_tag_30" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="687" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="687" tag="hblock_tag_31" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="687" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="0" parent_id="772" tag="hblock_tag_33" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="772" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="772" tag="hblock_tag_34" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="772" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="772" tag="hblock_tag_35" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="772" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="772" tag="hblock_tag_36" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="772" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="772" tag="hblock_tag_37" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="772" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks>
+ <codeoperation parent_id="771" tag="operation_771" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeoperation>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARVFSINFO_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarvfsinfo.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is thunar-vfs&#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields>
+ <codeclassfield parent_id="117" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="117" tag="tblock_0" canDelete="false" indentLevel="1" text=" string target;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="117" tag="hblock_tag_0" canDelete="false" indentLevel="1" classfield_id="117" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="117" tag="hblock_tag_11" canDelete="false" indentLevel="1" classfield_id="117" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="172" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="172" tag="tblock_1" canDelete="false" indentLevel="1" text=" uid_t uid;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="172" tag="hblock_tag_12" canDelete="false" indentLevel="1" classfield_id="172" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="172" tag="hblock_tag_13" canDelete="false" indentLevel="1" classfield_id="172" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="174" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="174" tag="tblock_2" canDelete="false" indentLevel="1" text=" gid_t gid;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="174" tag="hblock_tag_14" canDelete="false" indentLevel="1" classfield_id="174" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="174" tag="hblock_tag_15" canDelete="false" indentLevel="1" classfield_id="174" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="176" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="176" tag="tblock_3" canDelete="false" indentLevel="1" text=" ThunarVfsFileSize size;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="176" tag="hblock_tag_16" canDelete="false" indentLevel="1" classfield_id="176" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="176" tag="hblock_tag_17" canDelete="false" indentLevel="1" classfield_id="176" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="178" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="178" tag="tblock_4" canDelete="false" indentLevel="1" text=" ThunarVfsFileTime atime;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="178" tag="hblock_tag_18" canDelete="false" indentLevel="1" classfield_id="178" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="178" tag="hblock_tag_19" canDelete="false" indentLevel="1" classfield_id="178" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="180" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="180" tag="tblock_5" canDelete="false" indentLevel="1" text=" ThunarVfsFileTime mtime;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="180" tag="hblock_tag_20" canDelete="false" indentLevel="1" classfield_id="180" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="180" tag="hblock_tag_21" canDelete="false" indentLevel="1" classfield_id="180" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="181" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="181" tag="tblock_6" canDelete="false" indentLevel="1" text=" ThunarVfsFileTime ctime;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="181" tag="hblock_tag_22" canDelete="false" indentLevel="1" classfield_id="181" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="181" tag="hblock_tag_23" canDelete="false" indentLevel="1" classfield_id="181" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="182" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="182" tag="tblock_7" canDelete="false" indentLevel="1" text=" ThunarVfsFileInode inode;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="182" tag="hblock_tag_24" canDelete="false" indentLevel="1" classfield_id="182" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="182" tag="hblock_tag_25" canDelete="false" indentLevel="1" classfield_id="182" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="184" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="184" tag="tblock_8" canDelete="false" indentLevel="1" text=" ThunarVfsFileDevice device;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="184" tag="hblock_tag_26" canDelete="false" indentLevel="1" classfield_id="184" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="184" tag="hblock_tag_27" canDelete="false" indentLevel="1" classfield_id="184" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="687" field_type="4" initialValue="" role_id="0" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="687" tag="tblock_26" canDelete="false" writeOutText="false" indentLevel="1" role_id="1" text=" ThunarFile ;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="687" tag="hblock_tag_27" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="687" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="687" tag="hblock_tag_28" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="687" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="687" tag="hblock_tag_29" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="687" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="687" tag="hblock_tag_30" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="687" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="687" tag="hblock_tag_31" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="687" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="772" field_type="4" initialValue="" role_id="0" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="772" tag="tblock_32" canDelete="false" writeOutText="false" indentLevel="1" role_id="1" text=" ThunarFile ;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="772" tag="hblock_tag_33" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="772" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="772" tag="hblock_tag_34" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="772" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="2" parent_id="772" tag="hblock_tag_35" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="772" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="3" parent_id="772" tag="hblock_tag_36" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="772" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="4" parent_id="772" tag="hblock_tag_37" canDelete="false" writeOutText="false" indentLevel="1" classfield_id="772" role_id="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ </classfields>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="thunar-vfs" id="cppheader72" parent_class="72" fileExt=".h" fileName="thunarvfsuri" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARVFSURI_H&#010;#define THUNARVFSURI_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" text="using thunar-vfs::ThunarVfsURI;&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="72" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarVfsURI&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarVfsURI ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks>
+ <codeoperation parent_id="114" tag="operation_114" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="115" tag="operation_115" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="&#010;@param name " />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="169" tag="operation_169" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="170" tag="operation_170" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="&#010;@param uri " />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="889" tag="operation_889" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="890" tag="operation_890" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeoperation>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks>
+ <ccfdeclarationcodeblock parent_id="1187" tag="tblock_0" canDelete="false" indentLevel="1" text=" string host;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <ccfdeclarationcodeblock parent_id="102" tag="tblock_1" canDelete="false" indentLevel="1" text=" string path;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks>
+ <codeaccessormethod accessType="0" parent_id="1187" tag="hblock_tag_0" canDelete="false" indentLevel="1" classfield_id="1187" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="1187" tag="hblock_tag_2" canDelete="false" indentLevel="1" classfield_id="1187" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="0" parent_id="102" tag="hblock_tag_3" canDelete="false" indentLevel="1" classfield_id="102" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="102" tag="hblock_tag_4" canDelete="false" indentLevel="1" classfield_id="102" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARVFSURI_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarvfsuri.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is thunar-vfs&#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields>
+ <codeclassfield parent_id="1187" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="1187" tag="tblock_0" canDelete="false" indentLevel="1" text=" string host;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="1187" tag="hblock_tag_0" canDelete="false" indentLevel="1" classfield_id="1187" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="1187" tag="hblock_tag_2" canDelete="false" indentLevel="1" classfield_id="1187" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ <codeclassfield parent_id="102" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="102" tag="tblock_1" canDelete="false" indentLevel="1" text=" string path;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="102" tag="hblock_tag_3" canDelete="false" indentLevel="1" classfield_id="102" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="102" tag="hblock_tag_4" canDelete="false" indentLevel="1" classfield_id="102" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ </classfields>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="thunar-vfs" id="cppheader835" parent_class="835" fileExt=".h" fileName="thunarvfsmonitor" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARVFSMONITOR_H&#010;#define THUNARVFSMONITOR_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="835" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarVfsMonitor&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarVfsMonitor ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks>
+ <codeoperation parent_id="836" tag="operation_836" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="&#010;@param uri " />
+ </header>
+ </codeoperation>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARVFSMONITOR_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarvfsmonitor.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is thunar-vfs&#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader85" parent_class="85" fileExt=".h" fileName="thunardesktopfile" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARDESKTOPFILE_H&#010;#define THUNARDESKTOPFILE_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="85" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarDesktopFile&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarDesktopFile ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARDESKTOPFILE_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunardesktopfile.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader87" parent_class="87" fileExt=".h" fileName="thunartrashedfile" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARTRASHEDFILE_H&#010;#define THUNARTRASHEDFILE_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="87" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarTrashedFile&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarTrashedFile ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARTRASHEDFILE_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunartrashedfile.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader89" parent_class="89" fileExt=".h" fileName="thunartrashfolder" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARTRASHFOLDER_H&#010;#define THUNARTRASHFOLDER_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="89" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarTrashFolder&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarTrashFolder ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARTRASHFOLDER_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunartrashfolder.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader118" parent_class="118" fileExt=".h" fileName="thunarvfsfiletype" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARVFSFILETYPE_H&#010;#define THUNARVFSFILETYPE_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="118" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarVfsFileType&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarVfsFileType ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARVFSFILETYPE_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarvfsfiletype.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader133" parent_class="133" fileExt=".h" fileName="thunarvfsfilemode" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARVFSFILEMODE_H&#010;#define THUNARVFSFILEMODE_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="133" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarVfsFileMode&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarVfsFileMode ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARVFSFILEMODE_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarvfsfilemode.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader154" parent_class="154" fileExt=".h" fileName="thunarvfsfileflags" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARVFSFILEFLAGS_H&#010;#define THUNARVFSFILEFLAGS_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="154" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarVfsFileFlags&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarVfsFileFlags ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARVFSFILEFLAGS_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarvfsfileflags.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="exo" id="cppheader163" parent_class="163" fileExt=".h" fileName="exomimeinfo" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef EXOMIMEINFO_H&#010;#define EXOMIMEINFO_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="163" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ExoMimeInfo&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ExoMimeInfo ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //EXOMIMEINFO_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; exomimeinfo.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is exo&#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader195" parent_class="195" fileExt=".h" fileName="thunarlistmodel" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARLISTMODEL_H&#010;#define THUNARLISTMODEL_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" text="using ::ThunarListModel;&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="195" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarListModel&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarListModel ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARLISTMODEL_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarlistmodel.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="gobject" id="cppheader186" parent_class="186" fileExt=".h" fileName="gsignal" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef GSIGNAL_H&#010;#define GSIGNAL_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="186" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class GSignal&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="GSignal ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //GSIGNAL_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; gsignal.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is gobject&#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="gobject" id="cppheader267" parent_class="267" fileExt=".h" fileName="gobject" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef GOBJECT_H&#010;#define GOBJECT_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="267" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class GObject&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="GObject ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //GOBJECT_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; gobject.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is gobject&#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="gtk" id="cppheader196" parent_class="196" fileExt=".h" fileName="gtktreemodel" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef GTKTREEMODEL_H&#010;#define GTKTREEMODEL_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <cppheaderclassdeclarationblock parent_id="196" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Interface GtkTreeModel&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="GtkTreeModel ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //GTKTREEMODEL_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; gtktreemodel.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is gtk&#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="gtk" id="cppheader226" parent_class="226" fileExt=".h" fileName="gtktreeview" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef GTKTREEVIEW_H&#010;#define GTKTREEVIEW_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="226" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class GtkTreeView&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="GtkTreeView ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //GTKTREEVIEW_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; gtktreeview.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is gtk&#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="gtk" id="cppheader1009" parent_class="1009" fileExt=".h" fileName="gtkcontainer" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef GTKCONTAINER_H&#010;#define GTKCONTAINER_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="1009" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class GtkContainer&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="GtkContainer ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //GTKCONTAINER_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; gtkcontainer.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is gtk&#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="gtk" id="cppheader1010" parent_class="1010" fileExt=".h" fileName="gtkbutton" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef GTKBUTTON_H&#010;#define GTKBUTTON_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="1010" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class GtkButton&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="GtkButton ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //GTKBUTTON_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; gtkbutton.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is gtk&#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader202" parent_class="202" fileExt=".h" fileName="thunartreemodel" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARTREEMODEL_H&#010;#define THUNARTREEMODEL_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" text="using ::ThunarTreeModel;&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="202" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarTreeModel&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarTreeModel ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARTREEMODEL_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunartreemodel.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader214" parent_class="214" fileExt=".h" fileName="thunarview" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARVIEW_H&#010;#define THUNARVIEW_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <cppheaderclassdeclarationblock parent_id="214" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Interface ThunarView&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarView ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARVIEW_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarview.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader220" parent_class="220" fileExt=".h" fileName="thunarlistview" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARLISTVIEW_H&#010;#define THUNARLISTVIEW_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="220" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarListView&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarListView ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARLISTVIEW_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarlistview.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader221" parent_class="221" fileExt=".h" fileName="thunariconview" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARICONVIEW_H&#010;#define THUNARICONVIEW_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="221" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarIconView&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarIconView ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARICONVIEW_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunariconview.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader224" parent_class="224" fileExt=".h" fileName="thunartreeview" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARTREEVIEW_H&#010;#define THUNARTREEVIEW_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" text="using ::ThunarTreeView;&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="224" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarTreeView&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarTreeView ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARTREEVIEW_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunartreeview.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader234" parent_class="234" fileExt=".h" fileName="thunarwindow" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARWINDOW_H&#010;#define THUNARWINDOW_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="234" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarWindow&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarWindow ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARWINDOW_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarwindow.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader240" parent_class="240" fileExt=".h" fileName="thunarstatusbar" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARSTATUSBAR_H&#010;#define THUNARSTATUSBAR_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="240" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarStatusBar&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarStatusBar ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks>
+ <ccfdeclarationcodeblock parent_id="946" tag="tblock_0" canDelete="false" indentLevel="1" text=" string text;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks>
+ <codeaccessormethod accessType="0" parent_id="946" tag="hblock_tag_0" canDelete="false" indentLevel="1" classfield_id="946" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="946" tag="hblock_tag_1" canDelete="false" indentLevel="1" classfield_id="946" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARSTATUSBAR_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarstatusbar.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields>
+ <codeclassfield parent_id="946" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="946" tag="tblock_0" canDelete="false" indentLevel="1" text=" string text;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="946" tag="hblock_tag_0" canDelete="false" indentLevel="1" classfield_id="946" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="946" tag="hblock_tag_1" canDelete="false" indentLevel="1" classfield_id="946" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ </classfields>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader251" parent_class="251" fileExt=".h" fileName="thunarapplication" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARAPPLICATION_H&#010;#define THUNARAPPLICATION_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="251" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarApplication&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarApplication ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARAPPLICATION_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarapplication.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader257" parent_class="257" fileExt=".h" fileName="thunardesktopview" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARDESKTOPVIEW_H&#010;#define THUNARDESKTOPVIEW_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="257" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarDesktopView&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarDesktopView ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARDESKTOPVIEW_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunardesktopview.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader264" parent_class="264" fileExt=".h" fileName="thunarpreferences" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARPREFERENCES_H&#010;#define THUNARPREFERENCES_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" text="using ::ThunarPreferences;&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="264" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarPreferences&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarPreferences ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks>
+ <ccfdeclarationcodeblock parent_id="265" tag="tblock_0" canDelete="false" indentLevel="1" text=" bool manage-desktop;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks>
+ <codeaccessormethod accessType="0" parent_id="265" tag="hblock_tag_0" canDelete="false" indentLevel="1" classfield_id="265" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="265" tag="hblock_tag_1" canDelete="false" indentLevel="1" classfield_id="265" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARPREFERENCES_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarpreferences.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields>
+ <codeclassfield parent_id="265" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="265" tag="tblock_0" canDelete="false" indentLevel="1" text=" bool manage-desktop;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="265" tag="hblock_tag_0" canDelete="false" indentLevel="1" classfield_id="265" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="265" tag="hblock_tag_1" canDelete="false" indentLevel="1" classfield_id="265" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ </classfields>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader269" parent_class="269" fileExt=".h" fileName="thunarpreferencesdialog" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARPREFERENCESDIALOG_H&#010;#define THUNARPREFERENCESDIALOG_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;#include "thunarwindow.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="269" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarPreferencesDialog&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarPreferencesDialog ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks>
+ <codeoperation parent_id="270" tag="operation_270" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="&#010;@param window " />
+ </header>
+ </codeoperation>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARPREFERENCESDIALOG_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarpreferencesdialog.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader279" parent_class="279" fileExt=".h" fileName="thunardesktopmodel" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARDESKTOPMODEL_H&#010;#define THUNARDESKTOPMODEL_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="279" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarDesktopModel&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarDesktopModel ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARDESKTOPMODEL_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunardesktopmodel.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader327" parent_class="327" fileExt=".h" fileName="thunarsidepane" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARSIDEPANE_H&#010;#define THUNARSIDEPANE_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="327" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="******************************* Abstract Class ****************************&#010;ThunarSidePane does not have any pure virtual methods, but its author&#010; defined it as an abstract class, so you should not use it directly.&#010; Inherit from it instead and create only objects from the derived classes&#010;*****************************************************************************" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarSidePane ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARSIDEPANE_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarsidepane.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader334" parent_class="334" fileExt=".h" fileName="thunartreepane" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARTREEPANE_H&#010;#define THUNARTREEPANE_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="334" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarTreePane&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarTreePane ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARTREEPANE_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunartreepane.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader335" parent_class="335" fileExt=".h" fileName="thunarfavouritespane" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARFAVOURITESPANE_H&#010;#define THUNARFAVOURITESPANE_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="335" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarFavouritesPane&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarFavouritesPane ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARFAVOURITESPANE_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarfavouritespane.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader336" parent_class="336" fileExt=".h" fileName="thunarfavouritesview" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARFAVOURITESVIEW_H&#010;#define THUNARFAVOURITESVIEW_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" text="using ::ThunarFavouritesView;&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="336" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarFavouritesView&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarFavouritesView ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARFAVOURITESVIEW_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarfavouritesview.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader343" parent_class="343" fileExt=".h" fileName="thunarfavouritesmodel" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARFAVOURITESMODEL_H&#010;#define THUNARFAVOURITESMODEL_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" text="using ::ThunarFavouritesModel;&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="343" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarFavouritesModel&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarFavouritesModel ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARFAVOURITESMODEL_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarfavouritesmodel.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader535" parent_class="535" fileExt=".h" fileName="thunarmimeaction" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARMIMEACTION_H&#010;#define THUNARMIMEACTION_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="535" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarMimeAction&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarMimeAction ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARMIMEACTION_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarmimeaction.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader1001" parent_class="1001" fileExt=".h" fileName="thunarlocationbar" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARLOCATIONBAR_H&#010;#define THUNARLOCATIONBAR_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <cppheaderclassdeclarationblock parent_id="1001" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Interface ThunarLocationBar&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarLocationBar ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARLOCATIONBAR_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarlocationbar.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader1002" parent_class="1002" fileExt=".h" fileName="thunarlocationbuttons" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARLOCATIONBUTTONS_H&#010;#define THUNARLOCATIONBUTTONS_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" text="using ::ThunarLocationButtons;&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="1002" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarLocationButtons&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarLocationButtons ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARLOCATIONBUTTONS_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarlocationbuttons.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader1068" parent_class="1068" fileExt=".h" fileName="thunarnavigator" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARNAVIGATOR_H&#010;#define THUNARNAVIGATOR_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;#include "thunarfile.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" text="using ::ThunarNavigator;&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <cppheaderclassdeclarationblock parent_id="1068" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Interface ThunarNavigator&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarNavigator ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks>
+ <codeoperation parent_id="1069" tag="operation_1069" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="1070" tag="operation_1070" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="&#010;@param current_directory " />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="1072" tag="operation_1072" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="&#010;@param directory " />
+ </header>
+ </codeoperation>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARNAVIGATOR_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarnavigator.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader1188" parent_class="1188" fileExt=".h" fileName="thunarvfsurischeme" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARVFSURISCHEME_H&#010;#define THUNARVFSURISCHEME_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="1188" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarVfsURIScheme&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarVfsURIScheme ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARVFSURISCHEME_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarvfsurischeme.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader1253" parent_class="1253" fileExt=".h" fileName="thunarvfsvolumemanagerbsd" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARVFSVOLUMEMANAGERBSD_H&#010;#define THUNARVFSVOLUMEMANAGERBSD_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="1253" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarVfsVolumeManagerBSD&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarVfsVolumeManagerBSD ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks>
+ <codeoperation parent_id="1342" tag="operation_1342" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="1343" tag="operation_1343" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeoperation>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARVFSVOLUMEMANAGERBSD_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarvfsvolumemanagerbsd.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader1254" parent_class="1254" fileExt=".h" fileName="thunarvfsvolumebsd" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARVFSVOLUMEBSD_H&#010;#define THUNARVFSVOLUMEBSD_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="1254" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarVfsVolumeBSD&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarVfsVolumeBSD ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks>
+ <ccfdeclarationcodeblock parent_id="1255" tag="tblock_0" canDelete="false" indentLevel="1" text=" bool mount-status;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks>
+ <codeaccessormethod accessType="0" parent_id="1255" tag="hblock_tag_0" canDelete="false" indentLevel="1" classfield_id="1255" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="1255" tag="hblock_tag_1" canDelete="false" indentLevel="1" classfield_id="1255" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARVFSVOLUMEBSD_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarvfsvolumebsd.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields>
+ <codeclassfield parent_id="1255" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="1255" tag="tblock_0" canDelete="false" indentLevel="1" text=" bool mount-status;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="1255" tag="hblock_tag_0" canDelete="false" indentLevel="1" classfield_id="1255" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="1255" tag="hblock_tag_1" canDelete="false" indentLevel="1" classfield_id="1255" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ </classfields>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader1263" parent_class="1263" fileExt=".h" fileName="thunarvfsvolumekind" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARVFSVOLUMEKIND_H&#010;#define THUNARVFSVOLUMEKIND_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="1263" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarVfsVolumeKind&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarVfsVolumeKind ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARVFSVOLUMEKIND_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarvfsvolumekind.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader1409" parent_class="1409" fileExt=".h" fileName="thunarvfsvolumemanager" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARVFSVOLUMEMANAGER_H&#010;#define THUNARVFSVOLUMEMANAGER_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <cppheaderclassdeclarationblock parent_id="1409" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Interface ThunarVfsVolumeManager&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarVfsVolumeManager ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks>
+ <codeoperation parent_id="1416" tag="operation_1416" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeoperation>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARVFSVOLUMEMANAGER_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarvfsvolumemanager.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader1410" parent_class="1410" fileExt=".h" fileName="thunarvfsvolume" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARVFSVOLUME_H&#010;#define THUNARVFSVOLUME_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;#include "thunarvfsvolumekind.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <cppheaderclassdeclarationblock parent_id="1410" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Interface ThunarVfsVolume&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarVfsVolume ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks>
+ <codeoperation parent_id="1413" tag="operation_1413" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="1414" tag="operation_1414" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeoperation>
+ <codeoperation parent_id="1415" tag="operation_1415" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeoperation>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARVFSVOLUME_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunarvfsvolume.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:14:17&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader1788" parent_class="1788" fileExt=".h" fileName="thunariconfactory" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef THUNARICONFACTORY_H&#010;#define THUNARICONFACTORY_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;#include "gtkicontheme.h"&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="1788" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class ThunarIconFactory&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="ThunarIconFactory ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks>
+ <codeoperation parent_id="1833" tag="operation_1833" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="&#010;@param name &#010;@param size &#010;@param attach_points &#010;@param wants_default " />
+ </header>
+ </codeoperation>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks>
+ <ccfdeclarationcodeblock parent_id="1810" tag="tblock_0" canDelete="false" indentLevel="1" text=" GtkIconTheme icon_theme;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks>
+ <codeaccessormethod accessType="0" parent_id="1810" tag="hblock_tag_0" canDelete="false" indentLevel="1" classfield_id="1810" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="1810" tag="hblock_tag_1" canDelete="false" indentLevel="1" classfield_id="1810" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //THUNARICONFACTORY_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; thunariconfactory.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:18:01&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields>
+ <codeclassfield parent_id="1810" field_type="0" initialValue="" role_id="-1" writeOutMethods="true" listClassName="" >
+ <header>
+ <cppcodedocumentation tag="" />
+ </header>
+ <ccfdeclarationcodeblock parent_id="1810" tag="tblock_0" canDelete="false" indentLevel="1" text=" GtkIconTheme icon_theme;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ </ccfdeclarationcodeblock>
+ <codeaccessormethod accessType="0" parent_id="1810" tag="hblock_tag_0" canDelete="false" indentLevel="1" classfield_id="1810" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ <codeaccessormethod accessType="1" parent_id="1810" tag="hblock_tag_1" canDelete="false" indentLevel="1" classfield_id="1810" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ </codeaccessormethod>
+ </codeclassfield>
+ </classfields>
+ </classifiercodedocument>
+ <classifiercodedocument writeOutCode="true" package="" id="cppheader1811" parent_class="1811" fileExt=".h" fileName="gtkicontheme" >
+ <textblocks>
+ <codeblockwithcomments tag="hashDefBlock" text="#ifndef GTKICONTHEME_H&#010;#define GTKICONTHEME_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="includes" text="#include <string>&#010;" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <codeblockwithcomments tag="using" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <hierarchicalcodeblock tag="namespace" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" text="Namespace" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="enums" writeOutText="false" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ <cppheaderclassdeclarationblock parent_id="1811" tag="classDeclarationBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Class GtkIconTheme&#010;" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Public stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="publicFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks>
+ <codeblockwithcomments tag="emptyconstructor" writeOutText="false" indentLevel="1" text="GtkIconTheme ( ) { }" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Empty Constructor" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="pubStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="pubRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protectedBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Protected stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protectedFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="protStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="protRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privateBlock" canDelete="false" >
+ <header>
+ <cppcodedocumentation tag="" text="Private stuff" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privateFieldsDecl" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Fields" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privMethodsBlock" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="constructionMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Constructors" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="accessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Accessor Methods" />
+ </header>
+ <textblocks>
+ <hierarchicalcodeblock tag="privStaticAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="privRegularAccessorMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" indentLevel="1" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <hierarchicalcodeblock tag="operationMethods" canDelete="false" indentLevel="1" >
+ <header>
+ <cppcodedocumentation tag="" indentLevel="1" text="Operations" />
+ </header>
+ <textblocks/>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ </textblocks>
+ </cppheaderclassdeclarationblock>
+ </textblocks>
+ </hierarchicalcodeblock>
+ <codeblockwithcomments tag="hashDefBlockEnd" text="#endif //GTKICONTHEME_H" >
+ <header>
+ <cppcodedocumentation tag="" writeOutText="false" />
+ </header>
+ </codeblockwithcomments>
+ </textblocks>
+ <header>
+ <codecomment tag="" text="/************************************************************************&#010; gtkicontheme.h - Copyright bmeurer&#010;&#010;Here you can write a license for your code, some comments or any other&#010;information you want to have in your generated code. To to this simply&#010;configure the "headings" directory in uml to point to a directory&#010;where you have your heading files.&#010;&#010;or you can just replace the contents of this file with your own.&#010;If you want to do this, this file is located at&#010;&#010;/usr/local/share/apps/umbrello/headings/heading.h&#010;&#010;-->Code Generators searches for heading files based on the file extension&#010; i.e. it will look for a file name ending in ".h" to include in C++ header&#010; files, and for a file name ending in ".java" to include in all generated&#010; java code.&#010; If you name the file "heading.<extension>", Code Generator will always&#010; choose this file even if there are other files with the same extension in the&#010; directory. If you name the file something else, it must be the only one with that&#010; extension in the directory to guarantee that Code Generator will choose it.&#010;&#010;you can use variables in your heading files which are replaced at generation&#010;time. possible variables are : author, date, time, filename and filepath.&#010;just write %variable_name%&#010;&#010;This file was generated on Tue Jun 14 2005 at 22:17:43&#010;The original location of this file is &#010;**************************************************************************/&#010;" />
+ </header>
+ <classfields/>
+ </classifiercodedocument>
+ </codegenerator>
+ </codegeneration>
+ </XMI.extensions>
+</XMI>
Added: desktop/trunk/thunar/branches/upstream/current/docs/papers/HackingOnThunar.odt
===================================================================
(Binary files differ)
Property changes on: desktop/trunk/thunar/branches/upstream/current/docs/papers/HackingOnThunar.odt
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: desktop/trunk/thunar/branches/upstream/current/docs/papers/Makefile.am
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/papers/Makefile.am 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/papers/Makefile.am 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,6 @@
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+
+EXTRA_DIST = \
+ HackingOnThunar.odt
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
Added: desktop/trunk/thunar/branches/upstream/current/docs/papers/Makefile.in
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/papers/Makefile.in 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/papers/Makefile.in 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,428 @@
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004 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.
+
+ at SET_MAKE@
+
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+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@
+target_triplet = @target@
+subdir = docs/papers
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CAIRO_REQUIRED_VERSION = @CAIRO_REQUIRED_VERSION@
+CAIRO_VERSION = @CAIRO_VERSION@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@
+ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@
+EXEEXT = @EXEEXT@
+EXO_CFLAGS = @EXO_CFLAGS@
+EXO_LIBS = @EXO_LIBS@
+EXO_REQUIRED_VERSION = @EXO_REQUIRED_VERSION@
+EXO_VERSION = @EXO_VERSION@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GCONF_CFLAGS = @GCONF_CFLAGS@
+GCONF_LIBS = @GCONF_LIBS@
+GCONF_REQUIRED_VERSION = @GCONF_REQUIRED_VERSION@
+GCONF_VERSION = @GCONF_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_REQUIRED_VERSION = @GLIB_REQUIRED_VERSION@
+GLIB_VERSION = @GLIB_VERSION@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTHREAD_REQUIRED_VERSION = @GTHREAD_REQUIRED_VERSION@
+GTHREAD_VERSION = @GTHREAD_VERSION@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+GTK_LIBS = @GTK_LIBS@
+GTK_REQUIRED_VERSION = @GTK_REQUIRED_VERSION@
+GTK_VERSION = @GTK_VERSION@
+HAVE_CAIRO_FALSE = @HAVE_CAIRO_FALSE@
+HAVE_CAIRO_TRUE = @HAVE_CAIRO_TRUE@
+HAVE_GCONF_FALSE = @HAVE_GCONF_FALSE@
+HAVE_GCONF_TRUE = @HAVE_GCONF_TRUE@
+HAVE_GNUC_VISIBILITY_FALSE = @HAVE_GNUC_VISIBILITY_FALSE@
+HAVE_GNUC_VISIBILITY_TRUE = @HAVE_GNUC_VISIBILITY_TRUE@
+HAVE_LIBSTARTUP_NOTIFICATION_FALSE = @HAVE_LIBSTARTUP_NOTIFICATION_FALSE@
+HAVE_LIBSTARTUP_NOTIFICATION_TRUE = @HAVE_LIBSTARTUP_NOTIFICATION_TRUE@
+HTML_DIR = @HTML_DIR@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LIBFAM_CFLAGS = @LIBFAM_CFLAGS@
+LIBFAM_LIBS = @LIBFAM_LIBS@
+LIBFAM_REQUIRED_VERSION = @LIBFAM_REQUIRED_VERSION@
+LIBFAM_VERSION = @LIBFAM_VERSION@
+LIBJPEG_CFLAGS = @LIBJPEG_CFLAGS@
+LIBJPEG_LIBS = @LIBJPEG_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
+LIBPNG_LIBS = @LIBPNG_LIBS@
+LIBPNG_REQUIRED_VERSION = @LIBPNG_REQUIRED_VERSION@
+LIBPNG_VERSION = @LIBPNG_VERSION@
+LIBS = @LIBS@
+LIBSTARTUP_NOTIFICATION_CFLAGS = @LIBSTARTUP_NOTIFICATION_CFLAGS@
+LIBSTARTUP_NOTIFICATION_LIBS = @LIBSTARTUP_NOTIFICATION_LIBS@
+LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION = @LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION@
+LIBSTARTUP_NOTIFICATION_VERSION = @LIBSTARTUP_NOTIFICATION_VERSION@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_CFLAGS = @PLATFORM_CFLAGS@
+PLATFORM_CPPFLAGS = @PLATFORM_CPPFLAGS@
+PLATFORM_LDFLAGS = @PLATFORM_LDFLAGS@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TDB_U32_TYPE = @TDB_U32_TYPE@
+THUNAR_VERINFO = @THUNAR_VERINFO@
+THUNAR_VERSION_API = @THUNAR_VERSION_API@
+THUNAR_VERSION_MAJOR = @THUNAR_VERSION_MAJOR@
+THUNAR_VERSION_MICRO = @THUNAR_VERSION_MICRO@
+THUNAR_VERSION_MINOR = @THUNAR_VERSION_MINOR@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_ARGS = @XGETTEXT_ARGS@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+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@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+EXTRA_DIST = \
+ HackingOnThunar.odt
+
+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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/papers/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu docs/papers/Makefile
+.PRECIOUS: 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
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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 distclean-libtool
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+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-info-am
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ distclean distclean-generic distclean-libtool distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-exec install-exec-am \
+ install-info install-info-am install-man install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
+ uninstall-info-am
+
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
+# 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:
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/Makefile.am
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/Makefile.am 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/Makefile.am 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,7 @@
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+
+SUBDIRS = \
+ thunar-vfs \
+ thunarx
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/Makefile.in
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/Makefile.in 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/Makefile.in 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,574 @@
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004 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.
+
+ at SET_MAKE@
+
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+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@
+target_triplet = @target@
+subdir = docs/reference
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-exec-recursive install-info-recursive \
+ install-recursive installcheck-recursive installdirs-recursive \
+ pdf-recursive ps-recursive uninstall-info-recursive \
+ uninstall-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CAIRO_REQUIRED_VERSION = @CAIRO_REQUIRED_VERSION@
+CAIRO_VERSION = @CAIRO_VERSION@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@
+ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@
+EXEEXT = @EXEEXT@
+EXO_CFLAGS = @EXO_CFLAGS@
+EXO_LIBS = @EXO_LIBS@
+EXO_REQUIRED_VERSION = @EXO_REQUIRED_VERSION@
+EXO_VERSION = @EXO_VERSION@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GCONF_CFLAGS = @GCONF_CFLAGS@
+GCONF_LIBS = @GCONF_LIBS@
+GCONF_REQUIRED_VERSION = @GCONF_REQUIRED_VERSION@
+GCONF_VERSION = @GCONF_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_REQUIRED_VERSION = @GLIB_REQUIRED_VERSION@
+GLIB_VERSION = @GLIB_VERSION@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTHREAD_REQUIRED_VERSION = @GTHREAD_REQUIRED_VERSION@
+GTHREAD_VERSION = @GTHREAD_VERSION@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+GTK_LIBS = @GTK_LIBS@
+GTK_REQUIRED_VERSION = @GTK_REQUIRED_VERSION@
+GTK_VERSION = @GTK_VERSION@
+HAVE_CAIRO_FALSE = @HAVE_CAIRO_FALSE@
+HAVE_CAIRO_TRUE = @HAVE_CAIRO_TRUE@
+HAVE_GCONF_FALSE = @HAVE_GCONF_FALSE@
+HAVE_GCONF_TRUE = @HAVE_GCONF_TRUE@
+HAVE_GNUC_VISIBILITY_FALSE = @HAVE_GNUC_VISIBILITY_FALSE@
+HAVE_GNUC_VISIBILITY_TRUE = @HAVE_GNUC_VISIBILITY_TRUE@
+HAVE_LIBSTARTUP_NOTIFICATION_FALSE = @HAVE_LIBSTARTUP_NOTIFICATION_FALSE@
+HAVE_LIBSTARTUP_NOTIFICATION_TRUE = @HAVE_LIBSTARTUP_NOTIFICATION_TRUE@
+HTML_DIR = @HTML_DIR@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LIBFAM_CFLAGS = @LIBFAM_CFLAGS@
+LIBFAM_LIBS = @LIBFAM_LIBS@
+LIBFAM_REQUIRED_VERSION = @LIBFAM_REQUIRED_VERSION@
+LIBFAM_VERSION = @LIBFAM_VERSION@
+LIBJPEG_CFLAGS = @LIBJPEG_CFLAGS@
+LIBJPEG_LIBS = @LIBJPEG_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
+LIBPNG_LIBS = @LIBPNG_LIBS@
+LIBPNG_REQUIRED_VERSION = @LIBPNG_REQUIRED_VERSION@
+LIBPNG_VERSION = @LIBPNG_VERSION@
+LIBS = @LIBS@
+LIBSTARTUP_NOTIFICATION_CFLAGS = @LIBSTARTUP_NOTIFICATION_CFLAGS@
+LIBSTARTUP_NOTIFICATION_LIBS = @LIBSTARTUP_NOTIFICATION_LIBS@
+LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION = @LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION@
+LIBSTARTUP_NOTIFICATION_VERSION = @LIBSTARTUP_NOTIFICATION_VERSION@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_CFLAGS = @PLATFORM_CFLAGS@
+PLATFORM_CPPFLAGS = @PLATFORM_CPPFLAGS@
+PLATFORM_LDFLAGS = @PLATFORM_LDFLAGS@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TDB_U32_TYPE = @TDB_U32_TYPE@
+THUNAR_VERINFO = @THUNAR_VERINFO@
+THUNAR_VERSION_API = @THUNAR_VERSION_API@
+THUNAR_VERSION_MAJOR = @THUNAR_VERSION_MAJOR@
+THUNAR_VERSION_MICRO = @THUNAR_VERSION_MICRO@
+THUNAR_VERSION_MINOR = @THUNAR_VERSION_MINOR@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_ARGS = @XGETTEXT_ARGS@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+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@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+SUBDIRS = \
+ thunar-vfs \
+ thunarx
+
+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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/reference/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu docs/reference/Makefile
+.PRECIOUS: 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
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+
+# 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.
+$(RECURSIVE_TARGETS):
+ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; 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; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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 || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+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)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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 \
+ test -d "$(distdir)/$$subdir" \
+ || $(mkdir_p) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ 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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-libtool \
+ distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+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: uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
+ clean clean-generic clean-libtool clean-recursive ctags \
+ ctags-recursive distclean distclean-generic distclean-libtool \
+ distclean-recursive distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-exec install-exec-am install-info \
+ install-info-am install-man install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic maintainer-clean-recursive \
+ mostlyclean mostlyclean-generic mostlyclean-libtool \
+ mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
+ uninstall uninstall-am uninstall-info-am
+
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
+# 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:
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/Makefile.am
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/Makefile.am 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/Makefile.am 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,68 @@
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+
+AUTOMAKE_OPTIONS = 1.8
+
+# The name of the module.
+DOC_MODULE=thunar-vfs
+
+# The top-level SGML file.
+DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml
+
+# Extra options to supply to gtkdoc-scan
+SCAN_OPTIONS=--deprecated-guards="EXO_DISABLE_DEPRECATED"
+
+# Extra options to pass to gtkdoc-scangobj
+SCANGOBJ_OPTIONS=
+
+# The directory containing the source code. Relative to $(srcdir)
+DOC_SOURCE_DIR=../../../thunar-vfs
+
+# Extra options to supply to gtkdoc-mkdb
+MKDB_OPTIONS=--sgml-mode --output-format=xml
+
+# Extra options to supply to gtkdoc-fixref
+FIXXREF_OPTIONS=
+
+# Used for dependencies
+HFILE_GLOB=$(top_srcdir)/thunar-vfs/*.h
+CFILE_GLOB=$(top_srcdir)/thunar-vfs/*.c
+
+# Header files to ignore when scanning
+IGNORE_HFILES= \
+ thunar-vfs-alias.h \
+ thunar-vfs-marshal.h \
+ thunar-vfs-volume-manager-bsd.h \
+ thunar-vfs-volume-manager-impl.h \
+ thunar-vfs-volume-manager-sysv.h
+
+# Extra files to add when scanning (relative to $srcdir)
+EXTRA_HFILES=
+
+# Images to copy into HTML directory
+HTML_IMAGES =
+
+# Extra SGML files that are included by DOC_MAIN_SGML_FILE
+content_files = \
+ version.xml
+
+# CFLAGS and LDFLAGS for compiling scan program. Only needed
+# if $(DOC_MODULE).types is non-empty.
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_builddir) \
+ -DEXO_API_SUBJECT_TO_CHANGE \
+ $(EXO_CFLAGS) \
+ $(GTHREAD_CFLAGS)
+
+GTKDOC_LIBS = \
+ $(EXO_LIBS) \
+ $(GTHREAD_LIBS) \
+ $(top_builddir)/thunar-vfs/libthunar-vfs-$(THUNAR_VERSION_API).la
+
+include $(top_srcdir)/gtk-doc.make
+
+# Other files to distribute
+EXTRA_DIST += \
+ version.xml.in
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/Makefile.in
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/Makefile.in 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/Makefile.in 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,637 @@
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004 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.
+
+ at SET_MAKE@
+
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+
+# -*- mode: makefile -*-
+
+####################################
+# Everything below here is generic #
+####################################
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+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@
+target_triplet = @target@
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(srcdir)/version.xml.in $(top_srcdir)/gtk-doc.make
+subdir = docs/reference/thunar-vfs
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = version.xml
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CAIRO_REQUIRED_VERSION = @CAIRO_REQUIRED_VERSION@
+CAIRO_VERSION = @CAIRO_VERSION@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@
+ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@
+EXEEXT = @EXEEXT@
+EXO_CFLAGS = @EXO_CFLAGS@
+EXO_LIBS = @EXO_LIBS@
+EXO_REQUIRED_VERSION = @EXO_REQUIRED_VERSION@
+EXO_VERSION = @EXO_VERSION@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GCONF_CFLAGS = @GCONF_CFLAGS@
+GCONF_LIBS = @GCONF_LIBS@
+GCONF_REQUIRED_VERSION = @GCONF_REQUIRED_VERSION@
+GCONF_VERSION = @GCONF_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_REQUIRED_VERSION = @GLIB_REQUIRED_VERSION@
+GLIB_VERSION = @GLIB_VERSION@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTHREAD_REQUIRED_VERSION = @GTHREAD_REQUIRED_VERSION@
+GTHREAD_VERSION = @GTHREAD_VERSION@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+GTK_LIBS = @GTK_LIBS@
+GTK_REQUIRED_VERSION = @GTK_REQUIRED_VERSION@
+GTK_VERSION = @GTK_VERSION@
+HAVE_CAIRO_FALSE = @HAVE_CAIRO_FALSE@
+HAVE_CAIRO_TRUE = @HAVE_CAIRO_TRUE@
+HAVE_GCONF_FALSE = @HAVE_GCONF_FALSE@
+HAVE_GCONF_TRUE = @HAVE_GCONF_TRUE@
+HAVE_GNUC_VISIBILITY_FALSE = @HAVE_GNUC_VISIBILITY_FALSE@
+HAVE_GNUC_VISIBILITY_TRUE = @HAVE_GNUC_VISIBILITY_TRUE@
+HAVE_LIBSTARTUP_NOTIFICATION_FALSE = @HAVE_LIBSTARTUP_NOTIFICATION_FALSE@
+HAVE_LIBSTARTUP_NOTIFICATION_TRUE = @HAVE_LIBSTARTUP_NOTIFICATION_TRUE@
+HTML_DIR = @HTML_DIR@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LIBFAM_CFLAGS = @LIBFAM_CFLAGS@
+LIBFAM_LIBS = @LIBFAM_LIBS@
+LIBFAM_REQUIRED_VERSION = @LIBFAM_REQUIRED_VERSION@
+LIBFAM_VERSION = @LIBFAM_VERSION@
+LIBJPEG_CFLAGS = @LIBJPEG_CFLAGS@
+LIBJPEG_LIBS = @LIBJPEG_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
+LIBPNG_LIBS = @LIBPNG_LIBS@
+LIBPNG_REQUIRED_VERSION = @LIBPNG_REQUIRED_VERSION@
+LIBPNG_VERSION = @LIBPNG_VERSION@
+LIBS = @LIBS@
+LIBSTARTUP_NOTIFICATION_CFLAGS = @LIBSTARTUP_NOTIFICATION_CFLAGS@
+LIBSTARTUP_NOTIFICATION_LIBS = @LIBSTARTUP_NOTIFICATION_LIBS@
+LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION = @LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION@
+LIBSTARTUP_NOTIFICATION_VERSION = @LIBSTARTUP_NOTIFICATION_VERSION@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_CFLAGS = @PLATFORM_CFLAGS@
+PLATFORM_CPPFLAGS = @PLATFORM_CPPFLAGS@
+PLATFORM_LDFLAGS = @PLATFORM_LDFLAGS@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TDB_U32_TYPE = @TDB_U32_TYPE@
+THUNAR_VERINFO = @THUNAR_VERINFO@
+THUNAR_VERSION_API = @THUNAR_VERSION_API@
+THUNAR_VERSION_MAJOR = @THUNAR_VERSION_MAJOR@
+THUNAR_VERSION_MICRO = @THUNAR_VERSION_MICRO@
+THUNAR_VERSION_MINOR = @THUNAR_VERSION_MINOR@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_ARGS = @XGETTEXT_ARGS@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+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@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+AUTOMAKE_OPTIONS = 1.8
+
+# The name of the module.
+DOC_MODULE = thunar-vfs
+
+# The top-level SGML file.
+DOC_MAIN_SGML_FILE = $(DOC_MODULE)-docs.sgml
+
+# Extra options to supply to gtkdoc-scan
+SCAN_OPTIONS = --deprecated-guards="EXO_DISABLE_DEPRECATED"
+
+# Extra options to pass to gtkdoc-scangobj
+SCANGOBJ_OPTIONS =
+
+# The directory containing the source code. Relative to $(srcdir)
+DOC_SOURCE_DIR = ../../../thunar-vfs
+
+# Extra options to supply to gtkdoc-mkdb
+MKDB_OPTIONS = --sgml-mode --output-format=xml
+
+# Extra options to supply to gtkdoc-fixref
+FIXXREF_OPTIONS =
+
+# Used for dependencies
+HFILE_GLOB = $(top_srcdir)/thunar-vfs/*.h
+CFILE_GLOB = $(top_srcdir)/thunar-vfs/*.c
+
+# Header files to ignore when scanning
+IGNORE_HFILES = \
+ thunar-vfs-alias.h \
+ thunar-vfs-marshal.h \
+ thunar-vfs-volume-manager-bsd.h \
+ thunar-vfs-volume-manager-impl.h \
+ thunar-vfs-volume-manager-sysv.h
+
+
+# Extra files to add when scanning (relative to $srcdir)
+EXTRA_HFILES =
+
+# Images to copy into HTML directory
+HTML_IMAGES =
+
+# Extra SGML files that are included by DOC_MAIN_SGML_FILE
+content_files = \
+ version.xml
+
+
+# CFLAGS and LDFLAGS for compiling scan program. Only needed
+# if $(DOC_MODULE).types is non-empty.
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_builddir) \
+ -DEXO_API_SUBJECT_TO_CHANGE \
+ $(EXO_CFLAGS) \
+ $(GTHREAD_CFLAGS)
+
+GTKDOC_LIBS = \
+ $(EXO_LIBS) \
+ $(GTHREAD_LIBS) \
+ $(top_builddir)/thunar-vfs/libthunar-vfs-$(THUNAR_VERSION_API).la
+
+ at GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_CC = $(CC) $(INCLUDES) $(AM_CFLAGS) $(CFLAGS)
+ at GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_CC = $(LIBTOOL) --mode=compile $(CC) $(INCLUDES) $(AM_CFLAGS) $(CFLAGS)
+ at GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_LD = $(CC) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS)
+ at GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_LD = $(LIBTOOL) --mode=link $(CC) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS)
+
+# 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)
+
+# Other files to distribute
+EXTRA_DIST = $(content_files) $(HTML_IMAGES) $(DOC_MAIN_SGML_FILE) \
+ $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt \
+ version.xml.in
+DOC_STAMPS = scan-build.stamp tmpl-build.stamp sgml-build.stamp html-build.stamp \
+ $(srcdir)/tmpl.stamp $(srcdir)/sgml.stamp $(srcdir)/html.stamp
+
+SCANOBJ_FILES = \
+ $(DOC_MODULE).args \
+ $(DOC_MODULE).hierarchy \
+ $(DOC_MODULE).interfaces \
+ $(DOC_MODULE).prerequisites \
+ $(DOC_MODULE).signals
+
+CLEANFILES = $(SCANOBJ_FILES) $(DOC_MODULE)-unused.txt $(DOC_STAMPS)
+all: all-am
+
+.SUFFIXES:
+$(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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/reference/thunar-vfs/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu docs/reference/thunar-vfs/Makefile
+.PRECIOUS: 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
+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
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ $(mkdir_p) $(distdir)/../../..
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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
+all-am: Makefile all-local
+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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-libtool
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-data-local
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+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-info-am uninstall-local
+
+.PHONY: all all-am all-local check check-am clean clean-generic \
+ clean-libtool clean-local dist-hook distclean \
+ distclean-generic distclean-libtool distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-data-local install-exec \
+ install-exec-am install-info install-info-am install-man \
+ 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 uninstall uninstall-am \
+ uninstall-info-am uninstall-local
+
+
+ at ENABLE_GTK_DOC_TRUE@all-local: html-build.stamp
+
+#### scan ####
+
+ at ENABLE_GTK_DOC_TRUE@scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB)
+ at ENABLE_GTK_DOC_TRUE@ @echo '*** Scanning header files ***'
+ at ENABLE_GTK_DOC_TRUE@ @-chmod -R u+w $(srcdir)
+ at ENABLE_GTK_DOC_TRUE@ if grep -l '^..*$$' $(srcdir)/$(DOC_MODULE).types > /dev/null 2>&1 ; then \
+ at ENABLE_GTK_DOC_TRUE@ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" CFLAGS="$(GTKDOC_CFLAGS)" LDFLAGS="$(GTKDOC_LIBS)" gtkdoc-scangobj $(SCANGOBJ_OPTIONS) --module=$(DOC_MODULE) --output-dir=$(srcdir) ; \
+ at ENABLE_GTK_DOC_TRUE@ else \
+ at ENABLE_GTK_DOC_TRUE@ cd $(srcdir) ; \
+ at ENABLE_GTK_DOC_TRUE@ for i in $(SCANOBJ_FILES) ; do \
+ at ENABLE_GTK_DOC_TRUE@ test -f $$i || touch $$i ; \
+ at ENABLE_GTK_DOC_TRUE@ done \
+ at ENABLE_GTK_DOC_TRUE@ fi
+ at ENABLE_GTK_DOC_TRUE@ cd $(srcdir) && \
+ at ENABLE_GTK_DOC_TRUE@ gtkdoc-scan --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --ignore-headers="$(IGNORE_HFILES)" $(SCAN_OPTIONS) $(EXTRA_HFILES)
+ at ENABLE_GTK_DOC_TRUE@ touch scan-build.stamp
+
+ at ENABLE_GTK_DOC_TRUE@$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES): scan-build.stamp
+ at ENABLE_GTK_DOC_TRUE@ @true
+
+#### templates ####
+
+ at ENABLE_GTK_DOC_TRUE@tmpl-build.stamp: $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt
+ at ENABLE_GTK_DOC_TRUE@ @echo '*** Rebuilding template files ***'
+ at ENABLE_GTK_DOC_TRUE@ @-chmod -R u+w $(srcdir)
+ at ENABLE_GTK_DOC_TRUE@ cd $(srcdir) && gtkdoc-mktmpl --module=$(DOC_MODULE) $(MKTMPL_OPTIONS)
+ at ENABLE_GTK_DOC_TRUE@ touch tmpl-build.stamp
+
+ at ENABLE_GTK_DOC_TRUE@tmpl.stamp: tmpl-build.stamp
+ at ENABLE_GTK_DOC_TRUE@ @true
+
+#### xml ####
+
+ at ENABLE_GTK_DOC_TRUE@sgml-build.stamp: tmpl.stamp $(CFILE_GLOB) $(srcdir)/tmpl/*.sgml $(expand_content_files)
+ at ENABLE_GTK_DOC_TRUE@ @echo '*** Building XML ***'
+ at ENABLE_GTK_DOC_TRUE@ @-chmod -R u+w $(srcdir)
+ at ENABLE_GTK_DOC_TRUE@ cd $(srcdir) && \
+ at ENABLE_GTK_DOC_TRUE@ gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --output-format=xml --expand-content-files="$(expand_content_files)" $(MKDB_OPTIONS)
+ at ENABLE_GTK_DOC_TRUE@ touch sgml-build.stamp
+
+ at ENABLE_GTK_DOC_TRUE@sgml.stamp: sgml-build.stamp
+ at ENABLE_GTK_DOC_TRUE@ @true
+
+#### html ####
+
+ at ENABLE_GTK_DOC_TRUE@html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
+ at ENABLE_GTK_DOC_TRUE@ @echo '*** Building HTML ***'
+ at ENABLE_GTK_DOC_TRUE@ @-chmod -R u+w $(srcdir)
+ at ENABLE_GTK_DOC_TRUE@ rm -rf $(srcdir)/html
+ at ENABLE_GTK_DOC_TRUE@ mkdir $(srcdir)/html
+ at ENABLE_GTK_DOC_TRUE@ cd $(srcdir)/html && gtkdoc-mkhtml $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
+ at ENABLE_GTK_DOC_TRUE@ test "x$(HTML_IMAGES)" = "x" || ( cd $(srcdir) && cp $(HTML_IMAGES) html )
+ at ENABLE_GTK_DOC_TRUE@ @echo '-- Fixing Crossreferences'
+ at ENABLE_GTK_DOC_TRUE@ cd $(srcdir) && gtkdoc-fixxref --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
+ at ENABLE_GTK_DOC_TRUE@ touch html-build.stamp
+ at ENABLE_GTK_DOC_FALSE@all-local:
+
+##############
+
+clean-local:
+ rm -f *~ *.bak
+ rm -rf .libs
+
+maintainer-clean-local: clean
+ cd $(srcdir) && rm -rf xml html $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
+
+install-data-local:
+ installfiles=`echo $(srcdir)/html/*`; \
+ if test "$$installfiles" = '$(srcdir)/html/*'; \
+ then echo '-- Nothing to install' ; \
+ else \
+ $(mkinstalldirs) $(DESTDIR)$(TARGET_DIR); \
+ for i in $$installfiles; do \
+ echo '-- Installing '$$i ; \
+ $(INSTALL_DATA) $$i $(DESTDIR)$(TARGET_DIR); \
+ done; \
+ echo '-- Installing $(srcdir)/html/index.sgml' ; \
+ $(INSTALL_DATA) $(srcdir)/html/index.sgml $(DESTDIR)$(TARGET_DIR) || :; \
+ fi
+
+uninstall-local:
+ rm -f $(DESTDIR)$(TARGET_DIR)/*
+
+#
+# Require gtk-doc when making dist
+#
+ at ENABLE_GTK_DOC_TRUE@dist-check-gtkdoc:
+ at ENABLE_GTK_DOC_FALSE@dist-check-gtkdoc:
+ at ENABLE_GTK_DOC_FALSE@ @echo "*** gtk-doc must be installed and enabled in order to make dist"
+ at ENABLE_GTK_DOC_FALSE@ @false
+
+dist-hook: dist-check-gtkdoc dist-hook-local
+ mkdir $(distdir)/tmpl
+ mkdir $(distdir)/xml
+ mkdir $(distdir)/html
+ -cp $(srcdir)/tmpl/*.sgml $(distdir)/tmpl
+ -cp $(srcdir)/xml/*.xml $(distdir)/xml
+ -cp $(srcdir)/html/* $(distdir)/html
+ if test -f $(srcdir)/$(DOC_MODULE).types; then \
+ cp $(srcdir)/$(DOC_MODULE).types $(distdir)/$(DOC_MODULE).types; \
+ fi
+
+.PHONY : dist-hook-local
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
+# 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:
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/ThunarVfsGroup.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/ThunarVfsGroup.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/ThunarVfsGroup.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,140 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>ThunarVfsGroup</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar-VFS Reference Manual">
+<link rel="up" href="users-and-groups-handling.html" title="Part V. Users and Groups Handling">
+<link rel="prev" href="ThunarVfsUser.html" title="ThunarVfsUser">
+<link rel="next" href="ThunarVfsUserManager.html" title="ThunarVfsUserManager">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="introduction.html" title="Part I. Introduction">
+<link rel="part" href="fundamentals.html" title="Part II. Fundamentals">
+<link rel="part" href="filesystem-monitoring.html" title="Part III. Filesystem Monitoring">
+<link rel="part" href="mime-types.html" title="Part IV. MIME Types">
+<link rel="part" href="users-and-groups-handling.html" title="Part V. Users and Groups Handling">
+<link rel="part" href="volume-handling.html" title="Part VI. Volume Handling">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="ThunarVfsUser.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="users-and-groups-handling.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Thunar-VFS Reference Manual</th>
+<td><a accesskey="n" href="ThunarVfsUserManager.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="ThunarVfsGroup"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">ThunarVfsGroup</span></h2>
+<p>ThunarVfsGroup — </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+ <a href="ThunarVfsGroup.html#ThunarVfsGroup-struct">ThunarVfsGroup</a>;
+<a href="thunar-vfs-Basic-Types.html#ThunarVfsGroupId">ThunarVfsGroupId</a> <a href="ThunarVfsGroup.html#thunar-vfs-group-get-id">thunar_vfs_group_get_id</a> (<a href="ThunarVfsGroup.html" title="ThunarVfsGroup">ThunarVfsGroup</a> *group);
+const gchar* <a href="ThunarVfsGroup.html#thunar-vfs-group-get-name">thunar_vfs_group_get_name</a> (<a href="ThunarVfsGroup.html" title="ThunarVfsGroup">ThunarVfsGroup</a> *group);
+
+
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2620285"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+
+ GObject
+ +----ThunarVfsGroup
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2620302"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2620312"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2620317"></a><h3>
+<a name="ThunarVfsGroup-struct"></a>ThunarVfsGroup</h3>
+<a class="indexterm" name="id2620326"></a><pre class="programlisting">typedef struct _ThunarVfsGroup ThunarVfsGroup;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2620341"></a><h3>
+<a name="thunar-vfs-group-get-id"></a>thunar_vfs_group_get_id ()</h3>
+<a class="indexterm" name="id2620349"></a><pre class="programlisting"><a href="thunar-vfs-Basic-Types.html#ThunarVfsGroupId">ThunarVfsGroupId</a> thunar_vfs_group_get_id (<a href="ThunarVfsGroup.html" title="ThunarVfsGroup">ThunarVfsGroup</a> *group);</pre>
+<p>
+Returns the unique id of the given <em class="parameter"><code>group</code></em>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>group</code></em> :</span></td>
+<td> a <a href="ThunarVfsGroup.html" title="ThunarVfsGroup"><span class="type">ThunarVfsGroup</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the unique id of <em class="parameter"><code>group</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2620421"></a><h3>
+<a name="thunar-vfs-group-get-name"></a>thunar_vfs_group_get_name ()</h3>
+<a class="indexterm" name="id2620429"></a><pre class="programlisting">const gchar* thunar_vfs_group_get_name (<a href="ThunarVfsGroup.html" title="ThunarVfsGroup">ThunarVfsGroup</a> *group);</pre>
+<p>
+Returns the name of the <em class="parameter"><code>group</code></em>. If the system is
+unable to determine the name of <em class="parameter"><code>group</code></em>, it'll
+return the group id as string.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>group</code></em> :</span></td>
+<td> a <a href="ThunarVfsGroup.html" title="ThunarVfsGroup"><span class="type">ThunarVfsGroup</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the name of <em class="parameter"><code>group</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="ThunarVfsUser.html"><b><< ThunarVfsUser</b></a></td>
+<td align="right"><a accesskey="n" href="ThunarVfsUserManager.html"><b>ThunarVfsUserManager >></b></a></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/ThunarVfsMimeDatabase.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/ThunarVfsMimeDatabase.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/ThunarVfsMimeDatabase.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,575 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>ThunarVfsMimeDatabase</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar-VFS Reference Manual">
+<link rel="up" href="mime-types.html" title="Part IV. MIME Types">
+<link rel="prev" href="thunar-vfs-ThunarVfsMimeInfo.html" title="ThunarVfsMimeInfo">
+<link rel="next" href="thunar-vfs-ThunarVfsMimeApplication.html" title="ThunarVfsMimeApplication">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="introduction.html" title="Part I. Introduction">
+<link rel="part" href="fundamentals.html" title="Part II. Fundamentals">
+<link rel="part" href="filesystem-monitoring.html" title="Part III. Filesystem Monitoring">
+<link rel="part" href="mime-types.html" title="Part IV. MIME Types">
+<link rel="part" href="users-and-groups-handling.html" title="Part V. Users and Groups Handling">
+<link rel="part" href="volume-handling.html" title="Part VI. Volume Handling">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="thunar-vfs-ThunarVfsMimeInfo.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="mime-types.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Thunar-VFS Reference Manual</th>
+<td><a accesskey="n" href="thunar-vfs-ThunarVfsMimeApplication.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="ThunarVfsMimeDatabase"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">ThunarVfsMimeDatabase</span></h2>
+<p>ThunarVfsMimeDatabase — </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+ <a href="ThunarVfsMimeDatabase.html#ThunarVfsMimeDatabase-struct">ThunarVfsMimeDatabase</a>;
+<a href="ThunarVfsMimeDatabase.html" title="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</a>* <a href="ThunarVfsMimeDatabase.html#thunar-vfs-mime-database-get-default">thunar_vfs_mime_database_get_default</a>
+ (void);
+<a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a>* <a href="ThunarVfsMimeDatabase.html#thunar-vfs-mime-database-get-info">thunar_vfs_mime_database_get_info</a>
+ (<a href="ThunarVfsMimeDatabase.html" title="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</a> *database,
+ const gchar *mime_type);
+<a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a>* <a href="ThunarVfsMimeDatabase.html#thunar-vfs-mime-database-get-info-for-data">thunar_vfs_mime_database_get_info_for_data</a>
+ (<a href="ThunarVfsMimeDatabase.html" title="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</a> *database,
+ gconstpointer data,
+ gsize length);
+<a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a>* <a href="ThunarVfsMimeDatabase.html#thunar-vfs-mime-database-get-info-for-name">thunar_vfs_mime_database_get_info_for_name</a>
+ (<a href="ThunarVfsMimeDatabase.html" title="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</a> *database,
+ const gchar *name);
+<a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a>* <a href="ThunarVfsMimeDatabase.html#thunar-vfs-mime-database-get-info-for-file">thunar_vfs_mime_database_get_info_for_file</a>
+ (<a href="ThunarVfsMimeDatabase.html" title="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</a> *database,
+ const gchar *path,
+ const gchar *name);
+GList* <a href="ThunarVfsMimeDatabase.html#thunar-vfs-mime-database-get-infos-for-info">thunar_vfs_mime_database_get_infos_for_info</a>
+ (<a href="ThunarVfsMimeDatabase.html" title="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</a> *database,
+ <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a> *info);
+GList* <a href="ThunarVfsMimeDatabase.html#thunar-vfs-mime-database-get-applications">thunar_vfs_mime_database_get_applications</a>
+ (<a href="ThunarVfsMimeDatabase.html" title="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</a> *database,
+ <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a> *info);
+<a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication">ThunarVfsMimeApplication</a>* <a href="ThunarVfsMimeDatabase.html#thunar-vfs-mime-database-get-default-application">thunar_vfs_mime_database_get_default_application</a>
+ (<a href="ThunarVfsMimeDatabase.html" title="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</a> *database,
+ <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a> *info);
+gboolean <a href="ThunarVfsMimeDatabase.html#thunar-vfs-mime-database-set-default-application">thunar_vfs_mime_database_set_default_application</a>
+ (<a href="ThunarVfsMimeDatabase.html" title="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</a> *database,
+ <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a> *info,
+ <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication">ThunarVfsMimeApplication</a> *application,
+ GError **error);
+<a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication">ThunarVfsMimeApplication</a>* <a href="ThunarVfsMimeDatabase.html#thunar-vfs-mime-database-add-application">thunar_vfs_mime_database_add_application</a>
+ (<a href="ThunarVfsMimeDatabase.html" title="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</a> *database,
+ <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a> *info,
+ const gchar *name,
+ const gchar *exec,
+ GError **error);
+
+
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2609008"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+
+ GObject
+ +----ThunarVfsMimeDatabase
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2609025"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2609034"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2609040"></a><h3>
+<a name="ThunarVfsMimeDatabase-struct"></a>ThunarVfsMimeDatabase</h3>
+<a class="indexterm" name="id2609048"></a><pre class="programlisting">typedef struct _ThunarVfsMimeDatabase ThunarVfsMimeDatabase;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2609063"></a><h3>
+<a name="thunar-vfs-mime-database-get-default"></a>thunar_vfs_mime_database_get_default ()</h3>
+<a class="indexterm" name="id2609075"></a><pre class="programlisting"><a href="ThunarVfsMimeDatabase.html" title="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</a>* thunar_vfs_mime_database_get_default
+ (void);</pre>
+<p>
+Returns a reference on the shared <a href="ThunarVfsMimeDatabase.html" title="ThunarVfsMimeDatabase"><span class="type">ThunarVfsMimeDatabase</span></a>
+instance. The caller is responsible to call <code class="function">g_object_unref()</code>
+on the returned object when no longer needed.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the shared <a href="ThunarVfsMimeDatabase.html" title="ThunarVfsMimeDatabase"><span class="type">ThunarVfsMimeDatabase</span></a>.
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2609204"></a><h3>
+<a name="thunar-vfs-mime-database-get-info"></a>thunar_vfs_mime_database_get_info ()</h3>
+<a class="indexterm" name="id2609216"></a><pre class="programlisting"><a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a>* thunar_vfs_mime_database_get_info
+ (<a href="ThunarVfsMimeDatabase.html" title="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</a> *database,
+ const gchar *mime_type);</pre>
+<p>
+Determines the <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo"><span class="type">ThunarVfsMimeInfo</span></a> which corresponds to <em class="parameter"><code>mime_type</code></em>
+in database. The caller is responsible to call <a href="thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-unref"><code class="function">thunar_vfs_mime_info_unref()</code></a>
+on the returned instance.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>database</code></em> :</span></td>
+<td> a <a href="ThunarVfsMimeDatabase.html" title="ThunarVfsMimeDatabase"><span class="type">ThunarVfsMimeDatabase</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>mime_type</code></em> :</span></td>
+<td> the string representation of the mime type.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo"><span class="type">ThunarVfsMimeInfo</span></a> corresponding to <em class="parameter"><code>mime_type</code></em> in <em class="parameter"><code>database</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2609335"></a><h3>
+<a name="thunar-vfs-mime-database-get-info-for-data"></a>thunar_vfs_mime_database_get_info_for_data ()</h3>
+<a class="indexterm" name="id2609347"></a><pre class="programlisting"><a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a>* thunar_vfs_mime_database_get_info_for_data
+ (<a href="ThunarVfsMimeDatabase.html" title="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</a> *database,
+ gconstpointer data,
+ gsize length);</pre>
+<p>
+Determines the <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo"><span class="type">ThunarVfsMimeInfo</span></a> for <em class="parameter"><code>data</code></em> in <em class="parameter"><code>database</code></em>. The
+caller is responsible to call <a href="thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-unref"><code class="function">thunar_vfs_mime_info_unref()</code></a> on
+the returned instance.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>database</code></em> :</span></td>
+<td> a <a href="ThunarVfsMimeDatabase.html" title="ThunarVfsMimeDatabase"><span class="type">ThunarVfsMimeDatabase</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>data</code></em> :</span></td>
+<td> the data to check.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>length</code></em> :</span></td>
+<td> the length of <em class="parameter"><code>data</code></em> in bytes.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo"><span class="type">ThunarVfsMimeInfo</span></a> determined for <em class="parameter"><code>data</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2609490"></a><h3>
+<a name="thunar-vfs-mime-database-get-info-for-name"></a>thunar_vfs_mime_database_get_info_for_name ()</h3>
+<a class="indexterm" name="id2609501"></a><pre class="programlisting"><a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a>* thunar_vfs_mime_database_get_info_for_name
+ (<a href="ThunarVfsMimeDatabase.html" title="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</a> *database,
+ const gchar *name);</pre>
+<p>
+Determines the <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo"><span class="type">ThunarVfsMimeInfo</span></a> for the filename given
+in <em class="parameter"><code>name</code></em> from <em class="parameter"><code>database</code></em>. The caller is responsible to
+call <a href="thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-unref"><code class="function">thunar_vfs_mime_info_unref()</code></a> on the returned instance.
+</p>
+<p>
+The <em class="parameter"><code>name</code></em> must be a valid filename in UTF-8 encoding
+and it may not contained any slashes!</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>database</code></em> :</span></td>
+<td> a <a href="ThunarVfsMimeDatabase.html" title="ThunarVfsMimeDatabase"><span class="type">ThunarVfsMimeDatabase</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em> :</span></td>
+<td> a filename (must be valid UTF-8!).
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo"><span class="type">ThunarVfsMimeInfo</span></a> for <em class="parameter"><code>name</code></em> in <em class="parameter"><code>database</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2609703"></a><h3>
+<a name="thunar-vfs-mime-database-get-info-for-file"></a>thunar_vfs_mime_database_get_info_for_file ()</h3>
+<a class="indexterm" name="id2609715"></a><pre class="programlisting"><a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a>* thunar_vfs_mime_database_get_info_for_file
+ (<a href="ThunarVfsMimeDatabase.html" title="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</a> *database,
+ const gchar *path,
+ const gchar *name);</pre>
+<p>
+Determines the <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo"><span class="type">ThunarVfsMimeInfo</span></a> for <em class="parameter"><code>path</code></em> in <em class="parameter"><code>database</code></em>. The
+caller is responsible to free the returned instance using
+<a href="thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-unref"><code class="function">thunar_vfs_mime_info_unref()</code></a>.
+</p>
+<p>
+The <em class="parameter"><code>name</code></em> parameter is optional. If the caller already knows the
+basename of <em class="parameter"><code>path</code></em> in UTF-8 encoding, it should be specified here
+to speed up the lookup process.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>database</code></em> :</span></td>
+<td> a <a href="ThunarVfsMimeDatabase.html" title="ThunarVfsMimeDatabase"><span class="type">ThunarVfsMimeDatabase</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>path</code></em> :</span></td>
+<td> the path to a file in the local filesystem (in the filesystem encoding).
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em> :</span></td>
+<td> the basename of <em class="parameter"><code>path</code></em> in UTF-8 encoding or <code class="literal">NULL</code>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo"><span class="type">ThunarVfsMimeInfo</span></a> for <em class="parameter"><code>path</code></em> in <em class="parameter"><code>database</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2609949"></a><h3>
+<a name="thunar-vfs-mime-database-get-infos-for-info"></a>thunar_vfs_mime_database_get_infos_for_info ()</h3>
+<a class="indexterm" name="id2609961"></a><pre class="programlisting">GList* thunar_vfs_mime_database_get_infos_for_info
+ (<a href="ThunarVfsMimeDatabase.html" title="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</a> *database,
+ <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a> *info);</pre>
+<p>
+Returns a list of all <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo"><span class="type">ThunarVfsMimeInfo</span></a>s,
+that are related to <em class="parameter"><code>info</code></em> in <em class="parameter"><code>database</code></em>. Currently
+this is the list of parent MIME-types for <em class="parameter"><code>info</code></em>,
+as defined in the Shared Mime Database.
+</p>
+<p>
+Note that the returned list will also include
+a reference <em class="parameter"><code>info</code></em> itself. In addition, this
+method also handles details specified by the
+Shared Mime Database Specification like the
+fact that every "text/xxxx" MIME-type is a
+subclass of "text/plain" and every MIME-type
+is a subclass of "application/octet-stream".
+</p>
+<p>
+The caller is responsible to free the returned
+list using #<a href="thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-list-free"><code class="function">thunar_vfs_mime_info_list_free()</code></a>
+when done with it.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>database</code></em> :</span></td>
+<td> a <a href="ThunarVfsMimeDatabase.html" title="ThunarVfsMimeDatabase"><span class="type">ThunarVfsMimeDatabase</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>info</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo"><span class="type">ThunarVfsMimeInfo</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the list of <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo"><span class="type">ThunarVfsMimeInfo</span></a>s
+ related to <em class="parameter"><code>info</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2610178"></a><h3>
+<a name="thunar-vfs-mime-database-get-applications"></a>thunar_vfs_mime_database_get_applications ()</h3>
+<a class="indexterm" name="id2610189"></a><pre class="programlisting">GList* thunar_vfs_mime_database_get_applications
+ (<a href="ThunarVfsMimeDatabase.html" title="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</a> *database,
+ <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a> *info);</pre>
+<p>
+Looks up all <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication"><span class="type">ThunarVfsMimeApplication</span></a>s in <em class="parameter"><code>database</code></em>, which
+claim to be able to open files whose MIME-type is represented by
+<em class="parameter"><code>info</code></em>.
+</p>
+<p>
+The caller is responsible to free the returned list using
+something like:
+</p>
+<div class="informalexample"><pre class="programlisting">
+g_list_foreach (list, (GFunc) thunar_vfs_mime_application_unref, NULL);
+g_list_free (list);
+</pre></div>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>database</code></em> :</span></td>
+<td> a <a href="ThunarVfsMimeDatabase.html" title="ThunarVfsMimeDatabase"><span class="type">ThunarVfsMimeDatabase</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>info</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo"><span class="type">ThunarVfsMimeInfo</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the list of <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication"><span class="type">ThunarVfsMimeApplication</span></a>s, that
+ can handle <em class="parameter"><code>info</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2610316"></a><h3>
+<a name="thunar-vfs-mime-database-get-default-application"></a>thunar_vfs_mime_database_get_default_application ()</h3>
+<a class="indexterm" name="id2610328"></a><pre class="programlisting"><a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication">ThunarVfsMimeApplication</a>* thunar_vfs_mime_database_get_default_application
+ (<a href="ThunarVfsMimeDatabase.html" title="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</a> *database,
+ <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a> *info);</pre>
+<p>
+Returns the default <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication"><span class="type">ThunarVfsMimeApplication</span></a> to handle
+files of type <em class="parameter"><code>info</code></em> or <code class="literal">NULL</code> if no default application
+is set for <em class="parameter"><code>info</code></em>.
+</p>
+<p>
+The caller is responsible to free the returned instance
+using <a href="thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-unref"><code class="function">thunar_vfs_mime_application_unref()</code></a>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>database</code></em> :</span></td>
+<td> a <a href="ThunarVfsMimeDatabase.html" title="ThunarVfsMimeDatabase"><span class="type">ThunarVfsMimeDatabase</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>info</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo"><span class="type">ThunarVfsMimeInfo</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the default <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication"><span class="type">ThunarVfsMimeApplication</span></a> for
+ <em class="parameter"><code>info</code></em> or <code class="literal">NULL</code>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2610471"></a><h3>
+<a name="thunar-vfs-mime-database-set-default-application"></a>thunar_vfs_mime_database_set_default_application ()</h3>
+<a class="indexterm" name="id2610483"></a><pre class="programlisting">gboolean thunar_vfs_mime_database_set_default_application
+ (<a href="ThunarVfsMimeDatabase.html" title="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</a> *database,
+ <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a> *info,
+ <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication">ThunarVfsMimeApplication</a> *application,
+ GError **error);</pre>
+<p>
+Sets <em class="parameter"><code>application</code></em> to be the default <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication"><span class="type">ThunarVfsMimeApplication</span></a> to open files
+of type <em class="parameter"><code>info</code></em> in <em class="parameter"><code>database</code></em>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>database</code></em> :</span></td>
+<td> a <a href="ThunarVfsMimeDatabase.html" title="ThunarVfsMimeDatabase"><span class="type">ThunarVfsMimeDatabase</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>info</code></em> :</span></td>
+<td> a valid <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo"><span class="type">ThunarVfsMimeInfo</span></a> for <em class="parameter"><code>database</code></em>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>application</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication"><span class="type">ThunarVfsMimeApplication</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>error</code></em> :</span></td>
+<td> return location for errors or <code class="literal">NULL</code>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> <code class="literal">TRUE</code> if the operation was successfull, else <code class="literal">FALSE</code>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2610727"></a><h3>
+<a name="thunar-vfs-mime-database-add-application"></a>thunar_vfs_mime_database_add_application ()</h3>
+<a class="indexterm" name="id2610739"></a><pre class="programlisting"><a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication">ThunarVfsMimeApplication</a>* thunar_vfs_mime_database_add_application
+ (<a href="ThunarVfsMimeDatabase.html" title="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</a> *database,
+ <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a> *info,
+ const gchar *name,
+ const gchar *exec,
+ GError **error);</pre>
+<p>
+Adds a new <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication"><span class="type">ThunarVfsMimeApplication</span></a> to the <em class="parameter"><code>database</code></em>, whose
+name is <em class="parameter"><code>name</code></em> and command is <em class="parameter"><code>exec</code></em>, and which can be used to
+open files of type <em class="parameter"><code>info</code></em>.
+</p>
+<p>
+The caller is responsible to free the returned object
+using <a href="thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-unref"><code class="function">thunar_vfs_mime_application_unref()</code></a> when no longer
+needed.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>database</code></em> :</span></td>
+<td> a <a href="ThunarVfsMimeDatabase.html" title="ThunarVfsMimeDatabase"><span class="type">ThunarVfsMimeDatabase</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>info</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo"><span class="type">ThunarVfsMimeInfo</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em> :</span></td>
+<td> the name for the application.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>exec</code></em> :</span></td>
+<td> the command for the application.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>error</code></em> :</span></td>
+<td> return location for errors or <code class="literal">NULL</code>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the newly created <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication"><span class="type">ThunarVfsMimeApplication</span></a>
+ or <code class="literal">NULL</code> on error.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="thunar-vfs-ThunarVfsMimeInfo.html"><b><< ThunarVfsMimeInfo</b></a></td>
+<td align="right"><a accesskey="n" href="thunar-vfs-ThunarVfsMimeApplication.html"><b>ThunarVfsMimeApplication >></b></a></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/ThunarVfsMonitor.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/ThunarVfsMonitor.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/ThunarVfsMonitor.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,433 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>ThunarVfsMonitor</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar-VFS Reference Manual">
+<link rel="up" href="filesystem-monitoring.html" title="Part III. Filesystem Monitoring">
+<link rel="prev" href="filesystem-monitoring.html" title="Part III. Filesystem Monitoring">
+<link rel="next" href="mime-types.html" title="Part IV. MIME Types">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="introduction.html" title="Part I. Introduction">
+<link rel="part" href="fundamentals.html" title="Part II. Fundamentals">
+<link rel="part" href="filesystem-monitoring.html" title="Part III. Filesystem Monitoring">
+<link rel="part" href="mime-types.html" title="Part IV. MIME Types">
+<link rel="part" href="users-and-groups-handling.html" title="Part V. Users and Groups Handling">
+<link rel="part" href="volume-handling.html" title="Part VI. Volume Handling">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="filesystem-monitoring.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="filesystem-monitoring.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Thunar-VFS Reference Manual</th>
+<td><a accesskey="n" href="mime-types.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="ThunarVfsMonitor"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">ThunarVfsMonitor</span></h2>
+<p>ThunarVfsMonitor — </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+ <a href="ThunarVfsMonitor.html#ThunarVfsMonitor-struct">ThunarVfsMonitor</a>;
+enum <a href="ThunarVfsMonitor.html#ThunarVfsMonitorEvent">ThunarVfsMonitorEvent</a>;
+ <a href="ThunarVfsMonitor.html#ThunarVfsMonitorHandle">ThunarVfsMonitorHandle</a>;
+void (<a href="ThunarVfsMonitor.html#ThunarVfsMonitorCallback">*ThunarVfsMonitorCallback</a>) (<a href="ThunarVfsMonitor.html" title="ThunarVfsMonitor">ThunarVfsMonitor</a> *monitor,
+ <a href="ThunarVfsMonitor.html#ThunarVfsMonitorHandle">ThunarVfsMonitorHandle</a> *handle,
+ <a href="ThunarVfsMonitor.html#ThunarVfsMonitorEvent">ThunarVfsMonitorEvent</a> event,
+ <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *handle_path,
+ <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *event_path,
+ gpointer user_data);
+<a href="ThunarVfsMonitor.html" title="ThunarVfsMonitor">ThunarVfsMonitor</a>* <a href="ThunarVfsMonitor.html#thunar-vfs-monitor-get-default">thunar_vfs_monitor_get_default</a>
+ (void);
+<a href="ThunarVfsMonitor.html#ThunarVfsMonitorHandle">ThunarVfsMonitorHandle</a>* <a href="ThunarVfsMonitor.html#thunar-vfs-monitor-add-directory">thunar_vfs_monitor_add_directory</a>
+ (<a href="ThunarVfsMonitor.html" title="ThunarVfsMonitor">ThunarVfsMonitor</a> *monitor,
+ <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *path,
+ <a href="ThunarVfsMonitor.html#ThunarVfsMonitorCallback">ThunarVfsMonitorCallback</a> callback,
+ gpointer user_data);
+<a href="ThunarVfsMonitor.html#ThunarVfsMonitorHandle">ThunarVfsMonitorHandle</a>* <a href="ThunarVfsMonitor.html#thunar-vfs-monitor-add-file">thunar_vfs_monitor_add_file</a>
+ (<a href="ThunarVfsMonitor.html" title="ThunarVfsMonitor">ThunarVfsMonitor</a> *monitor,
+ <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *path,
+ <a href="ThunarVfsMonitor.html#ThunarVfsMonitorCallback">ThunarVfsMonitorCallback</a> callback,
+ gpointer user_data);
+void <a href="ThunarVfsMonitor.html#thunar-vfs-monitor-remove">thunar_vfs_monitor_remove</a> (<a href="ThunarVfsMonitor.html" title="ThunarVfsMonitor">ThunarVfsMonitor</a> *monitor,
+ <a href="ThunarVfsMonitor.html#ThunarVfsMonitorHandle">ThunarVfsMonitorHandle</a> *handle);
+void <a href="ThunarVfsMonitor.html#thunar-vfs-monitor-feed">thunar_vfs_monitor_feed</a> (<a href="ThunarVfsMonitor.html" title="ThunarVfsMonitor">ThunarVfsMonitor</a> *monitor,
+ <a href="ThunarVfsMonitor.html#ThunarVfsMonitorEvent">ThunarVfsMonitorEvent</a> event,
+ <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *path);
+void <a href="ThunarVfsMonitor.html#thunar-vfs-monitor-wait">thunar_vfs_monitor_wait</a> (<a href="ThunarVfsMonitor.html" title="ThunarVfsMonitor">ThunarVfsMonitor</a> *monitor);
+
+
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2602377"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+
+ GObject
+ +----ThunarVfsMonitor
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2602394"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2602404"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2602409"></a><h3>
+<a name="ThunarVfsMonitor-struct"></a>ThunarVfsMonitor</h3>
+<a class="indexterm" name="id2602418"></a><pre class="programlisting">typedef struct _ThunarVfsMonitor ThunarVfsMonitor;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2602433"></a><h3>
+<a name="ThunarVfsMonitorEvent"></a>enum ThunarVfsMonitorEvent</h3>
+<a class="indexterm" name="id2602441"></a><pre class="programlisting">typedef enum
+{
+ THUNAR_VFS_MONITOR_EVENT_CHANGED,
+ THUNAR_VFS_MONITOR_EVENT_CREATED,
+ THUNAR_VFS_MONITOR_EVENT_DELETED,
+} ThunarVfsMonitorEvent;
+</pre>
+<p>
+Describes an event that occurred on a <a href="ThunarVfsMonitor.html#ThunarVfsMonitorHandle"><span class="type">ThunarVfsMonitorHandle</span></a>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_MONITOR_EVENT_CHANGED</code></span></td>
+<td> a file or directory was changed.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_MONITOR_EVENT_CREATED</code></span></td>
+<td> a file or directory was created.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_MONITOR_EVENT_DELETED</code></span></td>
+<td> a file or directory was deleted.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2602586"></a><h3>
+<a name="ThunarVfsMonitorHandle"></a>ThunarVfsMonitorHandle</h3>
+<a class="indexterm" name="id2602595"></a><pre class="programlisting">typedef struct _ThunarVfsMonitorHandle ThunarVfsMonitorHandle;</pre>
+<p>
+A handle on a file system entity, which is currently watched
+by a <a href="ThunarVfsMonitor.html" title="ThunarVfsMonitor"><span class="type">ThunarVfsMonitor</span></a>.</p>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2602619"></a><h3>
+<a name="ThunarVfsMonitorCallback"></a>ThunarVfsMonitorCallback ()</h3>
+<a class="indexterm" name="id2602628"></a><pre class="programlisting">void (*ThunarVfsMonitorCallback) (<a href="ThunarVfsMonitor.html" title="ThunarVfsMonitor">ThunarVfsMonitor</a> *monitor,
+ <a href="ThunarVfsMonitor.html#ThunarVfsMonitorHandle">ThunarVfsMonitorHandle</a> *handle,
+ <a href="ThunarVfsMonitor.html#ThunarVfsMonitorEvent">ThunarVfsMonitorEvent</a> event,
+ <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *handle_path,
+ <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *event_path,
+ gpointer user_data);</pre>
+<p>
+The prototype for callback functions that will be called by a <a href="ThunarVfsMonitor.html" title="ThunarVfsMonitor"><span class="type">ThunarVfsMonitor</span></a>
+whenever one of its associated <a href="ThunarVfsMonitor.html#ThunarVfsMonitorHandle"><span class="type">ThunarVfsMonitorHandle</span></a>s notice a
+change.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>monitor</code></em> :</span></td>
+<td> a <a href="ThunarVfsMonitor.html" title="ThunarVfsMonitor"><span class="type">ThunarVfsMonitor</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>handle</code></em> :</span></td>
+<td> a <a href="ThunarVfsMonitor.html#ThunarVfsMonitorHandle"><span class="type">ThunarVfsMonitorHandle</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>event</code></em> :</span></td>
+<td> the event that occurred.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>handle_path</code></em> :</span></td>
+<td> the <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a> that was specified when registering the <em class="parameter"><code>handle</code></em>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>event_path</code></em> :</span></td>
+<td> the <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a> on which the <em class="parameter"><code>event</code></em> occurred.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>user_data</code></em> :</span></td>
+<td> the user data that was specified when registering the <em class="parameter"><code>handle</code></em> with the <em class="parameter"><code>monitor</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2602902"></a><h3>
+<a name="thunar-vfs-monitor-get-default"></a>thunar_vfs_monitor_get_default ()</h3>
+<a class="indexterm" name="id2602912"></a><pre class="programlisting"><a href="ThunarVfsMonitor.html" title="ThunarVfsMonitor">ThunarVfsMonitor</a>* thunar_vfs_monitor_get_default
+ (void);</pre>
+<p>
+Returns the shared <a href="ThunarVfsMonitor.html" title="ThunarVfsMonitor"><span class="type">ThunarVfsMonitor</span></a> instance. The caller
+is responsible to call <code class="function">g_object_unref()</code> on the returned
+object when no longer needed.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> a reference to the shared <a href="ThunarVfsMonitor.html" title="ThunarVfsMonitor"><span class="type">ThunarVfsMonitor</span></a>
+ instance.
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2602970"></a><h3>
+<a name="thunar-vfs-monitor-add-directory"></a>thunar_vfs_monitor_add_directory ()</h3>
+<a class="indexterm" name="id2602982"></a><pre class="programlisting"><a href="ThunarVfsMonitor.html#ThunarVfsMonitorHandle">ThunarVfsMonitorHandle</a>* thunar_vfs_monitor_add_directory
+ (<a href="ThunarVfsMonitor.html" title="ThunarVfsMonitor">ThunarVfsMonitor</a> *monitor,
+ <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *path,
+ <a href="ThunarVfsMonitor.html#ThunarVfsMonitorCallback">ThunarVfsMonitorCallback</a> callback,
+ gpointer user_data);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>monitor</code></em> :</span></td>
+<td> a <a href="ThunarVfsMonitor.html" title="ThunarVfsMonitor"><span class="type">ThunarVfsMonitor</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>path</code></em> :</span></td>
+<td> the <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a> of the directory that should be watched.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>callback</code></em> :</span></td>
+<td> the callback function to invoke.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>user_data</code></em> :</span></td>
+<td> additional data to pass to <em class="parameter"><code>callback</code></em>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the <a href="ThunarVfsMonitor.html#ThunarVfsMonitorHandle"><span class="type">ThunarVfsMonitorHandle</span></a> for the new watch.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2603121"></a><h3>
+<a name="thunar-vfs-monitor-add-file"></a>thunar_vfs_monitor_add_file ()</h3>
+<a class="indexterm" name="id2603129"></a><pre class="programlisting"><a href="ThunarVfsMonitor.html#ThunarVfsMonitorHandle">ThunarVfsMonitorHandle</a>* thunar_vfs_monitor_add_file
+ (<a href="ThunarVfsMonitor.html" title="ThunarVfsMonitor">ThunarVfsMonitor</a> *monitor,
+ <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *path,
+ <a href="ThunarVfsMonitor.html#ThunarVfsMonitorCallback">ThunarVfsMonitorCallback</a> callback,
+ gpointer user_data);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>monitor</code></em> :</span></td>
+<td> a <a href="ThunarVfsMonitor.html" title="ThunarVfsMonitor"><span class="type">ThunarVfsMonitor</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>path</code></em> :</span></td>
+<td> the <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a> of the file that should be watched.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>callback</code></em> :</span></td>
+<td> the callback function to invoke.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>user_data</code></em> :</span></td>
+<td> additional data to pass to <em class="parameter"><code>callback</code></em>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the <a href="ThunarVfsMonitor.html#ThunarVfsMonitorHandle"><span class="type">ThunarVfsMonitorHandle</span></a> for the new watch.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2603335"></a><h3>
+<a name="thunar-vfs-monitor-remove"></a>thunar_vfs_monitor_remove ()</h3>
+<a class="indexterm" name="id2603344"></a><pre class="programlisting">void thunar_vfs_monitor_remove (<a href="ThunarVfsMonitor.html" title="ThunarVfsMonitor">ThunarVfsMonitor</a> *monitor,
+ <a href="ThunarVfsMonitor.html#ThunarVfsMonitorHandle">ThunarVfsMonitorHandle</a> *handle);</pre>
+<p>
+Removes <em class="parameter"><code>handle</code></em> from <em class="parameter"><code>monitor</code></em>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>monitor</code></em> :</span></td>
+<td> a <a href="ThunarVfsMonitor.html" title="ThunarVfsMonitor"><span class="type">ThunarVfsMonitor</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>handle</code></em> :</span></td>
+<td> a valid <a href="ThunarVfsMonitor.html#ThunarVfsMonitorHandle"><span class="type">ThunarVfsMonitorHandle</span></a> for <em class="parameter"><code>monitor</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2603436"></a><h3>
+<a name="thunar-vfs-monitor-feed"></a>thunar_vfs_monitor_feed ()</h3>
+<a class="indexterm" name="id2603445"></a><pre class="programlisting">void thunar_vfs_monitor_feed (<a href="ThunarVfsMonitor.html" title="ThunarVfsMonitor">ThunarVfsMonitor</a> *monitor,
+ <a href="ThunarVfsMonitor.html#ThunarVfsMonitorEvent">ThunarVfsMonitorEvent</a> event,
+ <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *path);</pre>
+<p>
+Explicitly injects the given <em class="parameter"><code>event</code></em> into <em class="parameter"><code>monitor</code></em>s event
+processing logic.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>monitor</code></em> :</span></td>
+<td> a <a href="ThunarVfsMonitor.html" title="ThunarVfsMonitor"><span class="type">ThunarVfsMonitor</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>event</code></em> :</span></td>
+<td> the <a href="ThunarVfsMonitor.html#ThunarVfsMonitorEvent"><span class="type">ThunarVfsMonitorEvent</span></a> that should be emulated.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>path</code></em> :</span></td>
+<td> the <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a> on which <em class="parameter"><code>event</code></em> took place.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2603564"></a><h3>
+<a name="thunar-vfs-monitor-wait"></a>thunar_vfs_monitor_wait ()</h3>
+<a class="indexterm" name="id2603573"></a><pre class="programlisting">void thunar_vfs_monitor_wait (<a href="ThunarVfsMonitor.html" title="ThunarVfsMonitor">ThunarVfsMonitor</a> *monitor);</pre>
+<p>
+Suspends the execution of the current thread until the
+<em class="parameter"><code>monitor</code></em> has processed all currently pending events. The
+calling thread must own a reference on the <em class="parameter"><code>monitor</code></em>!
+</p>
+<p>
+This method should never be called from the main thread
+or you'll lock up your application!!</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><em class="parameter"><code>monitor</code></em> :</span></td>
+<td> a <a href="ThunarVfsMonitor.html" title="ThunarVfsMonitor"><span class="type">ThunarVfsMonitor</span></a>.
+</td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="filesystem-monitoring.html"><b><< Part III. Filesystem Monitoring</b></a></td>
+<td align="right"><a accesskey="n" href="mime-types.html"><b>Part IV. MIME Types >></b></a></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/ThunarVfsUser.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/ThunarVfsUser.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/ThunarVfsUser.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,274 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>ThunarVfsUser</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar-VFS Reference Manual">
+<link rel="up" href="users-and-groups-handling.html" title="Part V. Users and Groups Handling">
+<link rel="prev" href="users-and-groups-handling.html" title="Part V. Users and Groups Handling">
+<link rel="next" href="ThunarVfsGroup.html" title="ThunarVfsGroup">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="introduction.html" title="Part I. Introduction">
+<link rel="part" href="fundamentals.html" title="Part II. Fundamentals">
+<link rel="part" href="filesystem-monitoring.html" title="Part III. Filesystem Monitoring">
+<link rel="part" href="mime-types.html" title="Part IV. MIME Types">
+<link rel="part" href="users-and-groups-handling.html" title="Part V. Users and Groups Handling">
+<link rel="part" href="volume-handling.html" title="Part VI. Volume Handling">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="users-and-groups-handling.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="users-and-groups-handling.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Thunar-VFS Reference Manual</th>
+<td><a accesskey="n" href="ThunarVfsGroup.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="ThunarVfsUser"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">ThunarVfsUser</span></h2>
+<p>ThunarVfsUser — </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+ <a href="ThunarVfsUser.html#ThunarVfsUser-struct">ThunarVfsUser</a>;
+GList* <a href="ThunarVfsUser.html#thunar-vfs-user-get-groups">thunar_vfs_user_get_groups</a> (<a href="ThunarVfsUser.html" title="ThunarVfsUser">ThunarVfsUser</a> *user);
+<a href="ThunarVfsGroup.html" title="ThunarVfsGroup">ThunarVfsGroup</a>* <a href="ThunarVfsUser.html#thunar-vfs-user-get-primary-group">thunar_vfs_user_get_primary_group</a>
+ (<a href="ThunarVfsUser.html" title="ThunarVfsUser">ThunarVfsUser</a> *user);
+<a href="thunar-vfs-Basic-Types.html#ThunarVfsUserId">ThunarVfsUserId</a> <a href="ThunarVfsUser.html#thunar-vfs-user-get-id">thunar_vfs_user_get_id</a> (<a href="ThunarVfsUser.html" title="ThunarVfsUser">ThunarVfsUser</a> *user);
+const gchar* <a href="ThunarVfsUser.html#thunar-vfs-user-get-name">thunar_vfs_user_get_name</a> (<a href="ThunarVfsUser.html" title="ThunarVfsUser">ThunarVfsUser</a> *user);
+const gchar* <a href="ThunarVfsUser.html#thunar-vfs-user-get-real-name">thunar_vfs_user_get_real_name</a> (<a href="ThunarVfsUser.html" title="ThunarVfsUser">ThunarVfsUser</a> *user);
+gboolean <a href="ThunarVfsUser.html#thunar-vfs-user-is-me">thunar_vfs_user_is_me</a> (<a href="ThunarVfsUser.html" title="ThunarVfsUser">ThunarVfsUser</a> *user);
+
+
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2618520"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+
+ GObject
+ +----ThunarVfsUser
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2618537"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2618547"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2618552"></a><h3>
+<a name="ThunarVfsUser-struct"></a>ThunarVfsUser</h3>
+<a class="indexterm" name="id2618561"></a><pre class="programlisting">typedef struct _ThunarVfsUser ThunarVfsUser;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2618576"></a><h3>
+<a name="thunar-vfs-user-get-groups"></a>thunar_vfs_user_get_groups ()</h3>
+<a class="indexterm" name="id2618584"></a><pre class="programlisting">GList* thunar_vfs_user_get_groups (<a href="ThunarVfsUser.html" title="ThunarVfsUser">ThunarVfsUser</a> *user);</pre>
+<p>
+Returns all <a href="ThunarVfsGroup.html" title="ThunarVfsGroup"><span class="type">ThunarVfsGroup</span></a>s that <em class="parameter"><code>user</code></em>
+belongs to. The returned list and the <a href="ThunarVfsGroup.html" title="ThunarVfsGroup"><span class="type">ThunarVfsGroup</span></a>s
+contained within the list are owned by <em class="parameter"><code>user</code></em> and must not be
+freed or altered by the caller.
+</p>
+<p>
+Note that if <em class="parameter"><code>user</code></em> has a primary group, this group will
+also be contained in the returned list.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>user</code></em> :</span></td>
+<td> a <a href="ThunarVfsUser.html" title="ThunarVfsUser"><span class="type">ThunarVfsUser</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the groups that <em class="parameter"><code>user</code></em> belongs to.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2618688"></a><h3>
+<a name="thunar-vfs-user-get-primary-group"></a>thunar_vfs_user_get_primary_group ()</h3>
+<a class="indexterm" name="id2618699"></a><pre class="programlisting"><a href="ThunarVfsGroup.html" title="ThunarVfsGroup">ThunarVfsGroup</a>* thunar_vfs_user_get_primary_group
+ (<a href="ThunarVfsUser.html" title="ThunarVfsUser">ThunarVfsUser</a> *user);</pre>
+<p>
+Returns the primary group of <em class="parameter"><code>user</code></em> or <code class="literal">NULL</code> if <em class="parameter"><code>user</code></em>
+has no primary group.
+</p>
+<p>
+No reference is taken for the caller, so you must
+not call <code class="function">g_object_unref()</code> on the returned object.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>user</code></em> :</span></td>
+<td> a <a href="ThunarVfsUser.html" title="ThunarVfsUser"><span class="type">ThunarVfsUser</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the primary group of <em class="parameter"><code>user</code></em> or <code class="literal">NULL</code>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2618868"></a><h3>
+<a name="thunar-vfs-user-get-id"></a>thunar_vfs_user_get_id ()</h3>
+<a class="indexterm" name="id2618876"></a><pre class="programlisting"><a href="thunar-vfs-Basic-Types.html#ThunarVfsUserId">ThunarVfsUserId</a> thunar_vfs_user_get_id (<a href="ThunarVfsUser.html" title="ThunarVfsUser">ThunarVfsUser</a> *user);</pre>
+<p>
+Returns the unique id of <em class="parameter"><code>user</code></em>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>user</code></em> :</span></td>
+<td> a <a href="ThunarVfsUser.html" title="ThunarVfsUser"><span class="type">ThunarVfsUser</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the unique id of <em class="parameter"><code>user</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2618947"></a><h3>
+<a name="thunar-vfs-user-get-name"></a>thunar_vfs_user_get_name ()</h3>
+<a class="indexterm" name="id2618955"></a><pre class="programlisting">const gchar* thunar_vfs_user_get_name (<a href="ThunarVfsUser.html" title="ThunarVfsUser">ThunarVfsUser</a> *user);</pre>
+<p>
+Returns the name of <em class="parameter"><code>user</code></em>. If the system is
+unable to determine the account name of <em class="parameter"><code>user</code></em>,
+it'll return the user id as string.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>user</code></em> :</span></td>
+<td> a <a href="ThunarVfsUser.html" title="ThunarVfsUser"><span class="type">ThunarVfsUser</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the name of <em class="parameter"><code>user</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2619035"></a><h3>
+<a name="thunar-vfs-user-get-real-name"></a>thunar_vfs_user_get_real_name ()</h3>
+<a class="indexterm" name="id2619045"></a><pre class="programlisting">const gchar* thunar_vfs_user_get_real_name (<a href="ThunarVfsUser.html" title="ThunarVfsUser">ThunarVfsUser</a> *user);</pre>
+<p>
+Returns the real name of <em class="parameter"><code>user</code></em> or <code class="literal">NULL</code> if the
+real name for <em class="parameter"><code>user</code></em> is not known to the underlying
+system.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>user</code></em> :</span></td>
+<td> a <a href="ThunarVfsUser.html" title="ThunarVfsUser"><span class="type">ThunarVfsUser</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the real name for <em class="parameter"><code>user</code></em> or <code class="literal">NULL</code>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2619134"></a><h3>
+<a name="thunar-vfs-user-is-me"></a>thunar_vfs_user_is_me ()</h3>
+<a class="indexterm" name="id2619143"></a><pre class="programlisting">gboolean thunar_vfs_user_is_me (<a href="ThunarVfsUser.html" title="ThunarVfsUser">ThunarVfsUser</a> *user);</pre>
+<p>
+Checks whether the owner of the current process is
+described by <em class="parameter"><code>user</code></em>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>user</code></em> :</span></td>
+<td> a <a href="ThunarVfsUser.html" title="ThunarVfsUser"><span class="type">ThunarVfsUser</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> <code class="literal">TRUE</code> if <em class="parameter"><code>user</code></em> is the owner of the current
+ process, else <code class="literal">FALSE</code>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="users-and-groups-handling.html"><b><< Part V. Users and Groups Handling</b></a></td>
+<td align="right"><a accesskey="n" href="ThunarVfsGroup.html"><b>ThunarVfsGroup >></b></a></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/ThunarVfsUserManager.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/ThunarVfsUserManager.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/ThunarVfsUserManager.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,189 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>ThunarVfsUserManager</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar-VFS Reference Manual">
+<link rel="up" href="users-and-groups-handling.html" title="Part V. Users and Groups Handling">
+<link rel="prev" href="ThunarVfsGroup.html" title="ThunarVfsGroup">
+<link rel="next" href="volume-handling.html" title="Part VI. Volume Handling">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="introduction.html" title="Part I. Introduction">
+<link rel="part" href="fundamentals.html" title="Part II. Fundamentals">
+<link rel="part" href="filesystem-monitoring.html" title="Part III. Filesystem Monitoring">
+<link rel="part" href="mime-types.html" title="Part IV. MIME Types">
+<link rel="part" href="users-and-groups-handling.html" title="Part V. Users and Groups Handling">
+<link rel="part" href="volume-handling.html" title="Part VI. Volume Handling">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="ThunarVfsGroup.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="users-and-groups-handling.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Thunar-VFS Reference Manual</th>
+<td><a accesskey="n" href="volume-handling.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="ThunarVfsUserManager"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">ThunarVfsUserManager</span></h2>
+<p>ThunarVfsUserManager — </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+ <a href="ThunarVfsUserManager.html#ThunarVfsUserManager-struct">ThunarVfsUserManager</a>;
+<a href="ThunarVfsUserManager.html" title="ThunarVfsUserManager">ThunarVfsUserManager</a>* <a href="ThunarVfsUserManager.html#thunar-vfs-user-manager-get-default">thunar_vfs_user_manager_get_default</a>
+ (void);
+<a href="ThunarVfsGroup.html" title="ThunarVfsGroup">ThunarVfsGroup</a>* <a href="ThunarVfsUserManager.html#thunar-vfs-user-manager-get-group-by-id">thunar_vfs_user_manager_get_group_by_id</a>
+ (<a href="ThunarVfsUserManager.html" title="ThunarVfsUserManager">ThunarVfsUserManager</a> *manager,
+ <a href="thunar-vfs-Basic-Types.html#ThunarVfsGroupId">ThunarVfsGroupId</a> id);
+<a href="ThunarVfsUser.html" title="ThunarVfsUser">ThunarVfsUser</a>* <a href="ThunarVfsUserManager.html#thunar-vfs-user-manager-get-user-by-id">thunar_vfs_user_manager_get_user_by_id</a>
+ (<a href="ThunarVfsUserManager.html" title="ThunarVfsUserManager">ThunarVfsUserManager</a> *manager,
+ <a href="thunar-vfs-Basic-Types.html#ThunarVfsUserId">ThunarVfsUserId</a> id);
+
+
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2621059"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+
+ GObject
+ +----ThunarVfsUserManager
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2621076"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2621085"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2621091"></a><h3>
+<a name="ThunarVfsUserManager-struct"></a>ThunarVfsUserManager</h3>
+<a class="indexterm" name="id2621099"></a><pre class="programlisting">typedef struct _ThunarVfsUserManager ThunarVfsUserManager;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2621114"></a><h3>
+<a name="thunar-vfs-user-manager-get-default"></a>thunar_vfs_user_manager_get_default ()</h3>
+<a class="indexterm" name="id2621126"></a><pre class="programlisting"><a href="ThunarVfsUserManager.html" title="ThunarVfsUserManager">ThunarVfsUserManager</a>* thunar_vfs_user_manager_get_default
+ (void);</pre>
+<p>
+Returns the default <a href="ThunarVfsUserManager.html" title="ThunarVfsUserManager"><span class="type">ThunarVfsUserManager</span></a> instance, which is shared
+by all modules using the user module. Call <code class="function">g_object_unref()</code> on the
+returned object when you are done with it.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the default <a href="ThunarVfsUserManager.html" title="ThunarVfsUserManager"><span class="type">ThunarVfsUserManager</span></a> instance.
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2621185"></a><h3>
+<a name="thunar-vfs-user-manager-get-group-by-id"></a>thunar_vfs_user_manager_get_group_by_id ()</h3>
+<a class="indexterm" name="id2621196"></a><pre class="programlisting"><a href="ThunarVfsGroup.html" title="ThunarVfsGroup">ThunarVfsGroup</a>* thunar_vfs_user_manager_get_group_by_id
+ (<a href="ThunarVfsUserManager.html" title="ThunarVfsUserManager">ThunarVfsUserManager</a> *manager,
+ <a href="thunar-vfs-Basic-Types.html#ThunarVfsGroupId">ThunarVfsGroupId</a> id);</pre>
+<p>
+Looks up the <a href="ThunarVfsGroup.html" title="ThunarVfsGroup"><span class="type">ThunarVfsGroup</span></a> corresponding to <em class="parameter"><code>id</code></em> in <em class="parameter"><code>manager</code></em>. Returns
+<code class="literal">NULL</code> if <em class="parameter"><code>manager</code></em> is unable to determine the <a href="ThunarVfsGroup.html" title="ThunarVfsGroup"><span class="type">ThunarVfsGroup</span></a> for <em class="parameter"><code>id</code></em>,
+else a pointer to the corresponding <a href="ThunarVfsGroup.html" title="ThunarVfsGroup"><span class="type">ThunarVfsGroup</span></a>. The caller is
+responsible for freeing the returned object using <code class="function">g_object_unref()</code>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>manager</code></em> :</span></td>
+<td> a <a href="ThunarVfsUserManager.html" title="ThunarVfsUserManager"><span class="type">ThunarVfsUserManager</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>id</code></em> :</span></td>
+<td> the group id.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the <a href="ThunarVfsGroup.html" title="ThunarVfsGroup"><span class="type">ThunarVfsGroup</span></a> corresponding to <em class="parameter"><code>id</code></em> or <code class="literal">NULL</code>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2621349"></a><h3>
+<a name="thunar-vfs-user-manager-get-user-by-id"></a>thunar_vfs_user_manager_get_user_by_id ()</h3>
+<a class="indexterm" name="id2621361"></a><pre class="programlisting"><a href="ThunarVfsUser.html" title="ThunarVfsUser">ThunarVfsUser</a>* thunar_vfs_user_manager_get_user_by_id
+ (<a href="ThunarVfsUserManager.html" title="ThunarVfsUserManager">ThunarVfsUserManager</a> *manager,
+ <a href="thunar-vfs-Basic-Types.html#ThunarVfsUserId">ThunarVfsUserId</a> id);</pre>
+<p>
+Looks up the <a href="ThunarVfsUser.html" title="ThunarVfsUser"><span class="type">ThunarVfsUser</span></a> corresponding to <em class="parameter"><code>id</code></em> in <em class="parameter"><code>manager</code></em>. Returns
+<code class="literal">NULL</code> if <em class="parameter"><code>manager</code></em> is unable to determine the <a href="ThunarVfsUser.html" title="ThunarVfsUser"><span class="type">ThunarVfsUser</span></a> for <em class="parameter"><code>id</code></em>,
+else a pointer to the corresponding <a href="ThunarVfsUser.html" title="ThunarVfsUser"><span class="type">ThunarVfsUser</span></a>. The caller is
+responsible for freeing the returned object using <code class="function">g_object_unref()</code>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>manager</code></em> :</span></td>
+<td> a <a href="ThunarVfsUserManager.html" title="ThunarVfsUserManager"><span class="type">ThunarVfsUserManager</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>id</code></em> :</span></td>
+<td> the user id.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the <a href="ThunarVfsUser.html" title="ThunarVfsUser"><span class="type">ThunarVfsUser</span></a> corresponding to <em class="parameter"><code>id</code></em> or <code class="literal">NULL</code>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="ThunarVfsGroup.html"><b><< ThunarVfsGroup</b></a></td>
+<td align="right"><a accesskey="n" href="volume-handling.html"><b>Part VI. Volume Handling >></b></a></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/ThunarVfsVolume.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/ThunarVfsVolume.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/ThunarVfsVolume.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,540 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>ThunarVfsVolume</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar-VFS Reference Manual">
+<link rel="up" href="volume-handling.html" title="Part VI. Volume Handling">
+<link rel="prev" href="volume-handling.html" title="Part VI. Volume Handling">
+<link rel="next" href="ThunarVfsVolumeManager.html" title="ThunarVfsVolumeManager">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="introduction.html" title="Part I. Introduction">
+<link rel="part" href="fundamentals.html" title="Part II. Fundamentals">
+<link rel="part" href="filesystem-monitoring.html" title="Part III. Filesystem Monitoring">
+<link rel="part" href="mime-types.html" title="Part IV. MIME Types">
+<link rel="part" href="users-and-groups-handling.html" title="Part V. Users and Groups Handling">
+<link rel="part" href="volume-handling.html" title="Part VI. Volume Handling">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="volume-handling.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="volume-handling.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Thunar-VFS Reference Manual</th>
+<td><a accesskey="n" href="ThunarVfsVolumeManager.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="ThunarVfsVolume"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">ThunarVfsVolume</span></h2>
+<p>ThunarVfsVolume — </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+enum <a href="ThunarVfsVolume.html#ThunarVfsVolumeKind">ThunarVfsVolumeKind</a>;
+enum <a href="ThunarVfsVolume.html#ThunarVfsVolumeStatus">ThunarVfsVolumeStatus</a>;
+ <a href="ThunarVfsVolume.html#ThunarVfsVolumeIface">ThunarVfsVolumeIface</a>;
+ <a href="ThunarVfsVolume.html#ThunarVfsVolume-struct">ThunarVfsVolume</a>;
+<a href="ThunarVfsVolume.html#ThunarVfsVolumeKind">ThunarVfsVolumeKind</a> <a href="ThunarVfsVolume.html#thunar-vfs-volume-get-kind">thunar_vfs_volume_get_kind</a>
+ (<a href="ThunarVfsVolume.html" title="ThunarVfsVolume">ThunarVfsVolume</a> *volume);
+const gchar* <a href="ThunarVfsVolume.html#thunar-vfs-volume-get-name">thunar_vfs_volume_get_name</a> (<a href="ThunarVfsVolume.html" title="ThunarVfsVolume">ThunarVfsVolume</a> *volume);
+<a href="ThunarVfsVolume.html#ThunarVfsVolumeStatus">ThunarVfsVolumeStatus</a> <a href="ThunarVfsVolume.html#thunar-vfs-volume-get-status">thunar_vfs_volume_get_status</a>
+ (<a href="ThunarVfsVolume.html" title="ThunarVfsVolume">ThunarVfsVolume</a> *volume);
+<a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a>* <a href="ThunarVfsVolume.html#thunar-vfs-volume-get-mount-point">thunar_vfs_volume_get_mount_point</a>
+ (<a href="ThunarVfsVolume.html" title="ThunarVfsVolume">ThunarVfsVolume</a> *volume);
+gboolean <a href="ThunarVfsVolume.html#thunar-vfs-volume-is-mounted">thunar_vfs_volume_is_mounted</a> (<a href="ThunarVfsVolume.html" title="ThunarVfsVolume">ThunarVfsVolume</a> *volume);
+gboolean <a href="ThunarVfsVolume.html#thunar-vfs-volume-is-present">thunar_vfs_volume_is_present</a> (<a href="ThunarVfsVolume.html" title="ThunarVfsVolume">ThunarVfsVolume</a> *volume);
+gboolean <a href="ThunarVfsVolume.html#thunar-vfs-volume-is-removable">thunar_vfs_volume_is_removable</a> (<a href="ThunarVfsVolume.html" title="ThunarVfsVolume">ThunarVfsVolume</a> *volume);
+gboolean <a href="ThunarVfsVolume.html#thunar-vfs-volume-get-free-space">thunar_vfs_volume_get_free_space</a>
+ (<a href="ThunarVfsVolume.html" title="ThunarVfsVolume">ThunarVfsVolume</a> *volume,
+ <a href="thunar-vfs-Basic-Types.html#ThunarVfsFileSize">ThunarVfsFileSize</a> *free_space_return);
+const gchar* <a href="ThunarVfsVolume.html#thunar-vfs-volume-lookup-icon-name">thunar_vfs_volume_lookup_icon_name</a>
+ (<a href="ThunarVfsVolume.html" title="ThunarVfsVolume">ThunarVfsVolume</a> *volume,
+ GtkIconTheme *icon_theme);
+void <a href="ThunarVfsVolume.html#thunar-vfs-volume-changed">thunar_vfs_volume_changed</a> (<a href="ThunarVfsVolume.html" title="ThunarVfsVolume">ThunarVfsVolume</a> *volume);
+
+
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2622531"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+
+ GInterface
+ +----ThunarVfsVolume
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2622548"></a><h2>Prerequisites</h2>
+<p>
+ThunarVfsVolume requires
+ GObject.</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2622563"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2622572"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2622578"></a><h3>
+<a name="ThunarVfsVolumeKind"></a>enum ThunarVfsVolumeKind</h3>
+<a class="indexterm" name="id2622586"></a><pre class="programlisting">typedef enum
+{
+ THUNAR_VFS_VOLUME_KIND_UNKNOWN,
+ THUNAR_VFS_VOLUME_KIND_CDROM,
+ THUNAR_VFS_VOLUME_KIND_DVD,
+ THUNAR_VFS_VOLUME_KIND_FLOPPY,
+ THUNAR_VFS_VOLUME_KIND_HARDDISK,
+ THUNAR_VFS_VOLUME_KIND_USBSTICK,
+} ThunarVfsVolumeKind;
+</pre>
+<p>
+Describes the type of a VFS volume.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_VOLUME_KIND_UNKNOWN</code></span></td>
+<td> Unknown volume.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_VOLUME_KIND_CDROM</code></span></td>
+<td> CD drives.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_VOLUME_KIND_DVD</code></span></td>
+<td> DVD drives.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_VOLUME_KIND_FLOPPY</code></span></td>
+<td> Floppy drives.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_VOLUME_KIND_HARDDISK</code></span></td>
+<td> Hard disk drives.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_VOLUME_KIND_USBSTICK</code></span></td>
+<td> USB sticks.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2622760"></a><h3>
+<a name="ThunarVfsVolumeStatus"></a>enum ThunarVfsVolumeStatus</h3>
+<a class="indexterm" name="id2622769"></a><pre class="programlisting">typedef enum /*< flags >*/
+{
+ THUNAR_VFS_VOLUME_STATUS_MOUNTED = 1 << 0,
+ THUNAR_VFS_VOLUME_STATUS_PRESENT = 1 << 1,
+} ThunarVfsVolumeStatus;
+</pre>
+<p>
+Describes the current status of a VFS volume.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_VOLUME_STATUS_MOUNTED</code></span></td>
+<td> Whether or not the media is currently mounted.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_VOLUME_STATUS_PRESENT</code></span></td>
+<td> Whether or not a medium is present.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2622823"></a><h3>
+<a name="ThunarVfsVolumeIface"></a>ThunarVfsVolumeIface</h3>
+<a class="indexterm" name="id2622832"></a><pre class="programlisting">typedef struct {
+ GTypeInterface __parent__;
+
+ /* methods */
+ ThunarVfsVolumeKind (*get_kind) (ThunarVfsVolume *volume);
+ const gchar *(*get_name) (ThunarVfsVolume *volume);
+ ThunarVfsVolumeStatus (*get_status) (ThunarVfsVolume *volume);
+ ThunarVfsPath *(*get_mount_point) (ThunarVfsVolume *volume);
+ gboolean (*get_free_space) (ThunarVfsVolume *volume,
+ ThunarVfsFileSize *free_space_return);
+ const gchar *(*lookup_icon_name) (ThunarVfsVolume *volume,
+ GtkIconTheme *icon_theme);
+
+ /* signals */
+ void (*changed) (ThunarVfsVolume *volume);
+} ThunarVfsVolumeIface;
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2622845"></a><h3>
+<a name="ThunarVfsVolume-struct"></a>ThunarVfsVolume</h3>
+<a class="indexterm" name="id2622854"></a><pre class="programlisting">typedef struct _ThunarVfsVolume ThunarVfsVolume;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2622869"></a><h3>
+<a name="thunar-vfs-volume-get-kind"></a>thunar_vfs_volume_get_kind ()</h3>
+<a class="indexterm" name="id2622946"></a><pre class="programlisting"><a href="ThunarVfsVolume.html#ThunarVfsVolumeKind">ThunarVfsVolumeKind</a> thunar_vfs_volume_get_kind
+ (<a href="ThunarVfsVolume.html" title="ThunarVfsVolume">ThunarVfsVolume</a> *volume);</pre>
+<p>
+Returns the kind of drive/device representd by <em class="parameter"><code>volume</code></em>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>volume</code></em> :</span></td>
+<td> a <a href="ThunarVfsVolume.html" title="ThunarVfsVolume"><span class="type">ThunarVfsVolume</span></a> instance.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the kind of <em class="parameter"><code>volume</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2623017"></a><h3>
+<a name="thunar-vfs-volume-get-name"></a>thunar_vfs_volume_get_name ()</h3>
+<a class="indexterm" name="id2623026"></a><pre class="programlisting">const gchar* thunar_vfs_volume_get_name (<a href="ThunarVfsVolume.html" title="ThunarVfsVolume">ThunarVfsVolume</a> *volume);</pre>
+<p>
+Returns the name of the <em class="parameter"><code>volume</code></em>. This is usually the
+name of the device or the label of the medium, if a
+medium is present.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>volume</code></em> :</span></td>
+<td> a <a href="ThunarVfsVolume.html" title="ThunarVfsVolume"><span class="type">ThunarVfsVolume</span></a> instance.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the name of <em class="parameter"><code>volume</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2623098"></a><h3>
+<a name="thunar-vfs-volume-get-status"></a>thunar_vfs_volume_get_status ()</h3>
+<a class="indexterm" name="id2623107"></a><pre class="programlisting"><a href="ThunarVfsVolume.html#ThunarVfsVolumeStatus">ThunarVfsVolumeStatus</a> thunar_vfs_volume_get_status
+ (<a href="ThunarVfsVolume.html" title="ThunarVfsVolume">ThunarVfsVolume</a> *volume);</pre>
+<p>
+Determines the current status of the <em class="parameter"><code>volume</code></em>, e.g. whether
+or not the <em class="parameter"><code>volume</code></em> is currently mounted, or whether a
+medium is present.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>volume</code></em> :</span></td>
+<td> a <a href="ThunarVfsVolume.html" title="ThunarVfsVolume"><span class="type">ThunarVfsVolume</span></a> instance.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the status for <em class="parameter"><code>volume</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2623185"></a><h3>
+<a name="thunar-vfs-volume-get-mount-point"></a>thunar_vfs_volume_get_mount_point ()</h3>
+<a class="indexterm" name="id2623196"></a><pre class="programlisting"><a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a>* thunar_vfs_volume_get_mount_point
+ (<a href="ThunarVfsVolume.html" title="ThunarVfsVolume">ThunarVfsVolume</a> *volume);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>volume</code></em> :</span></td>
+<td> a <a href="ThunarVfsVolume.html" title="ThunarVfsVolume"><span class="type">ThunarVfsVolume</span></a> instance.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the path which identifies the path where
+ the volume will be mounted (or is already
+ mounted).
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2623257"></a><h3>
+<a name="thunar-vfs-volume-is-mounted"></a>thunar_vfs_volume_is_mounted ()</h3>
+<a class="indexterm" name="id2623266"></a><pre class="programlisting">gboolean thunar_vfs_volume_is_mounted (<a href="ThunarVfsVolume.html" title="ThunarVfsVolume">ThunarVfsVolume</a> *volume);</pre>
+<p>
+Determines whether <em class="parameter"><code>volume</code></em> is currently mounted into the
+filesystem hierarchy.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>volume</code></em> :</span></td>
+<td> a <a href="ThunarVfsVolume.html" title="ThunarVfsVolume"><span class="type">ThunarVfsVolume</span></a> instance.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> <code class="literal">TRUE</code> if <em class="parameter"><code>volume</code></em> is mounted, else <code class="literal">FALSE</code>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2623349"></a><h3>
+<a name="thunar-vfs-volume-is-present"></a>thunar_vfs_volume_is_present ()</h3>
+<a class="indexterm" name="id2623426"></a><pre class="programlisting">gboolean thunar_vfs_volume_is_present (<a href="ThunarVfsVolume.html" title="ThunarVfsVolume">ThunarVfsVolume</a> *volume);</pre>
+<p>
+Determines whether a medium is currently inserted for
+<em class="parameter"><code>volume</code></em>, e.g. for a CD-ROM drive, this will be <code class="literal">TRUE</code>
+only if a disc is present in the slot.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>volume</code></em> :</span></td>
+<td> a <a href="ThunarVfsVolume.html" title="ThunarVfsVolume"><span class="type">ThunarVfsVolume</span></a> instance.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> <code class="literal">TRUE</code> if <em class="parameter"><code>volume</code></em> is present, else <code class="literal">FALSE</code>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2623516"></a><h3>
+<a name="thunar-vfs-volume-is-removable"></a>thunar_vfs_volume_is_removable ()</h3>
+<a class="indexterm" name="id2623526"></a><pre class="programlisting">gboolean thunar_vfs_volume_is_removable (<a href="ThunarVfsVolume.html" title="ThunarVfsVolume">ThunarVfsVolume</a> *volume);</pre>
+<p>
+Determines whether <em class="parameter"><code>volume</code></em> is a removable device, for example
+a CD-ROM or a floppy drive.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>volume</code></em> :</span></td>
+<td> a <a href="ThunarVfsVolume.html" title="ThunarVfsVolume"><span class="type">ThunarVfsVolume</span></a> instance.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> <code class="literal">TRUE</code> if <em class="parameter"><code>volume</code></em> is a removable device, else <code class="literal">FALSE</code>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2623609"></a><h3>
+<a name="thunar-vfs-volume-get-free-space"></a>thunar_vfs_volume_get_free_space ()</h3>
+<a class="indexterm" name="id2623621"></a><pre class="programlisting">gboolean thunar_vfs_volume_get_free_space
+ (<a href="ThunarVfsVolume.html" title="ThunarVfsVolume">ThunarVfsVolume</a> *volume,
+ <a href="thunar-vfs-Basic-Types.html#ThunarVfsFileSize">ThunarVfsFileSize</a> *free_space_return);</pre>
+<p>
+Tries to determine the number of available bytes on the specified
+<em class="parameter"><code>volume</code></em> and places the result to the memory pointed to by
+<em class="parameter"><code>free_space_return</code></em>. The returned amount of bytes represents the
+space available to the current user, which may be different from
+the total free amount.
+</p>
+<p>
+If <em class="parameter"><code>volume</code></em> is unable to determine the free space, <code class="literal">FALSE</code> will be
+returned and <em class="parameter"><code>free_space_return</code></em> won't be set.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>volume</code></em> :</span></td>
+<td> a <a href="ThunarVfsVolume.html" title="ThunarVfsVolume"><span class="type">ThunarVfsVolume</span></a> instance.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>free_space_return</code></em> :</span></td>
+<td> location to store the free space to.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> <code class="literal">TRUE</code> if the free amount was determined successfully,
+ else <code class="literal">FALSE</code>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2623745"></a><h3>
+<a name="thunar-vfs-volume-lookup-icon-name"></a>thunar_vfs_volume_lookup_icon_name ()</h3>
+<a class="indexterm" name="id2623756"></a><pre class="programlisting">const gchar* thunar_vfs_volume_lookup_icon_name
+ (<a href="ThunarVfsVolume.html" title="ThunarVfsVolume">ThunarVfsVolume</a> *volume,
+ GtkIconTheme *icon_theme);</pre>
+<p>
+Tries to find a suitable icon for <em class="parameter"><code>volume</code></em> in the given <em class="parameter"><code>icon_theme</code></em> and
+returns its name. If no suitable icon is found in <em class="parameter"><code>icon_theme</code></em>, then
+a fallback icon name will be returned. This way you can always count
+on this method to return a valid string.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>volume</code></em> :</span></td>
+<td> a <a href="ThunarVfsVolume.html" title="ThunarVfsVolume"><span class="type">ThunarVfsVolume</span></a> instance.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>icon_theme</code></em> :</span></td>
+<td> a <span class="type">GtkIconTheme</span> instance.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the icon name.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2623862"></a><h3>
+<a name="thunar-vfs-volume-changed"></a>thunar_vfs_volume_changed ()</h3>
+<a class="indexterm" name="id2623870"></a><pre class="programlisting">void thunar_vfs_volume_changed (<a href="ThunarVfsVolume.html" title="ThunarVfsVolume">ThunarVfsVolume</a> *volume);</pre>
+<p>
+Emits the "changed" signal on <em class="parameter"><code>volume</code></em>. This function should
+only be used by implementations of the <a href="ThunarVfsVolume.html" title="ThunarVfsVolume"><span class="type">ThunarVfsVolume</span></a>
+interface.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><em class="parameter"><code>volume</code></em> :</span></td>
+<td> a <a href="ThunarVfsVolume.html" title="ThunarVfsVolume"><span class="type">ThunarVfsVolume</span></a> instance.
+</td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="volume-handling.html"><b><< Part VI. Volume Handling</b></a></td>
+<td align="right"><a accesskey="n" href="ThunarVfsVolumeManager.html"><b>ThunarVfsVolumeManager >></b></a></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/ThunarVfsVolumeManager.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/ThunarVfsVolumeManager.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/ThunarVfsVolumeManager.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,296 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>ThunarVfsVolumeManager</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar-VFS Reference Manual">
+<link rel="up" href="volume-handling.html" title="Part VI. Volume Handling">
+<link rel="prev" href="ThunarVfsVolume.html" title="ThunarVfsVolume">
+<link rel="next" href="ix01.html" title="Index">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="introduction.html" title="Part I. Introduction">
+<link rel="part" href="fundamentals.html" title="Part II. Fundamentals">
+<link rel="part" href="filesystem-monitoring.html" title="Part III. Filesystem Monitoring">
+<link rel="part" href="mime-types.html" title="Part IV. MIME Types">
+<link rel="part" href="users-and-groups-handling.html" title="Part V. Users and Groups Handling">
+<link rel="part" href="volume-handling.html" title="Part VI. Volume Handling">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="ThunarVfsVolume.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="volume-handling.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Thunar-VFS Reference Manual</th>
+<td><a accesskey="n" href="ix01.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="ThunarVfsVolumeManager"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">ThunarVfsVolumeManager</span></h2>
+<p>ThunarVfsVolumeManager — </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+ <a href="ThunarVfsVolumeManager.html#ThunarVfsVolumeManagerIface">ThunarVfsVolumeManagerIface</a>;
+ <a href="ThunarVfsVolumeManager.html#ThunarVfsVolumeManager-struct">ThunarVfsVolumeManager</a>;
+<a href="ThunarVfsVolumeManager.html" title="ThunarVfsVolumeManager">ThunarVfsVolumeManager</a>* <a href="ThunarVfsVolumeManager.html#thunar-vfs-volume-manager-get-default">thunar_vfs_volume_manager_get_default</a>
+ (void);
+<a href="ThunarVfsVolume.html" title="ThunarVfsVolume">ThunarVfsVolume</a>* <a href="ThunarVfsVolumeManager.html#thunar-vfs-volume-manager-get-volume-by-info">thunar_vfs_volume_manager_get_volume_by_info</a>
+ (<a href="ThunarVfsVolumeManager.html" title="ThunarVfsVolumeManager">ThunarVfsVolumeManager</a> *manager,
+ const <a href="thunar-vfs-ThunarVfsInfo.html#ThunarVfsInfo">ThunarVfsInfo</a> *info);
+GList* <a href="ThunarVfsVolumeManager.html#thunar-vfs-volume-manager-get-volumes">thunar_vfs_volume_manager_get_volumes</a>
+ (<a href="ThunarVfsVolumeManager.html" title="ThunarVfsVolumeManager">ThunarVfsVolumeManager</a> *manager);
+void <a href="ThunarVfsVolumeManager.html#thunar-vfs-volume-manager-volumes-added">thunar_vfs_volume_manager_volumes_added</a>
+ (<a href="ThunarVfsVolumeManager.html" title="ThunarVfsVolumeManager">ThunarVfsVolumeManager</a> *manager,
+ GList *volumes);
+void <a href="ThunarVfsVolumeManager.html#thunar-vfs-volume-manager-volumes-removed">thunar_vfs_volume_manager_volumes_removed</a>
+ (<a href="ThunarVfsVolumeManager.html" title="ThunarVfsVolumeManager">ThunarVfsVolumeManager</a> *manager,
+ GList *volumes);
+
+
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2625949"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+
+ GInterface
+ +----ThunarVfsVolumeManager
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2625968"></a><h2>Prerequisites</h2>
+<p>
+ThunarVfsVolumeManager requires
+ GObject.</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2625984"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2625993"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2625998"></a><h3>
+<a name="ThunarVfsVolumeManagerIface"></a>ThunarVfsVolumeManagerIface</h3>
+<a class="indexterm" name="id2626007"></a><pre class="programlisting">typedef struct {
+ GTypeInterface __parent__;
+
+ /* methods */
+ ThunarVfsVolume *(*get_volume_by_info) (ThunarVfsVolumeManager *manager,
+ const ThunarVfsInfo *info);
+ GList *(*get_volumes) (ThunarVfsVolumeManager *manager);
+
+ /* signals */
+ void (*volumes_added) (ThunarVfsVolumeManager *manager,
+ GList *volumes);
+ void (*volumes_removed) (ThunarVfsVolumeManager *manager,
+ GList *volumes);
+} ThunarVfsVolumeManagerIface;
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2626021"></a><h3>
+<a name="ThunarVfsVolumeManager-struct"></a>ThunarVfsVolumeManager</h3>
+<a class="indexterm" name="id2626029"></a><pre class="programlisting">typedef struct _ThunarVfsVolumeManager ThunarVfsVolumeManager;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2626044"></a><h3>
+<a name="thunar-vfs-volume-manager-get-default"></a>thunar_vfs_volume_manager_get_default ()</h3>
+<a class="indexterm" name="id2626056"></a><pre class="programlisting"><a href="ThunarVfsVolumeManager.html" title="ThunarVfsVolumeManager">ThunarVfsVolumeManager</a>* thunar_vfs_volume_manager_get_default
+ (void);</pre>
+<p>
+Returns the default, shared <a href="ThunarVfsVolumeManager.html" title="ThunarVfsVolumeManager"><span class="type">ThunarVfsVolumeManager</span></a> instance
+for this system. This function automatically determines, which
+implementation of <a href="ThunarVfsVolumeManager.html" title="ThunarVfsVolumeManager"><span class="type">ThunarVfsVolumeManager</span></a> should be used for
+the target system and returns an instance of that class, which
+is shared among all modules using the volume manager facility.
+</p>
+<p>
+Call <code class="function">g_object_unref()</code> on the returned object when you are
+done with it.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the shared <a href="ThunarVfsVolumeManager.html" title="ThunarVfsVolumeManager"><span class="type">ThunarVfsVolumeManager</span></a> instance.
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2626124"></a><h3>
+<a name="thunar-vfs-volume-manager-get-volume-by-info"></a>thunar_vfs_volume_manager_get_volume_by_info ()</h3>
+<a class="indexterm" name="id2626136"></a><pre class="programlisting"><a href="ThunarVfsVolume.html" title="ThunarVfsVolume">ThunarVfsVolume</a>* thunar_vfs_volume_manager_get_volume_by_info
+ (<a href="ThunarVfsVolumeManager.html" title="ThunarVfsVolumeManager">ThunarVfsVolumeManager</a> *manager,
+ const <a href="thunar-vfs-ThunarVfsInfo.html#ThunarVfsInfo">ThunarVfsInfo</a> *info);</pre>
+<p>
+Tries to lookup the <a href="ThunarVfsVolume.html" title="ThunarVfsVolume"><span class="type">ThunarVfsVolume</span></a> on which <em class="parameter"><code>info</code></em> is
+located. If <em class="parameter"><code>manager</code></em> doesn't know a <a href="ThunarVfsVolume.html" title="ThunarVfsVolume"><span class="type">ThunarVfsVolume</span></a>
+for <em class="parameter"><code>info</code></em>, <code class="literal">NULL</code> will be returned.
+</p>
+<p>
+The returned <a href="ThunarVfsVolume.html" title="ThunarVfsVolume"><span class="type">ThunarVfsVolume</span></a> (if any) is owned by
+<em class="parameter"><code>manager</code></em> and must not be freed by the caller.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>manager</code></em> :</span></td>
+<td> a <a href="ThunarVfsVolumeManager.html" title="ThunarVfsVolumeManager"><span class="type">ThunarVfsVolumeManager</span></a> instance.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>info</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsInfo.html#ThunarVfsInfo"><span class="type">ThunarVfsInfo</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the <a href="ThunarVfsVolume.html" title="ThunarVfsVolume"><span class="type">ThunarVfsVolume</span></a>, on which <em class="parameter"><code>info</code></em> is
+ located or <code class="literal">NULL</code>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2626290"></a><h3>
+<a name="thunar-vfs-volume-manager-get-volumes"></a>thunar_vfs_volume_manager_get_volumes ()</h3>
+<a class="indexterm" name="id2626301"></a><pre class="programlisting">GList* thunar_vfs_volume_manager_get_volumes
+ (<a href="ThunarVfsVolumeManager.html" title="ThunarVfsVolumeManager">ThunarVfsVolumeManager</a> *manager);</pre>
+<p>
+Returns all <a href="ThunarVfsVolume.html" title="ThunarVfsVolume"><span class="type">ThunarVfsVolume</span></a>s currently known for
+<em class="parameter"><code>manager</code></em>. The returned list is owned by <em class="parameter"><code>manager</code></em> and should
+therefore considered constant in the caller.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>manager</code></em> :</span></td>
+<td> a <a href="ThunarVfsVolumeManager.html" title="ThunarVfsVolumeManager"><span class="type">ThunarVfsVolumeManager</span></a> instance.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the list of volumes known for <em class="parameter"><code>manager</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2626388"></a><h3>
+<a name="thunar-vfs-volume-manager-volumes-added"></a>thunar_vfs_volume_manager_volumes_added ()</h3>
+<a class="indexterm" name="id2626400"></a><pre class="programlisting">void thunar_vfs_volume_manager_volumes_added
+ (<a href="ThunarVfsVolumeManager.html" title="ThunarVfsVolumeManager">ThunarVfsVolumeManager</a> *manager,
+ GList *volumes);</pre>
+<p>
+Emits the "volumes-added" signal on <em class="parameter"><code>manager</code></em> using the
+given <em class="parameter"><code>volumes</code></em>.
+</p>
+<p>
+This method should only be used by classes implementing
+the <a href="ThunarVfsVolumeManager.html" title="ThunarVfsVolumeManager"><span class="type">ThunarVfsVolumeManager</span></a> interface.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>manager</code></em> :</span></td>
+<td> a <a href="ThunarVfsVolumeManager.html" title="ThunarVfsVolumeManager"><span class="type">ThunarVfsVolumeManager</span></a> instance.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>volumes</code></em> :</span></td>
+<td> a list of <a href="ThunarVfsVolume.html" title="ThunarVfsVolume"><span class="type">ThunarVfsVolume</span></a>s.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2626568"></a><h3>
+<a name="thunar-vfs-volume-manager-volumes-removed"></a>thunar_vfs_volume_manager_volumes_removed ()</h3>
+<a class="indexterm" name="id2626580"></a><pre class="programlisting">void thunar_vfs_volume_manager_volumes_removed
+ (<a href="ThunarVfsVolumeManager.html" title="ThunarVfsVolumeManager">ThunarVfsVolumeManager</a> *manager,
+ GList *volumes);</pre>
+<p>
+Emits the "volumes-removed" signal on <em class="parameter"><code>manager</code></em> using
+the given <em class="parameter"><code>volumes</code></em>.
+</p>
+<p>
+This method should only be used by classes implementing
+the <a href="ThunarVfsVolumeManager.html" title="ThunarVfsVolumeManager"><span class="type">ThunarVfsVolumeManager</span></a> interface.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>manager</code></em> :</span></td>
+<td> a <a href="ThunarVfsVolumeManager.html" title="ThunarVfsVolumeManager"><span class="type">ThunarVfsVolumeManager</span></a> instance.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>volumes</code></em> :</span></td>
+<td> a list of <a href="ThunarVfsVolume.html" title="ThunarVfsVolume"><span class="type">ThunarVfsVolume</span></a>s.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="ThunarVfsVolume.html"><b><< ThunarVfsVolume</b></a></td>
+<td align="right"><a accesskey="n" href="ix01.html"><b>Index >></b></a></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/filesystem-monitoring.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/filesystem-monitoring.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/filesystem-monitoring.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,34 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Part III. Filesystem Monitoring</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar-VFS Reference Manual">
+<link rel="up" href="index.html" title="Thunar-VFS Reference Manual">
+<link rel="prev" href="thunar-vfs-Utility-Functions.html" title="Utility Functions">
+<link rel="next" href="ThunarVfsMonitor.html" title="ThunarVfsMonitor">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="introduction.html" title="Part I. Introduction">
+<link rel="part" href="fundamentals.html" title="Part II. Fundamentals">
+<link rel="part" href="filesystem-monitoring.html" title="Part III. Filesystem Monitoring">
+<link rel="part" href="mime-types.html" title="Part IV. MIME Types">
+<link rel="part" href="users-and-groups-handling.html" title="Part V. Users and Groups Handling">
+<link rel="part" href="volume-handling.html" title="Part VI. Volume Handling">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="thunar-vfs-Utility-Functions.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Thunar-VFS Reference Manual</th>
+<td><a accesskey="n" href="ThunarVfsMonitor.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="part" lang="en"><div class="titlepage"><div><div><h1 class="title">
+<a name="filesystem-monitoring"></a>Filesystem Monitoring</h1></div></div></div></div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="thunar-vfs-Utility-Functions.html"><b><< Utility Functions</b></a></td>
+<td align="right"><a accesskey="n" href="ThunarVfsMonitor.html"><b>ThunarVfsMonitor >></b></a></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/fundamentals.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/fundamentals.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/fundamentals.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,34 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Part II. Fundamentals</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar-VFS Reference Manual">
+<link rel="up" href="index.html" title="Thunar-VFS Reference Manual">
+<link rel="prev" href="introduction.html" title="Part I. Introduction">
+<link rel="next" href="thunar-vfs-Initialization-and-Shutdown.html" title="Initialization and Shutdown">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="introduction.html" title="Part I. Introduction">
+<link rel="part" href="fundamentals.html" title="Part II. Fundamentals">
+<link rel="part" href="filesystem-monitoring.html" title="Part III. Filesystem Monitoring">
+<link rel="part" href="mime-types.html" title="Part IV. MIME Types">
+<link rel="part" href="users-and-groups-handling.html" title="Part V. Users and Groups Handling">
+<link rel="part" href="volume-handling.html" title="Part VI. Volume Handling">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="introduction.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Thunar-VFS Reference Manual</th>
+<td><a accesskey="n" href="thunar-vfs-Initialization-and-Shutdown.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="part" lang="en"><div class="titlepage"><div><div><h1 class="title">
+<a name="fundamentals"></a>Fundamentals</h1></div></div></div></div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="introduction.html"><b><< Part I. Introduction</b></a></td>
+<td align="right"><a accesskey="n" href="thunar-vfs-Initialization-and-Shutdown.html"><b>Initialization and Shutdown >></b></a></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/home.png
===================================================================
(Binary files differ)
Property changes on: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/home.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/index.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/index.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/index.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,116 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Thunar-VFS Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar-VFS Reference Manual">
+<link rel="next" href="introduction.html" title="Part I. Introduction">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="introduction.html" title="Part I. Introduction">
+<link rel="part" href="fundamentals.html" title="Part II. Fundamentals">
+<link rel="part" href="filesystem-monitoring.html" title="Part III. Filesystem Monitoring">
+<link rel="part" href="mime-types.html" title="Part IV. MIME Types">
+<link rel="part" href="users-and-groups-handling.html" title="Part V. Users and Groups Handling">
+<link rel="part" href="volume-handling.html" title="Part VI. Volume Handling">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="book" lang="en">
+<div class="titlepage">
+<div>
+<div><table class="navigation" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">Thunar-VFS Reference Manual</p></th></tr></table></div>
+<div><div class="authorgroup"><div class="author">
+<h3 class="author">
+<span class="firstname">Benedikt</span> <span class="surname">Meurer</span>
+</h3>
+<div class="affiliation">
+<div class="address"><p><code class="email"><<a href="mailto:benny at xfce.org">benny at xfce.org</a>></code></p></div>
+<span class="orgname">os-cillation<br></span><span class="orgdiv">System development<br></span><span class="jobtitle">Software developer<br></span>
+</div>
+</div></div></div>
+<div><p class="releaseinfo">Version 0.1.4pre-alpha-r18844
+</p></div>
+<div><p class="copyright">Copyright © 2005 Benedikt Meurer</p></div>
+<div><div class="legalnotice">
+<a name="legalnotice"></a><p>
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.1 or
+ any later version published by the Free Software Foundation; with no
+ Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+ Texts. The complete license text is available from the <a href="http://www.gnu.org/" target="_top">Free Software Foundation</a>.
+ </p>
+</div></div>
+<div><p class="pubdate">September 2005</p></div>
+</div>
+<hr>
+</div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="part"><a href="introduction.html">I. Introduction</a></span></dt>
+<dt><span class="part"><a href="fundamentals.html">II. Fundamentals</a></span></dt>
+<dd><dl>
+<dt>
+<span class="refentrytitle"><a href="thunar-vfs-Initialization-and-Shutdown.html">Initialization and Shutdown</a></span><span class="refpurpose"> - </span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="thunar-vfs-Basic-Types.html">Basic Types</a></span><span class="refpurpose"> - </span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="thunar-vfs-ThunarVfsPath.html">ThunarVfsPath</a></span><span class="refpurpose"> - </span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="thunar-vfs-ThunarVfsInfo.html">ThunarVfsInfo</a></span><span class="refpurpose"> - </span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="thunar-vfs-Utility-Functions.html">Utility Functions</a></span><span class="refpurpose"> - </span>
+</dt>
+</dl></dd>
+<dt><span class="part"><a href="filesystem-monitoring.html">III. Filesystem Monitoring</a></span></dt>
+<dd><dl><dt>
+<span class="refentrytitle"><a href="ThunarVfsMonitor.html">ThunarVfsMonitor</a></span><span class="refpurpose"> - </span>
+</dt></dl></dd>
+<dt><span class="part"><a href="mime-types.html">IV. MIME Types</a></span></dt>
+<dd><dl>
+<dt>
+<span class="refentrytitle"><a href="thunar-vfs-ThunarVfsMimeInfo.html">ThunarVfsMimeInfo</a></span><span class="refpurpose"> - </span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="ThunarVfsMimeDatabase.html">ThunarVfsMimeDatabase</a></span><span class="refpurpose"> - </span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="thunar-vfs-ThunarVfsMimeApplication.html">ThunarVfsMimeApplication</a></span><span class="refpurpose"> - </span>
+</dt>
+</dl></dd>
+<dt><span class="part"><a href="users-and-groups-handling.html">V. Users and Groups Handling</a></span></dt>
+<dd><dl>
+<dt>
+<span class="refentrytitle"><a href="ThunarVfsUser.html">ThunarVfsUser</a></span><span class="refpurpose"> - </span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="ThunarVfsGroup.html">ThunarVfsGroup</a></span><span class="refpurpose"> - </span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="ThunarVfsUserManager.html">ThunarVfsUserManager</a></span><span class="refpurpose"> - </span>
+</dt>
+</dl></dd>
+<dt><span class="part"><a href="volume-handling.html">VI. Volume Handling</a></span></dt>
+<dd><dl>
+<dt>
+<span class="refentrytitle"><a href="ThunarVfsVolume.html">ThunarVfsVolume</a></span><span class="refpurpose"> - </span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="ThunarVfsVolumeManager.html">ThunarVfsVolumeManager</a></span><span class="refpurpose"> - </span>
+</dt>
+</dl></dd>
+<dt><span class="index"><a href="ix01.html">Index</a></span></dt>
+</dl>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"></td>
+<td align="right"><a accesskey="n" href="introduction.html"><b>Part I. Introduction >></b></a></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/index.sgml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/index.sgml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/index.sgml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,142 @@
+<ANCHOR id="thunar-vfs-Initialization-and-Shutdown" href="thunar-vfs/thunar-vfs-Initialization-and-Shutdown.html">
+<ANCHOR id="thunar-vfs-init" href="thunar-vfs/thunar-vfs-Initialization-and-Shutdown.html#thunar-vfs-init">
+<ANCHOR id="thunar-vfs-shutdown" href="thunar-vfs/thunar-vfs-Initialization-and-Shutdown.html#thunar-vfs-shutdown">
+<ANCHOR id="thunar-vfs-Basic-Types" href="thunar-vfs/thunar-vfs-Basic-Types.html">
+<ANCHOR id="ThunarVfsFileType" href="thunar-vfs/thunar-vfs-Basic-Types.html#ThunarVfsFileType">
+<ANCHOR id="ThunarVfsFileMode" href="thunar-vfs/thunar-vfs-Basic-Types.html#ThunarVfsFileMode">
+<ANCHOR id="ThunarVfsFileFlags" href="thunar-vfs/thunar-vfs-Basic-Types.html#ThunarVfsFileFlags">
+<ANCHOR id="ThunarVfsFileDevice" href="thunar-vfs/thunar-vfs-Basic-Types.html#ThunarVfsFileDevice">
+<ANCHOR id="ThunarVfsFileInode" href="thunar-vfs/thunar-vfs-Basic-Types.html#ThunarVfsFileInode">
+<ANCHOR id="ThunarVfsFileSize" href="thunar-vfs/thunar-vfs-Basic-Types.html#ThunarVfsFileSize">
+<ANCHOR id="ThunarVfsFileTime" href="thunar-vfs/thunar-vfs-Basic-Types.html#ThunarVfsFileTime">
+<ANCHOR id="ThunarVfsGroupId" href="thunar-vfs/thunar-vfs-Basic-Types.html#ThunarVfsGroupId">
+<ANCHOR id="ThunarVfsUserId" href="thunar-vfs/thunar-vfs-Basic-Types.html#ThunarVfsUserId">
+<ANCHOR id="thunar-vfs-ThunarVfsPath" href="thunar-vfs/thunar-vfs-ThunarVfsPath.html">
+<ANCHOR id="ThunarVfsPath" href="thunar-vfs/thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">
+<ANCHOR id="thunar-vfs-path-new" href="thunar-vfs/thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-new">
+<ANCHOR id="thunar-vfs-path-get-for-home" href="thunar-vfs/thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-get-for-home">
+<ANCHOR id="thunar-vfs-path-get-for-root" href="thunar-vfs/thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-get-for-root">
+<ANCHOR id="thunar-vfs-path-ref" href="thunar-vfs/thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-ref">
+<ANCHOR id="thunar-vfs-path-unref" href="thunar-vfs/thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-unref">
+<ANCHOR id="thunar-vfs-path-hash" href="thunar-vfs/thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-hash">
+<ANCHOR id="thunar-vfs-path-equal" href="thunar-vfs/thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-equal">
+<ANCHOR id="thunar-vfs-path-is-home" href="thunar-vfs/thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-is-home">
+<ANCHOR id="thunar-vfs-path-is-root" href="thunar-vfs/thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-is-root">
+<ANCHOR id="thunar-vfs-path-relative" href="thunar-vfs/thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-relative">
+<ANCHOR id="thunar-vfs-path-get-name" href="thunar-vfs/thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-get-name">
+<ANCHOR id="thunar-vfs-path-get-parent" href="thunar-vfs/thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-get-parent">
+<ANCHOR id="thunar-vfs-path-dup-string" href="thunar-vfs/thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-dup-string">
+<ANCHOR id="thunar-vfs-path-to-string" href="thunar-vfs/thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-to-string">
+<ANCHOR id="thunar-vfs-path-dup-uri" href="thunar-vfs/thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-dup-uri">
+<ANCHOR id="thunar-vfs-path-to-uri" href="thunar-vfs/thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-to-uri">
+<ANCHOR id="thunar-vfs-path-list-from-string" href="thunar-vfs/thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-list-from-string">
+<ANCHOR id="thunar-vfs-path-list-to-string" href="thunar-vfs/thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-list-to-string">
+<ANCHOR id="thunar-vfs-path-list-append" href="thunar-vfs/thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-list-append">
+<ANCHOR id="thunar-vfs-path-list-prepend" href="thunar-vfs/thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-list-prepend">
+<ANCHOR id="thunar-vfs-path-list-copy" href="thunar-vfs/thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-list-copy">
+<ANCHOR id="thunar-vfs-path-list-free" href="thunar-vfs/thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-list-free">
+<ANCHOR id="thunar-vfs-ThunarVfsInfo" href="thunar-vfs/thunar-vfs-ThunarVfsInfo.html">
+<ANCHOR id="ThunarVfsInfo" href="thunar-vfs/thunar-vfs-ThunarVfsInfo.html#ThunarVfsInfo">
+<ANCHOR id="thunar-vfs-info-new-for-path" href="thunar-vfs/thunar-vfs-ThunarVfsInfo.html#thunar-vfs-info-new-for-path">
+<ANCHOR id="thunar-vfs-info-ref" href="thunar-vfs/thunar-vfs-ThunarVfsInfo.html#thunar-vfs-info-ref">
+<ANCHOR id="thunar-vfs-info-unref" href="thunar-vfs/thunar-vfs-ThunarVfsInfo.html#thunar-vfs-info-unref">
+<ANCHOR id="thunar-vfs-info-execute" href="thunar-vfs/thunar-vfs-ThunarVfsInfo.html#thunar-vfs-info-execute">
+<ANCHOR id="thunar-vfs-info-rename" href="thunar-vfs/thunar-vfs-ThunarVfsInfo.html#thunar-vfs-info-rename">
+<ANCHOR id="thunar-vfs-info-matches" href="thunar-vfs/thunar-vfs-ThunarVfsInfo.html#thunar-vfs-info-matches">
+<ANCHOR id="thunar-vfs-info-list-free" href="thunar-vfs/thunar-vfs-ThunarVfsInfo.html#thunar-vfs-info-list-free">
+<ANCHOR id="thunar-vfs-Utility-Functions" href="thunar-vfs/thunar-vfs-Utility-Functions.html">
+<ANCHOR id="thunar-vfs-humanize-size" href="thunar-vfs/thunar-vfs-Utility-Functions.html#thunar-vfs-humanize-size">
+<ANCHOR id="ThunarVfsMonitor" href="thunar-vfs/ThunarVfsMonitor.html">
+<ANCHOR id="ThunarVfsMonitor-struct" href="thunar-vfs/ThunarVfsMonitor.html#ThunarVfsMonitor-struct">
+<ANCHOR id="ThunarVfsMonitorEvent" href="thunar-vfs/ThunarVfsMonitor.html#ThunarVfsMonitorEvent">
+<ANCHOR id="ThunarVfsMonitorHandle" href="thunar-vfs/ThunarVfsMonitor.html#ThunarVfsMonitorHandle">
+<ANCHOR id="ThunarVfsMonitorCallback" href="thunar-vfs/ThunarVfsMonitor.html#ThunarVfsMonitorCallback">
+<ANCHOR id="thunar-vfs-monitor-get-default" href="thunar-vfs/ThunarVfsMonitor.html#thunar-vfs-monitor-get-default">
+<ANCHOR id="thunar-vfs-monitor-add-directory" href="thunar-vfs/ThunarVfsMonitor.html#thunar-vfs-monitor-add-directory">
+<ANCHOR id="thunar-vfs-monitor-add-file" href="thunar-vfs/ThunarVfsMonitor.html#thunar-vfs-monitor-add-file">
+<ANCHOR id="thunar-vfs-monitor-remove" href="thunar-vfs/ThunarVfsMonitor.html#thunar-vfs-monitor-remove">
+<ANCHOR id="thunar-vfs-monitor-feed" href="thunar-vfs/ThunarVfsMonitor.html#thunar-vfs-monitor-feed">
+<ANCHOR id="thunar-vfs-monitor-wait" href="thunar-vfs/ThunarVfsMonitor.html#thunar-vfs-monitor-wait">
+<ANCHOR id="thunar-vfs-ThunarVfsMimeInfo" href="thunar-vfs/thunar-vfs-ThunarVfsMimeInfo.html">
+<ANCHOR id="ThunarVfsMimeInfo" href="thunar-vfs/thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">
+<ANCHOR id="thunar-vfs-mime-info-new" href="thunar-vfs/thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-new">
+<ANCHOR id="thunar-vfs-mime-info-ref" href="thunar-vfs/thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-ref">
+<ANCHOR id="thunar-vfs-mime-info-unref" href="thunar-vfs/thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-unref">
+<ANCHOR id="thunar-vfs-mime-info-get-comment" href="thunar-vfs/thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-get-comment">
+<ANCHOR id="thunar-vfs-mime-info-get-name" href="thunar-vfs/thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-get-name">
+<ANCHOR id="thunar-vfs-mime-info-get-media" href="thunar-vfs/thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-get-media">
+<ANCHOR id="thunar-vfs-mime-info-get-subtype" href="thunar-vfs/thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-get-subtype">
+<ANCHOR id="thunar-vfs-mime-info-hash" href="thunar-vfs/thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-hash">
+<ANCHOR id="thunar-vfs-mime-info-equal" href="thunar-vfs/thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-equal">
+<ANCHOR id="thunar-vfs-mime-info-lookup-icon-name" href="thunar-vfs/thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-lookup-icon-name">
+<ANCHOR id="thunar-vfs-mime-info-list-free" href="thunar-vfs/thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-list-free">
+<ANCHOR id="ThunarVfsMimeDatabase" href="thunar-vfs/ThunarVfsMimeDatabase.html">
+<ANCHOR id="ThunarVfsMimeDatabase-struct" href="thunar-vfs/ThunarVfsMimeDatabase.html#ThunarVfsMimeDatabase-struct">
+<ANCHOR id="thunar-vfs-mime-database-get-default" href="thunar-vfs/ThunarVfsMimeDatabase.html#thunar-vfs-mime-database-get-default">
+<ANCHOR id="thunar-vfs-mime-database-get-info" href="thunar-vfs/ThunarVfsMimeDatabase.html#thunar-vfs-mime-database-get-info">
+<ANCHOR id="thunar-vfs-mime-database-get-info-for-data" href="thunar-vfs/ThunarVfsMimeDatabase.html#thunar-vfs-mime-database-get-info-for-data">
+<ANCHOR id="thunar-vfs-mime-database-get-info-for-name" href="thunar-vfs/ThunarVfsMimeDatabase.html#thunar-vfs-mime-database-get-info-for-name">
+<ANCHOR id="thunar-vfs-mime-database-get-info-for-file" href="thunar-vfs/ThunarVfsMimeDatabase.html#thunar-vfs-mime-database-get-info-for-file">
+<ANCHOR id="thunar-vfs-mime-database-get-infos-for-info" href="thunar-vfs/ThunarVfsMimeDatabase.html#thunar-vfs-mime-database-get-infos-for-info">
+<ANCHOR id="thunar-vfs-mime-database-get-applications" href="thunar-vfs/ThunarVfsMimeDatabase.html#thunar-vfs-mime-database-get-applications">
+<ANCHOR id="thunar-vfs-mime-database-get-default-application" href="thunar-vfs/ThunarVfsMimeDatabase.html#thunar-vfs-mime-database-get-default-application">
+<ANCHOR id="thunar-vfs-mime-database-set-default-application" href="thunar-vfs/ThunarVfsMimeDatabase.html#thunar-vfs-mime-database-set-default-application">
+<ANCHOR id="thunar-vfs-mime-database-add-application" href="thunar-vfs/ThunarVfsMimeDatabase.html#thunar-vfs-mime-database-add-application">
+<ANCHOR id="thunar-vfs-ThunarVfsMimeApplication" href="thunar-vfs/thunar-vfs-ThunarVfsMimeApplication.html">
+<ANCHOR id="THUNAR-VFS-MIME-APPLICATION-ERROR:CAPS" href="thunar-vfs/thunar-vfs-ThunarVfsMimeApplication.html#THUNAR-VFS-MIME-APPLICATION-ERROR:CAPS">
+<ANCHOR id="ThunarVfsMimeApplicationError" href="thunar-vfs/thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplicationError">
+<ANCHOR id="ThunarVfsMimeApplicationFlags" href="thunar-vfs/thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplicationFlags">
+<ANCHOR id="ThunarVfsMimeApplication" href="thunar-vfs/thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication">
+<ANCHOR id="thunar-vfs-mime-application-new-from-desktop-id" href="thunar-vfs/thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-new-from-desktop-id">
+<ANCHOR id="thunar-vfs-mime-application-new-from-file" href="thunar-vfs/thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-new-from-file">
+<ANCHOR id="thunar-vfs-mime-application-ref" href="thunar-vfs/thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-ref">
+<ANCHOR id="thunar-vfs-mime-application-unref" href="thunar-vfs/thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-unref">
+<ANCHOR id="thunar-vfs-mime-application-get-command" href="thunar-vfs/thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-get-command">
+<ANCHOR id="thunar-vfs-mime-application-get-desktop-id" href="thunar-vfs/thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-get-desktop-id">
+<ANCHOR id="thunar-vfs-mime-application-get-flags" href="thunar-vfs/thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-get-flags">
+<ANCHOR id="thunar-vfs-mime-application-get-name" href="thunar-vfs/thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-get-name">
+<ANCHOR id="thunar-vfs-mime-application-exec" href="thunar-vfs/thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-exec">
+<ANCHOR id="thunar-vfs-mime-application-exec-with-env" href="thunar-vfs/thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-exec-with-env">
+<ANCHOR id="thunar-vfs-mime-application-lookup-icon-name" href="thunar-vfs/thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-lookup-icon-name">
+<ANCHOR id="thunar-vfs-mime-application-hash" href="thunar-vfs/thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-hash">
+<ANCHOR id="thunar-vfs-mime-application-equal" href="thunar-vfs/thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-equal">
+<ANCHOR id="ThunarVfsUser" href="thunar-vfs/ThunarVfsUser.html">
+<ANCHOR id="ThunarVfsUser-struct" href="thunar-vfs/ThunarVfsUser.html#ThunarVfsUser-struct">
+<ANCHOR id="thunar-vfs-user-get-groups" href="thunar-vfs/ThunarVfsUser.html#thunar-vfs-user-get-groups">
+<ANCHOR id="thunar-vfs-user-get-primary-group" href="thunar-vfs/ThunarVfsUser.html#thunar-vfs-user-get-primary-group">
+<ANCHOR id="thunar-vfs-user-get-id" href="thunar-vfs/ThunarVfsUser.html#thunar-vfs-user-get-id">
+<ANCHOR id="thunar-vfs-user-get-name" href="thunar-vfs/ThunarVfsUser.html#thunar-vfs-user-get-name">
+<ANCHOR id="thunar-vfs-user-get-real-name" href="thunar-vfs/ThunarVfsUser.html#thunar-vfs-user-get-real-name">
+<ANCHOR id="thunar-vfs-user-is-me" href="thunar-vfs/ThunarVfsUser.html#thunar-vfs-user-is-me">
+<ANCHOR id="ThunarVfsGroup" href="thunar-vfs/ThunarVfsGroup.html">
+<ANCHOR id="ThunarVfsGroup-struct" href="thunar-vfs/ThunarVfsGroup.html#ThunarVfsGroup-struct">
+<ANCHOR id="thunar-vfs-group-get-id" href="thunar-vfs/ThunarVfsGroup.html#thunar-vfs-group-get-id">
+<ANCHOR id="thunar-vfs-group-get-name" href="thunar-vfs/ThunarVfsGroup.html#thunar-vfs-group-get-name">
+<ANCHOR id="ThunarVfsUserManager" href="thunar-vfs/ThunarVfsUserManager.html">
+<ANCHOR id="ThunarVfsUserManager-struct" href="thunar-vfs/ThunarVfsUserManager.html#ThunarVfsUserManager-struct">
+<ANCHOR id="thunar-vfs-user-manager-get-default" href="thunar-vfs/ThunarVfsUserManager.html#thunar-vfs-user-manager-get-default">
+<ANCHOR id="thunar-vfs-user-manager-get-group-by-id" href="thunar-vfs/ThunarVfsUserManager.html#thunar-vfs-user-manager-get-group-by-id">
+<ANCHOR id="thunar-vfs-user-manager-get-user-by-id" href="thunar-vfs/ThunarVfsUserManager.html#thunar-vfs-user-manager-get-user-by-id">
+<ANCHOR id="ThunarVfsVolume" href="thunar-vfs/ThunarVfsVolume.html">
+<ANCHOR id="ThunarVfsVolumeKind" href="thunar-vfs/ThunarVfsVolume.html#ThunarVfsVolumeKind">
+<ANCHOR id="ThunarVfsVolumeStatus" href="thunar-vfs/ThunarVfsVolume.html#ThunarVfsVolumeStatus">
+<ANCHOR id="ThunarVfsVolumeIface" href="thunar-vfs/ThunarVfsVolume.html#ThunarVfsVolumeIface">
+<ANCHOR id="ThunarVfsVolume-struct" href="thunar-vfs/ThunarVfsVolume.html#ThunarVfsVolume-struct">
+<ANCHOR id="thunar-vfs-volume-get-kind" href="thunar-vfs/ThunarVfsVolume.html#thunar-vfs-volume-get-kind">
+<ANCHOR id="thunar-vfs-volume-get-name" href="thunar-vfs/ThunarVfsVolume.html#thunar-vfs-volume-get-name">
+<ANCHOR id="thunar-vfs-volume-get-status" href="thunar-vfs/ThunarVfsVolume.html#thunar-vfs-volume-get-status">
+<ANCHOR id="thunar-vfs-volume-get-mount-point" href="thunar-vfs/ThunarVfsVolume.html#thunar-vfs-volume-get-mount-point">
+<ANCHOR id="thunar-vfs-volume-is-mounted" href="thunar-vfs/ThunarVfsVolume.html#thunar-vfs-volume-is-mounted">
+<ANCHOR id="thunar-vfs-volume-is-present" href="thunar-vfs/ThunarVfsVolume.html#thunar-vfs-volume-is-present">
+<ANCHOR id="thunar-vfs-volume-is-removable" href="thunar-vfs/ThunarVfsVolume.html#thunar-vfs-volume-is-removable">
+<ANCHOR id="thunar-vfs-volume-get-free-space" href="thunar-vfs/ThunarVfsVolume.html#thunar-vfs-volume-get-free-space">
+<ANCHOR id="thunar-vfs-volume-lookup-icon-name" href="thunar-vfs/ThunarVfsVolume.html#thunar-vfs-volume-lookup-icon-name">
+<ANCHOR id="thunar-vfs-volume-changed" href="thunar-vfs/ThunarVfsVolume.html#thunar-vfs-volume-changed">
+<ANCHOR id="ThunarVfsVolumeManager" href="thunar-vfs/ThunarVfsVolumeManager.html">
+<ANCHOR id="ThunarVfsVolumeManagerIface" href="thunar-vfs/ThunarVfsVolumeManager.html#ThunarVfsVolumeManagerIface">
+<ANCHOR id="ThunarVfsVolumeManager-struct" href="thunar-vfs/ThunarVfsVolumeManager.html#ThunarVfsVolumeManager-struct">
+<ANCHOR id="thunar-vfs-volume-manager-get-default" href="thunar-vfs/ThunarVfsVolumeManager.html#thunar-vfs-volume-manager-get-default">
+<ANCHOR id="thunar-vfs-volume-manager-get-volume-by-info" href="thunar-vfs/ThunarVfsVolumeManager.html#thunar-vfs-volume-manager-get-volume-by-info">
+<ANCHOR id="thunar-vfs-volume-manager-get-volumes" href="thunar-vfs/ThunarVfsVolumeManager.html#thunar-vfs-volume-manager-get-volumes">
+<ANCHOR id="thunar-vfs-volume-manager-volumes-added" href="thunar-vfs/ThunarVfsVolumeManager.html#thunar-vfs-volume-manager-volumes-added">
+<ANCHOR id="thunar-vfs-volume-manager-volumes-removed" href="thunar-vfs/ThunarVfsVolumeManager.html#thunar-vfs-volume-manager-volumes-removed">
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/introduction.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/introduction.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/introduction.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,34 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Part I. Introduction</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar-VFS Reference Manual">
+<link rel="up" href="index.html" title="Thunar-VFS Reference Manual">
+<link rel="prev" href="index.html" title="Thunar-VFS Reference Manual">
+<link rel="next" href="fundamentals.html" title="Part II. Fundamentals">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="introduction.html" title="Part I. Introduction">
+<link rel="part" href="fundamentals.html" title="Part II. Fundamentals">
+<link rel="part" href="filesystem-monitoring.html" title="Part III. Filesystem Monitoring">
+<link rel="part" href="mime-types.html" title="Part IV. MIME Types">
+<link rel="part" href="users-and-groups-handling.html" title="Part V. Users and Groups Handling">
+<link rel="part" href="volume-handling.html" title="Part VI. Volume Handling">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="index.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Thunar-VFS Reference Manual</th>
+<td><a accesskey="n" href="fundamentals.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="part" lang="en"><div class="titlepage"><div><div><h1 class="title">
+<a name="introduction"></a>Introduction</h1></div></div></div></div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="index.html"><b><< Thunar-VFS Reference Manual</b></a></td>
+<td align="right"><a accesskey="n" href="fundamentals.html"><b>Part II. Fundamentals >></b></a></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/ix01.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/ix01.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/ix01.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,295 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Index</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar-VFS Reference Manual">
+<link rel="up" href="index.html" title="Thunar-VFS Reference Manual">
+<link rel="prev" href="ThunarVfsVolumeManager.html" title="ThunarVfsVolumeManager">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="introduction.html" title="Part I. Introduction">
+<link rel="part" href="fundamentals.html" title="Part II. Fundamentals">
+<link rel="part" href="filesystem-monitoring.html" title="Part III. Filesystem Monitoring">
+<link rel="part" href="mime-types.html" title="Part IV. MIME Types">
+<link rel="part" href="users-and-groups-handling.html" title="Part V. Users and Groups Handling">
+<link rel="part" href="volume-handling.html" title="Part VI. Volume Handling">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="ThunarVfsVolumeManager.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Thunar-VFS Reference Manual</th>
+</tr></table>
+<div class="index">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="id2625646"></a>Index</h2></div></div></div>
+<div class="index"><div class="indexdiv">
+<h3>T</h3>
+<dl>
+<dt>ThunarVfsFileDevice, <a href="thunar-vfs-Basic-Types.html#id2590763">ThunarVfsFileDevice</a>
+</dt>
+<dt>ThunarVfsFileFlags, <a href="thunar-vfs-Basic-Types.html#id2590681">enum ThunarVfsFileFlags</a>
+</dt>
+<dt>ThunarVfsFileInode, <a href="thunar-vfs-Basic-Types.html#id2590790">ThunarVfsFileInode</a>
+</dt>
+<dt>ThunarVfsFileMode, <a href="thunar-vfs-Basic-Types.html#id2590438">enum ThunarVfsFileMode</a>
+</dt>
+<dt>ThunarVfsFileSize, <a href="thunar-vfs-Basic-Types.html#id2590817">ThunarVfsFileSize</a>
+</dt>
+<dt>ThunarVfsFileTime, <a href="thunar-vfs-Basic-Types.html#id2590843">ThunarVfsFileTime</a>
+</dt>
+<dt>ThunarVfsFileType, <a href="thunar-vfs-Basic-Types.html#id2542845">enum ThunarVfsFileType</a>
+</dt>
+<dt>ThunarVfsGroup, <a href="ThunarVfsGroup.html#id2620317">ThunarVfsGroup</a>
+</dt>
+<dt>ThunarVfsGroupId, <a href="thunar-vfs-Basic-Types.html#id2590938">ThunarVfsGroupId</a>
+</dt>
+<dt>ThunarVfsInfo, <a href="thunar-vfs-ThunarVfsInfo.html#id2599150">ThunarVfsInfo</a>
+</dt>
+<dt>ThunarVfsMimeApplication, <a href="thunar-vfs-ThunarVfsMimeApplication.html#id2613975">ThunarVfsMimeApplication</a>
+</dt>
+<dt>ThunarVfsMimeApplicationError, <a href="thunar-vfs-ThunarVfsMimeApplication.html#id2613838">enum ThunarVfsMimeApplicationError</a>
+</dt>
+<dt>ThunarVfsMimeApplicationFlags, <a href="thunar-vfs-ThunarVfsMimeApplication.html#id2613862">enum ThunarVfsMimeApplicationFlags</a>
+</dt>
+<dt>ThunarVfsMimeDatabase, <a href="ThunarVfsMimeDatabase.html#id2609040">ThunarVfsMimeDatabase</a>
+</dt>
+<dt>ThunarVfsMimeInfo, <a href="thunar-vfs-ThunarVfsMimeInfo.html#id2605566">ThunarVfsMimeInfo</a>
+</dt>
+<dt>ThunarVfsMonitor, <a href="ThunarVfsMonitor.html#id2602409">ThunarVfsMonitor</a>
+</dt>
+<dt>ThunarVfsMonitorCallback, <a href="ThunarVfsMonitor.html#id2602619">ThunarVfsMonitorCallback ()</a>
+</dt>
+<dt>ThunarVfsMonitorEvent, <a href="ThunarVfsMonitor.html#id2602433">enum ThunarVfsMonitorEvent</a>
+</dt>
+<dt>ThunarVfsMonitorHandle, <a href="ThunarVfsMonitor.html#id2602586">ThunarVfsMonitorHandle</a>
+</dt>
+<dt>ThunarVfsPath, <a href="thunar-vfs-ThunarVfsPath.html#id2592545">ThunarVfsPath</a>
+</dt>
+<dt>ThunarVfsUser, <a href="ThunarVfsUser.html#id2618552">ThunarVfsUser</a>
+</dt>
+<dt>ThunarVfsUserId, <a href="thunar-vfs-Basic-Types.html#id2590965">ThunarVfsUserId</a>
+</dt>
+<dt>ThunarVfsUserManager, <a href="ThunarVfsUserManager.html#id2621091">ThunarVfsUserManager</a>
+</dt>
+<dt>ThunarVfsVolume, <a href="ThunarVfsVolume.html#id2622845">ThunarVfsVolume</a>
+</dt>
+<dt>ThunarVfsVolumeIface, <a href="ThunarVfsVolume.html#id2622823">ThunarVfsVolumeIface</a>
+</dt>
+<dt>ThunarVfsVolumeKind, <a href="ThunarVfsVolume.html#id2622578">enum ThunarVfsVolumeKind</a>
+</dt>
+<dt>ThunarVfsVolumeManager, <a href="ThunarVfsVolumeManager.html#id2626021">ThunarVfsVolumeManager</a>
+</dt>
+<dt>ThunarVfsVolumeManagerIface, <a href="ThunarVfsVolumeManager.html#id2625998">ThunarVfsVolumeManagerIface</a>
+</dt>
+<dt>ThunarVfsVolumeStatus, <a href="ThunarVfsVolume.html#id2622760">enum ThunarVfsVolumeStatus</a>
+</dt>
+<dt>thunar_vfs_group_get_id, <a href="ThunarVfsGroup.html#id2620341">thunar_vfs_group_get_id ()</a>
+</dt>
+<dt>thunar_vfs_group_get_name, <a href="ThunarVfsGroup.html#id2620421">thunar_vfs_group_get_name ()</a>
+</dt>
+<dt>thunar_vfs_humanize_size, <a href="thunar-vfs-Utility-Functions.html#id2601602">thunar_vfs_humanize_size ()</a>
+</dt>
+<dt>thunar_vfs_info_execute, <a href="thunar-vfs-ThunarVfsInfo.html#id2599491">thunar_vfs_info_execute ()</a>
+</dt>
+<dt>thunar_vfs_info_list_free, <a href="thunar-vfs-ThunarVfsInfo.html#id2600070">thunar_vfs_info_list_free ()</a>
+</dt>
+<dt>thunar_vfs_info_matches, <a href="thunar-vfs-ThunarVfsInfo.html#id2599947">thunar_vfs_info_matches ()</a>
+</dt>
+<dt>thunar_vfs_info_new_for_path, <a href="thunar-vfs-ThunarVfsInfo.html#id2599184">thunar_vfs_info_new_for_path ()</a>
+</dt>
+<dt>thunar_vfs_info_ref, <a href="thunar-vfs-ThunarVfsInfo.html#id2599333">thunar_vfs_info_ref ()</a>
+</dt>
+<dt>thunar_vfs_info_rename, <a href="thunar-vfs-ThunarVfsInfo.html#id2599768">thunar_vfs_info_rename ()</a>
+</dt>
+<dt>thunar_vfs_info_unref, <a href="thunar-vfs-ThunarVfsInfo.html#id2599419">thunar_vfs_info_unref ()</a>
+</dt>
+<dt>thunar_vfs_init, <a href="thunar-vfs-Initialization-and-Shutdown.html#id2542680">thunar_vfs_init ()</a>
+</dt>
+<dt>thunar_vfs_mime_application_equal, <a href="thunar-vfs-ThunarVfsMimeApplication.html#id2615713">thunar_vfs_mime_application_equal ()</a>
+</dt>
+<dt>THUNAR_VFS_MIME_APPLICATION_ERROR, <a href="thunar-vfs-ThunarVfsMimeApplication.html#id2613812">THUNAR_VFS_MIME_APPLICATION_ERROR</a>
+</dt>
+<dt>thunar_vfs_mime_application_exec, <a href="thunar-vfs-ThunarVfsMimeApplication.html#id2614910">thunar_vfs_mime_application_exec ()</a>
+</dt>
+<dt>thunar_vfs_mime_application_exec_with_env, <a href="thunar-vfs-ThunarVfsMimeApplication.html#id2615163">thunar_vfs_mime_application_exec_with_env ()</a>
+</dt>
+<dt>thunar_vfs_mime_application_get_command, <a href="thunar-vfs-ThunarVfsMimeApplication.html#id2614573">thunar_vfs_mime_application_get_command ()</a>
+</dt>
+<dt>thunar_vfs_mime_application_get_desktop_id, <a href="thunar-vfs-ThunarVfsMimeApplication.html#id2614659">thunar_vfs_mime_application_get_desktop_id ()</a>
+</dt>
+<dt>thunar_vfs_mime_application_get_flags, <a href="thunar-vfs-ThunarVfsMimeApplication.html#id2614743">thunar_vfs_mime_application_get_flags ()</a>
+</dt>
+<dt>thunar_vfs_mime_application_get_name, <a href="thunar-vfs-ThunarVfsMimeApplication.html#id2614826">thunar_vfs_mime_application_get_name ()</a>
+</dt>
+<dt>thunar_vfs_mime_application_hash, <a href="thunar-vfs-ThunarVfsMimeApplication.html#id2615605">thunar_vfs_mime_application_hash ()</a>
+</dt>
+<dt>thunar_vfs_mime_application_lookup_icon_name, <a href="thunar-vfs-ThunarVfsMimeApplication.html#id2615473">thunar_vfs_mime_application_lookup_icon_name ()</a>
+</dt>
+<dt>thunar_vfs_mime_application_new_from_desktop_id, <a href="thunar-vfs-ThunarVfsMimeApplication.html#id2613997">thunar_vfs_mime_application_new_from_desktop_id ()</a>
+</dt>
+<dt>thunar_vfs_mime_application_new_from_file, <a href="thunar-vfs-ThunarVfsMimeApplication.html#id2614121">thunar_vfs_mime_application_new_from_file ()</a>
+</dt>
+<dt>thunar_vfs_mime_application_ref, <a href="thunar-vfs-ThunarVfsMimeApplication.html#id2614342">thunar_vfs_mime_application_ref ()</a>
+</dt>
+<dt>thunar_vfs_mime_application_unref, <a href="thunar-vfs-ThunarVfsMimeApplication.html#id2614498">thunar_vfs_mime_application_unref ()</a>
+</dt>
+<dt>thunar_vfs_mime_database_add_application, <a href="ThunarVfsMimeDatabase.html#id2610727">thunar_vfs_mime_database_add_application ()</a>
+</dt>
+<dt>thunar_vfs_mime_database_get_applications, <a href="ThunarVfsMimeDatabase.html#id2610178">thunar_vfs_mime_database_get_applications ()</a>
+</dt>
+<dt>thunar_vfs_mime_database_get_default, <a href="ThunarVfsMimeDatabase.html#id2609063">thunar_vfs_mime_database_get_default ()</a>
+</dt>
+<dt>thunar_vfs_mime_database_get_default_application, <a href="ThunarVfsMimeDatabase.html#id2610316">thunar_vfs_mime_database_get_default_application ()</a>
+</dt>
+<dt>thunar_vfs_mime_database_get_info, <a href="ThunarVfsMimeDatabase.html#id2609204">thunar_vfs_mime_database_get_info ()</a>
+</dt>
+<dt>thunar_vfs_mime_database_get_infos_for_info, <a href="ThunarVfsMimeDatabase.html#id2609949">thunar_vfs_mime_database_get_infos_for_info ()</a>
+</dt>
+<dt>thunar_vfs_mime_database_get_info_for_data, <a href="ThunarVfsMimeDatabase.html#id2609335">thunar_vfs_mime_database_get_info_for_data ()</a>
+</dt>
+<dt>thunar_vfs_mime_database_get_info_for_file, <a href="ThunarVfsMimeDatabase.html#id2609703">thunar_vfs_mime_database_get_info_for_file ()</a>
+</dt>
+<dt>thunar_vfs_mime_database_get_info_for_name, <a href="ThunarVfsMimeDatabase.html#id2609490">thunar_vfs_mime_database_get_info_for_name ()</a>
+</dt>
+<dt>thunar_vfs_mime_database_set_default_application, <a href="ThunarVfsMimeDatabase.html#id2610471">thunar_vfs_mime_database_set_default_application ()</a>
+</dt>
+<dt>thunar_vfs_mime_info_equal, <a href="thunar-vfs-ThunarVfsMimeInfo.html#id2606560">thunar_vfs_mime_info_equal ()</a>
+</dt>
+<dt>thunar_vfs_mime_info_get_comment, <a href="thunar-vfs-ThunarVfsMimeInfo.html#id2606050">thunar_vfs_mime_info_get_comment ()</a>
+</dt>
+<dt>thunar_vfs_mime_info_get_media, <a href="thunar-vfs-ThunarVfsMimeInfo.html#id2606222">thunar_vfs_mime_info_get_media ()</a>
+</dt>
+<dt>thunar_vfs_mime_info_get_name, <a href="thunar-vfs-ThunarVfsMimeInfo.html#id2606140">thunar_vfs_mime_info_get_name ()</a>
+</dt>
+<dt>thunar_vfs_mime_info_get_subtype, <a href="thunar-vfs-ThunarVfsMimeInfo.html#id2606314">thunar_vfs_mime_info_get_subtype ()</a>
+</dt>
+<dt>thunar_vfs_mime_info_hash, <a href="thunar-vfs-ThunarVfsMimeInfo.html#id2606480">thunar_vfs_mime_info_hash ()</a>
+</dt>
+<dt>thunar_vfs_mime_info_list_free, <a href="thunar-vfs-ThunarVfsMimeInfo.html#id2606909">thunar_vfs_mime_info_list_free ()</a>
+</dt>
+<dt>thunar_vfs_mime_info_lookup_icon_name, <a href="thunar-vfs-ThunarVfsMimeInfo.html#id2606686">thunar_vfs_mime_info_lookup_icon_name ()</a>
+</dt>
+<dt>thunar_vfs_mime_info_new, <a href="thunar-vfs-ThunarVfsMimeInfo.html#id2605590">thunar_vfs_mime_info_new ()</a>
+</dt>
+<dt>thunar_vfs_mime_info_ref, <a href="thunar-vfs-ThunarVfsMimeInfo.html#id2605891">thunar_vfs_mime_info_ref ()</a>
+</dt>
+<dt>thunar_vfs_mime_info_unref, <a href="thunar-vfs-ThunarVfsMimeInfo.html#id2605976">thunar_vfs_mime_info_unref ()</a>
+</dt>
+<dt>thunar_vfs_monitor_add_directory, <a href="ThunarVfsMonitor.html#id2602970">thunar_vfs_monitor_add_directory ()</a>
+</dt>
+<dt>thunar_vfs_monitor_add_file, <a href="ThunarVfsMonitor.html#id2603121">thunar_vfs_monitor_add_file ()</a>
+</dt>
+<dt>thunar_vfs_monitor_feed, <a href="ThunarVfsMonitor.html#id2603436">thunar_vfs_monitor_feed ()</a>
+</dt>
+<dt>thunar_vfs_monitor_get_default, <a href="ThunarVfsMonitor.html#id2602902">thunar_vfs_monitor_get_default ()</a>
+</dt>
+<dt>thunar_vfs_monitor_remove, <a href="ThunarVfsMonitor.html#id2603335">thunar_vfs_monitor_remove ()</a>
+</dt>
+<dt>thunar_vfs_monitor_wait, <a href="ThunarVfsMonitor.html#id2603564">thunar_vfs_monitor_wait ()</a>
+</dt>
+<dt>thunar_vfs_path_dup_string, <a href="thunar-vfs-ThunarVfsPath.html#id2593933">thunar_vfs_path_dup_string ()</a>
+</dt>
+<dt>thunar_vfs_path_dup_uri, <a href="thunar-vfs-ThunarVfsPath.html#id2594247">thunar_vfs_path_dup_uri ()</a>
+</dt>
+<dt>thunar_vfs_path_equal, <a href="thunar-vfs-ThunarVfsPath.html#id2593171">thunar_vfs_path_equal ()</a>
+</dt>
+<dt>thunar_vfs_path_get_for_home, <a href="thunar-vfs-ThunarVfsPath.html#id2592785">thunar_vfs_path_get_for_home ()</a>
+</dt>
+<dt>thunar_vfs_path_get_for_root, <a href="thunar-vfs-ThunarVfsPath.html#id2592857">thunar_vfs_path_get_for_root ()</a>
+</dt>
+<dt>thunar_vfs_path_get_name, <a href="thunar-vfs-ThunarVfsPath.html#id2593734">thunar_vfs_path_get_name ()</a>
+</dt>
+<dt>thunar_vfs_path_get_parent, <a href="thunar-vfs-ThunarVfsPath.html#id2593816">thunar_vfs_path_get_parent ()</a>
+</dt>
+<dt>thunar_vfs_path_hash, <a href="thunar-vfs-ThunarVfsPath.html#id2593090">thunar_vfs_path_hash ()</a>
+</dt>
+<dt>thunar_vfs_path_is_home, <a href="thunar-vfs-ThunarVfsPath.html#id2593292">thunar_vfs_path_is_home ()</a>
+</dt>
+<dt>thunar_vfs_path_is_root, <a href="thunar-vfs-ThunarVfsPath.html#id2593380">thunar_vfs_path_is_root ()</a>
+</dt>
+<dt>thunar_vfs_path_list_append, <a href="thunar-vfs-ThunarVfsPath.html#id2594923">thunar_vfs_path_list_append ()</a>
+</dt>
+<dt>thunar_vfs_path_list_copy, <a href="thunar-vfs-ThunarVfsPath.html#id2595162">thunar_vfs_path_list_copy ()</a>
+</dt>
+<dt>thunar_vfs_path_list_free, <a href="thunar-vfs-ThunarVfsPath.html#id2595320">thunar_vfs_path_list_free ()</a>
+</dt>
+<dt>thunar_vfs_path_list_from_string, <a href="thunar-vfs-ThunarVfsPath.html#id2594689">thunar_vfs_path_list_from_string ()</a>
+</dt>
+<dt>thunar_vfs_path_list_prepend, <a href="thunar-vfs-ThunarVfsPath.html#id2595042">thunar_vfs_path_list_prepend ()</a>
+</dt>
+<dt>thunar_vfs_path_list_to_string, <a href="thunar-vfs-ThunarVfsPath.html#id2594838">thunar_vfs_path_list_to_string ()</a>
+</dt>
+<dt>thunar_vfs_path_new, <a href="thunar-vfs-ThunarVfsPath.html#id2592568">thunar_vfs_path_new ()</a>
+</dt>
+<dt>thunar_vfs_path_ref, <a href="thunar-vfs-ThunarVfsPath.html#id2592930">thunar_vfs_path_ref ()</a>
+</dt>
+<dt>thunar_vfs_path_relative, <a href="thunar-vfs-ThunarVfsPath.html#id2593530">thunar_vfs_path_relative ()</a>
+</dt>
+<dt>thunar_vfs_path_to_string, <a href="thunar-vfs-ThunarVfsPath.html#id2594032">thunar_vfs_path_to_string ()</a>
+</dt>
+<dt>thunar_vfs_path_to_uri, <a href="thunar-vfs-ThunarVfsPath.html#id2594411">thunar_vfs_path_to_uri ()</a>
+</dt>
+<dt>thunar_vfs_path_unref, <a href="thunar-vfs-ThunarVfsPath.html#id2593016">thunar_vfs_path_unref ()</a>
+</dt>
+<dt>thunar_vfs_shutdown, <a href="thunar-vfs-Initialization-and-Shutdown.html#id2542712">thunar_vfs_shutdown ()</a>
+</dt>
+<dt>thunar_vfs_user_get_groups, <a href="ThunarVfsUser.html#id2618576">thunar_vfs_user_get_groups ()</a>
+</dt>
+<dt>thunar_vfs_user_get_id, <a href="ThunarVfsUser.html#id2618868">thunar_vfs_user_get_id ()</a>
+</dt>
+<dt>thunar_vfs_user_get_name, <a href="ThunarVfsUser.html#id2618947">thunar_vfs_user_get_name ()</a>
+</dt>
+<dt>thunar_vfs_user_get_primary_group, <a href="ThunarVfsUser.html#id2618688">thunar_vfs_user_get_primary_group ()</a>
+</dt>
+<dt>thunar_vfs_user_get_real_name, <a href="ThunarVfsUser.html#id2619035">thunar_vfs_user_get_real_name ()</a>
+</dt>
+<dt>thunar_vfs_user_is_me, <a href="ThunarVfsUser.html#id2619134">thunar_vfs_user_is_me ()</a>
+</dt>
+<dt>thunar_vfs_user_manager_get_default, <a href="ThunarVfsUserManager.html#id2621114">thunar_vfs_user_manager_get_default ()</a>
+</dt>
+<dt>thunar_vfs_user_manager_get_group_by_id, <a href="ThunarVfsUserManager.html#id2621185">thunar_vfs_user_manager_get_group_by_id ()</a>
+</dt>
+<dt>thunar_vfs_user_manager_get_user_by_id, <a href="ThunarVfsUserManager.html#id2621349">thunar_vfs_user_manager_get_user_by_id ()</a>
+</dt>
+<dt>thunar_vfs_volume_changed, <a href="ThunarVfsVolume.html#id2623862">thunar_vfs_volume_changed ()</a>
+</dt>
+<dt>thunar_vfs_volume_get_free_space, <a href="ThunarVfsVolume.html#id2623609">thunar_vfs_volume_get_free_space ()</a>
+</dt>
+<dt>thunar_vfs_volume_get_kind, <a href="ThunarVfsVolume.html#id2622869">thunar_vfs_volume_get_kind ()</a>
+</dt>
+<dt>thunar_vfs_volume_get_mount_point, <a href="ThunarVfsVolume.html#id2623185">thunar_vfs_volume_get_mount_point ()</a>
+</dt>
+<dt>thunar_vfs_volume_get_name, <a href="ThunarVfsVolume.html#id2623017">thunar_vfs_volume_get_name ()</a>
+</dt>
+<dt>thunar_vfs_volume_get_status, <a href="ThunarVfsVolume.html#id2623098">thunar_vfs_volume_get_status ()</a>
+</dt>
+<dt>thunar_vfs_volume_is_mounted, <a href="ThunarVfsVolume.html#id2623257">thunar_vfs_volume_is_mounted ()</a>
+</dt>
+<dt>thunar_vfs_volume_is_present, <a href="ThunarVfsVolume.html#id2623349">thunar_vfs_volume_is_present ()</a>
+</dt>
+<dt>thunar_vfs_volume_is_removable, <a href="ThunarVfsVolume.html#id2623516">thunar_vfs_volume_is_removable ()</a>
+</dt>
+<dt>thunar_vfs_volume_lookup_icon_name, <a href="ThunarVfsVolume.html#id2623745">thunar_vfs_volume_lookup_icon_name ()</a>
+</dt>
+<dt>thunar_vfs_volume_manager_get_default, <a href="ThunarVfsVolumeManager.html#id2626044">thunar_vfs_volume_manager_get_default ()</a>
+</dt>
+<dt>thunar_vfs_volume_manager_get_volumes, <a href="ThunarVfsVolumeManager.html#id2626290">thunar_vfs_volume_manager_get_volumes ()</a>
+</dt>
+<dt>thunar_vfs_volume_manager_get_volume_by_info, <a href="ThunarVfsVolumeManager.html#id2626124">thunar_vfs_volume_manager_get_volume_by_info ()</a>
+</dt>
+<dt>thunar_vfs_volume_manager_volumes_added, <a href="ThunarVfsVolumeManager.html#id2626388">thunar_vfs_volume_manager_volumes_added ()</a>
+</dt>
+<dt>thunar_vfs_volume_manager_volumes_removed, <a href="ThunarVfsVolumeManager.html#id2626568">thunar_vfs_volume_manager_volumes_removed ()</a>
+</dt>
+</dl>
+</div></div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="ThunarVfsVolumeManager.html"><b><< ThunarVfsVolumeManager</b></a></td>
+<td align="right"></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/left.png
===================================================================
(Binary files differ)
Property changes on: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/left.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/mime-types.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/mime-types.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/mime-types.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,34 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Part IV. MIME Types</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar-VFS Reference Manual">
+<link rel="up" href="index.html" title="Thunar-VFS Reference Manual">
+<link rel="prev" href="ThunarVfsMonitor.html" title="ThunarVfsMonitor">
+<link rel="next" href="thunar-vfs-ThunarVfsMimeInfo.html" title="ThunarVfsMimeInfo">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="introduction.html" title="Part I. Introduction">
+<link rel="part" href="fundamentals.html" title="Part II. Fundamentals">
+<link rel="part" href="filesystem-monitoring.html" title="Part III. Filesystem Monitoring">
+<link rel="part" href="mime-types.html" title="Part IV. MIME Types">
+<link rel="part" href="users-and-groups-handling.html" title="Part V. Users and Groups Handling">
+<link rel="part" href="volume-handling.html" title="Part VI. Volume Handling">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="ThunarVfsMonitor.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Thunar-VFS Reference Manual</th>
+<td><a accesskey="n" href="thunar-vfs-ThunarVfsMimeInfo.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="part" lang="en"><div class="titlepage"><div><div><h1 class="title">
+<a name="mime-types"></a>MIME Types</h1></div></div></div></div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="ThunarVfsMonitor.html"><b><< ThunarVfsMonitor</b></a></td>
+<td align="right"><a accesskey="n" href="thunar-vfs-ThunarVfsMimeInfo.html"><b>ThunarVfsMimeInfo >></b></a></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/right.png
===================================================================
(Binary files differ)
Property changes on: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/right.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/style.css
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/style.css 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/style.css 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,66 @@
+.synopsis, .classsynopsis
+{
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+ padding: 0.5em;
+}
+.programlisting
+{
+ background: #eeeeff;
+ border: solid 1px #aaaaff;
+ padding: 0.5em;
+}
+.variablelist
+{
+ padding: 4px;
+ margin-left: 3em;
+}
+.variablelist td:first-child
+{
+ vertical-align: top;
+}
+table.navigation
+{
+ background: #ffeeee;
+ border: solid 1px #ffaaaa;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+}
+.navigation a
+{
+ color: #770000;
+}
+.navigation a:visited
+{
+ color: #550000;
+}
+.navigation .title
+{
+ font-size: 200%;
+}
+div.refnamediv
+{
+ margin-top: 2em;
+}
+div.gallery-float
+{
+ float: left;
+ padding: 10px;
+}
+div.gallery-float img
+{
+ border-style: none;
+}
+div.gallery-spacer
+{
+ clear: both;
+}
+a
+{
+ text-decoration: none;
+}
+a:hover
+{
+ text-decoration: underline;
+ color: #FF0000;
+}
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/thunar-vfs-Basic-Types.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/thunar-vfs-Basic-Types.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/thunar-vfs-Basic-Types.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,388 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Basic Types</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar-VFS Reference Manual">
+<link rel="up" href="fundamentals.html" title="Part II. Fundamentals">
+<link rel="prev" href="thunar-vfs-Initialization-and-Shutdown.html" title="Initialization and Shutdown">
+<link rel="next" href="thunar-vfs-ThunarVfsPath.html" title="ThunarVfsPath">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="introduction.html" title="Part I. Introduction">
+<link rel="part" href="fundamentals.html" title="Part II. Fundamentals">
+<link rel="part" href="filesystem-monitoring.html" title="Part III. Filesystem Monitoring">
+<link rel="part" href="mime-types.html" title="Part IV. MIME Types">
+<link rel="part" href="users-and-groups-handling.html" title="Part V. Users and Groups Handling">
+<link rel="part" href="volume-handling.html" title="Part VI. Volume Handling">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="thunar-vfs-Initialization-and-Shutdown.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="fundamentals.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Thunar-VFS Reference Manual</th>
+<td><a accesskey="n" href="thunar-vfs-ThunarVfsPath.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="thunar-vfs-Basic-Types"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">Basic Types</span></h2>
+<p>Basic Types — </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+enum <a href="thunar-vfs-Basic-Types.html#ThunarVfsFileType">ThunarVfsFileType</a>;
+enum <a href="thunar-vfs-Basic-Types.html#ThunarVfsFileMode">ThunarVfsFileMode</a>;
+enum <a href="thunar-vfs-Basic-Types.html#ThunarVfsFileFlags">ThunarVfsFileFlags</a>;
+typedef <a href="thunar-vfs-Basic-Types.html#ThunarVfsFileDevice">ThunarVfsFileDevice</a>;
+typedef <a href="thunar-vfs-Basic-Types.html#ThunarVfsFileInode">ThunarVfsFileInode</a>;
+typedef <a href="thunar-vfs-Basic-Types.html#ThunarVfsFileSize">ThunarVfsFileSize</a>;
+typedef <a href="thunar-vfs-Basic-Types.html#ThunarVfsFileTime">ThunarVfsFileTime</a>;
+typedef <a href="thunar-vfs-Basic-Types.html#ThunarVfsGroupId">ThunarVfsGroupId</a>;
+typedef <a href="thunar-vfs-Basic-Types.html#ThunarVfsUserId">ThunarVfsUserId</a>;
+
+
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2542830"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2542840"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2542845"></a><h3>
+<a name="ThunarVfsFileType"></a>enum ThunarVfsFileType</h3>
+<a class="indexterm" name="id2542854"></a><pre class="programlisting">typedef enum {
+ THUNAR_VFS_FILE_TYPE_SOCKET = 0140000 >> 12,
+ THUNAR_VFS_FILE_TYPE_SYMLINK = 0120000 >> 12,
+ THUNAR_VFS_FILE_TYPE_REGULAR = 0100000 >> 12,
+ THUNAR_VFS_FILE_TYPE_BLOCKDEV = 0060000 >> 12,
+ THUNAR_VFS_FILE_TYPE_DIRECTORY = 0040000 >> 12,
+ THUNAR_VFS_FILE_TYPE_CHARDEV = 0020000 >> 12,
+ THUNAR_VFS_FILE_TYPE_FIFO = 0010000 >> 12,
+ THUNAR_VFS_FILE_TYPE_UNKNOWN = 0000000 >> 12,
+} ThunarVfsFileType;
+</pre>
+<p>
+Describes the type of a file.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_FILE_TYPE_SOCKET</code></span></td>
+<td> A unix domain socket.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_FILE_TYPE_SYMLINK</code></span></td>
+<td> A broken symlink, for which the target does
+ not exist (if the target would exist, the
+ <a href="thunar-vfs-ThunarVfsInfo.html#ThunarVfsInfo"><span class="type">ThunarVfsInfo</span></a> object would have the type
+ of the target).
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_FILE_TYPE_REGULAR</code></span></td>
+<td> A regular file.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_FILE_TYPE_BLOCKDEV</code></span></td>
+<td> A block device node.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_FILE_TYPE_DIRECTORY</code></span></td>
+<td> A directory node.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_FILE_TYPE_CHARDEV</code></span></td>
+<td> A character device node.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_FILE_TYPE_FIFO</code></span></td>
+<td> A named FIFO.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_FILE_TYPE_UNKNOWN</code></span></td>
+<td>
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2590438"></a><h3>
+<a name="ThunarVfsFileMode"></a>enum ThunarVfsFileMode</h3>
+<a class="indexterm" name="id2590446"></a><pre class="programlisting">typedef enum { /*< flags >*/
+ THUNAR_VFS_FILE_MODE_SUID = 04000,
+ THUNAR_VFS_FILE_MODE_SGID = 02000,
+ THUNAR_VFS_FILE_MODE_STICKY = 01000,
+ THUNAR_VFS_FILE_MODE_USR_ALL = 00700,
+ THUNAR_VFS_FILE_MODE_USR_READ = 00400,
+ THUNAR_VFS_FILE_MODE_USR_WRITE = 00200,
+ THUNAR_VFS_FILE_MODE_USR_EXEC = 00100,
+ THUNAR_VFS_FILE_MODE_GRP_ALL = 00070,
+ THUNAR_VFS_FILE_MODE_GRP_READ = 00040,
+ THUNAR_VFS_FILE_MODE_GRP_WRITE = 00020,
+ THUNAR_VFS_FILE_MODE_GRP_EXEC = 00010,
+ THUNAR_VFS_FILE_MODE_OTH_ALL = 00007,
+ THUNAR_VFS_FILE_MODE_OTH_READ = 00004,
+ THUNAR_VFS_FILE_MODE_OTH_WRITE = 00002,
+ THUNAR_VFS_FILE_MODE_OTH_EXEC = 00001,
+} ThunarVfsFileMode;
+</pre>
+<p>
+Special flags and permissions of a filesystem entity.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_FILE_MODE_SUID</code></span></td>
+<td> SUID bit.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_FILE_MODE_SGID</code></span></td>
+<td> SGID bit.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_FILE_MODE_STICKY</code></span></td>
+<td> Sticky bit.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_FILE_MODE_USR_ALL</code></span></td>
+<td> Owner can do everything.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_FILE_MODE_USR_READ</code></span></td>
+<td> Owner can read the file.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_FILE_MODE_USR_WRITE</code></span></td>
+<td> Owner can write the file.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_FILE_MODE_USR_EXEC</code></span></td>
+<td> Owner can execute the file.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_FILE_MODE_GRP_ALL</code></span></td>
+<td> Owner group can do everything.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_FILE_MODE_GRP_READ</code></span></td>
+<td> Owner group can read the file.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_FILE_MODE_GRP_WRITE</code></span></td>
+<td> Owner group can write the file.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_FILE_MODE_GRP_EXEC</code></span></td>
+<td> Owner group can execute the file.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_FILE_MODE_OTH_ALL</code></span></td>
+<td> Others can do everything.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_FILE_MODE_OTH_READ</code></span></td>
+<td> Others can read the file.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_FILE_MODE_OTH_WRITE</code></span></td>
+<td> Others can write the file.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_FILE_MODE_OTH_EXEC</code></span></td>
+<td> Others can execute the file.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2590681"></a><h3>
+<a name="ThunarVfsFileFlags"></a>enum ThunarVfsFileFlags</h3>
+<a class="indexterm" name="id2590690"></a><pre class="programlisting">typedef enum { /*< flags >*/
+ THUNAR_VFS_FILE_FLAGS_NONE = 0,
+ THUNAR_VFS_FILE_FLAGS_SYMLINK = 1L << 0,
+ THUNAR_VFS_FILE_FLAGS_EXECUTABLE = 1L << 1,
+} ThunarVfsFileFlags;
+</pre>
+<p>
+Flags providing additional information about the
+file system entity.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_FILE_FLAGS_NONE</code></span></td>
+<td> No additional information available.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_FILE_FLAGS_SYMLINK</code></span></td>
+<td> The file is a symlink. Whether or not
+ the info fields refer to the symlink
+ itself or the linked file, depends on
+ whether the symlink is broken or not.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_FILE_FLAGS_EXECUTABLE</code></span></td>
+<td> The file can most probably be executed
+ by #<a href="thunar-vfs-ThunarVfsInfo.html#thunar-vfs-info-execute"><code class="function">thunar_vfs_info_execute()</code></a>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2590763"></a><h3>
+<a name="ThunarVfsFileDevice"></a>ThunarVfsFileDevice</h3>
+<a class="indexterm" name="id2590772"></a><pre class="programlisting">typedef dev_t ThunarVfsFileDevice;
+</pre>
+<p>
+</p>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2590790"></a><h3>
+<a name="ThunarVfsFileInode"></a>ThunarVfsFileInode</h3>
+<a class="indexterm" name="id2590798"></a><pre class="programlisting">typedef ino_t ThunarVfsFileInode;
+</pre>
+<p>
+</p>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2590817"></a><h3>
+<a name="ThunarVfsFileSize"></a>ThunarVfsFileSize</h3>
+<a class="indexterm" name="id2590825"></a><pre class="programlisting">typedef off_t ThunarVfsFileSize;
+</pre>
+<p>
+</p>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2590843"></a><h3>
+<a name="ThunarVfsFileTime"></a>ThunarVfsFileTime</h3>
+<a class="indexterm" name="id2590852"></a><pre class="programlisting">typedef time_t ThunarVfsFileTime;
+</pre>
+<p>
+</p>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2590938"></a><h3>
+<a name="ThunarVfsGroupId"></a>ThunarVfsGroupId</h3>
+<a class="indexterm" name="id2590947"></a><pre class="programlisting">typedef gid_t ThunarVfsGroupId;
+</pre>
+<p>
+</p>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2590965"></a><h3>
+<a name="ThunarVfsUserId"></a>ThunarVfsUserId</h3>
+<a class="indexterm" name="id2590973"></a><pre class="programlisting">typedef uid_t ThunarVfsUserId;
+</pre>
+<p>
+</p>
+<p>
+
+</p>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="thunar-vfs-Initialization-and-Shutdown.html"><b><< Initialization and Shutdown</b></a></td>
+<td align="right"><a accesskey="n" href="thunar-vfs-ThunarVfsPath.html"><b>ThunarVfsPath >></b></a></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/thunar-vfs-Initialization-and-Shutdown.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/thunar-vfs-Initialization-and-Shutdown.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/thunar-vfs-Initialization-and-Shutdown.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,84 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Initialization and Shutdown</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar-VFS Reference Manual">
+<link rel="up" href="fundamentals.html" title="Part II. Fundamentals">
+<link rel="prev" href="fundamentals.html" title="Part II. Fundamentals">
+<link rel="next" href="thunar-vfs-Basic-Types.html" title="Basic Types">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="introduction.html" title="Part I. Introduction">
+<link rel="part" href="fundamentals.html" title="Part II. Fundamentals">
+<link rel="part" href="filesystem-monitoring.html" title="Part III. Filesystem Monitoring">
+<link rel="part" href="mime-types.html" title="Part IV. MIME Types">
+<link rel="part" href="users-and-groups-handling.html" title="Part V. Users and Groups Handling">
+<link rel="part" href="volume-handling.html" title="Part VI. Volume Handling">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="fundamentals.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="fundamentals.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Thunar-VFS Reference Manual</th>
+<td><a accesskey="n" href="thunar-vfs-Basic-Types.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="thunar-vfs-Initialization-and-Shutdown"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">Initialization and Shutdown</span></h2>
+<p>Initialization and Shutdown — </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+void <a href="thunar-vfs-Initialization-and-Shutdown.html#thunar-vfs-init">thunar_vfs_init</a> (void);
+void <a href="thunar-vfs-Initialization-and-Shutdown.html#thunar-vfs-shutdown">thunar_vfs_shutdown</a> (void);
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2542665"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2542675"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2542680"></a><h3>
+<a name="thunar-vfs-init"></a>thunar_vfs_init ()</h3>
+<a class="indexterm" name="id2542689"></a><pre class="programlisting">void thunar_vfs_init (void);</pre>
+<p>
+Initializes the ThunarVFS library.</p>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2542712"></a><h3>
+<a name="thunar-vfs-shutdown"></a>thunar_vfs_shutdown ()</h3>
+<a class="indexterm" name="id2542721"></a><pre class="programlisting">void thunar_vfs_shutdown (void);</pre>
+<p>
+Shuts down the ThunarVFS library.</p>
+<p>
+
+</p>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="fundamentals.html"><b><< Part II. Fundamentals</b></a></td>
+<td align="right"><a accesskey="n" href="thunar-vfs-Basic-Types.html"><b>Basic Types >></b></a></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/thunar-vfs-ThunarVfsInfo.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/thunar-vfs-ThunarVfsInfo.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/thunar-vfs-ThunarVfsInfo.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,395 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>ThunarVfsInfo</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar-VFS Reference Manual">
+<link rel="up" href="fundamentals.html" title="Part II. Fundamentals">
+<link rel="prev" href="thunar-vfs-ThunarVfsPath.html" title="ThunarVfsPath">
+<link rel="next" href="thunar-vfs-Utility-Functions.html" title="Utility Functions">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="introduction.html" title="Part I. Introduction">
+<link rel="part" href="fundamentals.html" title="Part II. Fundamentals">
+<link rel="part" href="filesystem-monitoring.html" title="Part III. Filesystem Monitoring">
+<link rel="part" href="mime-types.html" title="Part IV. MIME Types">
+<link rel="part" href="users-and-groups-handling.html" title="Part V. Users and Groups Handling">
+<link rel="part" href="volume-handling.html" title="Part VI. Volume Handling">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="thunar-vfs-ThunarVfsPath.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="fundamentals.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Thunar-VFS Reference Manual</th>
+<td><a accesskey="n" href="thunar-vfs-Utility-Functions.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="thunar-vfs-ThunarVfsInfo"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">ThunarVfsInfo</span></h2>
+<p>ThunarVfsInfo — </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+ <a href="thunar-vfs-ThunarVfsInfo.html#ThunarVfsInfo">ThunarVfsInfo</a>;
+<a href="thunar-vfs-ThunarVfsInfo.html#ThunarVfsInfo">ThunarVfsInfo</a>* <a href="thunar-vfs-ThunarVfsInfo.html#thunar-vfs-info-new-for-path">thunar_vfs_info_new_for_path</a> (<a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *path,
+ GError **error);
+<a href="thunar-vfs-ThunarVfsInfo.html#ThunarVfsInfo">ThunarVfsInfo</a>* <a href="thunar-vfs-ThunarVfsInfo.html#thunar-vfs-info-ref">thunar_vfs_info_ref</a> (<a href="thunar-vfs-ThunarVfsInfo.html#ThunarVfsInfo">ThunarVfsInfo</a> *info);
+void <a href="thunar-vfs-ThunarVfsInfo.html#thunar-vfs-info-unref">thunar_vfs_info_unref</a> (<a href="thunar-vfs-ThunarVfsInfo.html#ThunarVfsInfo">ThunarVfsInfo</a> *info);
+gboolean <a href="thunar-vfs-ThunarVfsInfo.html#thunar-vfs-info-execute">thunar_vfs_info_execute</a> (const <a href="thunar-vfs-ThunarVfsInfo.html#ThunarVfsInfo">ThunarVfsInfo</a> *info,
+ GdkScreen *screen,
+ GList *path_list,
+ GError **error);
+gboolean <a href="thunar-vfs-ThunarVfsInfo.html#thunar-vfs-info-rename">thunar_vfs_info_rename</a> (<a href="thunar-vfs-ThunarVfsInfo.html#ThunarVfsInfo">ThunarVfsInfo</a> *info,
+ const gchar *name,
+ GError **error);
+gboolean <a href="thunar-vfs-ThunarVfsInfo.html#thunar-vfs-info-matches">thunar_vfs_info_matches</a> (const <a href="thunar-vfs-ThunarVfsInfo.html#ThunarVfsInfo">ThunarVfsInfo</a> *a,
+ const <a href="thunar-vfs-ThunarVfsInfo.html#ThunarVfsInfo">ThunarVfsInfo</a> *b);
+void <a href="thunar-vfs-ThunarVfsInfo.html#thunar-vfs-info-list-free">thunar_vfs_info_list_free</a> (GList *info_list);
+
+
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2599136"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2599145"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2599150"></a><h3>
+<a name="ThunarVfsInfo"></a>ThunarVfsInfo</h3>
+<a class="indexterm" name="id2599159"></a><pre class="programlisting">typedef struct {
+ /* File type */
+ ThunarVfsFileType type;
+
+ /* File permissions and special mode flags */
+ ThunarVfsFileMode mode;
+
+ /* File flags */
+ ThunarVfsFileFlags flags;
+
+ /* Owner's user id */
+ ThunarVfsUserId uid;
+
+ /* Owner's group id */
+ ThunarVfsGroupId gid;
+
+ /* Size in bytes */
+ ThunarVfsFileSize size;
+
+ /* time of last access */
+ ThunarVfsFileTime atime;
+
+ /* time of last modification */
+ ThunarVfsFileTime mtime;
+
+ /* time of last status change */
+ ThunarVfsFileTime ctime;
+
+ /* inode id */
+ ThunarVfsFileInode inode;
+
+ /* device id */
+ ThunarVfsFileDevice device;
+
+ /* file's mime type */
+ ThunarVfsMimeInfo *mime_info;
+
+ /* file's absolute path */
+ ThunarVfsPath *path;
+
+ /* file's custom icon (path or themed icon name) */
+ gchar *custom_icon;
+
+ /* file's display name (UTF-8) */
+ gchar *display_name;
+} ThunarVfsInfo;
+</pre>
+<p>
+The <a href="thunar-vfs-ThunarVfsInfo.html#ThunarVfsInfo"><span class="type">ThunarVfsInfo</span></a> structure provides information about a file system
+entity.</p>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2599184"></a><h3>
+<a name="thunar-vfs-info-new-for-path"></a>thunar_vfs_info_new_for_path ()</h3>
+<a class="indexterm" name="id2599192"></a><pre class="programlisting"><a href="thunar-vfs-ThunarVfsInfo.html#ThunarVfsInfo">ThunarVfsInfo</a>* thunar_vfs_info_new_for_path (<a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *path,
+ GError **error);</pre>
+<p>
+Queries the <a href="thunar-vfs-ThunarVfsInfo.html#ThunarVfsInfo"><span class="type">ThunarVfsInfo</span></a> for the given <em class="parameter"><code>path</code></em>. Returns the
+<a href="thunar-vfs-ThunarVfsInfo.html#ThunarVfsInfo"><span class="type">ThunarVfsInfo</span></a> if the operation is successfull, else <code class="literal">NULL</code>.
+In the latter case, <em class="parameter"><code>error</code></em> will be set to point to a <span class="type">GError</span>
+describing the cause of the failure.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>path</code></em> :</span></td>
+<td> the <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a> of the file whose info should be queried.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>error</code></em> :</span></td>
+<td> return location for errors or <code class="literal">NULL</code>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the <a href="thunar-vfs-ThunarVfsInfo.html#ThunarVfsInfo"><span class="type">ThunarVfsInfo</span></a> for <em class="parameter"><code>path</code></em> or <code class="literal">NULL</code>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2599333"></a><h3>
+<a name="thunar-vfs-info-ref"></a>thunar_vfs_info_ref ()</h3>
+<a class="indexterm" name="id2599341"></a><pre class="programlisting"><a href="thunar-vfs-ThunarVfsInfo.html#ThunarVfsInfo">ThunarVfsInfo</a>* thunar_vfs_info_ref (<a href="thunar-vfs-ThunarVfsInfo.html#ThunarVfsInfo">ThunarVfsInfo</a> *info);</pre>
+<p>
+Increments the reference count on <em class="parameter"><code>info</code></em> by 1 and
+returns a pointer to <em class="parameter"><code>info</code></em>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>info</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsInfo.html#ThunarVfsInfo"><span class="type">ThunarVfsInfo</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> a pointer to <em class="parameter"><code>info</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2599419"></a><h3>
+<a name="thunar-vfs-info-unref"></a>thunar_vfs_info_unref ()</h3>
+<a class="indexterm" name="id2599428"></a><pre class="programlisting">void thunar_vfs_info_unref (<a href="thunar-vfs-ThunarVfsInfo.html#ThunarVfsInfo">ThunarVfsInfo</a> *info);</pre>
+<p>
+Decrements the reference count on <em class="parameter"><code>info</code></em> by 1 and if
+the reference count drops to zero as a result of this
+operation, the <em class="parameter"><code>info</code></em> will be freed completely.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><em class="parameter"><code>info</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsInfo.html#ThunarVfsInfo"><span class="type">ThunarVfsInfo</span></a>.
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2599491"></a><h3>
+<a name="thunar-vfs-info-execute"></a>thunar_vfs_info_execute ()</h3>
+<a class="indexterm" name="id2599499"></a><pre class="programlisting">gboolean thunar_vfs_info_execute (const <a href="thunar-vfs-ThunarVfsInfo.html#ThunarVfsInfo">ThunarVfsInfo</a> *info,
+ GdkScreen *screen,
+ GList *path_list,
+ GError **error);</pre>
+<p>
+Executes the file referred to by <em class="parameter"><code>info</code></em>, given <em class="parameter"><code>path_list</code></em> as parameters,
+on the specified <em class="parameter"><code>screen</code></em>. <em class="parameter"><code>info</code></em> may refer to either a regular,
+executable file, or a <code class="filename">.desktop</code> file, whose
+type is <code class="literal">Application</code>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>info</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsInfo.html#ThunarVfsInfo"><span class="type">ThunarVfsInfo</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>screen</code></em> :</span></td>
+<td> a <span class="type">GdkScreen</span> or <code class="literal">NULL</code> to use the default <span class="type">GdkScreen</span>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>path_list</code></em> :</span></td>
+<td> the list of <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a>s to give as parameters
+ to the file referred to by <em class="parameter"><code>info</code></em> on execution.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>error</code></em> :</span></td>
+<td> return location for errors or <code class="literal">NULL</code>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> <code class="literal">TRUE</code> on success, else <code class="literal">FALSE</code>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2599768"></a><h3>
+<a name="thunar-vfs-info-rename"></a>thunar_vfs_info_rename ()</h3>
+<a class="indexterm" name="id2599777"></a><pre class="programlisting">gboolean thunar_vfs_info_rename (<a href="thunar-vfs-ThunarVfsInfo.html#ThunarVfsInfo">ThunarVfsInfo</a> *info,
+ const gchar *name,
+ GError **error);</pre>
+<p>
+Tries to rename the file referred to by <em class="parameter"><code>info</code></em> to the
+new <em class="parameter"><code>name</code></em>.
+</p>
+<p>
+The rename operation is smart in that it checks the
+type of <em class="parameter"><code>info</code></em> first, and if <em class="parameter"><code>info</code></em> refers to a
+<code class="filename">.desktop</code> file, the file name
+won't be touched, but instead the <code class="literal">Name</code>
+field of the <code class="filename">.desktop</code> will be
+changed to <em class="parameter"><code>name</code></em>. Else, if <em class="parameter"><code>info</code></em> refers to a regular
+file or directory, the file will be given a new
+name.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>info</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsInfo.html#ThunarVfsInfo"><span class="type">ThunarVfsInfo</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em> :</span></td>
+<td> the new file name in UTF-8 encoding.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>error</code></em> :</span></td>
+<td> return location for errors or <code class="literal">NULL</code>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> <code class="literal">TRUE</code> on success, else <code class="literal">FALSE</code>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2599947"></a><h3>
+<a name="thunar-vfs-info-matches"></a>thunar_vfs_info_matches ()</h3>
+<a class="indexterm" name="id2599956"></a><pre class="programlisting">gboolean thunar_vfs_info_matches (const <a href="thunar-vfs-ThunarVfsInfo.html#ThunarVfsInfo">ThunarVfsInfo</a> *a,
+ const <a href="thunar-vfs-ThunarVfsInfo.html#ThunarVfsInfo">ThunarVfsInfo</a> *b);</pre>
+<p>
+Checks whether <em class="parameter"><code>a</code></em> and <em class="parameter"><code>b</code></em> refer to the same file
+and share the same properties.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>a</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsInfo.html#ThunarVfsInfo"><span class="type">ThunarVfsInfo</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>b</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsInfo.html#ThunarVfsInfo"><span class="type">ThunarVfsInfo</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> <code class="literal">TRUE</code> if <em class="parameter"><code>a</code></em> and <em class="parameter"><code>b</code></em> match.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2600070"></a><h3>
+<a name="thunar-vfs-info-list-free"></a>thunar_vfs_info_list_free ()</h3>
+<a class="indexterm" name="id2600078"></a><pre class="programlisting">void thunar_vfs_info_list_free (GList *info_list);</pre>
+<p>
+Unrefs all <a href="thunar-vfs-ThunarVfsInfo.html#ThunarVfsInfo"><span class="type">ThunarVfsInfo</span></a>s in <em class="parameter"><code>info_list</code></em> and
+frees the list itself.
+</p>
+<p>
+This method always returns <code class="literal">NULL</code> for the convenience of
+being able to do:
+</p>
+<div class="informalexample"><pre class="programlisting">
+info_list = thunar_vfs_info_list_free (info_list);
+</pre></div>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><em class="parameter"><code>info_list</code></em> :</span></td>
+<td> a list <a href="thunar-vfs-ThunarVfsInfo.html#ThunarVfsInfo"><span class="type">ThunarVfsInfo</span></a>s.
+</td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="thunar-vfs-ThunarVfsPath.html"><b><< ThunarVfsPath</b></a></td>
+<td align="right"><a accesskey="n" href="thunar-vfs-Utility-Functions.html"><b>Utility Functions >></b></a></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/thunar-vfs-ThunarVfsMimeApplication.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/thunar-vfs-ThunarVfsMimeApplication.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/thunar-vfs-ThunarVfsMimeApplication.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,649 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>ThunarVfsMimeApplication</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar-VFS Reference Manual">
+<link rel="up" href="mime-types.html" title="Part IV. MIME Types">
+<link rel="prev" href="ThunarVfsMimeDatabase.html" title="ThunarVfsMimeDatabase">
+<link rel="next" href="users-and-groups-handling.html" title="Part V. Users and Groups Handling">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="introduction.html" title="Part I. Introduction">
+<link rel="part" href="fundamentals.html" title="Part II. Fundamentals">
+<link rel="part" href="filesystem-monitoring.html" title="Part III. Filesystem Monitoring">
+<link rel="part" href="mime-types.html" title="Part IV. MIME Types">
+<link rel="part" href="users-and-groups-handling.html" title="Part V. Users and Groups Handling">
+<link rel="part" href="volume-handling.html" title="Part VI. Volume Handling">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="ThunarVfsMimeDatabase.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="mime-types.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Thunar-VFS Reference Manual</th>
+<td><a accesskey="n" href="users-and-groups-handling.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="thunar-vfs-ThunarVfsMimeApplication"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">ThunarVfsMimeApplication</span></h2>
+<p>ThunarVfsMimeApplication — </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+#define <a href="thunar-vfs-ThunarVfsMimeApplication.html#THUNAR-VFS-MIME-APPLICATION-ERROR:CAPS">THUNAR_VFS_MIME_APPLICATION_ERROR</a>
+enum <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplicationError">ThunarVfsMimeApplicationError</a>;
+enum <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplicationFlags">ThunarVfsMimeApplicationFlags</a>;
+ <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication">ThunarVfsMimeApplication</a>;
+<a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication">ThunarVfsMimeApplication</a>* <a href="thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-new-from-desktop-id">thunar_vfs_mime_application_new_from_desktop_id</a>
+ (const gchar *desktop_id);
+<a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication">ThunarVfsMimeApplication</a>* <a href="thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-new-from-file">thunar_vfs_mime_application_new_from_file</a>
+ (const gchar *path,
+ const gchar *desktop_id);
+<a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication">ThunarVfsMimeApplication</a>* <a href="thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-ref">thunar_vfs_mime_application_ref</a>
+ (<a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication">ThunarVfsMimeApplication</a> *application);
+void <a href="thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-unref">thunar_vfs_mime_application_unref</a>
+ (<a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication">ThunarVfsMimeApplication</a> *application);
+const gchar* <a href="thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-get-command">thunar_vfs_mime_application_get_command</a>
+ (const <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication">ThunarVfsMimeApplication</a> *application);
+const gchar* <a href="thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-get-desktop-id">thunar_vfs_mime_application_get_desktop_id</a>
+ (const <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication">ThunarVfsMimeApplication</a> *application);
+<a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplicationFlags">ThunarVfsMimeApplicationFlags</a> <a href="thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-get-flags">thunar_vfs_mime_application_get_flags</a>
+ (const <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication">ThunarVfsMimeApplication</a> *application);
+const gchar* <a href="thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-get-name">thunar_vfs_mime_application_get_name</a>
+ (const <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication">ThunarVfsMimeApplication</a> *application);
+gboolean <a href="thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-exec">thunar_vfs_mime_application_exec</a>
+ (const <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication">ThunarVfsMimeApplication</a> *application,
+ GdkScreen *screen,
+ GList *path_list,
+ GError **error);
+gboolean <a href="thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-exec-with-env">thunar_vfs_mime_application_exec_with_env</a>
+ (const <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication">ThunarVfsMimeApplication</a> *application,
+ GdkScreen *screen,
+ GList *path_list,
+ gchar **envp,
+ GError **error);
+const gchar* <a href="thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-lookup-icon-name">thunar_vfs_mime_application_lookup_icon_name</a>
+ (const <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication">ThunarVfsMimeApplication</a> *application,
+ GtkIconTheme *icon_theme);
+guint <a href="thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-hash">thunar_vfs_mime_application_hash</a>
+ (gconstpointer application);
+gboolean <a href="thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-equal">thunar_vfs_mime_application_equal</a>
+ (gconstpointer a,
+ gconstpointer b);
+
+
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2613797"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2613806"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2613812"></a><h3>
+<a name="THUNAR-VFS-MIME-APPLICATION-ERROR:CAPS"></a>THUNAR_VFS_MIME_APPLICATION_ERROR</h3>
+<a class="indexterm" name="id2613824"></a><pre class="programlisting">#define THUNAR_VFS_MIME_APPLICATION_ERROR (thunar_vfs_mime_application_error_quark ())
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2613838"></a><h3>
+<a name="ThunarVfsMimeApplicationError"></a>enum ThunarVfsMimeApplicationError</h3>
+<a class="indexterm" name="id2613848"></a><pre class="programlisting">typedef enum
+{
+ THUNAR_VFS_MIME_APPLICATION_ERROR_LOCAL_FILES_ONLY,
+} ThunarVfsMimeApplicationError;
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2613862"></a><h3>
+<a name="ThunarVfsMimeApplicationFlags"></a>enum ThunarVfsMimeApplicationFlags</h3>
+<a class="indexterm" name="id2613872"></a><pre class="programlisting">typedef enum /*< flags >*/
+{
+ THUNAR_VFS_MIME_APPLICATION_HIDDEN = (1 << 0L),
+ THUNAR_VFS_MIME_APPLICATION_REQUIRES_TERMINAL = (1 << 1L),
+ THUNAR_VFS_MIME_APPLICATION_SUPPORTS_STARTUP_NOTIFY = (1 << 2L),
+ THUNAR_VFS_MIME_APPLICATION_SUPPORTS_MULTI = (1 << 3L),
+} ThunarVfsMimeApplicationFlags;
+</pre>
+<p>
+Various flags associated with a <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication"><span class="type">ThunarVfsMimeApplication</span></a>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_MIME_APPLICATION_HIDDEN</code></span></td>
+<td> the application should not be displayed in the menu system.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_MIME_APPLICATION_REQUIRES_TERMINAL</code></span></td>
+<td> the application must be run in a terminal.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_MIME_APPLICATION_SUPPORTS_STARTUP_NOTIFY</code></span></td>
+<td> the application supports startup notification.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">THUNAR_VFS_MIME_APPLICATION_SUPPORTS_MULTI</code></span></td>
+<td> the application supports opening multiple documents at once (<code class="literal">F</code> or <code class="literal">U</code>).
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2613975"></a><h3>
+<a name="ThunarVfsMimeApplication"></a>ThunarVfsMimeApplication</h3>
+<a class="indexterm" name="id2613984"></a><pre class="programlisting">typedef struct _ThunarVfsMimeApplication ThunarVfsMimeApplication;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2613997"></a><h3>
+<a name="thunar-vfs-mime-application-new-from-desktop-id"></a>thunar_vfs_mime_application_new_from_desktop_id ()</h3>
+<a class="indexterm" name="id2614009"></a><pre class="programlisting"><a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication">ThunarVfsMimeApplication</a>* thunar_vfs_mime_application_new_from_desktop_id
+ (const gchar *desktop_id);</pre>
+<p>
+Generates a <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication"><span class="type">ThunarVfsMimeApplication</span></a> instance for the application
+referenced by <em class="parameter"><code>desktop_id</code></em>. Returns <code class="literal">NULL</code> if <em class="parameter"><code>desktop_id</code></em> is not valid.
+</p>
+<p>
+The caller is responsible to free the returned instance using
+<a href="thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-unref"><code class="function">thunar_vfs_mime_application_unref()</code></a>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>desktop_id</code></em> :</span></td>
+<td> the id of an application's .desktop file.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication"><span class="type">ThunarVfsMimeApplication</span></a> for <em class="parameter"><code>desktop_id</code></em> or <code class="literal">NULL</code>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2614121"></a><h3>
+<a name="thunar-vfs-mime-application-new-from-file"></a>thunar_vfs_mime_application_new_from_file ()</h3>
+<a class="indexterm" name="id2614133"></a><pre class="programlisting"><a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication">ThunarVfsMimeApplication</a>* thunar_vfs_mime_application_new_from_file
+ (const gchar *path,
+ const gchar *desktop_id);</pre>
+<p>
+Generates a new <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication"><span class="type">ThunarVfsMimeApplication</span></a> for the application
+described by <em class="parameter"><code>path</code></em> and <em class="parameter"><code>desktop_id</code></em>.
+</p>
+<p>
+The caller is responsible to free the returned instance using
+<a href="thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-unref"><code class="function">thunar_vfs_mime_application_unref()</code></a>.
+</p>
+<p>
+You should really seldomly use this function and always
+prefer <a href="thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-new-from-desktop-id"><code class="function">thunar_vfs_mime_application_new_from_desktop_id()</code></a>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>path</code></em> :</span></td>
+<td> the absolute path to the desktop file.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>desktop_id</code></em> :</span></td>
+<td> the desktop-id of the file.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication"><span class="type">ThunarVfsMimeApplication</span></a> for <em class="parameter"><code>desktop_id</code></em>
+ or <code class="literal">NULL</code>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2614342"></a><h3>
+<a name="thunar-vfs-mime-application-ref"></a>thunar_vfs_mime_application_ref ()</h3>
+<a class="indexterm" name="id2614352"></a><pre class="programlisting"><a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication">ThunarVfsMimeApplication</a>* thunar_vfs_mime_application_ref
+ (<a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication">ThunarVfsMimeApplication</a> *application);</pre>
+<p>
+Increases the reference count on <em class="parameter"><code>application</code></em> by one
+and returns the reference to <em class="parameter"><code>application</code></em>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>application</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication"><span class="type">ThunarVfsMimeApplication</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> a reference to <em class="parameter"><code>application</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2614498"></a><h3>
+<a name="thunar-vfs-mime-application-unref"></a>thunar_vfs_mime_application_unref ()</h3>
+<a class="indexterm" name="id2614509"></a><pre class="programlisting">void thunar_vfs_mime_application_unref
+ (<a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication">ThunarVfsMimeApplication</a> *application);</pre>
+<p>
+Decreases the reference count on <em class="parameter"><code>application</code></em> and frees
+the <em class="parameter"><code>application</code></em> object once the reference count drops
+to zero.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><em class="parameter"><code>application</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication"><span class="type">ThunarVfsMimeApplication</span></a>.
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2614573"></a><h3>
+<a name="thunar-vfs-mime-application-get-command"></a>thunar_vfs_mime_application_get_command ()</h3>
+<a class="indexterm" name="id2614585"></a><pre class="programlisting">const gchar* thunar_vfs_mime_application_get_command
+ (const <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication">ThunarVfsMimeApplication</a> *application);</pre>
+<p>
+Returns the command line to run <em class="parameter"><code>application</code></em>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>application</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication"><span class="type">ThunarVfsMimeApplication</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the command to run <em class="parameter"><code>application</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2614659"></a><h3>
+<a name="thunar-vfs-mime-application-get-desktop-id"></a>thunar_vfs_mime_application_get_desktop_id ()</h3>
+<a class="indexterm" name="id2614670"></a><pre class="programlisting">const gchar* thunar_vfs_mime_application_get_desktop_id
+ (const <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication">ThunarVfsMimeApplication</a> *application);</pre>
+<p>
+Returns the desktop-id of <em class="parameter"><code>application</code></em>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>application</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication"><span class="type">ThunarVfsMimeApplication</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the desktop-id of <em class="parameter"><code>application</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2614743"></a><h3>
+<a name="thunar-vfs-mime-application-get-flags"></a>thunar_vfs_mime_application_get_flags ()</h3>
+<a class="indexterm" name="id2614755"></a><pre class="programlisting"><a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplicationFlags">ThunarVfsMimeApplicationFlags</a> thunar_vfs_mime_application_get_flags
+ (const <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication">ThunarVfsMimeApplication</a> *application);</pre>
+<p>
+Returns the flags for <em class="parameter"><code>application</code></em>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>application</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication"><span class="type">ThunarVfsMimeApplication</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the flags for <em class="parameter"><code>application</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2614826"></a><h3>
+<a name="thunar-vfs-mime-application-get-name"></a>thunar_vfs_mime_application_get_name ()</h3>
+<a class="indexterm" name="id2614838"></a><pre class="programlisting">const gchar* thunar_vfs_mime_application_get_name
+ (const <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication">ThunarVfsMimeApplication</a> *application);</pre>
+<p>
+Returns the generic name of <em class="parameter"><code>application</code></em>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>application</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication"><span class="type">ThunarVfsMimeApplication</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the generic name of <em class="parameter"><code>application</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2614910"></a><h3>
+<a name="thunar-vfs-mime-application-exec"></a>thunar_vfs_mime_application_exec ()</h3>
+<a class="indexterm" name="id2614922"></a><pre class="programlisting">gboolean thunar_vfs_mime_application_exec
+ (const <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication">ThunarVfsMimeApplication</a> *application,
+ GdkScreen *screen,
+ GList *path_list,
+ GError **error);</pre>
+<p>
+Wrapper to <a href="thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-exec-with-env"><code class="function">thunar_vfs_mime_application_exec_with_env()</code></a>, which
+simply passes a <code class="literal">NULL</code> pointer for the environment variables.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>application</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication"><span class="type">ThunarVfsMimeApplication</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>screen</code></em> :</span></td>
+<td> a <span class="type">GdkScreen</span> or <code class="literal">NULL</code> to use the default screen.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>path_list</code></em> :</span></td>
+<td> a list of <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a>s to open.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>error</code></em> :</span></td>
+<td> return location for errors or <code class="literal">NULL</code>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> <code class="literal">TRUE</code> if the execution succeed, else <code class="literal">FALSE</code>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2615163"></a><h3>
+<a name="thunar-vfs-mime-application-exec-with-env"></a>thunar_vfs_mime_application_exec_with_env ()</h3>
+<a class="indexterm" name="id2615175"></a><pre class="programlisting">gboolean thunar_vfs_mime_application_exec_with_env
+ (const <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication">ThunarVfsMimeApplication</a> *application,
+ GdkScreen *screen,
+ GList *path_list,
+ gchar **envp,
+ GError **error);</pre>
+<p>
+Executes <em class="parameter"><code>application</code></em> on <em class="parameter"><code>screen</code></em> using the given <em class="parameter"><code>path_list</code></em>. If
+<em class="parameter"><code>path_list</code></em> contains more than one <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a> and <em class="parameter"><code>application</code></em>
+doesn't support opening multiple documents at once, one
+instance of <em class="parameter"><code>application</code></em> will be spawned for every <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a>
+given in <em class="parameter"><code>path_list</code></em>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>application</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication"><span class="type">ThunarVfsMimeApplication</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>screen</code></em> :</span></td>
+<td> a <span class="type">GdkScreen</span> or <code class="literal">NULL</code> to use the default screen.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>path_list</code></em> :</span></td>
+<td> a list of <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a>s to open.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>envp</code></em> :</span></td>
+<td> child's environment or <code class="literal">NULL</code> to inherit parent's.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>error</code></em> :</span></td>
+<td> return location for errors or <code class="literal">NULL</code>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> <code class="literal">TRUE</code> if the execution succeed, else <code class="literal">FALSE</code>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2615473"></a><h3>
+<a name="thunar-vfs-mime-application-lookup-icon-name"></a>thunar_vfs_mime_application_lookup_icon_name ()</h3>
+<a class="indexterm" name="id2615484"></a><pre class="programlisting">const gchar* thunar_vfs_mime_application_lookup_icon_name
+ (const <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication">ThunarVfsMimeApplication</a> *application,
+ GtkIconTheme *icon_theme);</pre>
+<p>
+Looks up the icon name for <em class="parameter"><code>application</code></em> in
+<em class="parameter"><code>icon_theme</code></em>. Returns <code class="literal">NULL</code> if no suitable
+icon is present in <em class="parameter"><code>icon_theme</code></em>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>application</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication"><span class="type">ThunarVfsMimeApplication</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>icon_theme</code></em> :</span></td>
+<td> a <span class="type">GtkIconTheme</span>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the icon name for <em class="parameter"><code>application</code></em> or
+ <code class="literal">NULL</code>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2615605"></a><h3>
+<a name="thunar-vfs-mime-application-hash"></a>thunar_vfs_mime_application_hash ()</h3>
+<a class="indexterm" name="id2615617"></a><pre class="programlisting">guint thunar_vfs_mime_application_hash
+ (gconstpointer application);</pre>
+<p>
+Converts <em class="parameter"><code>application</code></em> to a hash value. It can be passed
+to <code class="function">g_hash_table_new()</code> as the <em class="parameter"><code>hash_func</code></em> parameter,
+when using <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication"><span class="type">ThunarVfsMimeApplication</span></a>s as keys
+in a <span class="type">GHashTable</span>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>application</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication"><span class="type">ThunarVfsMimeApplication</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> a hash value corresponding to the key.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2615713"></a><h3>
+<a name="thunar-vfs-mime-application-equal"></a>thunar_vfs_mime_application_equal ()</h3>
+<a class="indexterm" name="id2615724"></a><pre class="programlisting">gboolean thunar_vfs_mime_application_equal
+ (gconstpointer a,
+ gconstpointer b);</pre>
+<p>
+Checks whether <em class="parameter"><code>a</code></em> and <em class="parameter"><code>b</code></em> refer to the same application.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>a</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication"><span class="type">ThunarVfsMimeApplication</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>b</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication"><span class="type">ThunarVfsMimeApplication</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> <code class="literal">TRUE</code> if <em class="parameter"><code>a</code></em> and <em class="parameter"><code>b</code></em> are equal.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="ThunarVfsMimeDatabase.html"><b><< ThunarVfsMimeDatabase</b></a></td>
+<td align="right"><a accesskey="n" href="users-and-groups-handling.html"><b>Part V. Users and Groups Handling >></b></a></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/thunar-vfs-ThunarVfsMimeInfo.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/thunar-vfs-ThunarVfsMimeInfo.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/thunar-vfs-ThunarVfsMimeInfo.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,455 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>ThunarVfsMimeInfo</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar-VFS Reference Manual">
+<link rel="up" href="mime-types.html" title="Part IV. MIME Types">
+<link rel="prev" href="mime-types.html" title="Part IV. MIME Types">
+<link rel="next" href="ThunarVfsMimeDatabase.html" title="ThunarVfsMimeDatabase">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="introduction.html" title="Part I. Introduction">
+<link rel="part" href="fundamentals.html" title="Part II. Fundamentals">
+<link rel="part" href="filesystem-monitoring.html" title="Part III. Filesystem Monitoring">
+<link rel="part" href="mime-types.html" title="Part IV. MIME Types">
+<link rel="part" href="users-and-groups-handling.html" title="Part V. Users and Groups Handling">
+<link rel="part" href="volume-handling.html" title="Part VI. Volume Handling">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="mime-types.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="mime-types.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Thunar-VFS Reference Manual</th>
+<td><a accesskey="n" href="ThunarVfsMimeDatabase.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="thunar-vfs-ThunarVfsMimeInfo"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">ThunarVfsMimeInfo</span></h2>
+<p>ThunarVfsMimeInfo — </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+ <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a>;
+<a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a>* <a href="thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-new">thunar_vfs_mime_info_new</a> (const gchar *name,
+ gssize len);
+<a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a>* <a href="thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-ref">thunar_vfs_mime_info_ref</a> (<a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a> *info);
+void <a href="thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-unref">thunar_vfs_mime_info_unref</a> (<a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a> *info);
+const gchar* <a href="thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-get-comment">thunar_vfs_mime_info_get_comment</a>
+ (<a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a> *info);
+const gchar* <a href="thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-get-name">thunar_vfs_mime_info_get_name</a> (const <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a> *info);
+gchar* <a href="thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-get-media">thunar_vfs_mime_info_get_media</a> (const <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a> *info);
+gchar* <a href="thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-get-subtype">thunar_vfs_mime_info_get_subtype</a>
+ (const <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a> *info);
+guint <a href="thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-hash">thunar_vfs_mime_info_hash</a> (gconstpointer info);
+gboolean <a href="thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-equal">thunar_vfs_mime_info_equal</a> (gconstpointer a,
+ gconstpointer b);
+const gchar* <a href="thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-lookup-icon-name">thunar_vfs_mime_info_lookup_icon_name</a>
+ (<a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a> *info,
+ GtkIconTheme *icon_theme);
+void <a href="thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-list-free">thunar_vfs_mime_info_list_free</a> (GList *info_list);
+
+
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2605552"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2605561"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2605566"></a><h3>
+<a name="ThunarVfsMimeInfo"></a>ThunarVfsMimeInfo</h3>
+<a class="indexterm" name="id2605575"></a><pre class="programlisting">typedef struct {
+} ThunarVfsMimeInfo;
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2605590"></a><h3>
+<a name="thunar-vfs-mime-info-new"></a>thunar_vfs_mime_info_new ()</h3>
+<a class="indexterm" name="id2605598"></a><pre class="programlisting"><a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a>* thunar_vfs_mime_info_new (const gchar *name,
+ gssize len);</pre>
+<p>
+Allocates a new <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo"><span class="type">ThunarVfsMimeInfo</span></a> object with an
+initial reference count of one and sets it to the
+given <em class="parameter"><code>name</code></em>.
+</p>
+<p>
+Note that no checking is performed on the given <em class="parameter"><code>name</code></em>.
+You should not normally use this function, but use
+<a href="ThunarVfsMimeDatabase.html#thunar-vfs-mime-database-get-info"><code class="function">thunar_vfs_mime_database_get_info()</code></a> instead.
+</p>
+<p>
+In addition, if you allocate <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo"><span class="type">ThunarVfsMimeInfo</span></a>s
+using this function, you cannot mix them with the objects
+allocated in a <a href="ThunarVfsMimeDatabase.html" title="ThunarVfsMimeDatabase"><span class="type">ThunarVfsMimeDatabase</span></a>, because the
+<a href="ThunarVfsMimeDatabase.html" title="ThunarVfsMimeDatabase"><span class="type">ThunarVfsMimeDatabase</span></a> and associated functions assume
+that <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo"><span class="type">ThunarVfsMimeInfo</span></a> objects are unique.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em> :</span></td>
+<td> the mime type name.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>len</code></em> :</span></td>
+<td> the length of <em class="parameter"><code>name</code></em> or <code class="literal">-1</code> if zero-terminated.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the newly allocated <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo"><span class="type">ThunarVfsMimeInfo</span></a>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2605891"></a><h3>
+<a name="thunar-vfs-mime-info-ref"></a>thunar_vfs_mime_info_ref ()</h3>
+<a class="indexterm" name="id2605899"></a><pre class="programlisting"><a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a>* thunar_vfs_mime_info_ref (<a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a> *info);</pre>
+<p>
+Increments the reference count on <em class="parameter"><code>info</code></em> and returns
+the reference to <em class="parameter"><code>info</code></em>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>info</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo"><span class="type">ThunarVfsMimeInfo</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> a reference to <em class="parameter"><code>info</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2605976"></a><h3>
+<a name="thunar-vfs-mime-info-unref"></a>thunar_vfs_mime_info_unref ()</h3>
+<a class="indexterm" name="id2605985"></a><pre class="programlisting">void thunar_vfs_mime_info_unref (<a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a> *info);</pre>
+<p>
+Decrements the reference count on <em class="parameter"><code>info</code></em> and releases
+the resources allocated for <em class="parameter"><code>info</code></em> once the reference
+count drops to zero.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><em class="parameter"><code>info</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo"><span class="type">ThunarVfsMimeInfo</span></a>.
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2606050"></a><h3>
+<a name="thunar-vfs-mime-info-get-comment"></a>thunar_vfs_mime_info_get_comment ()</h3>
+<a class="indexterm" name="id2606061"></a><pre class="programlisting">const gchar* thunar_vfs_mime_info_get_comment
+ (<a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a> *info);</pre>
+<p>
+Determines the description for the given <em class="parameter"><code>info</code></em>.
+</p>
+<p>
+Note that this method MUST NOT be called from threads other than
+the main thread, because it's not thread-safe!</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>info</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo"><span class="type">ThunarVfsMimeInfo</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the comment associated with the <em class="parameter"><code>info</code></em> or the empty string
+ if no comment was provided.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2606140"></a><h3>
+<a name="thunar-vfs-mime-info-get-name"></a>thunar_vfs_mime_info_get_name ()</h3>
+<a class="indexterm" name="id2606150"></a><pre class="programlisting">const gchar* thunar_vfs_mime_info_get_name (const <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a> *info);</pre>
+<p>
+Returns the full qualified name of the MIME type
+described by the <em class="parameter"><code>info</code></em> object.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>info</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo"><span class="type">ThunarVfsMimeInfo</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the name of <em class="parameter"><code>info</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2606222"></a><h3>
+<a name="thunar-vfs-mime-info-get-media"></a>thunar_vfs_mime_info_get_media ()</h3>
+<a class="indexterm" name="id2606232"></a><pre class="programlisting">gchar* thunar_vfs_mime_info_get_media (const <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a> *info);</pre>
+<p>
+Returns the media portion of the MIME type, e.g. if your
+<a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo"><span class="type">ThunarVfsMimeInfo</span></a> instance refers to "text/plain", invoking
+this method will return "text".
+</p>
+<p>
+The caller is responsible to free the returned string
+using <code class="function">g_free()</code> when no longer needed.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>info</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo"><span class="type">ThunarVfsMimeInfo</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the media portion of the MIME type.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2606314"></a><h3>
+<a name="thunar-vfs-mime-info-get-subtype"></a>thunar_vfs_mime_info_get_subtype ()</h3>
+<a class="indexterm" name="id2606326"></a><pre class="programlisting">gchar* thunar_vfs_mime_info_get_subtype
+ (const <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a> *info);</pre>
+<p>
+Returns the subtype portion of the MIME type, e.g. if <em class="parameter"><code>info</code></em>
+refers to "application/octect-stream", this method will
+return "octect-stream".
+</p>
+<p>
+The caller is responsible to free the returned string
+using <code class="function">g_free()</code> when no longer needed.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>info</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo"><span class="type">ThunarVfsMimeInfo</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the subtype portion of <em class="parameter"><code>info</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2606480"></a><h3>
+<a name="thunar-vfs-mime-info-hash"></a>thunar_vfs_mime_info_hash ()</h3>
+<a class="indexterm" name="id2606488"></a><pre class="programlisting">guint thunar_vfs_mime_info_hash (gconstpointer info);</pre>
+<p>
+Calculates a hash value for <em class="parameter"><code>info</code></em>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>info</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo"><span class="type">ThunarVfsMimeInfo</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> a hash value for <em class="parameter"><code>info</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2606560"></a><h3>
+<a name="thunar-vfs-mime-info-equal"></a>thunar_vfs_mime_info_equal ()</h3>
+<a class="indexterm" name="id2606568"></a><pre class="programlisting">gboolean thunar_vfs_mime_info_equal (gconstpointer a,
+ gconstpointer b);</pre>
+<p>
+Compares <em class="parameter"><code>a</code></em> and <em class="parameter"><code>b</code></em> and returns <code class="literal">TRUE</code> if both
+are equal.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>a</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo"><span class="type">ThunarVfsMimeInfo</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>b</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo"><span class="type">ThunarVfsMimeInfo</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> <code class="literal">TRUE</code> if <em class="parameter"><code>a</code></em> and <em class="parameter"><code>b</code></em> are equal.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2606686"></a><h3>
+<a name="thunar-vfs-mime-info-lookup-icon-name"></a>thunar_vfs_mime_info_lookup_icon_name ()</h3>
+<a class="indexterm" name="id2606698"></a><pre class="programlisting">const gchar* thunar_vfs_mime_info_lookup_icon_name
+ (<a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo">ThunarVfsMimeInfo</a> *info,
+ GtkIconTheme *icon_theme);</pre>
+<p>
+Tries to determine the name of a suitable icon for <em class="parameter"><code>info</code></em>
+in <em class="parameter"><code>icon_theme</code></em>. The returned icon name can then be used
+in calls to <code class="function">gtk_icon_theme_lookup_icon()</code> or
+<code class="function">gtk_icon_theme_load_icon()</code>.
+</p>
+<p>
+The returned icon name is owned by <em class="parameter"><code>info</code></em> and MUST NOT be freed
+by the caller.
+</p>
+<p>
+Note that this method MUST NOT be called from threads other than
+the main thread, because it's not thread-safe!</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>info</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo"><span class="type">ThunarVfsMimeInfo</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>icon_theme</code></em> :</span></td>
+<td> the <span class="type">GtkIconTheme</span> on which to perform the lookup.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> a suitable icon name for <em class="parameter"><code>info</code></em> in <em class="parameter"><code>icon_theme</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2606909"></a><h3>
+<a name="thunar-vfs-mime-info-list-free"></a>thunar_vfs_mime_info_list_free ()</h3>
+<a class="indexterm" name="id2606919"></a><pre class="programlisting">void thunar_vfs_mime_info_list_free (GList *info_list);</pre>
+<p>
+Frees the list and all <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo"><span class="type">ThunarVfsMimeInfo</span></a>s
+contained within the list.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><em class="parameter"><code>info_list</code></em> :</span></td>
+<td> a <span class="type">GList</span> of <a href="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo"><span class="type">ThunarVfsMimeInfo</span></a>s
+</td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="mime-types.html"><b><< Part IV. MIME Types</b></a></td>
+<td align="right"><a accesskey="n" href="ThunarVfsMimeDatabase.html"><b>ThunarVfsMimeDatabase >></b></a></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/thunar-vfs-ThunarVfsPath.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/thunar-vfs-ThunarVfsPath.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/thunar-vfs-ThunarVfsPath.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,883 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>ThunarVfsPath</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar-VFS Reference Manual">
+<link rel="up" href="fundamentals.html" title="Part II. Fundamentals">
+<link rel="prev" href="thunar-vfs-Basic-Types.html" title="Basic Types">
+<link rel="next" href="thunar-vfs-ThunarVfsInfo.html" title="ThunarVfsInfo">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="introduction.html" title="Part I. Introduction">
+<link rel="part" href="fundamentals.html" title="Part II. Fundamentals">
+<link rel="part" href="filesystem-monitoring.html" title="Part III. Filesystem Monitoring">
+<link rel="part" href="mime-types.html" title="Part IV. MIME Types">
+<link rel="part" href="users-and-groups-handling.html" title="Part V. Users and Groups Handling">
+<link rel="part" href="volume-handling.html" title="Part VI. Volume Handling">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="thunar-vfs-Basic-Types.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="fundamentals.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Thunar-VFS Reference Manual</th>
+<td><a accesskey="n" href="thunar-vfs-ThunarVfsInfo.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="thunar-vfs-ThunarVfsPath"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">ThunarVfsPath</span></h2>
+<p>ThunarVfsPath — </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+ <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a>;
+<a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a>* <a href="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-new">thunar_vfs_path_new</a> (const gchar *identifier,
+ GError **error);
+<a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a>* <a href="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-get-for-home">thunar_vfs_path_get_for_home</a> (void);
+<a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a>* <a href="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-get-for-root">thunar_vfs_path_get_for_root</a> (void);
+<a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a>* <a href="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-ref">thunar_vfs_path_ref</a> (<a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *path);
+void <a href="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-unref">thunar_vfs_path_unref</a> (<a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *path);
+guint <a href="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-hash">thunar_vfs_path_hash</a> (gconstpointer path_ptr);
+gboolean <a href="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-equal">thunar_vfs_path_equal</a> (gconstpointer path_ptr_a,
+ gconstpointer path_ptr_b);
+gboolean <a href="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-is-home">thunar_vfs_path_is_home</a> (const <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *path);
+gboolean <a href="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-is-root">thunar_vfs_path_is_root</a> (const <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *path);
+<a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a>* <a href="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-relative">thunar_vfs_path_relative</a> (<a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *parent,
+ const gchar *name);
+const gchar* <a href="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-get-name">thunar_vfs_path_get_name</a> (const <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *path);
+<a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a>* <a href="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-get-parent">thunar_vfs_path_get_parent</a> (const <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *path);
+gchar* <a href="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-dup-string">thunar_vfs_path_dup_string</a> (const <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *path);
+gssize <a href="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-to-string">thunar_vfs_path_to_string</a> (const <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *path,
+ gchar *buffer,
+ gsize bufsize,
+ GError **error);
+gchar* <a href="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-dup-uri">thunar_vfs_path_dup_uri</a> (const <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *path);
+gssize <a href="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-to-uri">thunar_vfs_path_to_uri</a> (const <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *path,
+ gchar *buffer,
+ gsize bufsize,
+ GError **error);
+GList* <a href="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-list-from-string">thunar_vfs_path_list_from_string</a>
+ (const gchar *uri_string,
+ GError **error);
+gchar* <a href="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-list-to-string">thunar_vfs_path_list_to_string</a> (GList *path_list);
+GList* <a href="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-list-append">thunar_vfs_path_list_append</a> (GList *path_list,
+ <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *path);
+GList* <a href="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-list-prepend">thunar_vfs_path_list_prepend</a> (GList *path_list,
+ <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *path);
+GList* <a href="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-list-copy">thunar_vfs_path_list_copy</a> (GList *path_list);
+void <a href="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-list-free">thunar_vfs_path_list_free</a> (GList *path_list);
+
+
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2592530"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2592539"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2592545"></a><h3>
+<a name="ThunarVfsPath"></a>ThunarVfsPath</h3>
+<a class="indexterm" name="id2592553"></a><pre class="programlisting">typedef struct {
+} ThunarVfsPath;
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2592568"></a><h3>
+<a name="thunar-vfs-path-new"></a>thunar_vfs_path_new ()</h3>
+<a class="indexterm" name="id2592577"></a><pre class="programlisting"><a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a>* thunar_vfs_path_new (const gchar *identifier,
+ GError **error);</pre>
+<p>
+Returns a <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a> that represents the given
+<em class="parameter"><code>identifier</code></em> or <code class="literal">NULL</code> on error. In the latter case
+<em class="parameter"><code>error</code></em> will be set to point to an <span class="type">GError</span> describing
+the problem.
+</p>
+<p>
+The caller is responsible to free the returned
+object using <a href="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-unref"><code class="function">thunar_vfs_path_unref()</code></a> when no
+longer needed.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>identifier</code></em> :</span></td>
+<td> an URI identifier or an absolute path.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>error</code></em> :</span></td>
+<td> return location for errors or <code class="literal">NULL</code>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a> for <em class="parameter"><code>identifier</code></em>
+ or <code class="literal">NULL</code> on error.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2592785"></a><h3>
+<a name="thunar-vfs-path-get-for-home"></a>thunar_vfs_path_get_for_home ()</h3>
+<a class="indexterm" name="id2592793"></a><pre class="programlisting"><a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a>* thunar_vfs_path_get_for_home (void);</pre>
+<p>
+Returns the <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a> that represents
+the current users home directory.
+</p>
+<p>
+The caller is responsible to free the
+returned object using <a href="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-unref"><code class="function">thunar_vfs_path_unref()</code></a>
+when no longer needed.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a> for the
+ current users home directory.
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2592857"></a><h3>
+<a name="thunar-vfs-path-get-for-root"></a>thunar_vfs_path_get_for_root ()</h3>
+<a class="indexterm" name="id2592866"></a><pre class="programlisting"><a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a>* thunar_vfs_path_get_for_root (void);</pre>
+<p>
+Returns the <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a> that represents the
+file systems root directory.
+</p>
+<p>
+The caller is responsible to free the returned
+object using <a href="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-unref"><code class="function">thunar_vfs_path_unref()</code></a> when no
+longer needed.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a> for the file
+ systems root directory.
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2592930"></a><h3>
+<a name="thunar-vfs-path-ref"></a>thunar_vfs_path_ref ()</h3>
+<a class="indexterm" name="id2592938"></a><pre class="programlisting"><a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a>* thunar_vfs_path_ref (<a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *path);</pre>
+<p>
+Increments the reference count on <em class="parameter"><code>path</code></em>
+and returns a reference to <em class="parameter"><code>path</code></em>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>path</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> a reference to <em class="parameter"><code>path</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2593016"></a><h3>
+<a name="thunar-vfs-path-unref"></a>thunar_vfs_path_unref ()</h3>
+<a class="indexterm" name="id2593025"></a><pre class="programlisting">void thunar_vfs_path_unref (<a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *path);</pre>
+<p>
+Decreases the reference count on <em class="parameter"><code>path</code></em> and
+frees the resources allocated for <em class="parameter"><code>path</code></em>
+once the reference count drops to zero.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><em class="parameter"><code>path</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a>.
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2593090"></a><h3>
+<a name="thunar-vfs-path-hash"></a>thunar_vfs_path_hash ()</h3>
+<a class="indexterm" name="id2593098"></a><pre class="programlisting">guint thunar_vfs_path_hash (gconstpointer path_ptr);</pre>
+<p>
+Generates a hash value for the given <em class="parameter"><code>path_ptr</code></em>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>path_ptr</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the hash value for <em class="parameter"><code>path_ptr</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2593171"></a><h3>
+<a name="thunar-vfs-path-equal"></a>thunar_vfs_path_equal ()</h3>
+<a class="indexterm" name="id2593179"></a><pre class="programlisting">gboolean thunar_vfs_path_equal (gconstpointer path_ptr_a,
+ gconstpointer path_ptr_b);</pre>
+<p>
+Checks whether <em class="parameter"><code>path_ptr_a</code></em> and <em class="parameter"><code>path_ptr_b</code></em> refer
+to the same local path.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>path_ptr_a</code></em> :</span></td>
+<td> first <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>path_ptr_b</code></em> :</span></td>
+<td> second <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> <code class="literal">TRUE</code> if <em class="parameter"><code>path_ptr_a</code></em> and <em class="parameter"><code>path_ptr_b</code></em>
+ are equal.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2593292"></a><h3>
+<a name="thunar-vfs-path-is-home"></a>thunar_vfs_path_is_home ()</h3>
+<a class="indexterm" name="id2593301"></a><pre class="programlisting">gboolean thunar_vfs_path_is_home (const <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *path);</pre>
+<p>
+Checks whether <em class="parameter"><code>path</code></em> refers to the users home
+directory.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>path</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> <code class="literal">TRUE</code> if <em class="parameter"><code>path</code></em> refers to the users
+ home directory.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2593380"></a><h3>
+<a name="thunar-vfs-path-is-root"></a>thunar_vfs_path_is_root ()</h3>
+<a class="indexterm" name="id2593388"></a><pre class="programlisting">gboolean thunar_vfs_path_is_root (const <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *path);</pre>
+<p>
+Checks whether path refers to the root directory.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>path</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> <code class="literal">TRUE</code> if <em class="parameter"><code>path</code></em> refers to the root
+ directory.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2593530"></a><h3>
+<a name="thunar-vfs-path-relative"></a>thunar_vfs_path_relative ()</h3>
+<a class="indexterm" name="id2593539"></a><pre class="programlisting"><a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a>* thunar_vfs_path_relative (<a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *parent,
+ const gchar *name);</pre>
+<p>
+Returns a <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a> for the file <em class="parameter"><code>name</code></em> relative to
+<em class="parameter"><code>parent</code></em>. <em class="parameter"><code>name</code></em> must be a valid filename in the local file
+system encoding and it may not contain any slashes.
+</p>
+<p>
+The caller is responsible to free the returned object
+using <a href="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-unref"><code class="function">thunar_vfs_path_unref()</code></a> when no longer needed.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>parent</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em> :</span></td>
+<td> a valid filename in the local file system encoding.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the path to <em class="parameter"><code>name</code></em> relative to <em class="parameter"><code>parent</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2593734"></a><h3>
+<a name="thunar-vfs-path-get-name"></a>thunar_vfs_path_get_name ()</h3>
+<a class="indexterm" name="id2593742"></a><pre class="programlisting">const gchar* thunar_vfs_path_get_name (const <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *path);</pre>
+<p>
+Returns the base name of the <em class="parameter"><code>path</code></em> in the local
+file system encoding.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>path</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the base name of <em class="parameter"><code>path</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2593816"></a><h3>
+<a name="thunar-vfs-path-get-parent"></a>thunar_vfs_path_get_parent ()</h3>
+<a class="indexterm" name="id2593825"></a><pre class="programlisting"><a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a>* thunar_vfs_path_get_parent (const <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *path);</pre>
+<p>
+Returns the <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a> that refers to the parent
+directory of <em class="parameter"><code>path</code></em> or <code class="literal">NULL</code> if <em class="parameter"><code>path</code></em> refers to the
+root file system node.
+</p>
+<p>
+No additional reference is taken on the parent, so
+you'll need to call <a href="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-ref"><code class="function">thunar_vfs_path_ref()</code></a> yourself
+if you need to keep a reference.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>path</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the parent of <em class="parameter"><code>path</code></em> or <code class="literal">NULL</code>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2593933"></a><h3>
+<a name="thunar-vfs-path-dup-string"></a>thunar_vfs_path_dup_string ()</h3>
+<a class="indexterm" name="id2593942"></a><pre class="programlisting">gchar* thunar_vfs_path_dup_string (const <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *path);</pre>
+<p>
+Like <a href="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-to-string"><code class="function">thunar_vfs_path_to_string()</code></a>, this function transform
+the <em class="parameter"><code>path</code></em> to its string representation, but unlike
+<a href="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-to-string"><code class="function">thunar_vfs_path_to_string()</code></a>, this function automatically
+allocates the required amount of memory from the heap.
+The returned string must be freed by the caller when
+no longer needed.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>path</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the string representation of <em class="parameter"><code>path</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2594032"></a><h3>
+<a name="thunar-vfs-path-to-string"></a>thunar_vfs_path_to_string ()</h3>
+<a class="indexterm" name="id2594040"></a><pre class="programlisting">gssize thunar_vfs_path_to_string (const <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *path,
+ gchar *buffer,
+ gsize bufsize,
+ GError **error);</pre>
+<p>
+Stores the <em class="parameter"><code>path</code></em> into the string pointed to by <em class="parameter"><code>buffer</code></em>,
+so it can be used for system path operations. Returns
+the number of bytes stored to <em class="parameter"><code>buffer</code></em> or a negative
+value if <em class="parameter"><code>bufsize</code></em> is too small to store the whole <em class="parameter"><code>path</code></em>.
+In the latter case <em class="parameter"><code>error</code></em> will be set to point to an
+error describing the problem.
+</p>
+<p>
+If <em class="parameter"><code>buffer</code></em> is allocated on the stack, it is suggested
+to use <span class="type">THUNAR_VFS_PATH_MAXSTRLEN</span> for the buffer size
+in most cases. The stack should never be used in recursive
+functions; use <a href="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-dup-string"><code class="function">thunar_vfs_path_dup_string()</code></a> instead there.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>path</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>buffer</code></em> :</span></td>
+<td> the buffer to store the path string to.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>bufsize</code></em> :</span></td>
+<td> the size of <em class="parameter"><code>buffer</code></em> in bytes.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>error</code></em> :</span></td>
+<td> return location for errors or <code class="literal">NULL</code>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the number of bytes (including the null
+ byte) stored to <em class="parameter"><code>buffer</code></em> or a negative
+ value if <em class="parameter"><code>buffer</code></em> cannot hold the whole
+ <em class="parameter"><code>path</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2594247"></a><h3>
+<a name="thunar-vfs-path-dup-uri"></a>thunar_vfs_path_dup_uri ()</h3>
+<a class="indexterm" name="id2594256"></a><pre class="programlisting">gchar* thunar_vfs_path_dup_uri (const <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *path);</pre>
+<p>
+Similar to <a href="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-to-uri"><code class="function">thunar_vfs_path_to_uri()</code></a>, but automatically
+allocates memory on the heap instead of using a user
+supplied buffer for the URI.
+</p>
+<p>
+The caller is responsible to free the returned string
+using <code class="function">g_free()</code> when no longer needed.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>path</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the escaped URI for <em class="parameter"><code>path</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2594411"></a><h3>
+<a name="thunar-vfs-path-to-uri"></a>thunar_vfs_path_to_uri ()</h3>
+<a class="indexterm" name="id2594420"></a><pre class="programlisting">gssize thunar_vfs_path_to_uri (const <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *path,
+ gchar *buffer,
+ gsize bufsize,
+ GError **error);</pre>
+<p>
+Escapes <em class="parameter"><code>path</code></em> according to the rules of the file URI
+specification and stores the escaped URI to <em class="parameter"><code>buffer</code></em>.
+Returns the number of bytes stored to <em class="parameter"><code>buffer</code></em> or a
+negative value if <em class="parameter"><code>bufsize</code></em> is too small to store the
+escaped URI. In the latter case <em class="parameter"><code>error</code></em> will be set to
+point to an <span class="type">GError</span> describing the problem.
+</p>
+<p>
+When using the stack for <em class="parameter"><code>buffer</code></em>, it is suggested to
+use <span class="type">THUNAR_VFS_PATH_MAXURILEN</span> for the buffer size in
+most cases. The stack should never be used in recursive
+functions; use <a href="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-dup-uri"><code class="function">thunar_vfs_path_dup_uri()</code></a> instead there.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>path</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>buffer</code></em> :</span></td>
+<td> the buffer to store the URI string to.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>bufsize</code></em> :</span></td>
+<td> the size of <em class="parameter"><code>buffer</code></em> in bytes.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>error</code></em> :</span></td>
+<td> return location for errors or <code class="literal">NULL</code>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the number of bytes (including the null
+ byte) stored to <em class="parameter"><code>buffer</code></em> or a negative
+ value if <em class="parameter"><code>buffer</code></em> cannot hold the URI.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2594689"></a><h3>
+<a name="thunar-vfs-path-list-from-string"></a>thunar_vfs_path_list_from_string ()</h3>
+<a class="indexterm" name="id2594700"></a><pre class="programlisting">GList* thunar_vfs_path_list_from_string
+ (const gchar *uri_string,
+ GError **error);</pre>
+<p>
+Splits an URI list conforming to the text/uri-list
+mime type defined in RFC 2483 into individual URIs,
+discarding any comments and whitespace.
+</p>
+<p>
+If all URIs were successfully parsed into <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a>
+objects, the list of parsed URIs will be returned, and
+you'll need to call <a href="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-list-free"><code class="function">thunar_vfs_path_list_free()</code></a> to
+release the list resources. Else if the parsing fails
+at some point, <code class="literal">NULL</code> will be returned and <em class="parameter"><code>error</code></em> will
+be set to describe the cause.
+</p>
+<p>
+Note, that if <em class="parameter"><code>string</code></em> contains no URIs, this function
+will also return <code class="literal">NULL</code>, but <em class="parameter"><code>error</code></em> won't be set. So
+take care when checking for an error condition!</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>uri_string</code></em> :</span></td>
+<td> a string representation of an URI list.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>error</code></em> :</span></td>
+<td> return location for errors.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the list of <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a>'s or <code class="literal">NULL</code>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2594838"></a><h3>
+<a name="thunar-vfs-path-list-to-string"></a>thunar_vfs_path_list_to_string ()</h3>
+<a class="indexterm" name="id2594848"></a><pre class="programlisting">gchar* thunar_vfs_path_list_to_string (GList *path_list);</pre>
+<p>
+Free the returned value using <code class="function">g_free()</code> when you
+are done with it.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>path_list</code></em> :</span></td>
+<td> a list of <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a>s.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the string representation of <em class="parameter"><code>path_list</code></em> conforming to the
+ text/uri-list mime type defined in RFC 2483.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2594923"></a><h3>
+<a name="thunar-vfs-path-list-append"></a>thunar_vfs_path_list_append ()</h3>
+<a class="indexterm" name="id2594932"></a><pre class="programlisting">GList* thunar_vfs_path_list_append (GList *path_list,
+ <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *path);</pre>
+<p>
+Appends <em class="parameter"><code>path</code></em> to the <em class="parameter"><code>path_list</code></em> while taking
+an additional reference for <em class="parameter"><code>path</code></em>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>path_list</code></em> :</span></td>
+<td> a list of <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a>s.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>path</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> pointer to the extended <em class="parameter"><code>path_list</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2595042"></a><h3>
+<a name="thunar-vfs-path-list-prepend"></a>thunar_vfs_path_list_prepend ()</h3>
+<a class="indexterm" name="id2595050"></a><pre class="programlisting">GList* thunar_vfs_path_list_prepend (GList *path_list,
+ <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath">ThunarVfsPath</a> *path);</pre>
+<p>
+Similar to <a href="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-list-append"><code class="function">thunar_vfs_path_list_append()</code></a>, but
+prepends the <em class="parameter"><code>path</code></em> to the <em class="parameter"><code>path_list</code></em>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>path_list</code></em> :</span></td>
+<td> a list of <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a>s.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>path</code></em> :</span></td>
+<td> a <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> pointer to the extended <em class="parameter"><code>path_list</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2595162"></a><h3>
+<a name="thunar-vfs-path-list-copy"></a>thunar_vfs_path_list_copy ()</h3>
+<a class="indexterm" name="id2595171"></a><pre class="programlisting">GList* thunar_vfs_path_list_copy (GList *path_list);</pre>
+<p>
+Takes a deep copy of <em class="parameter"><code>path_list</code></em> and returns the
+result. The caller is responsible to free the
+returned list using <a href="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-list-free"><code class="function">thunar_vfs_path_list_free()</code></a>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>path_list</code></em> :</span></td>
+<td> a list of <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a>s.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> a deep copy of <em class="parameter"><code>path_list</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2595320"></a><h3>
+<a name="thunar-vfs-path-list-free"></a>thunar_vfs_path_list_free ()</h3>
+<a class="indexterm" name="id2595329"></a><pre class="programlisting">void thunar_vfs_path_list_free (GList *path_list);</pre>
+<p>
+Frees the <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a>s in <em class="parameter"><code>path_list</code></em> and
+the <em class="parameter"><code>path_list</code></em> itself.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><em class="parameter"><code>path_list</code></em> :</span></td>
+<td> a list of <a href="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"><span class="type">ThunarVfsPath</span></a>s.
+</td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="thunar-vfs-Basic-Types.html"><b><< Basic Types</b></a></td>
+<td align="right"><a accesskey="n" href="thunar-vfs-ThunarVfsInfo.html"><b>ThunarVfsInfo >></b></a></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/thunar-vfs-Utility-Functions.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/thunar-vfs-Utility-Functions.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/thunar-vfs-Utility-Functions.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,107 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Utility Functions</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar-VFS Reference Manual">
+<link rel="up" href="fundamentals.html" title="Part II. Fundamentals">
+<link rel="prev" href="thunar-vfs-ThunarVfsInfo.html" title="ThunarVfsInfo">
+<link rel="next" href="filesystem-monitoring.html" title="Part III. Filesystem Monitoring">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="introduction.html" title="Part I. Introduction">
+<link rel="part" href="fundamentals.html" title="Part II. Fundamentals">
+<link rel="part" href="filesystem-monitoring.html" title="Part III. Filesystem Monitoring">
+<link rel="part" href="mime-types.html" title="Part IV. MIME Types">
+<link rel="part" href="users-and-groups-handling.html" title="Part V. Users and Groups Handling">
+<link rel="part" href="volume-handling.html" title="Part VI. Volume Handling">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="thunar-vfs-ThunarVfsInfo.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="fundamentals.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Thunar-VFS Reference Manual</th>
+<td><a accesskey="n" href="filesystem-monitoring.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="thunar-vfs-Utility-Functions"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">Utility Functions</span></h2>
+<p>Utility Functions — </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+gchar* <a href="thunar-vfs-Utility-Functions.html#thunar-vfs-humanize-size">thunar_vfs_humanize_size</a> (<a href="thunar-vfs-Basic-Types.html#ThunarVfsFileSize">ThunarVfsFileSize</a> size,
+ gchar *buffer,
+ gsize buflen);
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2601587"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2601596"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2601602"></a><h3>
+<a name="thunar-vfs-humanize-size"></a>thunar_vfs_humanize_size ()</h3>
+<a class="indexterm" name="id2601610"></a><pre class="programlisting">gchar* thunar_vfs_humanize_size (<a href="thunar-vfs-Basic-Types.html#ThunarVfsFileSize">ThunarVfsFileSize</a> size,
+ gchar *buffer,
+ gsize buflen);</pre>
+<p>
+The caller is responsible to free the returned string using <code class="function">g_free()</code>
+if you pass <code class="literal">NULL</code> for <em class="parameter"><code>buffer</code></em>. Else the returned string will be a
+pointer to <em class="parameter"><code>buffer</code></em>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>size</code></em> :</span></td>
+<td> size in bytes.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>buffer</code></em> :</span></td>
+<td> destination buffer or <code class="literal">NULL</code> to dynamically allocate a buffer.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>buflen</code></em> :</span></td>
+<td> length of <em class="parameter"><code>buffer</code></em> in bytes.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> a string containing a human readable description of <em class="parameter"><code>size</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="thunar-vfs-ThunarVfsInfo.html"><b><< ThunarVfsInfo</b></a></td>
+<td align="right"><a accesskey="n" href="filesystem-monitoring.html"><b>Part III. Filesystem Monitoring >></b></a></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/thunar-vfs.devhelp
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/thunar-vfs.devhelp 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/thunar-vfs.devhelp 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<book xmlns="http://www.devhelp.net/book" title="Thunar-VFS Reference Manual" link="index.html" author="Benedikt Meurer" name="thunar-vfs">
+ <chapters>
+ <sub name="Introduction" link="introduction.html"/>
+ <sub name="Fundamentals" link="fundamentals.html">
+ <sub name="Initialization and Shutdown" link="thunar-vfs-Initialization-and-Shutdown.html"/>
+ <sub name="Basic Types" link="thunar-vfs-Basic-Types.html"/>
+ <sub name="ThunarVfsPath" link="thunar-vfs-ThunarVfsPath.html"/>
+ <sub name="ThunarVfsInfo" link="thunar-vfs-ThunarVfsInfo.html"/>
+ <sub name="Utility Functions" link="thunar-vfs-Utility-Functions.html"/>
+ </sub>
+ <sub name="Filesystem Monitoring" link="filesystem-monitoring.html">
+ <sub name="ThunarVfsMonitor" link="ThunarVfsMonitor.html"/>
+ </sub>
+ <sub name="MIME Types" link="mime-types.html">
+ <sub name="ThunarVfsMimeInfo" link="thunar-vfs-ThunarVfsMimeInfo.html"/>
+ <sub name="ThunarVfsMimeDatabase" link="ThunarVfsMimeDatabase.html"/>
+ <sub name="ThunarVfsMimeApplication" link="thunar-vfs-ThunarVfsMimeApplication.html"/>
+ </sub>
+ <sub name="Users and Groups Handling" link="users-and-groups-handling.html">
+ <sub name="ThunarVfsUser" link="ThunarVfsUser.html"/>
+ <sub name="ThunarVfsGroup" link="ThunarVfsGroup.html"/>
+ <sub name="ThunarVfsUserManager" link="ThunarVfsUserManager.html"/>
+ </sub>
+ <sub name="Volume Handling" link="volume-handling.html">
+ <sub name="ThunarVfsVolume" link="ThunarVfsVolume.html"/>
+ <sub name="ThunarVfsVolumeManager" link="ThunarVfsVolumeManager.html"/>
+ </sub>
+ <sub name="Index" link="ix01.html"/>
+ </chapters>
+ <functions>
+ <function name="thunar_vfs_init ()" link="thunar-vfs-Initialization-and-Shutdown.html#thunar-vfs-init"/>
+ <function name="thunar_vfs_shutdown ()" link="thunar-vfs-Initialization-and-Shutdown.html#thunar-vfs-shutdown"/>
+ <function name="enum ThunarVfsFileType" link="thunar-vfs-Basic-Types.html#ThunarVfsFileType"/>
+ <function name="enum ThunarVfsFileMode" link="thunar-vfs-Basic-Types.html#ThunarVfsFileMode"/>
+ <function name="enum ThunarVfsFileFlags" link="thunar-vfs-Basic-Types.html#ThunarVfsFileFlags"/>
+ <function name="ThunarVfsFileDevice" link="thunar-vfs-Basic-Types.html#ThunarVfsFileDevice"/>
+ <function name="ThunarVfsFileInode" link="thunar-vfs-Basic-Types.html#ThunarVfsFileInode"/>
+ <function name="ThunarVfsFileSize" link="thunar-vfs-Basic-Types.html#ThunarVfsFileSize"/>
+ <function name="ThunarVfsFileTime" link="thunar-vfs-Basic-Types.html#ThunarVfsFileTime"/>
+ <function name="ThunarVfsGroupId" link="thunar-vfs-Basic-Types.html#ThunarVfsGroupId"/>
+ <function name="ThunarVfsUserId" link="thunar-vfs-Basic-Types.html#ThunarVfsUserId"/>
+ <function name="ThunarVfsPath" link="thunar-vfs-ThunarVfsPath.html#ThunarVfsPath"/>
+ <function name="thunar_vfs_path_new ()" link="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-new"/>
+ <function name="thunar_vfs_path_get_for_home ()" link="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-get-for-home"/>
+ <function name="thunar_vfs_path_get_for_root ()" link="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-get-for-root"/>
+ <function name="thunar_vfs_path_ref ()" link="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-ref"/>
+ <function name="thunar_vfs_path_unref ()" link="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-unref"/>
+ <function name="thunar_vfs_path_hash ()" link="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-hash"/>
+ <function name="thunar_vfs_path_equal ()" link="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-equal"/>
+ <function name="thunar_vfs_path_is_home ()" link="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-is-home"/>
+ <function name="thunar_vfs_path_is_root ()" link="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-is-root"/>
+ <function name="thunar_vfs_path_relative ()" link="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-relative"/>
+ <function name="thunar_vfs_path_get_name ()" link="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-get-name"/>
+ <function name="thunar_vfs_path_get_parent ()" link="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-get-parent"/>
+ <function name="thunar_vfs_path_dup_string ()" link="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-dup-string"/>
+ <function name="thunar_vfs_path_to_string ()" link="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-to-string"/>
+ <function name="thunar_vfs_path_dup_uri ()" link="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-dup-uri"/>
+ <function name="thunar_vfs_path_to_uri ()" link="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-to-uri"/>
+ <function name="thunar_vfs_path_list_from_string ()" link="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-list-from-string"/>
+ <function name="thunar_vfs_path_list_to_string ()" link="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-list-to-string"/>
+ <function name="thunar_vfs_path_list_append ()" link="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-list-append"/>
+ <function name="thunar_vfs_path_list_prepend ()" link="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-list-prepend"/>
+ <function name="thunar_vfs_path_list_copy ()" link="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-list-copy"/>
+ <function name="thunar_vfs_path_list_free ()" link="thunar-vfs-ThunarVfsPath.html#thunar-vfs-path-list-free"/>
+ <function name="ThunarVfsInfo" link="thunar-vfs-ThunarVfsInfo.html#ThunarVfsInfo"/>
+ <function name="thunar_vfs_info_new_for_path ()" link="thunar-vfs-ThunarVfsInfo.html#thunar-vfs-info-new-for-path"/>
+ <function name="thunar_vfs_info_ref ()" link="thunar-vfs-ThunarVfsInfo.html#thunar-vfs-info-ref"/>
+ <function name="thunar_vfs_info_unref ()" link="thunar-vfs-ThunarVfsInfo.html#thunar-vfs-info-unref"/>
+ <function name="thunar_vfs_info_execute ()" link="thunar-vfs-ThunarVfsInfo.html#thunar-vfs-info-execute"/>
+ <function name="thunar_vfs_info_rename ()" link="thunar-vfs-ThunarVfsInfo.html#thunar-vfs-info-rename"/>
+ <function name="thunar_vfs_info_matches ()" link="thunar-vfs-ThunarVfsInfo.html#thunar-vfs-info-matches"/>
+ <function name="thunar_vfs_info_list_free ()" link="thunar-vfs-ThunarVfsInfo.html#thunar-vfs-info-list-free"/>
+ <function name="thunar_vfs_humanize_size ()" link="thunar-vfs-Utility-Functions.html#thunar-vfs-humanize-size"/>
+ <function name="ThunarVfsMonitor" link="ThunarVfsMonitor.html#ThunarVfsMonitor-struct"/>
+ <function name="enum ThunarVfsMonitorEvent" link="ThunarVfsMonitor.html#ThunarVfsMonitorEvent"/>
+ <function name="ThunarVfsMonitorHandle" link="ThunarVfsMonitor.html#ThunarVfsMonitorHandle"/>
+ <function name="ThunarVfsMonitorCallback ()" link="ThunarVfsMonitor.html#ThunarVfsMonitorCallback"/>
+ <function name="thunar_vfs_monitor_get_default ()" link="ThunarVfsMonitor.html#thunar-vfs-monitor-get-default"/>
+ <function name="thunar_vfs_monitor_add_directory ()" link="ThunarVfsMonitor.html#thunar-vfs-monitor-add-directory"/>
+ <function name="thunar_vfs_monitor_add_file ()" link="ThunarVfsMonitor.html#thunar-vfs-monitor-add-file"/>
+ <function name="thunar_vfs_monitor_remove ()" link="ThunarVfsMonitor.html#thunar-vfs-monitor-remove"/>
+ <function name="thunar_vfs_monitor_feed ()" link="ThunarVfsMonitor.html#thunar-vfs-monitor-feed"/>
+ <function name="thunar_vfs_monitor_wait ()" link="ThunarVfsMonitor.html#thunar-vfs-monitor-wait"/>
+ <function name="ThunarVfsMimeInfo" link="thunar-vfs-ThunarVfsMimeInfo.html#ThunarVfsMimeInfo"/>
+ <function name="thunar_vfs_mime_info_new ()" link="thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-new"/>
+ <function name="thunar_vfs_mime_info_ref ()" link="thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-ref"/>
+ <function name="thunar_vfs_mime_info_unref ()" link="thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-unref"/>
+ <function name="thunar_vfs_mime_info_get_comment ()" link="thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-get-comment"/>
+ <function name="thunar_vfs_mime_info_get_name ()" link="thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-get-name"/>
+ <function name="thunar_vfs_mime_info_get_media ()" link="thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-get-media"/>
+ <function name="thunar_vfs_mime_info_get_subtype ()" link="thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-get-subtype"/>
+ <function name="thunar_vfs_mime_info_hash ()" link="thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-hash"/>
+ <function name="thunar_vfs_mime_info_equal ()" link="thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-equal"/>
+ <function name="thunar_vfs_mime_info_lookup_icon_name ()" link="thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-lookup-icon-name"/>
+ <function name="thunar_vfs_mime_info_list_free ()" link="thunar-vfs-ThunarVfsMimeInfo.html#thunar-vfs-mime-info-list-free"/>
+ <function name="ThunarVfsMimeDatabase" link="ThunarVfsMimeDatabase.html#ThunarVfsMimeDatabase-struct"/>
+ <function name="thunar_vfs_mime_database_get_default ()" link="ThunarVfsMimeDatabase.html#thunar-vfs-mime-database-get-default"/>
+ <function name="thunar_vfs_mime_database_get_info ()" link="ThunarVfsMimeDatabase.html#thunar-vfs-mime-database-get-info"/>
+ <function name="thunar_vfs_mime_database_get_info_for_data ()" link="ThunarVfsMimeDatabase.html#thunar-vfs-mime-database-get-info-for-data"/>
+ <function name="thunar_vfs_mime_database_get_info_for_name ()" link="ThunarVfsMimeDatabase.html#thunar-vfs-mime-database-get-info-for-name"/>
+ <function name="thunar_vfs_mime_database_get_info_for_file ()" link="ThunarVfsMimeDatabase.html#thunar-vfs-mime-database-get-info-for-file"/>
+ <function name="thunar_vfs_mime_database_get_infos_for_info ()" link="ThunarVfsMimeDatabase.html#thunar-vfs-mime-database-get-infos-for-info"/>
+ <function name="thunar_vfs_mime_database_get_applications ()" link="ThunarVfsMimeDatabase.html#thunar-vfs-mime-database-get-applications"/>
+ <function name="thunar_vfs_mime_database_get_default_application ()" link="ThunarVfsMimeDatabase.html#thunar-vfs-mime-database-get-default-application"/>
+ <function name="thunar_vfs_mime_database_set_default_application ()" link="ThunarVfsMimeDatabase.html#thunar-vfs-mime-database-set-default-application"/>
+ <function name="thunar_vfs_mime_database_add_application ()" link="ThunarVfsMimeDatabase.html#thunar-vfs-mime-database-add-application"/>
+ <function name="THUNAR_VFS_MIME_APPLICATION_ERROR" link="thunar-vfs-ThunarVfsMimeApplication.html#THUNAR-VFS-MIME-APPLICATION-ERROR:CAPS"/>
+ <function name="enum ThunarVfsMimeApplicationError" link="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplicationError"/>
+ <function name="enum ThunarVfsMimeApplicationFlags" link="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplicationFlags"/>
+ <function name="ThunarVfsMimeApplication" link="thunar-vfs-ThunarVfsMimeApplication.html#ThunarVfsMimeApplication"/>
+ <function name="thunar_vfs_mime_application_new_from_desktop_id ()" link="thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-new-from-desktop-id"/>
+ <function name="thunar_vfs_mime_application_new_from_file ()" link="thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-new-from-file"/>
+ <function name="thunar_vfs_mime_application_ref ()" link="thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-ref"/>
+ <function name="thunar_vfs_mime_application_unref ()" link="thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-unref"/>
+ <function name="thunar_vfs_mime_application_get_command ()" link="thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-get-command"/>
+ <function name="thunar_vfs_mime_application_get_desktop_id ()" link="thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-get-desktop-id"/>
+ <function name="thunar_vfs_mime_application_get_flags ()" link="thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-get-flags"/>
+ <function name="thunar_vfs_mime_application_get_name ()" link="thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-get-name"/>
+ <function name="thunar_vfs_mime_application_exec ()" link="thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-exec"/>
+ <function name="thunar_vfs_mime_application_exec_with_env ()" link="thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-exec-with-env"/>
+ <function name="thunar_vfs_mime_application_lookup_icon_name ()" link="thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-lookup-icon-name"/>
+ <function name="thunar_vfs_mime_application_hash ()" link="thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-hash"/>
+ <function name="thunar_vfs_mime_application_equal ()" link="thunar-vfs-ThunarVfsMimeApplication.html#thunar-vfs-mime-application-equal"/>
+ <function name="ThunarVfsUser" link="ThunarVfsUser.html#ThunarVfsUser-struct"/>
+ <function name="thunar_vfs_user_get_groups ()" link="ThunarVfsUser.html#thunar-vfs-user-get-groups"/>
+ <function name="thunar_vfs_user_get_primary_group ()" link="ThunarVfsUser.html#thunar-vfs-user-get-primary-group"/>
+ <function name="thunar_vfs_user_get_id ()" link="ThunarVfsUser.html#thunar-vfs-user-get-id"/>
+ <function name="thunar_vfs_user_get_name ()" link="ThunarVfsUser.html#thunar-vfs-user-get-name"/>
+ <function name="thunar_vfs_user_get_real_name ()" link="ThunarVfsUser.html#thunar-vfs-user-get-real-name"/>
+ <function name="thunar_vfs_user_is_me ()" link="ThunarVfsUser.html#thunar-vfs-user-is-me"/>
+ <function name="ThunarVfsGroup" link="ThunarVfsGroup.html#ThunarVfsGroup-struct"/>
+ <function name="thunar_vfs_group_get_id ()" link="ThunarVfsGroup.html#thunar-vfs-group-get-id"/>
+ <function name="thunar_vfs_group_get_name ()" link="ThunarVfsGroup.html#thunar-vfs-group-get-name"/>
+ <function name="ThunarVfsUserManager" link="ThunarVfsUserManager.html#ThunarVfsUserManager-struct"/>
+ <function name="thunar_vfs_user_manager_get_default ()" link="ThunarVfsUserManager.html#thunar-vfs-user-manager-get-default"/>
+ <function name="thunar_vfs_user_manager_get_group_by_id ()" link="ThunarVfsUserManager.html#thunar-vfs-user-manager-get-group-by-id"/>
+ <function name="thunar_vfs_user_manager_get_user_by_id ()" link="ThunarVfsUserManager.html#thunar-vfs-user-manager-get-user-by-id"/>
+ <function name="enum ThunarVfsVolumeKind" link="ThunarVfsVolume.html#ThunarVfsVolumeKind"/>
+ <function name="enum ThunarVfsVolumeStatus" link="ThunarVfsVolume.html#ThunarVfsVolumeStatus"/>
+ <function name="ThunarVfsVolumeIface" link="ThunarVfsVolume.html#ThunarVfsVolumeIface"/>
+ <function name="ThunarVfsVolume" link="ThunarVfsVolume.html#ThunarVfsVolume-struct"/>
+ <function name="thunar_vfs_volume_get_kind ()" link="ThunarVfsVolume.html#thunar-vfs-volume-get-kind"/>
+ <function name="thunar_vfs_volume_get_name ()" link="ThunarVfsVolume.html#thunar-vfs-volume-get-name"/>
+ <function name="thunar_vfs_volume_get_status ()" link="ThunarVfsVolume.html#thunar-vfs-volume-get-status"/>
+ <function name="thunar_vfs_volume_get_mount_point ()" link="ThunarVfsVolume.html#thunar-vfs-volume-get-mount-point"/>
+ <function name="thunar_vfs_volume_is_mounted ()" link="ThunarVfsVolume.html#thunar-vfs-volume-is-mounted"/>
+ <function name="thunar_vfs_volume_is_present ()" link="ThunarVfsVolume.html#thunar-vfs-volume-is-present"/>
+ <function name="thunar_vfs_volume_is_removable ()" link="ThunarVfsVolume.html#thunar-vfs-volume-is-removable"/>
+ <function name="thunar_vfs_volume_get_free_space ()" link="ThunarVfsVolume.html#thunar-vfs-volume-get-free-space"/>
+ <function name="thunar_vfs_volume_lookup_icon_name ()" link="ThunarVfsVolume.html#thunar-vfs-volume-lookup-icon-name"/>
+ <function name="thunar_vfs_volume_changed ()" link="ThunarVfsVolume.html#thunar-vfs-volume-changed"/>
+ <function name="ThunarVfsVolumeManagerIface" link="ThunarVfsVolumeManager.html#ThunarVfsVolumeManagerIface"/>
+ <function name="ThunarVfsVolumeManager" link="ThunarVfsVolumeManager.html#ThunarVfsVolumeManager-struct"/>
+ <function name="thunar_vfs_volume_manager_get_default ()" link="ThunarVfsVolumeManager.html#thunar-vfs-volume-manager-get-default"/>
+ <function name="thunar_vfs_volume_manager_get_volume_by_info ()" link="ThunarVfsVolumeManager.html#thunar-vfs-volume-manager-get-volume-by-info"/>
+ <function name="thunar_vfs_volume_manager_get_volumes ()" link="ThunarVfsVolumeManager.html#thunar-vfs-volume-manager-get-volumes"/>
+ <function name="thunar_vfs_volume_manager_volumes_added ()" link="ThunarVfsVolumeManager.html#thunar-vfs-volume-manager-volumes-added"/>
+ <function name="thunar_vfs_volume_manager_volumes_removed ()" link="ThunarVfsVolumeManager.html#thunar-vfs-volume-manager-volumes-removed"/>
+ </functions>
+</book>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/up.png
===================================================================
(Binary files differ)
Property changes on: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/up.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/users-and-groups-handling.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/users-and-groups-handling.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/users-and-groups-handling.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,34 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Part V. Users and Groups Handling</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar-VFS Reference Manual">
+<link rel="up" href="index.html" title="Thunar-VFS Reference Manual">
+<link rel="prev" href="thunar-vfs-ThunarVfsMimeApplication.html" title="ThunarVfsMimeApplication">
+<link rel="next" href="ThunarVfsUser.html" title="ThunarVfsUser">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="introduction.html" title="Part I. Introduction">
+<link rel="part" href="fundamentals.html" title="Part II. Fundamentals">
+<link rel="part" href="filesystem-monitoring.html" title="Part III. Filesystem Monitoring">
+<link rel="part" href="mime-types.html" title="Part IV. MIME Types">
+<link rel="part" href="users-and-groups-handling.html" title="Part V. Users and Groups Handling">
+<link rel="part" href="volume-handling.html" title="Part VI. Volume Handling">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="thunar-vfs-ThunarVfsMimeApplication.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Thunar-VFS Reference Manual</th>
+<td><a accesskey="n" href="ThunarVfsUser.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="part" lang="en"><div class="titlepage"><div><div><h1 class="title">
+<a name="users-and-groups-handling"></a>Users and Groups Handling</h1></div></div></div></div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="thunar-vfs-ThunarVfsMimeApplication.html"><b><< ThunarVfsMimeApplication</b></a></td>
+<td align="right"><a accesskey="n" href="ThunarVfsUser.html"><b>ThunarVfsUser >></b></a></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/volume-handling.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/volume-handling.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/html/volume-handling.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,34 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Part VI. Volume Handling</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar-VFS Reference Manual">
+<link rel="up" href="index.html" title="Thunar-VFS Reference Manual">
+<link rel="prev" href="ThunarVfsUserManager.html" title="ThunarVfsUserManager">
+<link rel="next" href="ThunarVfsVolume.html" title="ThunarVfsVolume">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="introduction.html" title="Part I. Introduction">
+<link rel="part" href="fundamentals.html" title="Part II. Fundamentals">
+<link rel="part" href="filesystem-monitoring.html" title="Part III. Filesystem Monitoring">
+<link rel="part" href="mime-types.html" title="Part IV. MIME Types">
+<link rel="part" href="users-and-groups-handling.html" title="Part V. Users and Groups Handling">
+<link rel="part" href="volume-handling.html" title="Part VI. Volume Handling">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="ThunarVfsUserManager.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Thunar-VFS Reference Manual</th>
+<td><a accesskey="n" href="ThunarVfsVolume.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="part" lang="en"><div class="titlepage"><div><div><h1 class="title">
+<a name="volume-handling"></a>Volume Handling</h1></div></div></div></div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="ThunarVfsUserManager.html"><b><< ThunarVfsUserManager</b></a></td>
+<td align="right"><a accesskey="n" href="ThunarVfsVolume.html"><b>ThunarVfsVolume >></b></a></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/thunar-vfs-docs.sgml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/thunar-vfs-docs.sgml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/thunar-vfs-docs.sgml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,107 @@
+<?xml version="1.0"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"[
+<!ENTITY thunar-vfs-group SYSTEM "xml/thunar-vfs-group.xml">
+<!ENTITY thunar-vfs-info SYSTEM "xml/thunar-vfs-info.xml">
+<!ENTITY thunar-vfs-init-shutdown SYSTEM "xml/thunar-vfs-init-shutdown.xml">
+<!ENTITY thunar-vfs-interactive-job SYSTEM "xml/thunar-vfs-interactive-job.xml">
+<!ENTITY thunar-vfs-job SYSTEM "xml/thunar-vfs-job.xml">
+<!ENTITY thunar-vfs-mime-application SYSTEM "xml/thunar-vfs-mime-application.xml">
+<!ENTITY thunar-vfs-mime-database SYSTEM "xml/thunar-vfs-mime-database.xml">
+<!ENTITY thunar-vfs-mime-info SYSTEM "xml/thunar-vfs-mime-info.xml">
+<!ENTITY thunar-vfs-monitor SYSTEM "xml/thunar-vfs-monitor.xml">
+<!ENTITY thunar-vfs-operations SYSTEM "xml/thunar-vfs-operations.xml">
+<!ENTITY thunar-vfs-types SYSTEM "xml/thunar-vfs-types.xml">
+<!ENTITY thunar-vfs-path SYSTEM "xml/thunar-vfs-path.xml">
+<!ENTITY thunar-vfs-user SYSTEM "xml/thunar-vfs-user.xml">
+<!ENTITY thunar-vfs-user-manager SYSTEM "xml/thunar-vfs-user-manager.xml">
+<!ENTITY thunar-vfs-util SYSTEM "xml/thunar-vfs-util.xml">
+<!ENTITY thunar-vfs-volume SYSTEM "xml/thunar-vfs-volume.xml">
+<!ENTITY thunar-vfs-volume-manager SYSTEM "xml/thunar-vfs-volume-manager.xml">
+
+<!ENTITY version SYSTEM "version.xml">
+<!ENTITY date "September 2005">
+]>
+
+<book id="index">
+ <bookinfo>
+ <title>Thunar-VFS Reference Manual</title>
+ <releaseinfo>Version &version;</releaseinfo>
+ <pubdate>&date;</pubdate>
+
+ <copyright>
+ <year>2005</year>
+ <holder>Benedikt Meurer</holder>
+ </copyright>
+
+ <legalnotice id="legalnotice">
+ <para>
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.1 or
+ any later version published by the Free Software Foundation; with no
+ Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+ Texts. The complete license text is available from the <ulink
+ type="http" url="http://www.gnu.org/">Free Software Foundation</ulink>.
+ </para>
+ </legalnotice>
+
+ <authorgroup>
+ <author>
+ <firstname>Benedikt</firstname>
+ <surname>Meurer</surname>
+ <affiliation>
+ <address><email>benny at xfce.org</email></address>
+ <orgname>os-cillation</orgname>
+ <orgdiv>System development</orgdiv>
+ <jobtitle>Software developer</jobtitle>
+ </affiliation>
+ </author>
+ </authorgroup>
+ </bookinfo>
+
+ <part id="introduction">
+ <title>Introduction</title>
+ </part>
+
+ <part id="fundamentals">
+ <title>Fundamentals</title>
+ &thunar-vfs-init-shutdown;
+ &thunar-vfs-types;
+ &thunar-vfs-path;
+ &thunar-vfs-info;
+ &thunar-vfs-util;
+ </part>
+
+ <part id="filesystem-monitoring">
+ <title>Filesystem Monitoring</title>
+ &thunar-vfs-monitor;
+ </part>
+
+ <part id="mime-types">
+ <title>MIME Types</title>
+ &thunar-vfs-mime-info;
+ &thunar-vfs-mime-database;
+ &thunar-vfs-mime-application;
+ </part>
+
+ <part id="users-and-groups-handling">
+ <title>Users and Groups Handling</title>
+ &thunar-vfs-user;
+ &thunar-vfs-group;
+ &thunar-vfs-user-manager;
+ </part>
+
+ <part id="volume-handling">
+ <title>Volume Handling</title>
+ &thunar-vfs-volume;
+ &thunar-vfs-volume-manager;
+ </part>
+
+ <index>
+ <title>Index</title>
+ </index>
+</book>
+
+<!--
+ vi:set ts=2 sw=2 et ai syntax=docbkxml:
+-->
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/thunar-vfs-overrides.txt
===================================================================
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/thunar-vfs-sections.txt
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/thunar-vfs-sections.txt 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/thunar-vfs-sections.txt 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,390 @@
+<INCLUDE>thunar-vfs/thunar-vfs.h</INCLUDE>
+
+
+
+<SECTION>
+<FILE>thunar-vfs-group</FILE>
+<TITLE>ThunarVfsGroup</TITLE>
+ThunarVfsGroup
+thunar_vfs_group_get_id
+thunar_vfs_group_get_name
+<SUBSECTION Standard>
+ThunarVfsGroupClass
+THUNAR_VFS_TYPE_GROUP
+THUNAR_VFS_GROUP
+THUNAR_VFS_GROUP_CLASS
+THUNAR_VFS_IS_GROUP
+THUNAR_VFS_IS_GROUP_CLASS
+THUNAR_VFS_GROUP_GET_CLASS
+<SUBSECTION Private>
+thunar_vfs_group_get_type
+</SECTION>
+
+
+
+<SECTION>
+<FILE>thunar-vfs-info</FILE>
+<TITLE>ThunarVfsInfo</TITLE>
+ThunarVfsInfo
+thunar_vfs_info_new_for_path
+thunar_vfs_info_ref
+thunar_vfs_info_unref
+thunar_vfs_info_execute
+thunar_vfs_info_rename
+thunar_vfs_info_matches
+thunar_vfs_info_list_free
+<SUBSECTION Standard>
+THUNAR_VFS_TYPE_INFO
+<SUBSECTION Private>
+thunar_vfs_info_get_type
+</SECTION>
+
+
+
+<SECTION>
+<FILE>thunar-vfs-init-shutdown</FILE>
+<TITLE>Initialization and Shutdown</TITLE>
+thunar_vfs_init
+thunar_vfs_shutdown
+</SECTION>
+
+
+
+<SECTION>
+<FILE>thunar-vfs-interactive-job</FILE>
+<TITLE>ThunarVfsInteractiveJob</TITLE>
+ThunarVfsInteractiveJobResponse
+ThunarVfsInteractiveJob
+<SUBSECTION Standard>
+ThunarVfsInteractiveJobClass
+THUNAR_VFS_TYPE_VFS_INTERACTIVE_JOB_RESPONSE
+THUNAR_VFS_TYPE_INTERACTIVE_JOB
+THUNAR_VFS_INTERACTIVE_JOB
+THUNAR_VFS_IS_INTERACTIVE_JOB
+THUNAR_VFS_IS_INTERACTIVE_JOB_CLASS
+THUNAR_VFS_INTERACTIVE_JOB_CLASS
+THUNAR_VFS_INTERACTIVE_JOB_GET_CLASS
+<SUBSECTION Private>
+thunar_vfs_interactive_job_response_get_type
+thunar_vfs_interactive_job_get_type
+</SECTION>
+
+
+
+<SECTION>
+<FILE>thunar-vfs-job</FILE>
+<TITLE>ThunarVfsJob</TITLE>
+ThunarVfsJob
+thunar_vfs_job_launch
+thunar_vfs_job_cancel
+thunar_vfs_job_cancelled
+thunar_vfs_job_emit_valist
+thunar_vfs_job_emit
+thunar_vfs_job_error
+<SUBSECTION Standard>
+ThunarVfsJobClass
+THUNAR_VFS_TYPE_JOB
+THUNAR_VFS_JOB
+THUNAR_VFS_JOB_CLASS
+THUNAR_VFS_IS_JOB
+THUNAR_VFS_IS_JOB_CLASS
+THUNAR_VFS_JOB_GET_CLASS
+<SUBSECTION Private>
+ThunarVfsJobPrivate
+thunar_vfs_job_get_type
+</SECTION>
+
+
+
+<SECTION>
+<FILE>thunar-vfs-mime-application</FILE>
+<TITLE>ThunarVfsMimeApplication</TITLE>
+THUNAR_VFS_MIME_APPLICATION_ERROR
+ThunarVfsMimeApplicationError
+ThunarVfsMimeApplicationFlags
+ThunarVfsMimeApplication
+thunar_vfs_mime_application_new_from_desktop_id
+thunar_vfs_mime_application_new_from_file
+thunar_vfs_mime_application_ref
+thunar_vfs_mime_application_unref
+thunar_vfs_mime_application_get_command
+thunar_vfs_mime_application_get_desktop_id
+thunar_vfs_mime_application_get_flags
+thunar_vfs_mime_application_get_name
+thunar_vfs_mime_application_exec
+thunar_vfs_mime_application_exec_with_env
+thunar_vfs_mime_application_lookup_icon_name
+thunar_vfs_mime_application_hash
+thunar_vfs_mime_application_equal
+<SUBSECTION Standard>
+THUNAR_VFS_TYPE_MIME_APPLICATION
+THUNAR_VFS_TYPE_VFS_MIME_APPLICATION_ERROR
+THUNAR_VFS_TYPE_VFS_MIME_APPLICATION_FLAGS
+<SUBSECTION Private>
+thunar_vfs_mime_application_get_type
+thunar_vfs_mime_application_error_quark
+thunar_vfs_mime_application_error_get_type
+thunar_vfs_mime_application_flags_get_type
+</SECTION>
+
+
+<SECTION>
+<FILE>thunar-vfs-mime-database</FILE>
+<TITLE>ThunarVfsMimeDatabase</TITLE>
+ThunarVfsMimeDatabase
+thunar_vfs_mime_database_get_default
+thunar_vfs_mime_database_get_info
+thunar_vfs_mime_database_get_info_for_data
+thunar_vfs_mime_database_get_info_for_name
+thunar_vfs_mime_database_get_info_for_file
+thunar_vfs_mime_database_get_infos_for_info
+thunar_vfs_mime_database_get_applications
+thunar_vfs_mime_database_get_default_application
+thunar_vfs_mime_database_set_default_application
+thunar_vfs_mime_database_add_application
+<SUBSECTION Standard>
+ThunarVfsMimeDatabaseClass
+THUNAR_VFS_TYPE_MIME_DATABASE
+THUNAR_VFS_MIME_DATABASE
+THUNAR_VFS_MIME_DATABASE_CLASS
+THUNAR_VFS_IS_MIME_DATABASE
+THUNAR_VFS_IS_MIME_DATABASE_CLASS
+THUNAR_VFS_MIME_DATABASE_GET_CLASS
+<SUBSECTION Private>
+thunar_vfs_mime_database_get_type
+</SECTION>
+
+
+<SECTION>
+<FILE>thunar-vfs-mime-info</FILE>
+<TITLE>ThunarVfsMimeInfo</TITLE>
+ThunarVfsMimeInfo
+thunar_vfs_mime_info_new
+thunar_vfs_mime_info_ref
+thunar_vfs_mime_info_unref
+thunar_vfs_mime_info_get_comment
+thunar_vfs_mime_info_get_name
+thunar_vfs_mime_info_get_media
+thunar_vfs_mime_info_get_subtype
+thunar_vfs_mime_info_hash
+thunar_vfs_mime_info_equal
+thunar_vfs_mime_info_lookup_icon_name
+thunar_vfs_mime_info_list_free
+<SUBSECTION Standard>
+THUNAR_VFS_TYPE_MIME_INFO
+<SUBSECTION Private>
+thunar_vfs_mime_info_get_type
+</SECTION>
+
+
+
+<SECTION>
+<FILE>thunar-vfs-monitor</FILE>
+<TITLE>ThunarVfsMonitor</TITLE>
+ThunarVfsMonitor
+ThunarVfsMonitorEvent
+ThunarVfsMonitorHandle
+ThunarVfsMonitorCallback
+thunar_vfs_monitor_get_default
+thunar_vfs_monitor_add_directory
+thunar_vfs_monitor_add_file
+thunar_vfs_monitor_remove
+thunar_vfs_monitor_feed
+thunar_vfs_monitor_wait
+<SUBSECTION Standard>
+ThunarVfsMonitorClass
+THUNAR_VFS_TYPE_VFS_MONITOR_EVENT
+THUNAR_VFS_TYPE_MONITOR
+THUNAR_VFS_MONITOR
+THUNAR_VFS_MONITOR_CLASS
+THUNAR_VFS_IS_MONITOR
+THUNAR_VFS_IS_MONITOR_CLASS
+THUNAR_VFS_MONITOR_GET_CLASS
+<SUBSECTION Private>
+thunar_vfs_monitor_event_get_type
+thunar_vfs_monitor_get_type
+</SECTION>
+
+
+
+<SECTION>
+<FILE>thunar-vfs-operations</FILE>
+<TITLE>Operations</TITLE>
+thunar_vfs_listdir
+thunar_vfs_copy_file
+thunar_vfs_copy_files
+thunar_vfs_link_file
+thunar_vfs_link_files
+thunar_vfs_move_file
+thunar_vfs_move_files
+thunar_vfs_unlink_file
+thunar_vfs_unlink_files
+thunar_vfs_make_directory
+thunar_vfs_make_directories
+</SECTION>
+
+
+
+<SECTION>
+<FILE>thunar-vfs-types</FILE>
+<TITLE>Basic Types</TITLE>
+ThunarVfsFileType
+ThunarVfsFileMode
+ThunarVfsFileFlags
+ThunarVfsFileDevice
+ThunarVfsFileInode
+ThunarVfsFileSize
+ThunarVfsFileTime
+ThunarVfsGroupId
+ThunarVfsUserId
+<SUBSECTION Standard>
+THUNAR_VFS_TYPE_VFS_FILE_TYPE
+THUNAR_VFS_TYPE_VFS_FILE_MODE
+THUNAR_VFS_TYPE_VFS_FILE_FLAGS
+<SUBSECTION Private>
+thunar_vfs_file_type_get_type
+thunar_vfs_file_mode_get_type
+thunar_vfs_file_flags_get_type
+</SECTION>
+
+
+
+<SECTION>
+<FILE>thunar-vfs-path</FILE>
+<TITLE>ThunarVfsPath</TITLE>
+ThunarVfsPath
+thunar_vfs_path_new
+thunar_vfs_path_get_for_home
+thunar_vfs_path_get_for_root
+thunar_vfs_path_ref
+thunar_vfs_path_unref
+thunar_vfs_path_hash
+thunar_vfs_path_equal
+thunar_vfs_path_is_home
+thunar_vfs_path_is_root
+thunar_vfs_path_relative
+thunar_vfs_path_get_name
+thunar_vfs_path_get_parent
+thunar_vfs_path_dup_string
+thunar_vfs_path_to_string
+thunar_vfs_path_dup_uri
+thunar_vfs_path_to_uri
+thunar_vfs_path_list_from_string
+thunar_vfs_path_list_to_string
+thunar_vfs_path_list_append
+thunar_vfs_path_list_prepend
+thunar_vfs_path_list_copy
+thunar_vfs_path_list_free
+<SUBSECTION Standard>
+THUNAR_VFS_TYPE_PATH
+<SUBSECTION Private>
+thunar_vfs_path_get_type
+</SECTION>
+
+
+
+<SECTION>
+<FILE>thunar-vfs-user</FILE>
+<TITLE>ThunarVfsUser</TITLE>
+ThunarVfsUser
+thunar_vfs_user_get_groups
+thunar_vfs_user_get_primary_group
+thunar_vfs_user_get_id
+thunar_vfs_user_get_name
+thunar_vfs_user_get_real_name
+thunar_vfs_user_is_me
+<SUBSECTION Standard>
+ThunarVfsUserClass
+THUNAR_VFS_TYPE_USER
+THUNAR_VFS_USER
+THUNAR_VFS_USER_CLASS
+THUNAR_VFS_IS_USER
+THUNAR_VFS_IS_USER_CLASS
+THUNAR_VFS_USER_GET_CLASS
+<SUBSECTION Private>
+thunar_vfs_user_get_type
+</SECTION>
+
+
+<SECTION>
+<FILE>thunar-vfs-user-manager</FILE>
+<TITLE>ThunarVfsUserManager</TITLE>
+ThunarVfsUserManager
+thunar_vfs_user_manager_get_default
+thunar_vfs_user_manager_get_group_by_id
+thunar_vfs_user_manager_get_user_by_id
+<SUBSECTION Standard>
+ThunarVfsUserManagerClass
+THUNAR_VFS_TYPE_USER_MANAGER
+THUNAR_VFS_USER_MANAGER
+THUNAR_VFS_USER_MANAGER_CLASS
+THUNAR_VFS_IS_USER_MANAGER
+THUNAR_VFS_IS_USER_MANAGER_CLASS
+THUNAR_VFS_USER_MANAGER_GET_CLASS
+<SUBSECTION Private>
+thunar_vfs_user_manager_get_type
+</SECTION>
+
+
+
+<SECTION>
+<FILE>thunar-vfs-util</FILE>
+<TITLE>Utility Functions</TITLE>
+thunar_vfs_humanize_size
+</SECTION>
+
+
+
+<SECTION>
+<FILE>thunar-vfs-volume</FILE>
+<TITLE>ThunarVfsVolume</TITLE>
+ThunarVfsVolumeKind
+ThunarVfsVolumeStatus
+ThunarVfsVolumeIface
+ThunarVfsVolume
+thunar_vfs_volume_get_kind
+thunar_vfs_volume_get_name
+thunar_vfs_volume_get_status
+thunar_vfs_volume_get_mount_point
+thunar_vfs_volume_is_mounted
+thunar_vfs_volume_is_present
+thunar_vfs_volume_is_removable
+thunar_vfs_volume_get_free_space
+thunar_vfs_volume_lookup_icon_name
+thunar_vfs_volume_changed
+<SUBSECTION Standard>
+THUNAR_VFS_TYPE_VFS_VOLUME_KIND
+THUNAR_VFS_TYPE_VFS_VOLUME_STATUS
+THUNAR_VFS_TYPE_VOLUME
+THUNAR_VFS_VOLUME
+THUNAR_VFS_IS_VOLUME
+THUNAR_VFS_VOLUME_GET_IFACE
+<SUBSECTION Private>
+thunar_vfs_volume_kind_get_type
+thunar_vfs_volume_status_get_type
+thunar_vfs_volume_get_type
+</SECTION>
+
+
+<SECTION>
+<FILE>thunar-vfs-volume-manager</FILE>
+<TITLE>ThunarVfsVolumeManager</TITLE>
+ThunarVfsVolumeManagerIface
+ThunarVfsVolumeManager
+thunar_vfs_volume_manager_get_default
+thunar_vfs_volume_manager_get_volume_by_info
+thunar_vfs_volume_manager_get_volumes
+thunar_vfs_volume_manager_volumes_added
+thunar_vfs_volume_manager_volumes_removed
+<SUBSECTION Standard>
+THUNAR_VFS_TYPE_VOLUME_MANAGER
+THUNAR_VFS_VOLUME_MANAGER
+THUNAR_VFS_IS_VOLUME_MANAGER
+THUNAR_VFS_VOLUME_MANAGER_GET_IFACE
+<SUBSECTION Private>
+thunar_vfs_volume_manager_get_type
+</SECTION>
+
+
+
+
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/thunar-vfs.types
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/thunar-vfs.types 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/thunar-vfs.types 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,16 @@
+#include <thunar-vfs/thunar-vfs.h>
+
+thunar_vfs_group_get_type
+thunar_vfs_info_get_type
+thunar_vfs_interactive_job_get_type
+thunar_vfs_job_get_type
+thunar_vfs_mime_application_get_type
+thunar_vfs_mime_database_get_type
+thunar_vfs_mime_info_get_type
+thunar_vfs_monitor_get_type
+thunar_vfs_path_get_type
+thunar_vfs_user_get_type
+thunar_vfs_user_manager_get_type
+thunar_vfs_volume_get_type
+thunar_vfs_volume_manager_get_type
+
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-group.sgml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-group.sgml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-group.sgml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,43 @@
+<!-- ##### SECTION Title ##### -->
+ThunarVfsGroup
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### STRUCT ThunarVfsGroup ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION thunar_vfs_group_get_id ##### -->
+<para>
+
+</para>
+
+ at group:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_group_get_name ##### -->
+<para>
+
+</para>
+
+ at group:
+ at Returns:
+
+
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-info.sgml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-info.sgml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-info.sgml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,110 @@
+<!-- ##### SECTION Title ##### -->
+ThunarVfsInfo
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### STRUCT ThunarVfsInfo ##### -->
+<para>
+
+</para>
+
+ at type:
+ at mode:
+ at flags:
+ at uid:
+ at gid:
+ at size:
+ at atime:
+ at mtime:
+ at ctime:
+ at inode:
+ at device:
+ at mime_info:
+ at path:
+ at custom_icon:
+ at display_name:
+
+<!-- ##### FUNCTION thunar_vfs_info_new_for_path ##### -->
+<para>
+
+</para>
+
+ at path:
+ at error:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_info_ref ##### -->
+<para>
+
+</para>
+
+ at info:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_info_unref ##### -->
+<para>
+
+</para>
+
+ at info:
+
+
+<!-- ##### FUNCTION thunar_vfs_info_execute ##### -->
+<para>
+
+</para>
+
+ at info:
+ at screen:
+ at path_list:
+ at error:
+ at Returns:
+<!-- # Unused Parameters # -->
+ at uris:
+
+
+<!-- ##### FUNCTION thunar_vfs_info_rename ##### -->
+<para>
+
+</para>
+
+ at info:
+ at name:
+ at error:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_info_matches ##### -->
+<para>
+
+</para>
+
+ at a:
+ at b:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_info_list_free ##### -->
+<para>
+
+</para>
+
+ at info_list:
+
+
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-init-shutdown.sgml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-init-shutdown.sgml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-init-shutdown.sgml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,33 @@
+<!-- ##### SECTION Title ##### -->
+Initialization and Shutdown
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### FUNCTION thunar_vfs_init ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### FUNCTION thunar_vfs_shutdown ##### -->
+<para>
+
+</para>
+
+
+
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-interactive-job.sgml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-interactive-job.sgml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-interactive-job.sgml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,69 @@
+<!-- ##### SECTION Title ##### -->
+ThunarVfsInteractiveJob
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### ENUM ThunarVfsInteractiveJobResponse ##### -->
+<para>
+
+</para>
+
+ at THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_YES:
+ at THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_YES_ALL:
+ at THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_NO:
+ at THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_CANCEL:
+
+<!-- ##### STRUCT ThunarVfsInteractiveJob ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SIGNAL ThunarVfsInteractiveJob::ask ##### -->
+<para>
+
+</para>
+
+ at thunarvfsinteractivejob: the object which received the signal.
+ at arg1:
+ at arg2:
+ at Returns:
+
+<!-- ##### SIGNAL ThunarVfsInteractiveJob::info-message ##### -->
+<para>
+
+</para>
+
+ at thunarvfsinteractivejob: the object which received the signal.
+ at arg1:
+
+<!-- ##### SIGNAL ThunarVfsInteractiveJob::new-files ##### -->
+<para>
+
+</para>
+
+ at thunarvfsinteractivejob: the object which received the signal.
+ at arg1:
+
+<!-- ##### SIGNAL ThunarVfsInteractiveJob::percent ##### -->
+<para>
+
+</para>
+
+ at thunarvfsinteractivejob: the object which received the signal.
+ at arg1:
+
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-job.sgml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-job.sgml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-job.sgml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,97 @@
+<!-- ##### SECTION Title ##### -->
+ThunarVfsJob
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### STRUCT ThunarVfsJob ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SIGNAL ThunarVfsJob::error ##### -->
+<para>
+
+</para>
+
+ at thunarvfsjob: the object which received the signal.
+ at arg1:
+
+<!-- ##### SIGNAL ThunarVfsJob::finished ##### -->
+<para>
+
+</para>
+
+ at thunarvfsjob: the object which received the signal.
+
+<!-- ##### FUNCTION thunar_vfs_job_launch ##### -->
+<para>
+
+</para>
+
+ at job:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_job_cancel ##### -->
+<para>
+
+</para>
+
+ at job:
+
+
+<!-- ##### FUNCTION thunar_vfs_job_cancelled ##### -->
+<para>
+
+</para>
+
+ at job:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_job_emit_valist ##### -->
+<para>
+
+</para>
+
+ at job:
+ at signal_id:
+ at signal_detail:
+ at var_args:
+
+
+<!-- ##### FUNCTION thunar_vfs_job_emit ##### -->
+<para>
+
+</para>
+
+ at job:
+ at signal_id:
+ at signal_detail:
+ at Varargs:
+
+
+<!-- ##### FUNCTION thunar_vfs_job_error ##### -->
+<para>
+
+</para>
+
+ at job:
+ at error:
+
+
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-mime-application.sgml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-mime-application.sgml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-mime-application.sgml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,179 @@
+<!-- ##### SECTION Title ##### -->
+ThunarVfsMimeApplication
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### MACRO THUNAR_VFS_MIME_APPLICATION_ERROR ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### ENUM ThunarVfsMimeApplicationError ##### -->
+<para>
+
+</para>
+
+ at THUNAR_VFS_MIME_APPLICATION_ERROR_LOCAL_FILES_ONLY:
+
+<!-- ##### ENUM ThunarVfsMimeApplicationFlags ##### -->
+<para>
+
+</para>
+
+ at THUNAR_VFS_MIME_APPLICATION_HIDDEN:
+ at THUNAR_VFS_MIME_APPLICATION_REQUIRES_TERMINAL:
+ at THUNAR_VFS_MIME_APPLICATION_SUPPORTS_STARTUP_NOTIFY:
+ at THUNAR_VFS_MIME_APPLICATION_SUPPORTS_MULTI:
+
+<!-- ##### STRUCT ThunarVfsMimeApplication ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION thunar_vfs_mime_application_new_from_desktop_id ##### -->
+<para>
+
+</para>
+
+ at desktop_id:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_mime_application_new_from_file ##### -->
+<para>
+
+</para>
+
+ at path:
+ at desktop_id:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_mime_application_ref ##### -->
+<para>
+
+</para>
+
+ at application:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_mime_application_unref ##### -->
+<para>
+
+</para>
+
+ at application:
+
+
+<!-- ##### FUNCTION thunar_vfs_mime_application_get_command ##### -->
+<para>
+
+</para>
+
+ at application:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_mime_application_get_desktop_id ##### -->
+<para>
+
+</para>
+
+ at application:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_mime_application_get_flags ##### -->
+<para>
+
+</para>
+
+ at application:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_mime_application_get_name ##### -->
+<para>
+
+</para>
+
+ at application:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_mime_application_exec ##### -->
+<para>
+
+</para>
+
+ at application:
+ at screen:
+ at path_list:
+ at error:
+ at Returns:
+<!-- # Unused Parameters # -->
+ at uris:
+
+
+<!-- ##### FUNCTION thunar_vfs_mime_application_exec_with_env ##### -->
+<para>
+
+</para>
+
+ at application:
+ at screen:
+ at path_list:
+ at envp:
+ at error:
+ at Returns:
+<!-- # Unused Parameters # -->
+ at uris:
+
+
+<!-- ##### FUNCTION thunar_vfs_mime_application_lookup_icon_name ##### -->
+<para>
+
+</para>
+
+ at application:
+ at icon_theme:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_mime_application_hash ##### -->
+<para>
+
+</para>
+
+ at application:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_mime_application_equal ##### -->
+<para>
+
+</para>
+
+ at a:
+ at b:
+ at Returns:
+
+
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-mime-database.sgml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-mime-database.sgml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-mime-database.sgml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,130 @@
+<!-- ##### SECTION Title ##### -->
+ThunarVfsMimeDatabase
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### STRUCT ThunarVfsMimeDatabase ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION thunar_vfs_mime_database_get_default ##### -->
+<para>
+
+</para>
+
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_mime_database_get_info ##### -->
+<para>
+
+</para>
+
+ at database:
+ at mime_type:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_mime_database_get_info_for_data ##### -->
+<para>
+
+</para>
+
+ at database:
+ at data:
+ at length:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_mime_database_get_info_for_name ##### -->
+<para>
+
+</para>
+
+ at database:
+ at name:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_mime_database_get_info_for_file ##### -->
+<para>
+
+</para>
+
+ at database:
+ at path:
+ at name:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_mime_database_get_infos_for_info ##### -->
+<para>
+
+</para>
+
+ at database:
+ at info:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_mime_database_get_applications ##### -->
+<para>
+
+</para>
+
+ at database:
+ at info:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_mime_database_get_default_application ##### -->
+<para>
+
+</para>
+
+ at database:
+ at info:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_mime_database_set_default_application ##### -->
+<para>
+
+</para>
+
+ at database:
+ at info:
+ at application:
+ at error:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_mime_database_add_application ##### -->
+<para>
+
+</para>
+
+ at database:
+ at info:
+ at name:
+ at exec:
+ at error:
+ at Returns:
+
+
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-mime-info.sgml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-mime-info.sgml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-mime-info.sgml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,125 @@
+<!-- ##### SECTION Title ##### -->
+ThunarVfsMimeInfo
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### STRUCT ThunarVfsMimeInfo ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION thunar_vfs_mime_info_new ##### -->
+<para>
+
+</para>
+
+ at name:
+ at len:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_mime_info_ref ##### -->
+<para>
+
+</para>
+
+ at info:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_mime_info_unref ##### -->
+<para>
+
+</para>
+
+ at info:
+
+
+<!-- ##### FUNCTION thunar_vfs_mime_info_get_comment ##### -->
+<para>
+
+</para>
+
+ at info:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_mime_info_get_name ##### -->
+<para>
+
+</para>
+
+ at info:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_mime_info_get_media ##### -->
+<para>
+
+</para>
+
+ at info:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_mime_info_get_subtype ##### -->
+<para>
+
+</para>
+
+ at info:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_mime_info_hash ##### -->
+<para>
+
+</para>
+
+ at info:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_mime_info_equal ##### -->
+<para>
+
+</para>
+
+ at a:
+ at b:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_mime_info_lookup_icon_name ##### -->
+<para>
+
+</para>
+
+ at info:
+ at icon_theme:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_mime_info_list_free ##### -->
+<para>
+
+</para>
+
+ at info_list:
+
+
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-monitor.sgml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-monitor.sgml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-monitor.sgml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,121 @@
+<!-- ##### SECTION Title ##### -->
+ThunarVfsMonitor
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### STRUCT ThunarVfsMonitor ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### ENUM ThunarVfsMonitorEvent ##### -->
+<para>
+
+</para>
+
+ at THUNAR_VFS_MONITOR_EVENT_CHANGED:
+ at THUNAR_VFS_MONITOR_EVENT_CREATED:
+ at THUNAR_VFS_MONITOR_EVENT_DELETED:
+
+<!-- ##### STRUCT ThunarVfsMonitorHandle ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### USER_FUNCTION ThunarVfsMonitorCallback ##### -->
+<para>
+
+</para>
+
+ at monitor:
+ at handle:
+ at event:
+ at handle_path:
+ at event_path:
+ at user_data:
+<!-- # Unused Parameters # -->
+ at handle_uri:
+ at event_uri:
+
+
+<!-- ##### FUNCTION thunar_vfs_monitor_get_default ##### -->
+<para>
+
+</para>
+
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_monitor_add_directory ##### -->
+<para>
+
+</para>
+
+ at monitor:
+ at path:
+ at callback:
+ at user_data:
+ at Returns:
+<!-- # Unused Parameters # -->
+ at uri:
+
+
+<!-- ##### FUNCTION thunar_vfs_monitor_add_file ##### -->
+<para>
+
+</para>
+
+ at monitor:
+ at path:
+ at callback:
+ at user_data:
+ at Returns:
+<!-- # Unused Parameters # -->
+ at uri:
+
+
+<!-- ##### FUNCTION thunar_vfs_monitor_remove ##### -->
+<para>
+
+</para>
+
+ at monitor:
+ at handle:
+
+
+<!-- ##### FUNCTION thunar_vfs_monitor_feed ##### -->
+<para>
+
+</para>
+
+ at monitor:
+ at event:
+ at path:
+<!-- # Unused Parameters # -->
+ at uri:
+
+
+<!-- ##### FUNCTION thunar_vfs_monitor_wait ##### -->
+<para>
+
+</para>
+
+ at monitor:
+
+
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-operations.sgml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-operations.sgml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-operations.sgml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,137 @@
+<!-- ##### SECTION Title ##### -->
+Operations
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### FUNCTION thunar_vfs_listdir ##### -->
+<para>
+
+</para>
+
+ at path:
+ at error:
+ at Returns:
+<!-- # Unused Parameters # -->
+ at uri:
+
+
+<!-- ##### FUNCTION thunar_vfs_copy_file ##### -->
+<para>
+
+</para>
+
+ at source_path:
+ at target_path:
+ at error:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_copy_files ##### -->
+<para>
+
+</para>
+
+ at source_path_list:
+ at target_path_list:
+ at error:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_link_file ##### -->
+<para>
+
+</para>
+
+ at source_path:
+ at target_path:
+ at error:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_link_files ##### -->
+<para>
+
+</para>
+
+ at source_path_list:
+ at target_path_list:
+ at error:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_move_file ##### -->
+<para>
+
+</para>
+
+ at source_path:
+ at target_path:
+ at error:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_move_files ##### -->
+<para>
+
+</para>
+
+ at source_path_list:
+ at target_path_list:
+ at error:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_unlink_file ##### -->
+<para>
+
+</para>
+
+ at path:
+ at error:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_unlink_files ##### -->
+<para>
+
+</para>
+
+ at path_list:
+ at error:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_make_directory ##### -->
+<para>
+
+</para>
+
+ at path:
+ at error:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_make_directories ##### -->
+<para>
+
+</para>
+
+ at path_list:
+ at error:
+ at Returns:
+
+
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-path.sgml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-path.sgml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-path.sgml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,231 @@
+<!-- ##### SECTION Title ##### -->
+ThunarVfsPath
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### STRUCT ThunarVfsPath ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION thunar_vfs_path_new ##### -->
+<para>
+
+</para>
+
+ at identifier:
+ at error:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_path_get_for_home ##### -->
+<para>
+
+</para>
+
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_path_get_for_root ##### -->
+<para>
+
+</para>
+
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_path_ref ##### -->
+<para>
+
+</para>
+
+ at path:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_path_unref ##### -->
+<para>
+
+</para>
+
+ at path:
+
+
+<!-- ##### FUNCTION thunar_vfs_path_hash ##### -->
+<para>
+
+</para>
+
+ at path_ptr:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_path_equal ##### -->
+<para>
+
+</para>
+
+ at path_ptr_a:
+ at path_ptr_b:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_path_is_home ##### -->
+<para>
+
+</para>
+
+ at path:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_path_is_root ##### -->
+<para>
+
+</para>
+
+ at path:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_path_relative ##### -->
+<para>
+
+</para>
+
+ at parent:
+ at name:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_path_get_name ##### -->
+<para>
+
+</para>
+
+ at path:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_path_get_parent ##### -->
+<para>
+
+</para>
+
+ at path:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_path_dup_string ##### -->
+<para>
+
+</para>
+
+ at path:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_path_to_string ##### -->
+<para>
+
+</para>
+
+ at path:
+ at buffer:
+ at bufsize:
+ at error:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_path_dup_uri ##### -->
+<para>
+
+</para>
+
+ at path:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_path_to_uri ##### -->
+<para>
+
+</para>
+
+ at path:
+ at buffer:
+ at bufsize:
+ at error:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_path_list_from_string ##### -->
+<para>
+
+</para>
+
+ at uri_string:
+ at error:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_path_list_to_string ##### -->
+<para>
+
+</para>
+
+ at path_list:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_path_list_append ##### -->
+<para>
+
+</para>
+
+ at path_list:
+ at path:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_path_list_prepend ##### -->
+<para>
+
+</para>
+
+ at path_list:
+ at path:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_path_list_copy ##### -->
+<para>
+
+</para>
+
+ at path_list:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_path_list_free ##### -->
+<para>
+
+</para>
+
+ at path_list:
+
+
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-thumb-factory.sgml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-thumb-factory.sgml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-thumb-factory.sgml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,97 @@
+<!-- ##### SECTION Title ##### -->
+ThunarVfsThumbFactory
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### STRUCT ThunarVfsThumbFactory ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### ARG ThunarVfsThumbFactory:size ##### -->
+<para>
+
+</para>
+
+<!-- ##### FUNCTION thunar_vfs_thumb_factory_new ##### -->
+<para>
+
+</para>
+
+ at size:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_thumb_factory_lookup_thumbnail ##### -->
+<para>
+
+</para>
+
+ at factory:
+ at uri:
+ at mtime:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_thumb_factory_can_thumbnail ##### -->
+<para>
+
+</para>
+
+ at factory:
+ at uri:
+ at mime_info:
+ at mtime:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_thumb_factory_has_failed_thumbnail ##### -->
+<para>
+
+</para>
+
+ at factory:
+ at uri:
+ at mtime:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_thumb_factory_generate_thumbnail ##### -->
+<para>
+
+</para>
+
+ at factory:
+ at uri:
+ at mime_info:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_thumb_factory_store_thumbnail ##### -->
+<para>
+
+</para>
+
+ at factory:
+ at pixbuf:
+ at uri:
+ at mtime:
+ at error:
+ at Returns:
+
+
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-thumb.sgml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-thumb.sgml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-thumb.sgml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,48 @@
+<!-- ##### SECTION Title ##### -->
+Thumbnail Functions
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### ENUM ThunarVfsThumbSize ##### -->
+<para>
+
+</para>
+
+ at THUNAR_VFS_THUMB_SIZE_NORMAL:
+ at THUNAR_VFS_THUMB_SIZE_LARGE:
+
+<!-- ##### FUNCTION thunar_vfs_thumb_path_for_uri ##### -->
+<para>
+
+</para>
+
+ at uri:
+ at size:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_thumb_path_is_valid ##### -->
+<para>
+
+</para>
+
+ at thumb_path:
+ at uri:
+ at mtime:
+ at Returns:
+
+
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-trash-info.sgml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-trash-info.sgml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-trash-info.sgml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,60 @@
+<!-- ##### SECTION Title ##### -->
+ThunarVfsTrashInfo
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### STRUCT ThunarVfsTrashInfo ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION thunar_vfs_trash_info_copy ##### -->
+<para>
+
+</para>
+
+ at info:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_trash_info_free ##### -->
+<para>
+
+</para>
+
+ at info:
+
+
+<!-- ##### FUNCTION thunar_vfs_trash_info_get_path ##### -->
+<para>
+
+</para>
+
+ at info:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_trash_info_get_deletion_date ##### -->
+<para>
+
+</para>
+
+ at info:
+ at Returns:
+
+
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-trash-manager.sgml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-trash-manager.sgml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-trash-manager.sgml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,68 @@
+<!-- ##### SECTION Title ##### -->
+ThunarVfsTrashManager
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### STRUCT ThunarVfsTrashManager ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### ARG ThunarVfsTrashManager:empty ##### -->
+<para>
+
+</para>
+
+<!-- ##### FUNCTION thunar_vfs_trash_manager_get_default ##### -->
+<para>
+
+</para>
+
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_trash_manager_is_empty ##### -->
+<para>
+
+</para>
+
+ at manager:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_trash_manager_get_trashes ##### -->
+<para>
+
+</para>
+
+ at manager:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_trash_manager_resolve_uri ##### -->
+<para>
+
+</para>
+
+ at manager:
+ at uri:
+ at path:
+ at error:
+ at Returns:
+
+
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-trash.sgml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-trash.sgml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-trash.sgml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,88 @@
+<!-- ##### SECTION Title ##### -->
+ThunarVfsTrash
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### STRUCT ThunarVfsTrash ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### ARG ThunarVfsTrash:files ##### -->
+<para>
+
+</para>
+
+<!-- ##### FUNCTION thunar_vfs_trash_get_id ##### -->
+<para>
+
+</para>
+
+ at trash:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_trash_get_files ##### -->
+<para>
+
+</para>
+
+ at trash:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_trash_get_info ##### -->
+<para>
+
+</para>
+
+ at trash:
+ at file:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_trash_get_info_path ##### -->
+<para>
+
+</para>
+
+ at trash:
+ at file:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_trash_get_uri ##### -->
+<para>
+
+</para>
+
+ at trash:
+ at file:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_trash_get_path ##### -->
+<para>
+
+</para>
+
+ at trash:
+ at file:
+ at Returns:
+
+
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-types.sgml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-types.sgml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-types.sgml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,99 @@
+<!-- ##### SECTION Title ##### -->
+Basic Types
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### ENUM ThunarVfsFileType ##### -->
+<para>
+
+</para>
+
+ at THUNAR_VFS_FILE_TYPE_SOCKET:
+ at THUNAR_VFS_FILE_TYPE_SYMLINK:
+ at THUNAR_VFS_FILE_TYPE_REGULAR:
+ at THUNAR_VFS_FILE_TYPE_BLOCKDEV:
+ at THUNAR_VFS_FILE_TYPE_DIRECTORY:
+ at THUNAR_VFS_FILE_TYPE_CHARDEV:
+ at THUNAR_VFS_FILE_TYPE_FIFO:
+ at THUNAR_VFS_FILE_TYPE_UNKNOWN:
+
+<!-- ##### ENUM ThunarVfsFileMode ##### -->
+<para>
+
+</para>
+
+ at THUNAR_VFS_FILE_MODE_SUID:
+ at THUNAR_VFS_FILE_MODE_SGID:
+ at THUNAR_VFS_FILE_MODE_STICKY:
+ at THUNAR_VFS_FILE_MODE_USR_ALL:
+ at THUNAR_VFS_FILE_MODE_USR_READ:
+ at THUNAR_VFS_FILE_MODE_USR_WRITE:
+ at THUNAR_VFS_FILE_MODE_USR_EXEC:
+ at THUNAR_VFS_FILE_MODE_GRP_ALL:
+ at THUNAR_VFS_FILE_MODE_GRP_READ:
+ at THUNAR_VFS_FILE_MODE_GRP_WRITE:
+ at THUNAR_VFS_FILE_MODE_GRP_EXEC:
+ at THUNAR_VFS_FILE_MODE_OTH_ALL:
+ at THUNAR_VFS_FILE_MODE_OTH_READ:
+ at THUNAR_VFS_FILE_MODE_OTH_WRITE:
+ at THUNAR_VFS_FILE_MODE_OTH_EXEC:
+
+<!-- ##### ENUM ThunarVfsFileFlags ##### -->
+<para>
+
+</para>
+
+ at THUNAR_VFS_FILE_FLAGS_NONE:
+ at THUNAR_VFS_FILE_FLAGS_SYMLINK:
+ at THUNAR_VFS_FILE_FLAGS_EXECUTABLE:
+
+<!-- ##### TYPEDEF ThunarVfsFileDevice ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### TYPEDEF ThunarVfsFileInode ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### TYPEDEF ThunarVfsFileSize ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### TYPEDEF ThunarVfsFileTime ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### TYPEDEF ThunarVfsGroupId ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### TYPEDEF ThunarVfsUserId ##### -->
+<para>
+
+</para>
+
+
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-unused.sgml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-unused.sgml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-unused.sgml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,584 @@
+<!-- ##### SECTION ./tmpl/thunar-vfs-thumb-factory.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/thunar-vfs-thumb-factory.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/thunar-vfs-thumb-factory.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/thunar-vfs-thumb-factory.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/thunar-vfs-thumb-factory.sgml:Title ##### -->
+ThunarVfsThumbFactory
+
+
+<!-- ##### SECTION ./tmpl/thunar-vfs-thumb.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/thunar-vfs-thumb.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/thunar-vfs-thumb.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/thunar-vfs-thumb.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/thunar-vfs-thumb.sgml:Title ##### -->
+Thumbnail Functions
+
+
+<!-- ##### SECTION ./tmpl/thunar-vfs-trash-info.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/thunar-vfs-trash-info.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/thunar-vfs-trash-info.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/thunar-vfs-trash-info.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/thunar-vfs-trash-info.sgml:Title ##### -->
+ThunarVfsTrashInfo
+
+
+<!-- ##### SECTION ./tmpl/thunar-vfs-trash-manager.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/thunar-vfs-trash-manager.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/thunar-vfs-trash-manager.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/thunar-vfs-trash-manager.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/thunar-vfs-trash-manager.sgml:Title ##### -->
+ThunarVfsTrashManager
+
+
+<!-- ##### SECTION ./tmpl/thunar-vfs-trash.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/thunar-vfs-trash.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/thunar-vfs-trash.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/thunar-vfs-trash.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/thunar-vfs-trash.sgml:Title ##### -->
+ThunarVfsTrash
+
+
+<!-- ##### SECTION ./tmpl/thunar-vfs-uri.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/thunar-vfs-uri.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/thunar-vfs-uri.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/thunar-vfs-uri.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/thunar-vfs-uri.sgml:Title ##### -->
+ThunarVfsURI
+
+
+<!-- ##### STRUCT ThunarVfsThumbFactory ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### ARG ThunarVfsThumbFactory:size ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### ENUM ThunarVfsThumbSize ##### -->
+<para>
+
+</para>
+
+ at THUNAR_VFS_THUMB_SIZE_NORMAL:
+ at THUNAR_VFS_THUMB_SIZE_LARGE:
+
+<!-- ##### STRUCT ThunarVfsTrash ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### ARG ThunarVfsTrash:files ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### STRUCT ThunarVfsTrashInfo ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### STRUCT ThunarVfsTrashManager ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### ARG ThunarVfsTrashManager:empty ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### STRUCT ThunarVfsURI ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### ENUM ThunarVfsURIScheme ##### -->
+<para>
+
+</para>
+
+ at THUNAR_VFS_URI_SCHEME_COMPUTER:
+ at THUNAR_VFS_URI_SCHEME_FILE:
+ at THUNAR_VFS_URI_SCHEME_TRASH:
+
+<!-- ##### FUNCTION thunar_vfs_thumb_factory_can_thumbnail ##### -->
+<para>
+
+</para>
+
+ at factory:
+ at uri:
+ at mime_info:
+ at mtime:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_thumb_factory_generate_thumbnail ##### -->
+<para>
+
+</para>
+
+ at factory:
+ at uri:
+ at mime_info:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_thumb_factory_has_failed_thumbnail ##### -->
+<para>
+
+</para>
+
+ at factory:
+ at uri:
+ at mtime:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_thumb_factory_lookup_thumbnail ##### -->
+<para>
+
+</para>
+
+ at factory:
+ at uri:
+ at mtime:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_thumb_factory_new ##### -->
+<para>
+
+</para>
+
+ at size:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_thumb_factory_store_thumbnail ##### -->
+<para>
+
+</para>
+
+ at factory:
+ at pixbuf:
+ at uri:
+ at mtime:
+ at error:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_thumb_path_for_uri ##### -->
+<para>
+
+</para>
+
+ at uri:
+ at size:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_thumb_path_is_valid ##### -->
+<para>
+
+</para>
+
+ at thumb_path:
+ at uri:
+ at mtime:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_trash_get_files ##### -->
+<para>
+
+</para>
+
+ at trash:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_trash_get_id ##### -->
+<para>
+
+</para>
+
+ at trash:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_trash_get_info ##### -->
+<para>
+
+</para>
+
+ at trash:
+ at file:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_trash_get_info_path ##### -->
+<para>
+
+</para>
+
+ at trash:
+ at file:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_trash_get_path ##### -->
+<para>
+
+</para>
+
+ at trash:
+ at file:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_trash_get_uri ##### -->
+<para>
+
+</para>
+
+ at trash:
+ at file:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_trash_info_copy ##### -->
+<para>
+
+</para>
+
+ at info:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_trash_info_free ##### -->
+<para>
+
+</para>
+
+ at info:
+
+<!-- ##### FUNCTION thunar_vfs_trash_info_get_deletion_date ##### -->
+<para>
+
+</para>
+
+ at info:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_trash_info_get_path ##### -->
+<para>
+
+</para>
+
+ at info:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_trash_manager_get_default ##### -->
+<para>
+
+</para>
+
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_trash_manager_get_trashes ##### -->
+<para>
+
+</para>
+
+ at manager:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_trash_manager_is_empty ##### -->
+<para>
+
+</para>
+
+ at manager:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_trash_manager_resolve_uri ##### -->
+<para>
+
+</para>
+
+ at manager:
+ at uri:
+ at path:
+ at error:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_uri_equal ##### -->
+<para>
+
+</para>
+
+ at a:
+ at b:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_uri_get_display_name ##### -->
+<para>
+
+</para>
+
+ at uri:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_uri_get_md5sum ##### -->
+<para>
+
+</para>
+
+ at uri:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_uri_get_name ##### -->
+<para>
+
+</para>
+
+ at uri:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_uri_get_path ##### -->
+<para>
+
+</para>
+
+ at uri:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_uri_get_scheme ##### -->
+<para>
+
+</para>
+
+ at uri:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_uri_hash ##### -->
+<para>
+
+</para>
+
+ at uri:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_uri_is_home ##### -->
+<para>
+
+</para>
+
+ at uri:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_uri_is_root ##### -->
+<para>
+
+</para>
+
+ at uri:
+ at Returns:
+
+<!-- ##### MACRO thunar_vfs_uri_list_append ##### -->
+<para>
+
+</para>
+
+ at uri_list:
+ at uri:
+
+<!-- ##### FUNCTION thunar_vfs_uri_list_copy ##### -->
+<para>
+
+</para>
+
+ at uri_list:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_uri_list_free ##### -->
+<para>
+
+</para>
+
+ at uri_list:
+
+<!-- ##### FUNCTION thunar_vfs_uri_list_from_string ##### -->
+<para>
+
+</para>
+
+ at string:
+ at error:
+ at Returns:
+
+<!-- ##### MACRO thunar_vfs_uri_list_prepend ##### -->
+<para>
+
+</para>
+
+ at uri_list:
+ at uri:
+
+<!-- ##### FUNCTION thunar_vfs_uri_list_to_string ##### -->
+<para>
+
+</para>
+
+ at uri_list:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_uri_new ##### -->
+<para>
+
+</para>
+
+ at identifier:
+ at error:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_uri_new_for_path ##### -->
+<para>
+
+</para>
+
+ at path:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_uri_parent ##### -->
+<para>
+
+</para>
+
+ at uri:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_uri_ref ##### -->
+<para>
+
+</para>
+
+ at uri:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_uri_relative ##### -->
+<para>
+
+</para>
+
+ at uri:
+ at name:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_uri_to_string ##### -->
+<para>
+
+</para>
+
+ at uri:
+ at Returns:
+
+<!-- ##### FUNCTION thunar_vfs_uri_unref ##### -->
+<para>
+
+</para>
+
+ at uri:
+
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-uri.sgml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-uri.sgml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-uri.sgml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,234 @@
+<!-- ##### SECTION Title ##### -->
+ThunarVfsURI
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### STRUCT ThunarVfsURI ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### ENUM ThunarVfsURIScheme ##### -->
+<para>
+
+</para>
+
+ at THUNAR_VFS_URI_SCHEME_COMPUTER:
+ at THUNAR_VFS_URI_SCHEME_FILE:
+ at THUNAR_VFS_URI_SCHEME_TRASH:
+
+<!-- ##### FUNCTION thunar_vfs_uri_new ##### -->
+<para>
+
+</para>
+
+ at identifier:
+ at error:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_uri_new_for_path ##### -->
+<para>
+
+</para>
+
+ at path:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_uri_ref ##### -->
+<para>
+
+</para>
+
+ at uri:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_uri_unref ##### -->
+<para>
+
+</para>
+
+ at uri:
+
+
+<!-- ##### FUNCTION thunar_vfs_uri_is_home ##### -->
+<para>
+
+</para>
+
+ at uri:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_uri_is_root ##### -->
+<para>
+
+</para>
+
+ at uri:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_uri_get_display_name ##### -->
+<para>
+
+</para>
+
+ at uri:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_uri_get_md5sum ##### -->
+<para>
+
+</para>
+
+ at uri:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_uri_get_name ##### -->
+<para>
+
+</para>
+
+ at uri:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_uri_get_path ##### -->
+<para>
+
+</para>
+
+ at uri:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_uri_get_scheme ##### -->
+<para>
+
+</para>
+
+ at uri:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_uri_parent ##### -->
+<para>
+
+</para>
+
+ at uri:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_uri_relative ##### -->
+<para>
+
+</para>
+
+ at uri:
+ at name:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_uri_to_string ##### -->
+<para>
+
+</para>
+
+ at uri:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_uri_hash ##### -->
+<para>
+
+</para>
+
+ at uri:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_uri_equal ##### -->
+<para>
+
+</para>
+
+ at a:
+ at b:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_uri_list_from_string ##### -->
+<para>
+
+</para>
+
+ at string:
+ at error:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_uri_list_to_string ##### -->
+<para>
+
+</para>
+
+ at uri_list:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_uri_list_copy ##### -->
+<para>
+
+</para>
+
+ at uri_list:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_uri_list_free ##### -->
+<para>
+
+</para>
+
+ at uri_list:
+
+
+<!-- ##### MACRO thunar_vfs_uri_list_append ##### -->
+<para>
+
+</para>
+
+ at uri_list:
+ at uri:
+
+
+<!-- ##### MACRO thunar_vfs_uri_list_prepend ##### -->
+<para>
+
+</para>
+
+ at uri_list:
+ at uri:
+
+
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-user-manager.sgml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-user-manager.sgml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-user-manager.sgml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,53 @@
+<!-- ##### SECTION Title ##### -->
+ThunarVfsUserManager
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### STRUCT ThunarVfsUserManager ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION thunar_vfs_user_manager_get_default ##### -->
+<para>
+
+</para>
+
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_user_manager_get_group_by_id ##### -->
+<para>
+
+</para>
+
+ at manager:
+ at id:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_user_manager_get_user_by_id ##### -->
+<para>
+
+</para>
+
+ at manager:
+ at id:
+ at Returns:
+
+
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-user.sgml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-user.sgml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-user.sgml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,79 @@
+<!-- ##### SECTION Title ##### -->
+ThunarVfsUser
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### STRUCT ThunarVfsUser ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION thunar_vfs_user_get_groups ##### -->
+<para>
+
+</para>
+
+ at user:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_user_get_primary_group ##### -->
+<para>
+
+</para>
+
+ at user:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_user_get_id ##### -->
+<para>
+
+</para>
+
+ at user:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_user_get_name ##### -->
+<para>
+
+</para>
+
+ at user:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_user_get_real_name ##### -->
+<para>
+
+</para>
+
+ at user:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_user_is_me ##### -->
+<para>
+
+</para>
+
+ at user:
+ at Returns:
+
+
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-util.sgml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-util.sgml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-util.sgml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,30 @@
+<!-- ##### SECTION Title ##### -->
+Utility Functions
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### FUNCTION thunar_vfs_humanize_size ##### -->
+<para>
+
+</para>
+
+ at size:
+ at buffer:
+ at buflen:
+ at Returns:
+
+
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-volume-manager.sgml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-volume-manager.sgml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-volume-manager.sgml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,81 @@
+<!-- ##### SECTION Title ##### -->
+ThunarVfsVolumeManager
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### STRUCT ThunarVfsVolumeManagerIface ##### -->
+<para>
+
+</para>
+
+ at __parent__:
+ at get_volume_by_info:
+ at get_volumes:
+ at volumes_added:
+ at volumes_removed:
+
+<!-- ##### STRUCT ThunarVfsVolumeManager ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION thunar_vfs_volume_manager_get_default ##### -->
+<para>
+
+</para>
+
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_volume_manager_get_volume_by_info ##### -->
+<para>
+
+</para>
+
+ at manager:
+ at info:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_volume_manager_get_volumes ##### -->
+<para>
+
+</para>
+
+ at manager:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_volume_manager_volumes_added ##### -->
+<para>
+
+</para>
+
+ at manager:
+ at volumes:
+
+
+<!-- ##### FUNCTION thunar_vfs_volume_manager_volumes_removed ##### -->
+<para>
+
+</para>
+
+ at manager:
+ at volumes:
+
+
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-volume.sgml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-volume.sgml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/tmpl/thunar-vfs-volume.sgml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,150 @@
+<!-- ##### SECTION Title ##### -->
+ThunarVfsVolume
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### ENUM ThunarVfsVolumeKind ##### -->
+<para>
+
+</para>
+
+ at THUNAR_VFS_VOLUME_KIND_UNKNOWN:
+ at THUNAR_VFS_VOLUME_KIND_CDROM:
+ at THUNAR_VFS_VOLUME_KIND_DVD:
+ at THUNAR_VFS_VOLUME_KIND_FLOPPY:
+ at THUNAR_VFS_VOLUME_KIND_HARDDISK:
+ at THUNAR_VFS_VOLUME_KIND_USBSTICK:
+
+<!-- ##### ENUM ThunarVfsVolumeStatus ##### -->
+<para>
+
+</para>
+
+ at THUNAR_VFS_VOLUME_STATUS_MOUNTED:
+ at THUNAR_VFS_VOLUME_STATUS_PRESENT:
+
+<!-- ##### STRUCT ThunarVfsVolumeIface ##### -->
+<para>
+
+</para>
+
+ at __parent__:
+ at get_kind:
+ at get_name:
+ at get_status:
+ at get_mount_point:
+ at get_free_space:
+ at lookup_icon_name:
+ at changed:
+
+<!-- ##### STRUCT ThunarVfsVolume ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION thunar_vfs_volume_get_kind ##### -->
+<para>
+
+</para>
+
+ at volume:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_volume_get_name ##### -->
+<para>
+
+</para>
+
+ at volume:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_volume_get_status ##### -->
+<para>
+
+</para>
+
+ at volume:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_volume_get_mount_point ##### -->
+<para>
+
+</para>
+
+ at volume:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_volume_is_mounted ##### -->
+<para>
+
+</para>
+
+ at volume:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_volume_is_present ##### -->
+<para>
+
+</para>
+
+ at volume:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_volume_is_removable ##### -->
+<para>
+
+</para>
+
+ at volume:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_volume_get_free_space ##### -->
+<para>
+
+</para>
+
+ at volume:
+ at free_space_return:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_volume_lookup_icon_name ##### -->
+<para>
+
+</para>
+
+ at volume:
+ at icon_theme:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunar_vfs_volume_changed ##### -->
+<para>
+
+</para>
+
+ at volume:
+
+
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/version.xml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/version.xml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/version.xml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1 @@
+0.1.4pre-alpha-r18850
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/version.xml.in
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/version.xml.in 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/version.xml.in 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1 @@
+ at PACKAGE_VERSION@
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-group.xml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-group.xml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-group.xml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,95 @@
+<refentry id="ThunarVfsGroup">
+<refmeta>
+<refentrytitle>ThunarVfsGroup</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>THUNAR-VFS Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>ThunarVfsGroup</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+ <link linkend="ThunarVfsGroup-struct">ThunarVfsGroup</link>;
+<link linkend="ThunarVfsGroupId">ThunarVfsGroupId</link> <link linkend="thunar-vfs-group-get-id">thunar_vfs_group_get_id</link> (<link linkend="ThunarVfsGroup">ThunarVfsGroup</link> *group);
+const <link linkend="gchar">gchar</link>* <link linkend="thunar-vfs-group-get-name">thunar_vfs_group_get_name</link> (<link linkend="ThunarVfsGroup">ThunarVfsGroup</link> *group);
+
+
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1>
+<title>Object Hierarchy</title>
+<synopsis>
+
+ <link linkend="GObject">GObject</link>
+ +----ThunarVfsGroup
+</synopsis>
+
+</refsect1>
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="ThunarVfsGroup-struct"/>ThunarVfsGroup</title>
+<indexterm><primary>ThunarVfsGroup</primary></indexterm><programlisting>typedef struct _ThunarVfsGroup ThunarVfsGroup;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-group-get-id"/>thunar_vfs_group_get_id ()</title>
+<indexterm><primary>thunar_vfs_group_get_id</primary></indexterm><programlisting><link linkend="ThunarVfsGroupId">ThunarVfsGroupId</link> thunar_vfs_group_get_id (<link linkend="ThunarVfsGroup">ThunarVfsGroup</link> *group);</programlisting>
+<para>
+Returns the unique id of the given <parameter>group</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>group</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsGroup"><type>ThunarVfsGroup</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the unique id of <parameter>group</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-group-get-name"/>thunar_vfs_group_get_name ()</title>
+<indexterm><primary>thunar_vfs_group_get_name</primary></indexterm><programlisting>const <link linkend="gchar">gchar</link>* thunar_vfs_group_get_name (<link linkend="ThunarVfsGroup">ThunarVfsGroup</link> *group);</programlisting>
+<para>
+Returns the name of the <parameter>group</parameter>. If the system is
+unable to determine the name of <parameter>group</parameter>, it'll
+return the group id as string.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>group</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsGroup"><type>ThunarVfsGroup</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the name of <parameter>group</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-info.xml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-info.xml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-info.xml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,269 @@
+<refentry id="thunar-vfs-ThunarVfsInfo">
+<refmeta>
+<refentrytitle>ThunarVfsInfo</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>THUNAR-VFS Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>ThunarVfsInfo</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+ <link linkend="ThunarVfsInfo">ThunarVfsInfo</link>;
+<link linkend="ThunarVfsInfo">ThunarVfsInfo</link>* <link linkend="thunar-vfs-info-new-for-path">thunar_vfs_info_new_for_path</link> (<link linkend="ThunarVfsPath">ThunarVfsPath</link> *path,
+ <link linkend="GError">GError</link> **error);
+<link linkend="ThunarVfsInfo">ThunarVfsInfo</link>* <link linkend="thunar-vfs-info-ref">thunar_vfs_info_ref</link> (<link linkend="ThunarVfsInfo">ThunarVfsInfo</link> *info);
+<link linkend="void">void</link> <link linkend="thunar-vfs-info-unref">thunar_vfs_info_unref</link> (<link linkend="ThunarVfsInfo">ThunarVfsInfo</link> *info);
+<link linkend="gboolean">gboolean</link> <link linkend="thunar-vfs-info-execute">thunar_vfs_info_execute</link> (const <link linkend="ThunarVfsInfo">ThunarVfsInfo</link> *info,
+ <link linkend="GdkScreen">GdkScreen</link> *screen,
+ <link linkend="GList">GList</link> *path_list,
+ <link linkend="GError">GError</link> **error);
+<link linkend="gboolean">gboolean</link> <link linkend="thunar-vfs-info-rename">thunar_vfs_info_rename</link> (<link linkend="ThunarVfsInfo">ThunarVfsInfo</link> *info,
+ const <link linkend="gchar">gchar</link> *name,
+ <link linkend="GError">GError</link> **error);
+<link linkend="gboolean">gboolean</link> <link linkend="thunar-vfs-info-matches">thunar_vfs_info_matches</link> (const <link linkend="ThunarVfsInfo">ThunarVfsInfo</link> *a,
+ const <link linkend="ThunarVfsInfo">ThunarVfsInfo</link> *b);
+<link linkend="void">void</link> <link linkend="thunar-vfs-info-list-free">thunar_vfs_info_list_free</link> (<link linkend="GList">GList</link> *info_list);
+
+
+</synopsis>
+</refsynopsisdiv>
+
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="ThunarVfsInfo"/>ThunarVfsInfo</title>
+<indexterm><primary>ThunarVfsInfo</primary></indexterm><programlisting>typedef struct {
+ /* File type */
+ ThunarVfsFileType type;
+
+ /* File permissions and special mode flags */
+ ThunarVfsFileMode mode;
+
+ /* File flags */
+ ThunarVfsFileFlags flags;
+
+ /* Owner's user id */
+ ThunarVfsUserId uid;
+
+ /* Owner's group id */
+ ThunarVfsGroupId gid;
+
+ /* Size in bytes */
+ ThunarVfsFileSize size;
+
+ /* time of last access */
+ ThunarVfsFileTime atime;
+
+ /* time of last modification */
+ ThunarVfsFileTime mtime;
+
+ /* time of last status change */
+ ThunarVfsFileTime ctime;
+
+ /* inode id */
+ ThunarVfsFileInode inode;
+
+ /* device id */
+ ThunarVfsFileDevice device;
+
+ /* file's mime type */
+ ThunarVfsMimeInfo *mime_info;
+
+ /* file's absolute path */
+ ThunarVfsPath *path;
+
+ /* file's custom icon (path or themed icon name) */
+ gchar *custom_icon;
+
+ /* file's display name (UTF-8) */
+ gchar *display_name;
+} ThunarVfsInfo;
+</programlisting>
+<para>
+The <link linkend="ThunarVfsInfo"><type>ThunarVfsInfo</type></link> structure provides information about a file system
+entity.</para>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-info-new-for-path"/>thunar_vfs_info_new_for_path ()</title>
+<indexterm><primary>thunar_vfs_info_new_for_path</primary></indexterm><programlisting><link linkend="ThunarVfsInfo">ThunarVfsInfo</link>* thunar_vfs_info_new_for_path (<link linkend="ThunarVfsPath">ThunarVfsPath</link> *path,
+ <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+Queries the <link linkend="ThunarVfsInfo"><type>ThunarVfsInfo</type></link> for the given <parameter>path</parameter>. Returns the
+<link linkend="ThunarVfsInfo"><type>ThunarVfsInfo</type></link> if the operation is successfull, else <literal>NULL</literal>.
+In the latter case, <parameter>error</parameter> will be set to point to a <link linkend="GError"><type>GError</type></link>
+describing the cause of the failure.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>path</parameter> :</term>
+<listitem><simpara> the <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link> of the file whose info should be queried.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter> :</term>
+<listitem><simpara> return location for errors or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the <link linkend="ThunarVfsInfo"><type>ThunarVfsInfo</type></link> for <parameter>path</parameter> or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-info-ref"/>thunar_vfs_info_ref ()</title>
+<indexterm><primary>thunar_vfs_info_ref</primary></indexterm><programlisting><link linkend="ThunarVfsInfo">ThunarVfsInfo</link>* thunar_vfs_info_ref (<link linkend="ThunarVfsInfo">ThunarVfsInfo</link> *info);</programlisting>
+<para>
+Increments the reference count on <parameter>info</parameter> by 1 and
+returns a pointer to <parameter>info</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>info</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsInfo"><type>ThunarVfsInfo</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> a pointer to <parameter>info</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-info-unref"/>thunar_vfs_info_unref ()</title>
+<indexterm><primary>thunar_vfs_info_unref</primary></indexterm><programlisting><link linkend="void">void</link> thunar_vfs_info_unref (<link linkend="ThunarVfsInfo">ThunarVfsInfo</link> *info);</programlisting>
+<para>
+Decrements the reference count on <parameter>info</parameter> by 1 and if
+the reference count drops to zero as a result of this
+operation, the <parameter>info</parameter> will be freed completely.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>info</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsInfo"><type>ThunarVfsInfo</type></link>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-info-execute"/>thunar_vfs_info_execute ()</title>
+<indexterm><primary>thunar_vfs_info_execute</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> thunar_vfs_info_execute (const <link linkend="ThunarVfsInfo">ThunarVfsInfo</link> *info,
+ <link linkend="GdkScreen">GdkScreen</link> *screen,
+ <link linkend="GList">GList</link> *path_list,
+ <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+Executes the file referred to by <parameter>info</parameter>, given <parameter>path_list</parameter> as parameters,
+on the specified <parameter>screen</parameter>. <parameter>info</parameter> may refer to either a regular,
+executable file, or a <filename>.desktop</filename> file, whose
+type is <literal>Application</literal>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>info</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsInfo"><type>ThunarVfsInfo</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>screen</parameter> :</term>
+<listitem><simpara> a <link linkend="GdkScreen"><type>GdkScreen</type></link> or <literal>NULL</literal> to use the default <link linkend="GdkScreen"><type>GdkScreen</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>path_list</parameter> :</term>
+<listitem><simpara> the list of <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link><!---->s to give as parameters
+ to the file referred to by <parameter>info</parameter> on execution.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter> :</term>
+<listitem><simpara> return location for errors or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <literal>TRUE</literal> on success, else <literal>FALSE</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-info-rename"/>thunar_vfs_info_rename ()</title>
+<indexterm><primary>thunar_vfs_info_rename</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> thunar_vfs_info_rename (<link linkend="ThunarVfsInfo">ThunarVfsInfo</link> *info,
+ const <link linkend="gchar">gchar</link> *name,
+ <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+Tries to rename the file referred to by <parameter>info</parameter> to the
+new <parameter>name</parameter>.
+</para>
+<para>
+The rename operation is smart in that it checks the
+type of <parameter>info</parameter> first, and if <parameter>info</parameter> refers to a
+<filename>.desktop</filename> file, the file name
+won't be touched, but instead the <literal>Name</literal>
+field of the <filename>.desktop</filename> will be
+changed to <parameter>name</parameter>. Else, if <parameter>info</parameter> refers to a regular
+file or directory, the file will be given a new
+name.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>info</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsInfo"><type>ThunarVfsInfo</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter> :</term>
+<listitem><simpara> the new file name in UTF-8 encoding.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter> :</term>
+<listitem><simpara> return location for errors or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <literal>TRUE</literal> on success, else <literal>FALSE</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-info-matches"/>thunar_vfs_info_matches ()</title>
+<indexterm><primary>thunar_vfs_info_matches</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> thunar_vfs_info_matches (const <link linkend="ThunarVfsInfo">ThunarVfsInfo</link> *a,
+ const <link linkend="ThunarVfsInfo">ThunarVfsInfo</link> *b);</programlisting>
+<para>
+Checks whether <parameter>a</parameter> and <parameter>b</parameter> refer to the same file
+and share the same properties.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>a</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsInfo"><type>ThunarVfsInfo</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>b</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsInfo"><type>ThunarVfsInfo</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <literal>TRUE</literal> if <parameter>a</parameter> and <parameter>b</parameter> match.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-info-list-free"/>thunar_vfs_info_list_free ()</title>
+<indexterm><primary>thunar_vfs_info_list_free</primary></indexterm><programlisting><link linkend="void">void</link> thunar_vfs_info_list_free (<link linkend="GList">GList</link> *info_list);</programlisting>
+<para>
+Unrefs all <link linkend="ThunarVfsInfo"><type>ThunarVfsInfo</type></link><!---->s in <parameter>info_list</parameter> and
+frees the list itself.
+</para>
+<para>
+This method always returns <literal>NULL</literal> for the convenience of
+being able to do:
+<informalexample><programlisting>
+info_list = thunar_vfs_info_list_free (info_list);
+</programlisting></informalexample></para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>info_list</parameter> :</term>
+<listitem><simpara> a list <link linkend="ThunarVfsInfo"><type>ThunarVfsInfo</type></link><!---->s.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-init-shutdown.xml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-init-shutdown.xml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-init-shutdown.xml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,63 @@
+<refentry id="thunar-vfs-Initialization-and-Shutdown">
+<refmeta>
+<refentrytitle>Initialization and Shutdown</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>THUNAR-VFS Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>Initialization and Shutdown</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+<link linkend="void">void</link> <link linkend="thunar-vfs-init">thunar_vfs_init</link> (void);
+<link linkend="void">void</link> <link linkend="thunar-vfs-shutdown">thunar_vfs_shutdown</link> (void);
+</synopsis>
+</refsynopsisdiv>
+
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="thunar-vfs-init"/>thunar_vfs_init ()</title>
+<indexterm><primary>thunar_vfs_init</primary></indexterm><programlisting><link linkend="void">void</link> thunar_vfs_init (void);</programlisting>
+<para>
+Initializes the ThunarVFS library.</para>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-shutdown"/>thunar_vfs_shutdown ()</title>
+<indexterm><primary>thunar_vfs_shutdown</primary></indexterm><programlisting><link linkend="void">void</link> thunar_vfs_shutdown (void);</programlisting>
+<para>
+Shuts down the ThunarVFS library.</para>
+<para>
+
+</para></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-interactive-job.xml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-interactive-job.xml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-interactive-job.xml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,189 @@
+<refentry id="ThunarVfsInteractiveJob">
+<refmeta>
+<refentrytitle>ThunarVfsInteractiveJob</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>THUNAR-VFS Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>ThunarVfsInteractiveJob</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+enum <link linkend="ThunarVfsInteractiveJobResponse">ThunarVfsInteractiveJobResponse</link>;
+ <link linkend="ThunarVfsInteractiveJob-struct">ThunarVfsInteractiveJob</link>;
+
+
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1>
+<title>Object Hierarchy</title>
+<synopsis>
+
+ <link linkend="GObject">GObject</link>
+ +----<link linkend="ThunarVfsJob">ThunarVfsJob</link>
+ +----ThunarVfsInteractiveJob
+</synopsis>
+
+</refsect1>
+
+
+
+
+
+
+<refsect1>
+<title>Signal Prototypes</title>
+<synopsis>
+
+"<link linkend="ThunarVfsInteractiveJob-ask">ask</link>" <link linkend="ThunarVfsInteractiveJobResponse">ThunarVfsInteractiveJobResponse</link>user_function (<link linkend="ThunarVfsInteractiveJob">ThunarVfsInteractiveJob</link> *job,
+ <link linkend="gchar">gchar</link> *message,
+ <link linkend="ThunarVfsInteractiveJobResponse">ThunarVfsInteractiveJobResponse</link> choices,
+ <link linkend="gpointer">gpointer</link> user_data);
+"<link linkend="ThunarVfsInteractiveJob-info-message">info-message</link>"
+ <link linkend="void">void</link> user_function (<link linkend="ThunarVfsInteractiveJob">ThunarVfsInteractiveJob</link> *job,
+ <link linkend="gchar">gchar</link> *message,
+ <link linkend="gpointer">gpointer</link> user_data);
+"<link linkend="ThunarVfsInteractiveJob-new-files">new-files</link>" <link linkend="void">void</link> user_function (<link linkend="ThunarVfsInteractiveJob">ThunarVfsInteractiveJob</link> *job,
+ <link linkend="gpointer">gpointer</link> path_list,
+ <link linkend="gpointer">gpointer</link> user_data);
+"<link linkend="ThunarVfsInteractiveJob-percent">percent</link>" <link linkend="void">void</link> user_function (<link linkend="ThunarVfsInteractiveJob">ThunarVfsInteractiveJob</link> *job,
+ <link linkend="gdouble">gdouble</link> percent,
+ <link linkend="gpointer">gpointer</link> user_data);
+</synopsis>
+</refsect1>
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="ThunarVfsInteractiveJobResponse"/>enum ThunarVfsInteractiveJobResponse</title>
+<indexterm><primary>ThunarVfsInteractiveJobResponse</primary></indexterm><programlisting>typedef enum /*< flags >*/
+{
+ THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_YES = 1 << 0,
+ THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_YES_ALL = 1 << 1,
+ THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_NO = 1 << 2,
+ THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_CANCEL = 1 << 3,
+} ThunarVfsInteractiveJobResponse;
+</programlisting>
+<para>
+</para>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ThunarVfsInteractiveJob-struct"/>ThunarVfsInteractiveJob</title>
+<indexterm><primary>ThunarVfsInteractiveJob</primary></indexterm><programlisting>typedef struct _ThunarVfsInteractiveJob ThunarVfsInteractiveJob;</programlisting>
+<para>
+
+</para></refsect2>
+
+</refsect1>
+
+<refsect1>
+<title>Signals</title>
+<refsect2><title><anchor id="ThunarVfsInteractiveJob-ask"/>The "ask" signal</title>
+<programlisting><link linkend="ThunarVfsInteractiveJobResponse">ThunarVfsInteractiveJobResponse</link>user_function (<link linkend="ThunarVfsInteractiveJob">ThunarVfsInteractiveJob</link> *job,
+ <link linkend="gchar">gchar</link> *message,
+ <link linkend="ThunarVfsInteractiveJobResponse">ThunarVfsInteractiveJobResponse</link> choices,
+ <link linkend="gpointer">gpointer</link> user_data);</programlisting>
+<para>
+The <parameter>message</parameter> is garantied to contain valid UTF-8.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>job</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsJob"><type>ThunarVfsJob</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>message</parameter> :</term>
+<listitem><simpara> question to display to the user.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>choices</parameter> :</term>
+<listitem><simpara> a combination of <link linkend="ThunarVfsInteractiveJobResponse"><type>ThunarVfsInteractiveJobResponse</type></link><!---->s.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>user_data</parameter> :</term>
+<listitem><simpara>user data set when the signal handler was connected.</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the selected choice.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2><refsect2><title><anchor id="ThunarVfsInteractiveJob-info-message"/>The "info-message" signal</title>
+<programlisting><link linkend="void">void</link> user_function (<link linkend="ThunarVfsInteractiveJob">ThunarVfsInteractiveJob</link> *job,
+ <link linkend="gchar">gchar</link> *message,
+ <link linkend="gpointer">gpointer</link> user_data);</programlisting>
+<para>
+This signal is emitted to display information about the
+<parameter>job</parameter>. Examples of messages are "Preparing..." or
+"Cleaning up...".
+</para>
+<para>
+The <parameter>message</parameter> is garantied to contain valid UTF-8, so
+it can be displayed by <link linkend="GtkWidget"><type>GtkWidget</type></link><!---->s out of the
+box.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>job</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsJob"><type>ThunarVfsJob</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>message</parameter> :</term>
+<listitem><simpara> information to be displayed about <parameter>job</parameter>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>user_data</parameter> :</term>
+<listitem><simpara>user data set when the signal handler was connected.</simpara></listitem></varlistentry>
+</variablelist></refsect2><refsect2><title><anchor id="ThunarVfsInteractiveJob-new-files"/>The "new-files" signal</title>
+<programlisting><link linkend="void">void</link> user_function (<link linkend="ThunarVfsInteractiveJob">ThunarVfsInteractiveJob</link> *job,
+ <link linkend="gpointer">gpointer</link> path_list,
+ <link linkend="gpointer">gpointer</link> user_data);</programlisting>
+<para>
+This signal is emitted by the <parameter>job</parameter> right before the <parameter>job</parameter> is terminated
+and informs the application about the list of created files in <parameter>path_list</parameter>.
+<parameter>path_list</parameter> contains only the toplevel path items, that were specified by
+the application on creation of the <parameter>job</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>job</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsJob"><type>ThunarVfsJob</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>path_list</parameter> :</term>
+<listitem><simpara> a list of <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link><!---->s that were created by <parameter>job</parameter>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>user_data</parameter> :</term>
+<listitem><simpara>user data set when the signal handler was connected.</simpara></listitem></varlistentry>
+</variablelist></refsect2><refsect2><title><anchor id="ThunarVfsInteractiveJob-percent"/>The "percent" signal</title>
+<programlisting><link linkend="void">void</link> user_function (<link linkend="ThunarVfsInteractiveJob">ThunarVfsInteractiveJob</link> *job,
+ <link linkend="gdouble">gdouble</link> percent,
+ <link linkend="gpointer">gpointer</link> user_data);</programlisting>
+<para>
+This signal is emitted to present the state
+of the overall progress.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>job</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsJob"><type>ThunarVfsJob</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>percent</parameter> :</term>
+<listitem><simpara> the percentage of completeness.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>user_data</parameter> :</term>
+<listitem><simpara>user data set when the signal handler was connected.</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+</refsect1>
+
+
+
+</refentry>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-job.xml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-job.xml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-job.xml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,240 @@
+<refentry id="ThunarVfsJob">
+<refmeta>
+<refentrytitle>ThunarVfsJob</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>THUNAR-VFS Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>ThunarVfsJob</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+ <link linkend="ThunarVfsJob-struct">ThunarVfsJob</link>;
+<link linkend="ThunarVfsJob">ThunarVfsJob</link>* <link linkend="thunar-vfs-job-launch">thunar_vfs_job_launch</link> (<link linkend="ThunarVfsJob">ThunarVfsJob</link> *job);
+<link linkend="void">void</link> <link linkend="thunar-vfs-job-cancel">thunar_vfs_job_cancel</link> (<link linkend="ThunarVfsJob">ThunarVfsJob</link> *job);
+<link linkend="gboolean">gboolean</link> <link linkend="thunar-vfs-job-cancelled">thunar_vfs_job_cancelled</link> (const <link linkend="ThunarVfsJob">ThunarVfsJob</link> *job);
+<link linkend="void">void</link> <link linkend="thunar-vfs-job-emit-valist">thunar_vfs_job_emit_valist</link> (<link linkend="ThunarVfsJob">ThunarVfsJob</link> *job,
+ <link linkend="guint">guint</link> signal_id,
+ <link linkend="GQuark">GQuark</link> signal_detail,
+ <link linkend="va-list">va_list</link> var_args);
+<link linkend="void">void</link> <link linkend="thunar-vfs-job-emit">thunar_vfs_job_emit</link> (<link linkend="ThunarVfsJob">ThunarVfsJob</link> *job,
+ <link linkend="guint">guint</link> signal_id,
+ <link linkend="GQuark">GQuark</link> signal_detail,
+ ...);
+<link linkend="void">void</link> <link linkend="thunar-vfs-job-error">thunar_vfs_job_error</link> (<link linkend="ThunarVfsJob">ThunarVfsJob</link> *job,
+ <link linkend="GError">GError</link> *error);
+
+
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1>
+<title>Object Hierarchy</title>
+<synopsis>
+
+ <link linkend="GObject">GObject</link>
+ +----ThunarVfsJob
+ +----<link linkend="ThunarVfsInteractiveJob">ThunarVfsInteractiveJob</link>
+</synopsis>
+
+</refsect1>
+
+
+
+
+
+
+<refsect1>
+<title>Signal Prototypes</title>
+<synopsis>
+
+"<link linkend="ThunarVfsJob-error">error</link>" <link linkend="void">void</link> user_function (<link linkend="ThunarVfsJob">ThunarVfsJob</link> *job,
+ <link linkend="gpointer">gpointer</link> error,
+ <link linkend="gpointer">gpointer</link> user_data);
+"<link linkend="ThunarVfsJob-finished">finished</link>" <link linkend="void">void</link> user_function (<link linkend="ThunarVfsJob">ThunarVfsJob</link> *job,
+ <link linkend="gpointer">gpointer</link> user_data);
+</synopsis>
+</refsect1>
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="ThunarVfsJob-struct"/>ThunarVfsJob</title>
+<indexterm><primary>ThunarVfsJob</primary></indexterm><programlisting>typedef struct _ThunarVfsJob ThunarVfsJob;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-job-launch"/>thunar_vfs_job_launch ()</title>
+<indexterm><primary>thunar_vfs_job_launch</primary></indexterm><programlisting><link linkend="ThunarVfsJob">ThunarVfsJob</link>* thunar_vfs_job_launch (<link linkend="ThunarVfsJob">ThunarVfsJob</link> *job);</programlisting>
+<para>
+This functions schedules <parameter>job</parameter> to be run as soon
+as possible, in a separate thread.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>job</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsJob"><type>ThunarVfsJob</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> a pointer to <parameter>job</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-job-cancel"/>thunar_vfs_job_cancel ()</title>
+<indexterm><primary>thunar_vfs_job_cancel</primary></indexterm><programlisting><link linkend="void">void</link> thunar_vfs_job_cancel (<link linkend="ThunarVfsJob">ThunarVfsJob</link> *job);</programlisting>
+<para>
+Attempts to cancel the operation currently
+performed by <parameter>job</parameter>. Even after the cancellation
+of <parameter>job</parameter>, it may still emit signals, so you
+must take care of disconnecting all handlers
+appropriately if you cannot handle signals
+after cancellation.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>job</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsJob"><type>ThunarVfsJob</type></link>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-job-cancelled"/>thunar_vfs_job_cancelled ()</title>
+<indexterm><primary>thunar_vfs_job_cancelled</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> thunar_vfs_job_cancelled (const <link linkend="ThunarVfsJob">ThunarVfsJob</link> *job);</programlisting>
+<para>
+Checks whether <parameter>job</parameter> was previously cancelled
+by a call to <link linkend="thunar-vfs-job-cancel"><function>thunar_vfs_job_cancel()</function></link>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>job</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsJob"><type>ThunarVfsJob</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <literal>TRUE</literal> if <parameter>job</parameter> is cancelled.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-job-emit-valist"/>thunar_vfs_job_emit_valist ()</title>
+<indexterm><primary>thunar_vfs_job_emit_valist</primary></indexterm><programlisting><link linkend="void">void</link> thunar_vfs_job_emit_valist (<link linkend="ThunarVfsJob">ThunarVfsJob</link> *job,
+ <link linkend="guint">guint</link> signal_id,
+ <link linkend="GQuark">GQuark</link> signal_detail,
+ <link linkend="va-list">va_list</link> var_args);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>job</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>signal_id</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>signal_detail</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>var_args</parameter> :</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-job-emit"/>thunar_vfs_job_emit ()</title>
+<indexterm><primary>thunar_vfs_job_emit</primary></indexterm><programlisting><link linkend="void">void</link> thunar_vfs_job_emit (<link linkend="ThunarVfsJob">ThunarVfsJob</link> *job,
+ <link linkend="guint">guint</link> signal_id,
+ <link linkend="GQuark">GQuark</link> signal_detail,
+ ...);</programlisting>
+<para>
+Convenience wrapper for <link linkend="thunar-vfs-job-emit-valist"><function>thunar_vfs_job_emit_valist()</function></link>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>job</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsJob"><type>ThunarVfsJob</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>signal_id</parameter> :</term>
+<listitem><simpara> the id of the signal to emit on qjob.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>signal_detail</parameter> :</term>
+<listitem><simpara> the signal detail.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>...</parameter> :</term>
+<listitem><simpara> a list of parameters to be passed to the signal.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-job-error"/>thunar_vfs_job_error ()</title>
+<indexterm><primary>thunar_vfs_job_error</primary></indexterm><programlisting><link linkend="void">void</link> thunar_vfs_job_error (<link linkend="ThunarVfsJob">ThunarVfsJob</link> *job,
+ <link linkend="GError">GError</link> *error);</programlisting>
+<para>
+Emits the ::error signal on <parameter>job</parameter> with the given <parameter>error</parameter>. Whether
+or not the <parameter>job</parameter> continues after emitting the error depends on
+the particular implementation of <parameter>job</parameter>, but most jobs will
+terminate instantly after emitting an error.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>job</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsJob"><type>ThunarVfsJob</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter> :</term>
+<listitem><simpara> a <link linkend="GError"><type>GError</type></link> describing the error cause.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+<refsect1>
+<title>Signals</title>
+<refsect2><title><anchor id="ThunarVfsJob-error"/>The "error" signal</title>
+<programlisting><link linkend="void">void</link> user_function (<link linkend="ThunarVfsJob">ThunarVfsJob</link> *job,
+ <link linkend="gpointer">gpointer</link> error,
+ <link linkend="gpointer">gpointer</link> user_data);</programlisting>
+<para>
+Emitted whenever an error occurs while executing the
+<parameter>job</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>job</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsJob"><type>ThunarVfsJob</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter> :</term>
+<listitem><simpara> a <link linkend="GError"><type>GError</type></link> describing the cause.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>user_data</parameter> :</term>
+<listitem><simpara>user data set when the signal handler was connected.</simpara></listitem></varlistentry>
+</variablelist></refsect2><refsect2><title><anchor id="ThunarVfsJob-finished"/>The "finished" signal</title>
+<programlisting><link linkend="void">void</link> user_function (<link linkend="ThunarVfsJob">ThunarVfsJob</link> *job,
+ <link linkend="gpointer">gpointer</link> user_data);</programlisting>
+<para>
+This signal will be automatically emitted once the
+<parameter>job</parameter> finishes its execution, no matter whether <parameter>job</parameter>
+completed successfully or was cancelled by the
+user.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>job</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsJob"><type>ThunarVfsJob</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>user_data</parameter> :</term>
+<listitem><simpara>user data set when the signal handler was connected.</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+</refsect1>
+
+
+
+</refentry>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-mime-application.xml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-mime-application.xml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-mime-application.xml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,408 @@
+<refentry id="thunar-vfs-ThunarVfsMimeApplication">
+<refmeta>
+<refentrytitle>ThunarVfsMimeApplication</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>THUNAR-VFS Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>ThunarVfsMimeApplication</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+#define <link linkend="THUNAR-VFS-MIME-APPLICATION-ERROR:CAPS">THUNAR_VFS_MIME_APPLICATION_ERROR</link>
+enum <link linkend="ThunarVfsMimeApplicationError">ThunarVfsMimeApplicationError</link>;
+enum <link linkend="ThunarVfsMimeApplicationFlags">ThunarVfsMimeApplicationFlags</link>;
+ <link linkend="ThunarVfsMimeApplication">ThunarVfsMimeApplication</link>;
+<link linkend="ThunarVfsMimeApplication">ThunarVfsMimeApplication</link>* <link linkend="thunar-vfs-mime-application-new-from-desktop-id">thunar_vfs_mime_application_new_from_desktop_id</link>
+ (const <link linkend="gchar">gchar</link> *desktop_id);
+<link linkend="ThunarVfsMimeApplication">ThunarVfsMimeApplication</link>* <link linkend="thunar-vfs-mime-application-new-from-file">thunar_vfs_mime_application_new_from_file</link>
+ (const <link linkend="gchar">gchar</link> *path,
+ const <link linkend="gchar">gchar</link> *desktop_id);
+<link linkend="ThunarVfsMimeApplication">ThunarVfsMimeApplication</link>* <link linkend="thunar-vfs-mime-application-ref">thunar_vfs_mime_application_ref</link>
+ (<link linkend="ThunarVfsMimeApplication">ThunarVfsMimeApplication</link> *application);
+<link linkend="void">void</link> <link linkend="thunar-vfs-mime-application-unref">thunar_vfs_mime_application_unref</link>
+ (<link linkend="ThunarVfsMimeApplication">ThunarVfsMimeApplication</link> *application);
+const <link linkend="gchar">gchar</link>* <link linkend="thunar-vfs-mime-application-get-command">thunar_vfs_mime_application_get_command</link>
+ (const <link linkend="ThunarVfsMimeApplication">ThunarVfsMimeApplication</link> *application);
+const <link linkend="gchar">gchar</link>* <link linkend="thunar-vfs-mime-application-get-desktop-id">thunar_vfs_mime_application_get_desktop_id</link>
+ (const <link linkend="ThunarVfsMimeApplication">ThunarVfsMimeApplication</link> *application);
+<link linkend="ThunarVfsMimeApplicationFlags">ThunarVfsMimeApplicationFlags</link> <link linkend="thunar-vfs-mime-application-get-flags">thunar_vfs_mime_application_get_flags</link>
+ (const <link linkend="ThunarVfsMimeApplication">ThunarVfsMimeApplication</link> *application);
+const <link linkend="gchar">gchar</link>* <link linkend="thunar-vfs-mime-application-get-name">thunar_vfs_mime_application_get_name</link>
+ (const <link linkend="ThunarVfsMimeApplication">ThunarVfsMimeApplication</link> *application);
+<link linkend="gboolean">gboolean</link> <link linkend="thunar-vfs-mime-application-exec">thunar_vfs_mime_application_exec</link>
+ (const <link linkend="ThunarVfsMimeApplication">ThunarVfsMimeApplication</link> *application,
+ <link linkend="GdkScreen">GdkScreen</link> *screen,
+ <link linkend="GList">GList</link> *path_list,
+ <link linkend="GError">GError</link> **error);
+<link linkend="gboolean">gboolean</link> <link linkend="thunar-vfs-mime-application-exec-with-env">thunar_vfs_mime_application_exec_with_env</link>
+ (const <link linkend="ThunarVfsMimeApplication">ThunarVfsMimeApplication</link> *application,
+ <link linkend="GdkScreen">GdkScreen</link> *screen,
+ <link linkend="GList">GList</link> *path_list,
+ <link linkend="gchar">gchar</link> **envp,
+ <link linkend="GError">GError</link> **error);
+const <link linkend="gchar">gchar</link>* <link linkend="thunar-vfs-mime-application-lookup-icon-name">thunar_vfs_mime_application_lookup_icon_name</link>
+ (const <link linkend="ThunarVfsMimeApplication">ThunarVfsMimeApplication</link> *application,
+ <link linkend="GtkIconTheme">GtkIconTheme</link> *icon_theme);
+<link linkend="guint">guint</link> <link linkend="thunar-vfs-mime-application-hash">thunar_vfs_mime_application_hash</link>
+ (<link linkend="gconstpointer">gconstpointer</link> application);
+<link linkend="gboolean">gboolean</link> <link linkend="thunar-vfs-mime-application-equal">thunar_vfs_mime_application_equal</link>
+ (<link linkend="gconstpointer">gconstpointer</link> a,
+ <link linkend="gconstpointer">gconstpointer</link> b);
+
+
+</synopsis>
+</refsynopsisdiv>
+
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="THUNAR-VFS-MIME-APPLICATION-ERROR:CAPS"/>THUNAR_VFS_MIME_APPLICATION_ERROR</title>
+<indexterm><primary>THUNAR_VFS_MIME_APPLICATION_ERROR</primary></indexterm><programlisting>#define THUNAR_VFS_MIME_APPLICATION_ERROR (thunar_vfs_mime_application_error_quark ())
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ThunarVfsMimeApplicationError"/>enum ThunarVfsMimeApplicationError</title>
+<indexterm><primary>ThunarVfsMimeApplicationError</primary></indexterm><programlisting>typedef enum
+{
+ THUNAR_VFS_MIME_APPLICATION_ERROR_LOCAL_FILES_ONLY,
+} ThunarVfsMimeApplicationError;
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ThunarVfsMimeApplicationFlags"/>enum ThunarVfsMimeApplicationFlags</title>
+<indexterm><primary>ThunarVfsMimeApplicationFlags</primary></indexterm><programlisting>typedef enum /*< flags >*/
+{
+ THUNAR_VFS_MIME_APPLICATION_HIDDEN = (1 << 0L),
+ THUNAR_VFS_MIME_APPLICATION_REQUIRES_TERMINAL = (1 << 1L),
+ THUNAR_VFS_MIME_APPLICATION_SUPPORTS_STARTUP_NOTIFY = (1 << 2L),
+ THUNAR_VFS_MIME_APPLICATION_SUPPORTS_MULTI = (1 << 3L),
+} ThunarVfsMimeApplicationFlags;
+</programlisting>
+<para>
+Various flags associated with a <link linkend="ThunarVfsMimeApplication"><type>ThunarVfsMimeApplication</type></link>.</para>
+<para>
+
+</para><variablelist role="enum">
+<varlistentry>
+<term><literal>THUNAR_VFS_MIME_APPLICATION_HIDDEN</literal></term>
+<listitem><simpara> the application should not be displayed in the menu system.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_MIME_APPLICATION_REQUIRES_TERMINAL</literal></term>
+<listitem><simpara> the application must be run in a terminal.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_MIME_APPLICATION_SUPPORTS_STARTUP_NOTIFY</literal></term>
+<listitem><simpara> the application supports startup notification.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_MIME_APPLICATION_SUPPORTS_MULTI</literal></term>
+<listitem><simpara> the application supports opening multiple documents at once (<literal>F</literal> or <literal>U</literal>).
+</simpara></listitem>
+</varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="ThunarVfsMimeApplication"/>ThunarVfsMimeApplication</title>
+<indexterm><primary>ThunarVfsMimeApplication</primary></indexterm><programlisting>typedef struct _ThunarVfsMimeApplication ThunarVfsMimeApplication;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-mime-application-new-from-desktop-id"/>thunar_vfs_mime_application_new_from_desktop_id ()</title>
+<indexterm><primary>thunar_vfs_mime_application_new_from_desktop_id</primary></indexterm><programlisting><link linkend="ThunarVfsMimeApplication">ThunarVfsMimeApplication</link>* thunar_vfs_mime_application_new_from_desktop_id
+ (const <link linkend="gchar">gchar</link> *desktop_id);</programlisting>
+<para>
+Generates a <link linkend="ThunarVfsMimeApplication"><type>ThunarVfsMimeApplication</type></link> instance for the application
+referenced by <parameter>desktop_id</parameter>. Returns <literal>NULL</literal> if <parameter>desktop_id</parameter> is not valid.
+</para>
+<para>
+The caller is responsible to free the returned instance using
+<link linkend="thunar-vfs-mime-application-unref"><function>thunar_vfs_mime_application_unref()</function></link>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>desktop_id</parameter> :</term>
+<listitem><simpara> the id of an application's .desktop file.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the <link linkend="ThunarVfsMimeApplication"><type>ThunarVfsMimeApplication</type></link> for <parameter>desktop_id</parameter> or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-mime-application-new-from-file"/>thunar_vfs_mime_application_new_from_file ()</title>
+<indexterm><primary>thunar_vfs_mime_application_new_from_file</primary></indexterm><programlisting><link linkend="ThunarVfsMimeApplication">ThunarVfsMimeApplication</link>* thunar_vfs_mime_application_new_from_file
+ (const <link linkend="gchar">gchar</link> *path,
+ const <link linkend="gchar">gchar</link> *desktop_id);</programlisting>
+<para>
+Generates a new <link linkend="ThunarVfsMimeApplication"><type>ThunarVfsMimeApplication</type></link> for the application
+described by <parameter>path</parameter> and <parameter>desktop_id</parameter>.
+</para>
+<para>
+The caller is responsible to free the returned instance using
+<link linkend="thunar-vfs-mime-application-unref"><function>thunar_vfs_mime_application_unref()</function></link>.
+</para>
+<para>
+You should really seldomly use this function and always
+prefer <link linkend="thunar-vfs-mime-application-new-from-desktop-id"><function>thunar_vfs_mime_application_new_from_desktop_id()</function></link>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>path</parameter> :</term>
+<listitem><simpara> the absolute path to the desktop file.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>desktop_id</parameter> :</term>
+<listitem><simpara> the desktop-id of the file.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the <link linkend="ThunarVfsMimeApplication"><type>ThunarVfsMimeApplication</type></link> for <parameter>desktop_id</parameter>
+ or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-mime-application-ref"/>thunar_vfs_mime_application_ref ()</title>
+<indexterm><primary>thunar_vfs_mime_application_ref</primary></indexterm><programlisting><link linkend="ThunarVfsMimeApplication">ThunarVfsMimeApplication</link>* thunar_vfs_mime_application_ref
+ (<link linkend="ThunarVfsMimeApplication">ThunarVfsMimeApplication</link> *application);</programlisting>
+<para>
+Increases the reference count on <parameter>application</parameter> by one
+and returns the reference to <parameter>application</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>application</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeApplication"><type>ThunarVfsMimeApplication</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> a reference to <parameter>application</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-mime-application-unref"/>thunar_vfs_mime_application_unref ()</title>
+<indexterm><primary>thunar_vfs_mime_application_unref</primary></indexterm><programlisting><link linkend="void">void</link> thunar_vfs_mime_application_unref
+ (<link linkend="ThunarVfsMimeApplication">ThunarVfsMimeApplication</link> *application);</programlisting>
+<para>
+Decreases the reference count on <parameter>application</parameter> and frees
+the <parameter>application</parameter> object once the reference count drops
+to zero.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>application</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeApplication"><type>ThunarVfsMimeApplication</type></link>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-mime-application-get-command"/>thunar_vfs_mime_application_get_command ()</title>
+<indexterm><primary>thunar_vfs_mime_application_get_command</primary></indexterm><programlisting>const <link linkend="gchar">gchar</link>* thunar_vfs_mime_application_get_command
+ (const <link linkend="ThunarVfsMimeApplication">ThunarVfsMimeApplication</link> *application);</programlisting>
+<para>
+Returns the command line to run <parameter>application</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>application</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeApplication"><type>ThunarVfsMimeApplication</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the command to run <parameter>application</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-mime-application-get-desktop-id"/>thunar_vfs_mime_application_get_desktop_id ()</title>
+<indexterm><primary>thunar_vfs_mime_application_get_desktop_id</primary></indexterm><programlisting>const <link linkend="gchar">gchar</link>* thunar_vfs_mime_application_get_desktop_id
+ (const <link linkend="ThunarVfsMimeApplication">ThunarVfsMimeApplication</link> *application);</programlisting>
+<para>
+Returns the desktop-id of <parameter>application</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>application</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeApplication"><type>ThunarVfsMimeApplication</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the desktop-id of <parameter>application</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-mime-application-get-flags"/>thunar_vfs_mime_application_get_flags ()</title>
+<indexterm><primary>thunar_vfs_mime_application_get_flags</primary></indexterm><programlisting><link linkend="ThunarVfsMimeApplicationFlags">ThunarVfsMimeApplicationFlags</link> thunar_vfs_mime_application_get_flags
+ (const <link linkend="ThunarVfsMimeApplication">ThunarVfsMimeApplication</link> *application);</programlisting>
+<para>
+Returns the flags for <parameter>application</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>application</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeApplication"><type>ThunarVfsMimeApplication</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the flags for <parameter>application</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-mime-application-get-name"/>thunar_vfs_mime_application_get_name ()</title>
+<indexterm><primary>thunar_vfs_mime_application_get_name</primary></indexterm><programlisting>const <link linkend="gchar">gchar</link>* thunar_vfs_mime_application_get_name
+ (const <link linkend="ThunarVfsMimeApplication">ThunarVfsMimeApplication</link> *application);</programlisting>
+<para>
+Returns the generic name of <parameter>application</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>application</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeApplication"><type>ThunarVfsMimeApplication</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the generic name of <parameter>application</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-mime-application-exec"/>thunar_vfs_mime_application_exec ()</title>
+<indexterm><primary>thunar_vfs_mime_application_exec</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> thunar_vfs_mime_application_exec
+ (const <link linkend="ThunarVfsMimeApplication">ThunarVfsMimeApplication</link> *application,
+ <link linkend="GdkScreen">GdkScreen</link> *screen,
+ <link linkend="GList">GList</link> *path_list,
+ <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+Wrapper to <link linkend="thunar-vfs-mime-application-exec-with-env"><function>thunar_vfs_mime_application_exec_with_env()</function></link>, which
+simply passes a <literal>NULL</literal> pointer for the environment variables.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>application</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeApplication"><type>ThunarVfsMimeApplication</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>screen</parameter> :</term>
+<listitem><simpara> a <link linkend="GdkScreen"><type>GdkScreen</type></link> or <literal>NULL</literal> to use the default screen.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>path_list</parameter> :</term>
+<listitem><simpara> a list of <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link><!---->s to open.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter> :</term>
+<listitem><simpara> return location for errors or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <literal>TRUE</literal> if the execution succeed, else <literal>FALSE</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-mime-application-exec-with-env"/>thunar_vfs_mime_application_exec_with_env ()</title>
+<indexterm><primary>thunar_vfs_mime_application_exec_with_env</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> thunar_vfs_mime_application_exec_with_env
+ (const <link linkend="ThunarVfsMimeApplication">ThunarVfsMimeApplication</link> *application,
+ <link linkend="GdkScreen">GdkScreen</link> *screen,
+ <link linkend="GList">GList</link> *path_list,
+ <link linkend="gchar">gchar</link> **envp,
+ <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+Executes <parameter>application</parameter> on <parameter>screen</parameter> using the given <parameter>path_list</parameter>. If
+<parameter>path_list</parameter> contains more than one <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link> and <parameter>application</parameter>
+doesn't support opening multiple documents at once, one
+instance of <parameter>application</parameter> will be spawned for every <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link>
+given in <parameter>path_list</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>application</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeApplication"><type>ThunarVfsMimeApplication</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>screen</parameter> :</term>
+<listitem><simpara> a <link linkend="GdkScreen"><type>GdkScreen</type></link> or <literal>NULL</literal> to use the default screen.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>path_list</parameter> :</term>
+<listitem><simpara> a list of <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link><!---->s to open.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>envp</parameter> :</term>
+<listitem><simpara> child's environment or <literal>NULL</literal> to inherit parent's.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter> :</term>
+<listitem><simpara> return location for errors or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <literal>TRUE</literal> if the execution succeed, else <literal>FALSE</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-mime-application-lookup-icon-name"/>thunar_vfs_mime_application_lookup_icon_name ()</title>
+<indexterm><primary>thunar_vfs_mime_application_lookup_icon_name</primary></indexterm><programlisting>const <link linkend="gchar">gchar</link>* thunar_vfs_mime_application_lookup_icon_name
+ (const <link linkend="ThunarVfsMimeApplication">ThunarVfsMimeApplication</link> *application,
+ <link linkend="GtkIconTheme">GtkIconTheme</link> *icon_theme);</programlisting>
+<para>
+Looks up the icon name for <parameter>application</parameter> in
+<parameter>icon_theme</parameter>. Returns <literal>NULL</literal> if no suitable
+icon is present in <parameter>icon_theme</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>application</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeApplication"><type>ThunarVfsMimeApplication</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>icon_theme</parameter> :</term>
+<listitem><simpara> a <link linkend="GtkIconTheme"><type>GtkIconTheme</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the icon name for <parameter>application</parameter> or
+ <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-mime-application-hash"/>thunar_vfs_mime_application_hash ()</title>
+<indexterm><primary>thunar_vfs_mime_application_hash</primary></indexterm><programlisting><link linkend="guint">guint</link> thunar_vfs_mime_application_hash
+ (<link linkend="gconstpointer">gconstpointer</link> application);</programlisting>
+<para>
+Converts <parameter>application</parameter> to a hash value. It can be passed
+to <link linkend="g-hash-table-new"><function>g_hash_table_new()</function></link> as the <parameter>hash_func</parameter> parameter,
+when using <link linkend="ThunarVfsMimeApplication"><type>ThunarVfsMimeApplication</type></link><!---->s as keys
+in a <link linkend="GHashTable"><type>GHashTable</type></link>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>application</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeApplication"><type>ThunarVfsMimeApplication</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> a hash value corresponding to the key.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-mime-application-equal"/>thunar_vfs_mime_application_equal ()</title>
+<indexterm><primary>thunar_vfs_mime_application_equal</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> thunar_vfs_mime_application_equal
+ (<link linkend="gconstpointer">gconstpointer</link> a,
+ <link linkend="gconstpointer">gconstpointer</link> b);</programlisting>
+<para>
+Checks whether <parameter>a</parameter> and <parameter>b</parameter> refer to the same application.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>a</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeApplication"><type>ThunarVfsMimeApplication</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>b</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeApplication"><type>ThunarVfsMimeApplication</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <literal>TRUE</literal> if <parameter>a</parameter> and <parameter>b</parameter> are equal.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-mime-database.xml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-mime-database.xml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-mime-database.xml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,374 @@
+<refentry id="ThunarVfsMimeDatabase">
+<refmeta>
+<refentrytitle>ThunarVfsMimeDatabase</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>THUNAR-VFS Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>ThunarVfsMimeDatabase</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+ <link linkend="ThunarVfsMimeDatabase-struct">ThunarVfsMimeDatabase</link>;
+<link linkend="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</link>* <link linkend="thunar-vfs-mime-database-get-default">thunar_vfs_mime_database_get_default</link>
+ (void);
+<link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link>* <link linkend="thunar-vfs-mime-database-get-info">thunar_vfs_mime_database_get_info</link>
+ (<link linkend="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</link> *database,
+ const <link linkend="gchar">gchar</link> *mime_type);
+<link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link>* <link linkend="thunar-vfs-mime-database-get-info-for-data">thunar_vfs_mime_database_get_info_for_data</link>
+ (<link linkend="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</link> *database,
+ <link linkend="gconstpointer">gconstpointer</link> data,
+ <link linkend="gsize">gsize</link> length);
+<link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link>* <link linkend="thunar-vfs-mime-database-get-info-for-name">thunar_vfs_mime_database_get_info_for_name</link>
+ (<link linkend="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</link> *database,
+ const <link linkend="gchar">gchar</link> *name);
+<link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link>* <link linkend="thunar-vfs-mime-database-get-info-for-file">thunar_vfs_mime_database_get_info_for_file</link>
+ (<link linkend="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</link> *database,
+ const <link linkend="gchar">gchar</link> *path,
+ const <link linkend="gchar">gchar</link> *name);
+<link linkend="GList">GList</link>* <link linkend="thunar-vfs-mime-database-get-infos-for-info">thunar_vfs_mime_database_get_infos_for_info</link>
+ (<link linkend="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</link> *database,
+ <link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link> *info);
+<link linkend="GList">GList</link>* <link linkend="thunar-vfs-mime-database-get-applications">thunar_vfs_mime_database_get_applications</link>
+ (<link linkend="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</link> *database,
+ <link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link> *info);
+<link linkend="ThunarVfsMimeApplication">ThunarVfsMimeApplication</link>* <link linkend="thunar-vfs-mime-database-get-default-application">thunar_vfs_mime_database_get_default_application</link>
+ (<link linkend="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</link> *database,
+ <link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link> *info);
+<link linkend="gboolean">gboolean</link> <link linkend="thunar-vfs-mime-database-set-default-application">thunar_vfs_mime_database_set_default_application</link>
+ (<link linkend="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</link> *database,
+ <link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link> *info,
+ <link linkend="ThunarVfsMimeApplication">ThunarVfsMimeApplication</link> *application,
+ <link linkend="GError">GError</link> **error);
+<link linkend="ThunarVfsMimeApplication">ThunarVfsMimeApplication</link>* <link linkend="thunar-vfs-mime-database-add-application">thunar_vfs_mime_database_add_application</link>
+ (<link linkend="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</link> *database,
+ <link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link> *info,
+ const <link linkend="gchar">gchar</link> *name,
+ const <link linkend="gchar">gchar</link> *exec,
+ <link linkend="GError">GError</link> **error);
+
+
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1>
+<title>Object Hierarchy</title>
+<synopsis>
+
+ <link linkend="GObject">GObject</link>
+ +----ThunarVfsMimeDatabase
+</synopsis>
+
+</refsect1>
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="ThunarVfsMimeDatabase-struct"/>ThunarVfsMimeDatabase</title>
+<indexterm><primary>ThunarVfsMimeDatabase</primary></indexterm><programlisting>typedef struct _ThunarVfsMimeDatabase ThunarVfsMimeDatabase;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-mime-database-get-default"/>thunar_vfs_mime_database_get_default ()</title>
+<indexterm><primary>thunar_vfs_mime_database_get_default</primary></indexterm><programlisting><link linkend="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</link>* thunar_vfs_mime_database_get_default
+ (void);</programlisting>
+<para>
+Returns a reference on the shared <link linkend="ThunarVfsMimeDatabase"><type>ThunarVfsMimeDatabase</type></link>
+instance. The caller is responsible to call <link linkend="g-object-unref"><function>g_object_unref()</function></link>
+on the returned object when no longer needed.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the shared <link linkend="ThunarVfsMimeDatabase"><type>ThunarVfsMimeDatabase</type></link>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-mime-database-get-info"/>thunar_vfs_mime_database_get_info ()</title>
+<indexterm><primary>thunar_vfs_mime_database_get_info</primary></indexterm><programlisting><link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link>* thunar_vfs_mime_database_get_info
+ (<link linkend="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</link> *database,
+ const <link linkend="gchar">gchar</link> *mime_type);</programlisting>
+<para>
+Determines the <link linkend="ThunarVfsMimeInfo"><type>ThunarVfsMimeInfo</type></link> which corresponds to <parameter>mime_type</parameter>
+in database. The caller is responsible to call <link linkend="thunar-vfs-mime-info-unref"><function>thunar_vfs_mime_info_unref()</function></link>
+on the returned instance.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>database</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeDatabase"><type>ThunarVfsMimeDatabase</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>mime_type</parameter> :</term>
+<listitem><simpara> the string representation of the mime type.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the <link linkend="ThunarVfsMimeInfo"><type>ThunarVfsMimeInfo</type></link> corresponding to <parameter>mime_type</parameter> in <parameter>database</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-mime-database-get-info-for-data"/>thunar_vfs_mime_database_get_info_for_data ()</title>
+<indexterm><primary>thunar_vfs_mime_database_get_info_for_data</primary></indexterm><programlisting><link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link>* thunar_vfs_mime_database_get_info_for_data
+ (<link linkend="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</link> *database,
+ <link linkend="gconstpointer">gconstpointer</link> data,
+ <link linkend="gsize">gsize</link> length);</programlisting>
+<para>
+Determines the <link linkend="ThunarVfsMimeInfo"><type>ThunarVfsMimeInfo</type></link> for <parameter>data</parameter> in <parameter>database</parameter>. The
+caller is responsible to call <link linkend="thunar-vfs-mime-info-unref"><function>thunar_vfs_mime_info_unref()</function></link> on
+the returned instance.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>database</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeDatabase"><type>ThunarVfsMimeDatabase</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>data</parameter> :</term>
+<listitem><simpara> the data to check.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>length</parameter> :</term>
+<listitem><simpara> the length of <parameter>data</parameter> in bytes.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the <link linkend="ThunarVfsMimeInfo"><type>ThunarVfsMimeInfo</type></link> determined for <parameter>data</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-mime-database-get-info-for-name"/>thunar_vfs_mime_database_get_info_for_name ()</title>
+<indexterm><primary>thunar_vfs_mime_database_get_info_for_name</primary></indexterm><programlisting><link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link>* thunar_vfs_mime_database_get_info_for_name
+ (<link linkend="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</link> *database,
+ const <link linkend="gchar">gchar</link> *name);</programlisting>
+<para>
+Determines the <link linkend="ThunarVfsMimeInfo"><type>ThunarVfsMimeInfo</type></link> for the filename given
+in <parameter>name</parameter> from <parameter>database</parameter>. The caller is responsible to
+call <link linkend="thunar-vfs-mime-info-unref"><function>thunar_vfs_mime_info_unref()</function></link> on the returned instance.
+</para>
+<para>
+The <parameter>name</parameter> must be a valid filename in UTF-8 encoding
+and it may not contained any slashes!</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>database</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeDatabase"><type>ThunarVfsMimeDatabase</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter> :</term>
+<listitem><simpara> a filename (must be valid UTF-8!).
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the <link linkend="ThunarVfsMimeInfo"><type>ThunarVfsMimeInfo</type></link> for <parameter>name</parameter> in <parameter>database</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-mime-database-get-info-for-file"/>thunar_vfs_mime_database_get_info_for_file ()</title>
+<indexterm><primary>thunar_vfs_mime_database_get_info_for_file</primary></indexterm><programlisting><link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link>* thunar_vfs_mime_database_get_info_for_file
+ (<link linkend="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</link> *database,
+ const <link linkend="gchar">gchar</link> *path,
+ const <link linkend="gchar">gchar</link> *name);</programlisting>
+<para>
+Determines the <link linkend="ThunarVfsMimeInfo"><type>ThunarVfsMimeInfo</type></link> for <parameter>path</parameter> in <parameter>database</parameter>. The
+caller is responsible to free the returned instance using
+<link linkend="thunar-vfs-mime-info-unref"><function>thunar_vfs_mime_info_unref()</function></link>.
+</para>
+<para>
+The <parameter>name</parameter> parameter is optional. If the caller already knows the
+basename of <parameter>path</parameter> in UTF-8 encoding, it should be specified here
+to speed up the lookup process.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>database</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeDatabase"><type>ThunarVfsMimeDatabase</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>path</parameter> :</term>
+<listitem><simpara> the path to a file in the local filesystem (in the filesystem encoding).
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter> :</term>
+<listitem><simpara> the basename of <parameter>path</parameter> in UTF-8 encoding or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the <link linkend="ThunarVfsMimeInfo"><type>ThunarVfsMimeInfo</type></link> for <parameter>path</parameter> in <parameter>database</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-mime-database-get-infos-for-info"/>thunar_vfs_mime_database_get_infos_for_info ()</title>
+<indexterm><primary>thunar_vfs_mime_database_get_infos_for_info</primary></indexterm><programlisting><link linkend="GList">GList</link>* thunar_vfs_mime_database_get_infos_for_info
+ (<link linkend="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</link> *database,
+ <link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link> *info);</programlisting>
+<para>
+Returns a list of all <link linkend="ThunarVfsMimeInfo"><type>ThunarVfsMimeInfo</type></link><!---->s,
+that are related to <parameter>info</parameter> in <parameter>database</parameter>. Currently
+this is the list of parent MIME-types for <parameter>info</parameter>,
+as defined in the Shared Mime Database.
+</para>
+<para>
+Note that the returned list will also include
+a reference <parameter>info</parameter> itself. In addition, this
+method also handles details specified by the
+Shared Mime Database Specification like the
+fact that every "text/xxxx" MIME-type is a
+subclass of "text/plain" and every MIME-type
+is a subclass of "application/octet-stream".
+</para>
+<para>
+The caller is responsible to free the returned
+list using #<link linkend="thunar-vfs-mime-info-list-free"><function>thunar_vfs_mime_info_list_free()</function></link>
+when done with it.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>database</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeDatabase"><type>ThunarVfsMimeDatabase</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>info</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeInfo"><type>ThunarVfsMimeInfo</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the list of <link linkend="ThunarVfsMimeInfo"><type>ThunarVfsMimeInfo</type></link><!---->s
+ related to <parameter>info</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-mime-database-get-applications"/>thunar_vfs_mime_database_get_applications ()</title>
+<indexterm><primary>thunar_vfs_mime_database_get_applications</primary></indexterm><programlisting><link linkend="GList">GList</link>* thunar_vfs_mime_database_get_applications
+ (<link linkend="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</link> *database,
+ <link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link> *info);</programlisting>
+<para>
+Looks up all <link linkend="ThunarVfsMimeApplication"><type>ThunarVfsMimeApplication</type></link><!---->s in <parameter>database</parameter>, which
+claim to be able to open files whose MIME-type is represented by
+<parameter>info</parameter>.
+</para>
+<para>
+The caller is responsible to free the returned list using
+something like:
+<informalexample><programlisting>
+g_list_foreach (list, (GFunc) thunar_vfs_mime_application_unref, NULL);
+g_list_free (list);
+</programlisting></informalexample></para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>database</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeDatabase"><type>ThunarVfsMimeDatabase</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>info</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeInfo"><type>ThunarVfsMimeInfo</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the list of <link linkend="ThunarVfsMimeApplication"><type>ThunarVfsMimeApplication</type></link><!---->s, that
+ can handle <parameter>info</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-mime-database-get-default-application"/>thunar_vfs_mime_database_get_default_application ()</title>
+<indexterm><primary>thunar_vfs_mime_database_get_default_application</primary></indexterm><programlisting><link linkend="ThunarVfsMimeApplication">ThunarVfsMimeApplication</link>* thunar_vfs_mime_database_get_default_application
+ (<link linkend="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</link> *database,
+ <link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link> *info);</programlisting>
+<para>
+Returns the default <link linkend="ThunarVfsMimeApplication"><type>ThunarVfsMimeApplication</type></link> to handle
+files of type <parameter>info</parameter> or <literal>NULL</literal> if no default application
+is set for <parameter>info</parameter>.
+</para>
+<para>
+The caller is responsible to free the returned instance
+using <link linkend="thunar-vfs-mime-application-unref"><function>thunar_vfs_mime_application_unref()</function></link>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>database</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeDatabase"><type>ThunarVfsMimeDatabase</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>info</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeInfo"><type>ThunarVfsMimeInfo</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the default <link linkend="ThunarVfsMimeApplication"><type>ThunarVfsMimeApplication</type></link> for
+ <parameter>info</parameter> or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-mime-database-set-default-application"/>thunar_vfs_mime_database_set_default_application ()</title>
+<indexterm><primary>thunar_vfs_mime_database_set_default_application</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> thunar_vfs_mime_database_set_default_application
+ (<link linkend="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</link> *database,
+ <link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link> *info,
+ <link linkend="ThunarVfsMimeApplication">ThunarVfsMimeApplication</link> *application,
+ <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+Sets <parameter>application</parameter> to be the default <link linkend="ThunarVfsMimeApplication"><type>ThunarVfsMimeApplication</type></link> to open files
+of type <parameter>info</parameter> in <parameter>database</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>database</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeDatabase"><type>ThunarVfsMimeDatabase</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>info</parameter> :</term>
+<listitem><simpara> a valid <link linkend="ThunarVfsMimeInfo"><type>ThunarVfsMimeInfo</type></link> for <parameter>database</parameter>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>application</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeApplication"><type>ThunarVfsMimeApplication</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter> :</term>
+<listitem><simpara> return location for errors or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <literal>TRUE</literal> if the operation was successfull, else <literal>FALSE</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-mime-database-add-application"/>thunar_vfs_mime_database_add_application ()</title>
+<indexterm><primary>thunar_vfs_mime_database_add_application</primary></indexterm><programlisting><link linkend="ThunarVfsMimeApplication">ThunarVfsMimeApplication</link>* thunar_vfs_mime_database_add_application
+ (<link linkend="ThunarVfsMimeDatabase">ThunarVfsMimeDatabase</link> *database,
+ <link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link> *info,
+ const <link linkend="gchar">gchar</link> *name,
+ const <link linkend="gchar">gchar</link> *exec,
+ <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+Adds a new <link linkend="ThunarVfsMimeApplication"><type>ThunarVfsMimeApplication</type></link> to the <parameter>database</parameter>, whose
+name is <parameter>name</parameter> and command is <parameter>exec</parameter>, and which can be used to
+open files of type <parameter>info</parameter>.
+</para>
+<para>
+The caller is responsible to free the returned object
+using <link linkend="thunar-vfs-mime-application-unref"><function>thunar_vfs_mime_application_unref()</function></link> when no longer
+needed.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>database</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeDatabase"><type>ThunarVfsMimeDatabase</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>info</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeInfo"><type>ThunarVfsMimeInfo</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter> :</term>
+<listitem><simpara> the name for the application.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>exec</parameter> :</term>
+<listitem><simpara> the command for the application.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter> :</term>
+<listitem><simpara> return location for errors or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the newly created <link linkend="ThunarVfsMimeApplication"><type>ThunarVfsMimeApplication</type></link>
+ or <literal>NULL</literal> on error.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-mime-info.xml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-mime-info.xml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-mime-info.xml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,286 @@
+<refentry id="thunar-vfs-ThunarVfsMimeInfo">
+<refmeta>
+<refentrytitle>ThunarVfsMimeInfo</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>THUNAR-VFS Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>ThunarVfsMimeInfo</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+ <link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link>;
+<link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link>* <link linkend="thunar-vfs-mime-info-new">thunar_vfs_mime_info_new</link> (const <link linkend="gchar">gchar</link> *name,
+ <link linkend="gssize">gssize</link> len);
+<link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link>* <link linkend="thunar-vfs-mime-info-ref">thunar_vfs_mime_info_ref</link> (<link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link> *info);
+<link linkend="void">void</link> <link linkend="thunar-vfs-mime-info-unref">thunar_vfs_mime_info_unref</link> (<link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link> *info);
+const <link linkend="gchar">gchar</link>* <link linkend="thunar-vfs-mime-info-get-comment">thunar_vfs_mime_info_get_comment</link>
+ (<link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link> *info);
+const <link linkend="gchar">gchar</link>* <link linkend="thunar-vfs-mime-info-get-name">thunar_vfs_mime_info_get_name</link> (const <link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link> *info);
+<link linkend="gchar">gchar</link>* <link linkend="thunar-vfs-mime-info-get-media">thunar_vfs_mime_info_get_media</link> (const <link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link> *info);
+<link linkend="gchar">gchar</link>* <link linkend="thunar-vfs-mime-info-get-subtype">thunar_vfs_mime_info_get_subtype</link>
+ (const <link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link> *info);
+<link linkend="guint">guint</link> <link linkend="thunar-vfs-mime-info-hash">thunar_vfs_mime_info_hash</link> (<link linkend="gconstpointer">gconstpointer</link> info);
+<link linkend="gboolean">gboolean</link> <link linkend="thunar-vfs-mime-info-equal">thunar_vfs_mime_info_equal</link> (<link linkend="gconstpointer">gconstpointer</link> a,
+ <link linkend="gconstpointer">gconstpointer</link> b);
+const <link linkend="gchar">gchar</link>* <link linkend="thunar-vfs-mime-info-lookup-icon-name">thunar_vfs_mime_info_lookup_icon_name</link>
+ (<link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link> *info,
+ <link linkend="GtkIconTheme">GtkIconTheme</link> *icon_theme);
+<link linkend="void">void</link> <link linkend="thunar-vfs-mime-info-list-free">thunar_vfs_mime_info_list_free</link> (<link linkend="GList">GList</link> *info_list);
+
+
+</synopsis>
+</refsynopsisdiv>
+
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="ThunarVfsMimeInfo"/>ThunarVfsMimeInfo</title>
+<indexterm><primary>ThunarVfsMimeInfo</primary></indexterm><programlisting>typedef struct {
+} ThunarVfsMimeInfo;
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-mime-info-new"/>thunar_vfs_mime_info_new ()</title>
+<indexterm><primary>thunar_vfs_mime_info_new</primary></indexterm><programlisting><link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link>* thunar_vfs_mime_info_new (const <link linkend="gchar">gchar</link> *name,
+ <link linkend="gssize">gssize</link> len);</programlisting>
+<para>
+Allocates a new <link linkend="ThunarVfsMimeInfo"><type>ThunarVfsMimeInfo</type></link> object with an
+initial reference count of one and sets it to the
+given <parameter>name</parameter>.
+</para>
+<para>
+Note that no checking is performed on the given <parameter>name</parameter>.
+You should not normally use this function, but use
+<link linkend="thunar-vfs-mime-database-get-info"><function>thunar_vfs_mime_database_get_info()</function></link> instead.
+</para>
+<para>
+In addition, if you allocate <link linkend="ThunarVfsMimeInfo"><type>ThunarVfsMimeInfo</type></link><!---->s
+using this function, you cannot mix them with the objects
+allocated in a <link linkend="ThunarVfsMimeDatabase"><type>ThunarVfsMimeDatabase</type></link>, because the
+<link linkend="ThunarVfsMimeDatabase"><type>ThunarVfsMimeDatabase</type></link> and associated functions assume
+that <link linkend="ThunarVfsMimeInfo"><type>ThunarVfsMimeInfo</type></link> objects are unique.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>name</parameter> :</term>
+<listitem><simpara> the mime type name.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>len</parameter> :</term>
+<listitem><simpara> the length of <parameter>name</parameter> or <literal>-1</literal> if zero-terminated.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the newly allocated <link linkend="ThunarVfsMimeInfo"><type>ThunarVfsMimeInfo</type></link>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-mime-info-ref"/>thunar_vfs_mime_info_ref ()</title>
+<indexterm><primary>thunar_vfs_mime_info_ref</primary></indexterm><programlisting><link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link>* thunar_vfs_mime_info_ref (<link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link> *info);</programlisting>
+<para>
+Increments the reference count on <parameter>info</parameter> and returns
+the reference to <parameter>info</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>info</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeInfo"><type>ThunarVfsMimeInfo</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> a reference to <parameter>info</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-mime-info-unref"/>thunar_vfs_mime_info_unref ()</title>
+<indexterm><primary>thunar_vfs_mime_info_unref</primary></indexterm><programlisting><link linkend="void">void</link> thunar_vfs_mime_info_unref (<link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link> *info);</programlisting>
+<para>
+Decrements the reference count on <parameter>info</parameter> and releases
+the resources allocated for <parameter>info</parameter> once the reference
+count drops to zero.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>info</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeInfo"><type>ThunarVfsMimeInfo</type></link>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-mime-info-get-comment"/>thunar_vfs_mime_info_get_comment ()</title>
+<indexterm><primary>thunar_vfs_mime_info_get_comment</primary></indexterm><programlisting>const <link linkend="gchar">gchar</link>* thunar_vfs_mime_info_get_comment
+ (<link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link> *info);</programlisting>
+<para>
+Determines the description for the given <parameter>info</parameter>.
+</para>
+<para>
+Note that this method MUST NOT be called from threads other than
+the main thread, because it's not thread-safe!</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>info</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeInfo"><type>ThunarVfsMimeInfo</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the comment associated with the <parameter>info</parameter> or the empty string
+ if no comment was provided.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-mime-info-get-name"/>thunar_vfs_mime_info_get_name ()</title>
+<indexterm><primary>thunar_vfs_mime_info_get_name</primary></indexterm><programlisting>const <link linkend="gchar">gchar</link>* thunar_vfs_mime_info_get_name (const <link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link> *info);</programlisting>
+<para>
+Returns the full qualified name of the MIME type
+described by the <parameter>info</parameter> object.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>info</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeInfo"><type>ThunarVfsMimeInfo</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the name of <parameter>info</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-mime-info-get-media"/>thunar_vfs_mime_info_get_media ()</title>
+<indexterm><primary>thunar_vfs_mime_info_get_media</primary></indexterm><programlisting><link linkend="gchar">gchar</link>* thunar_vfs_mime_info_get_media (const <link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link> *info);</programlisting>
+<para>
+Returns the media portion of the MIME type, e.g. if your
+<link linkend="ThunarVfsMimeInfo"><type>ThunarVfsMimeInfo</type></link> instance refers to "text/plain", invoking
+this method will return "text".
+</para>
+<para>
+The caller is responsible to free the returned string
+using <link linkend="g-free"><function>g_free()</function></link> when no longer needed.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>info</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeInfo"><type>ThunarVfsMimeInfo</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the media portion of the MIME type.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-mime-info-get-subtype"/>thunar_vfs_mime_info_get_subtype ()</title>
+<indexterm><primary>thunar_vfs_mime_info_get_subtype</primary></indexterm><programlisting><link linkend="gchar">gchar</link>* thunar_vfs_mime_info_get_subtype
+ (const <link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link> *info);</programlisting>
+<para>
+Returns the subtype portion of the MIME type, e.g. if <parameter>info</parameter>
+refers to "application/octect-stream", this method will
+return "octect-stream".
+</para>
+<para>
+The caller is responsible to free the returned string
+using <link linkend="g-free"><function>g_free()</function></link> when no longer needed.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>info</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeInfo"><type>ThunarVfsMimeInfo</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the subtype portion of <parameter>info</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-mime-info-hash"/>thunar_vfs_mime_info_hash ()</title>
+<indexterm><primary>thunar_vfs_mime_info_hash</primary></indexterm><programlisting><link linkend="guint">guint</link> thunar_vfs_mime_info_hash (<link linkend="gconstpointer">gconstpointer</link> info);</programlisting>
+<para>
+Calculates a hash value for <parameter>info</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>info</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeInfo"><type>ThunarVfsMimeInfo</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> a hash value for <parameter>info</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-mime-info-equal"/>thunar_vfs_mime_info_equal ()</title>
+<indexterm><primary>thunar_vfs_mime_info_equal</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> thunar_vfs_mime_info_equal (<link linkend="gconstpointer">gconstpointer</link> a,
+ <link linkend="gconstpointer">gconstpointer</link> b);</programlisting>
+<para>
+Compares <parameter>a</parameter> and <parameter>b</parameter> and returns <literal>TRUE</literal> if both
+are equal.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>a</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeInfo"><type>ThunarVfsMimeInfo</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>b</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeInfo"><type>ThunarVfsMimeInfo</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <literal>TRUE</literal> if <parameter>a</parameter> and <parameter>b</parameter> are equal.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-mime-info-lookup-icon-name"/>thunar_vfs_mime_info_lookup_icon_name ()</title>
+<indexterm><primary>thunar_vfs_mime_info_lookup_icon_name</primary></indexterm><programlisting>const <link linkend="gchar">gchar</link>* thunar_vfs_mime_info_lookup_icon_name
+ (<link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link> *info,
+ <link linkend="GtkIconTheme">GtkIconTheme</link> *icon_theme);</programlisting>
+<para>
+Tries to determine the name of a suitable icon for <parameter>info</parameter>
+in <parameter>icon_theme</parameter>. The returned icon name can then be used
+in calls to <link linkend="gtk-icon-theme-lookup-icon"><function>gtk_icon_theme_lookup_icon()</function></link> or
+<link linkend="gtk-icon-theme-load-icon"><function>gtk_icon_theme_load_icon()</function></link>.
+</para>
+<para>
+The returned icon name is owned by <parameter>info</parameter> and MUST NOT be freed
+by the caller.
+</para>
+<para>
+Note that this method MUST NOT be called from threads other than
+the main thread, because it's not thread-safe!</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>info</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMimeInfo"><type>ThunarVfsMimeInfo</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>icon_theme</parameter> :</term>
+<listitem><simpara> the <link linkend="GtkIconTheme"><type>GtkIconTheme</type></link> on which to perform the lookup.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> a suitable icon name for <parameter>info</parameter> in <parameter>icon_theme</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-mime-info-list-free"/>thunar_vfs_mime_info_list_free ()</title>
+<indexterm><primary>thunar_vfs_mime_info_list_free</primary></indexterm><programlisting><link linkend="void">void</link> thunar_vfs_mime_info_list_free (<link linkend="GList">GList</link> *info_list);</programlisting>
+<para>
+Frees the list and all <link linkend="ThunarVfsMimeInfo"><type>ThunarVfsMimeInfo</type></link><!---->s
+contained within the list.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>info_list</parameter> :</term>
+<listitem><simpara> a <link linkend="GList"><type>GList</type></link> of <link linkend="ThunarVfsMimeInfo"><type>ThunarVfsMimeInfo</type></link><!---->s
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-monitor.xml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-monitor.xml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-monitor.xml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,286 @@
+<refentry id="ThunarVfsMonitor">
+<refmeta>
+<refentrytitle>ThunarVfsMonitor</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>THUNAR-VFS Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>ThunarVfsMonitor</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+ <link linkend="ThunarVfsMonitor-struct">ThunarVfsMonitor</link>;
+enum <link linkend="ThunarVfsMonitorEvent">ThunarVfsMonitorEvent</link>;
+ <link linkend="ThunarVfsMonitorHandle">ThunarVfsMonitorHandle</link>;
+<link linkend="void">void</link> (<link linkend="ThunarVfsMonitorCallback">*ThunarVfsMonitorCallback</link>) (<link linkend="ThunarVfsMonitor">ThunarVfsMonitor</link> *monitor,
+ <link linkend="ThunarVfsMonitorHandle">ThunarVfsMonitorHandle</link> *handle,
+ <link linkend="ThunarVfsMonitorEvent">ThunarVfsMonitorEvent</link> event,
+ <link linkend="ThunarVfsPath">ThunarVfsPath</link> *handle_path,
+ <link linkend="ThunarVfsPath">ThunarVfsPath</link> *event_path,
+ <link linkend="gpointer">gpointer</link> user_data);
+<link linkend="ThunarVfsMonitor">ThunarVfsMonitor</link>* <link linkend="thunar-vfs-monitor-get-default">thunar_vfs_monitor_get_default</link>
+ (void);
+<link linkend="ThunarVfsMonitorHandle">ThunarVfsMonitorHandle</link>* <link linkend="thunar-vfs-monitor-add-directory">thunar_vfs_monitor_add_directory</link>
+ (<link linkend="ThunarVfsMonitor">ThunarVfsMonitor</link> *monitor,
+ <link linkend="ThunarVfsPath">ThunarVfsPath</link> *path,
+ <link linkend="ThunarVfsMonitorCallback">ThunarVfsMonitorCallback</link> callback,
+ <link linkend="gpointer">gpointer</link> user_data);
+<link linkend="ThunarVfsMonitorHandle">ThunarVfsMonitorHandle</link>* <link linkend="thunar-vfs-monitor-add-file">thunar_vfs_monitor_add_file</link>
+ (<link linkend="ThunarVfsMonitor">ThunarVfsMonitor</link> *monitor,
+ <link linkend="ThunarVfsPath">ThunarVfsPath</link> *path,
+ <link linkend="ThunarVfsMonitorCallback">ThunarVfsMonitorCallback</link> callback,
+ <link linkend="gpointer">gpointer</link> user_data);
+<link linkend="void">void</link> <link linkend="thunar-vfs-monitor-remove">thunar_vfs_monitor_remove</link> (<link linkend="ThunarVfsMonitor">ThunarVfsMonitor</link> *monitor,
+ <link linkend="ThunarVfsMonitorHandle">ThunarVfsMonitorHandle</link> *handle);
+<link linkend="void">void</link> <link linkend="thunar-vfs-monitor-feed">thunar_vfs_monitor_feed</link> (<link linkend="ThunarVfsMonitor">ThunarVfsMonitor</link> *monitor,
+ <link linkend="ThunarVfsMonitorEvent">ThunarVfsMonitorEvent</link> event,
+ <link linkend="ThunarVfsPath">ThunarVfsPath</link> *path);
+<link linkend="void">void</link> <link linkend="thunar-vfs-monitor-wait">thunar_vfs_monitor_wait</link> (<link linkend="ThunarVfsMonitor">ThunarVfsMonitor</link> *monitor);
+
+
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1>
+<title>Object Hierarchy</title>
+<synopsis>
+
+ <link linkend="GObject">GObject</link>
+ +----ThunarVfsMonitor
+</synopsis>
+
+</refsect1>
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="ThunarVfsMonitor-struct"/>ThunarVfsMonitor</title>
+<indexterm><primary>ThunarVfsMonitor</primary></indexterm><programlisting>typedef struct _ThunarVfsMonitor ThunarVfsMonitor;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ThunarVfsMonitorEvent"/>enum ThunarVfsMonitorEvent</title>
+<indexterm><primary>ThunarVfsMonitorEvent</primary></indexterm><programlisting>typedef enum
+{
+ THUNAR_VFS_MONITOR_EVENT_CHANGED,
+ THUNAR_VFS_MONITOR_EVENT_CREATED,
+ THUNAR_VFS_MONITOR_EVENT_DELETED,
+} ThunarVfsMonitorEvent;
+</programlisting>
+<para>
+Describes an event that occurred on a <link linkend="ThunarVfsMonitorHandle"><type>ThunarVfsMonitorHandle</type></link>.</para>
+<para>
+
+</para><variablelist role="enum">
+<varlistentry>
+<term><literal>THUNAR_VFS_MONITOR_EVENT_CHANGED</literal></term>
+<listitem><simpara> a file or directory was changed.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_MONITOR_EVENT_CREATED</literal></term>
+<listitem><simpara> a file or directory was created.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_MONITOR_EVENT_DELETED</literal></term>
+<listitem><simpara> a file or directory was deleted.
+</simpara></listitem>
+</varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="ThunarVfsMonitorHandle"/>ThunarVfsMonitorHandle</title>
+<indexterm><primary>ThunarVfsMonitorHandle</primary></indexterm><programlisting>typedef struct _ThunarVfsMonitorHandle ThunarVfsMonitorHandle;</programlisting>
+<para>
+A handle on a file system entity, which is currently watched
+by a <link linkend="ThunarVfsMonitor"><type>ThunarVfsMonitor</type></link>.</para>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ThunarVfsMonitorCallback"/>ThunarVfsMonitorCallback ()</title>
+<indexterm><primary>ThunarVfsMonitorCallback</primary></indexterm><programlisting><link linkend="void">void</link> (*ThunarVfsMonitorCallback) (<link linkend="ThunarVfsMonitor">ThunarVfsMonitor</link> *monitor,
+ <link linkend="ThunarVfsMonitorHandle">ThunarVfsMonitorHandle</link> *handle,
+ <link linkend="ThunarVfsMonitorEvent">ThunarVfsMonitorEvent</link> event,
+ <link linkend="ThunarVfsPath">ThunarVfsPath</link> *handle_path,
+ <link linkend="ThunarVfsPath">ThunarVfsPath</link> *event_path,
+ <link linkend="gpointer">gpointer</link> user_data);</programlisting>
+<para>
+The prototype for callback functions that will be called by a <link linkend="ThunarVfsMonitor"><type>ThunarVfsMonitor</type></link>
+whenever one of its associated <link linkend="ThunarVfsMonitorHandle"><type>ThunarVfsMonitorHandle</type></link><!---->s notice a
+change.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>monitor</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMonitor"><type>ThunarVfsMonitor</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>handle</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMonitorHandle"><type>ThunarVfsMonitorHandle</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>event</parameter> :</term>
+<listitem><simpara> the event that occurred.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>handle_path</parameter> :</term>
+<listitem><simpara> the <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link> that was specified when registering the <parameter>handle</parameter>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>event_path</parameter> :</term>
+<listitem><simpara> the <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link> on which the <parameter>event</parameter> occurred.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>user_data</parameter> :</term>
+<listitem><simpara> the user data that was specified when registering the <parameter>handle</parameter> with the <parameter>monitor</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-monitor-get-default"/>thunar_vfs_monitor_get_default ()</title>
+<indexterm><primary>thunar_vfs_monitor_get_default</primary></indexterm><programlisting><link linkend="ThunarVfsMonitor">ThunarVfsMonitor</link>* thunar_vfs_monitor_get_default
+ (void);</programlisting>
+<para>
+Returns the shared <link linkend="ThunarVfsMonitor"><type>ThunarVfsMonitor</type></link> instance. The caller
+is responsible to call <link linkend="g-object-unref"><function>g_object_unref()</function></link> on the returned
+object when no longer needed.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> a reference to the shared <link linkend="ThunarVfsMonitor"><type>ThunarVfsMonitor</type></link>
+ instance.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-monitor-add-directory"/>thunar_vfs_monitor_add_directory ()</title>
+<indexterm><primary>thunar_vfs_monitor_add_directory</primary></indexterm><programlisting><link linkend="ThunarVfsMonitorHandle">ThunarVfsMonitorHandle</link>* thunar_vfs_monitor_add_directory
+ (<link linkend="ThunarVfsMonitor">ThunarVfsMonitor</link> *monitor,
+ <link linkend="ThunarVfsPath">ThunarVfsPath</link> *path,
+ <link linkend="ThunarVfsMonitorCallback">ThunarVfsMonitorCallback</link> callback,
+ <link linkend="gpointer">gpointer</link> user_data);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>monitor</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMonitor"><type>ThunarVfsMonitor</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>path</parameter> :</term>
+<listitem><simpara> the <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link> of the directory that should be watched.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>callback</parameter> :</term>
+<listitem><simpara> the callback function to invoke.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>user_data</parameter> :</term>
+<listitem><simpara> additional data to pass to <parameter>callback</parameter>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the <link linkend="ThunarVfsMonitorHandle"><type>ThunarVfsMonitorHandle</type></link> for the new watch.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-monitor-add-file"/>thunar_vfs_monitor_add_file ()</title>
+<indexterm><primary>thunar_vfs_monitor_add_file</primary></indexterm><programlisting><link linkend="ThunarVfsMonitorHandle">ThunarVfsMonitorHandle</link>* thunar_vfs_monitor_add_file
+ (<link linkend="ThunarVfsMonitor">ThunarVfsMonitor</link> *monitor,
+ <link linkend="ThunarVfsPath">ThunarVfsPath</link> *path,
+ <link linkend="ThunarVfsMonitorCallback">ThunarVfsMonitorCallback</link> callback,
+ <link linkend="gpointer">gpointer</link> user_data);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>monitor</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMonitor"><type>ThunarVfsMonitor</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>path</parameter> :</term>
+<listitem><simpara> the <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link> of the file that should be watched.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>callback</parameter> :</term>
+<listitem><simpara> the callback function to invoke.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>user_data</parameter> :</term>
+<listitem><simpara> additional data to pass to <parameter>callback</parameter>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the <link linkend="ThunarVfsMonitorHandle"><type>ThunarVfsMonitorHandle</type></link> for the new watch.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-monitor-remove"/>thunar_vfs_monitor_remove ()</title>
+<indexterm><primary>thunar_vfs_monitor_remove</primary></indexterm><programlisting><link linkend="void">void</link> thunar_vfs_monitor_remove (<link linkend="ThunarVfsMonitor">ThunarVfsMonitor</link> *monitor,
+ <link linkend="ThunarVfsMonitorHandle">ThunarVfsMonitorHandle</link> *handle);</programlisting>
+<para>
+Removes <parameter>handle</parameter> from <parameter>monitor</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>monitor</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMonitor"><type>ThunarVfsMonitor</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>handle</parameter> :</term>
+<listitem><simpara> a valid <link linkend="ThunarVfsMonitorHandle"><type>ThunarVfsMonitorHandle</type></link> for <parameter>monitor</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-monitor-feed"/>thunar_vfs_monitor_feed ()</title>
+<indexterm><primary>thunar_vfs_monitor_feed</primary></indexterm><programlisting><link linkend="void">void</link> thunar_vfs_monitor_feed (<link linkend="ThunarVfsMonitor">ThunarVfsMonitor</link> *monitor,
+ <link linkend="ThunarVfsMonitorEvent">ThunarVfsMonitorEvent</link> event,
+ <link linkend="ThunarVfsPath">ThunarVfsPath</link> *path);</programlisting>
+<para>
+Explicitly injects the given <parameter>event</parameter> into <parameter>monitor</parameter><!---->s event
+processing logic.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>monitor</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMonitor"><type>ThunarVfsMonitor</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>event</parameter> :</term>
+<listitem><simpara> the <link linkend="ThunarVfsMonitorEvent"><type>ThunarVfsMonitorEvent</type></link> that should be emulated.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>path</parameter> :</term>
+<listitem><simpara> the <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link> on which <parameter>event</parameter> took place.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-monitor-wait"/>thunar_vfs_monitor_wait ()</title>
+<indexterm><primary>thunar_vfs_monitor_wait</primary></indexterm><programlisting><link linkend="void">void</link> thunar_vfs_monitor_wait (<link linkend="ThunarVfsMonitor">ThunarVfsMonitor</link> *monitor);</programlisting>
+<para>
+Suspends the execution of the current thread until the
+<parameter>monitor</parameter> has processed all currently pending events. The
+calling thread must own a reference on the <parameter>monitor</parameter>!
+</para>
+<para>
+This method should never be called from the main thread
+or you'll lock up your application!!</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>monitor</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsMonitor"><type>ThunarVfsMonitor</type></link>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-operations.xml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-operations.xml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-operations.xml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,401 @@
+<refentry id="thunar-vfs-Operations">
+<refmeta>
+<refentrytitle>Operations</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>THUNAR-VFS Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>Operations</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+<link linkend="ThunarVfsJob">ThunarVfsJob</link>* <link linkend="thunar-vfs-listdir">thunar_vfs_listdir</link> (<link linkend="ThunarVfsPath">ThunarVfsPath</link> *path,
+ <link linkend="GError">GError</link> **error);
+<link linkend="ThunarVfsJob">ThunarVfsJob</link>* <link linkend="thunar-vfs-copy-file">thunar_vfs_copy_file</link> (<link linkend="ThunarVfsPath">ThunarVfsPath</link> *source_path,
+ <link linkend="ThunarVfsPath">ThunarVfsPath</link> *target_path,
+ <link linkend="GError">GError</link> **error);
+<link linkend="ThunarVfsJob">ThunarVfsJob</link>* <link linkend="thunar-vfs-copy-files">thunar_vfs_copy_files</link> (<link linkend="GList">GList</link> *source_path_list,
+ <link linkend="GList">GList</link> *target_path_list,
+ <link linkend="GError">GError</link> **error);
+<link linkend="ThunarVfsJob">ThunarVfsJob</link>* <link linkend="thunar-vfs-link-file">thunar_vfs_link_file</link> (<link linkend="ThunarVfsPath">ThunarVfsPath</link> *source_path,
+ <link linkend="ThunarVfsPath">ThunarVfsPath</link> *target_path,
+ <link linkend="GError">GError</link> **error);
+<link linkend="ThunarVfsJob">ThunarVfsJob</link>* <link linkend="thunar-vfs-link-files">thunar_vfs_link_files</link> (<link linkend="GList">GList</link> *source_path_list,
+ <link linkend="GList">GList</link> *target_path_list,
+ <link linkend="GError">GError</link> **error);
+<link linkend="ThunarVfsJob">ThunarVfsJob</link>* <link linkend="thunar-vfs-move-file">thunar_vfs_move_file</link> (<link linkend="ThunarVfsPath">ThunarVfsPath</link> *source_path,
+ <link linkend="ThunarVfsPath">ThunarVfsPath</link> *target_path,
+ <link linkend="GError">GError</link> **error);
+<link linkend="ThunarVfsJob">ThunarVfsJob</link>* <link linkend="thunar-vfs-move-files">thunar_vfs_move_files</link> (<link linkend="GList">GList</link> *source_path_list,
+ <link linkend="GList">GList</link> *target_path_list,
+ <link linkend="GError">GError</link> **error);
+<link linkend="ThunarVfsJob">ThunarVfsJob</link>* <link linkend="thunar-vfs-unlink-file">thunar_vfs_unlink_file</link> (<link linkend="ThunarVfsPath">ThunarVfsPath</link> *path,
+ <link linkend="GError">GError</link> **error);
+<link linkend="ThunarVfsJob">ThunarVfsJob</link>* <link linkend="thunar-vfs-unlink-files">thunar_vfs_unlink_files</link> (<link linkend="GList">GList</link> *path_list,
+ <link linkend="GError">GError</link> **error);
+<link linkend="ThunarVfsJob">ThunarVfsJob</link>* <link linkend="thunar-vfs-make-directory">thunar_vfs_make_directory</link> (<link linkend="ThunarVfsPath">ThunarVfsPath</link> *path,
+ <link linkend="GError">GError</link> **error);
+<link linkend="ThunarVfsJob">ThunarVfsJob</link>* <link linkend="thunar-vfs-make-directories">thunar_vfs_make_directories</link> (<link linkend="GList">GList</link> *path_list,
+ <link linkend="GError">GError</link> **error);
+</synopsis>
+</refsynopsisdiv>
+
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="thunar-vfs-listdir"/>thunar_vfs_listdir ()</title>
+<indexterm><primary>thunar_vfs_listdir</primary></indexterm><programlisting><link linkend="ThunarVfsJob">ThunarVfsJob</link>* thunar_vfs_listdir (<link linkend="ThunarVfsPath">ThunarVfsPath</link> *path,
+ <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+Generates a <link linkend="ThunarVfsListdirJob"><type>ThunarVfsListdirJob</type></link>, which can be used to list the
+contents of a directory (as specified by <parameter>path</parameter>). If the creation
+of the job failes for some reason, <literal>NULL</literal> will be returned and
+<parameter>error</parameter> will be set to point to a <link linkend="GError"><type>GError</type></link> describing the cause.
+Else the newly allocated <link linkend="ThunarVfsListdirJob"><type>ThunarVfsListdirJob</type></link> will be returned
+and the caller is responsible to call <link linkend="g-object-unref"><function>g_object_unref()</function></link>.
+</para>
+<para>
+Note, that the returned job is launched right away, so you
+don't need to call <link linkend="thunar-vfs-job-launch"><function>thunar_vfs_job_launch()</function></link> on it.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>path</parameter> :</term>
+<listitem><simpara> the <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link> for the folder that should be listed.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter> :</term>
+<listitem><simpara> return location for errors or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the newly allocated <link linkend="ThunarVfsListdirJob"><type>ThunarVfsListdirJob</type></link> or <literal>NULL</literal>
+ if an error occurs while creating the job.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-copy-file"/>thunar_vfs_copy_file ()</title>
+<indexterm><primary>thunar_vfs_copy_file</primary></indexterm><programlisting><link linkend="ThunarVfsJob">ThunarVfsJob</link>* thunar_vfs_copy_file (<link linkend="ThunarVfsPath">ThunarVfsPath</link> *source_path,
+ <link linkend="ThunarVfsPath">ThunarVfsPath</link> *target_path,
+ <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+Allocates a new <link linkend="ThunarVfsTransferJob"><type>ThunarVfsTransferJob</type></link>, which copies the file
+from <parameter>source_path</parameter> to <parameter>target_path</parameter>. That said, the file or directory
+located at <parameter>source_path</parameter> will be placed at <parameter>target_path</parameter>, NOT INTO
+<parameter>target_path</parameter>.
+</para>
+<para>
+The caller is responsible to free the returned job using
+<link linkend="g-object-unref"><function>g_object_unref()</function></link> when no longer needed.
+</para>
+<para>
+Note, that the returned job is launched right away, so you don't
+need to call <link linkend="thunar-vfs-job-launch"><function>thunar_vfs_job_launch()</function></link> on it.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>source_path</parameter> :</term>
+<listitem><simpara> the source <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>target_path</parameter> :</term>
+<listitem><simpara> the target <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter> :</term>
+<listitem><simpara> return location for errors or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the newly allocated <link linkend="ThunarVfsTransferJob"><type>ThunarVfsTransferJob</type></link> or <literal>NULL</literal>
+ if an error occurs while creating the job.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-copy-files"/>thunar_vfs_copy_files ()</title>
+<indexterm><primary>thunar_vfs_copy_files</primary></indexterm><programlisting><link linkend="ThunarVfsJob">ThunarVfsJob</link>* thunar_vfs_copy_files (<link linkend="GList">GList</link> *source_path_list,
+ <link linkend="GList">GList</link> *target_path_list,
+ <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+Similar to <link linkend="thunar-vfs-copy-file"><function>thunar_vfs_copy_file()</function></link>, but takes a bunch of files. The
+<parameter>source_path_list</parameter> and <parameter>target_path_list</parameter> must be of the same size.
+</para>
+<para>
+Note, that the returned job is launched right away, so you don't
+need to call <link linkend="thunar-vfs-job-launch"><function>thunar_vfs_job_launch()</function></link> on it. The caller is responsible
+to free the returned object using <link linkend="g-object-unref"><function>g_object_unref()</function></link> when no longer
+needed.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>source_path_list</parameter> :</term>
+<listitem><simpara> the list of <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link><!---->s that should be copied.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>target_path_list</parameter> :</term>
+<listitem><simpara> the list of <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link><!---->s for the targets.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter> :</term>
+<listitem><simpara> return location for errors or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the newly allocated <link linkend="ThunarVfsTransferJob"><type>ThunarVfsTransferJob</type></link> or <literal>NULL</literal>
+ if an error occurs while creating the job.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-link-file"/>thunar_vfs_link_file ()</title>
+<indexterm><primary>thunar_vfs_link_file</primary></indexterm><programlisting><link linkend="ThunarVfsJob">ThunarVfsJob</link>* thunar_vfs_link_file (<link linkend="ThunarVfsPath">ThunarVfsPath</link> *source_path,
+ <link linkend="ThunarVfsPath">ThunarVfsPath</link> *target_path,
+ <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+Allocates a new <link linkend="ThunarVfsLinkJob"><type>ThunarVfsLinkJob</type></link>, which creates a symbolic
+link from <parameter>source_path</parameter> to <parameter>target_path</parameter>.
+</para>
+<para>
+If <parameter>source_path</parameter> and <parameter>target_path</parameter> refer to the same file,
+a new unique target filename will be choosen automatically.
+</para>
+<para>
+The caller is responsible to free the returned job using
+<link linkend="g-object-unref"><function>g_object_unref()</function></link> when no longer needed.
+</para>
+<para>
+Note, that the returned job is launched right away, so you don't
+need to call <link linkend="thunar-vfs-job-launch"><function>thunar_vfs_job_launch()</function></link> on it.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>source_path</parameter> :</term>
+<listitem><simpara> the source <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>target_path</parameter> :</term>
+<listitem><simpara> the target <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter> :</term>
+<listitem><simpara> return location for errors or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the newly allocated <link linkend="ThunarVfsLinkJob"><type>ThunarVfsLinkJob</type></link> or <literal>NULL</literal>
+ if an error occurs while creating the job.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-link-files"/>thunar_vfs_link_files ()</title>
+<indexterm><primary>thunar_vfs_link_files</primary></indexterm><programlisting><link linkend="ThunarVfsJob">ThunarVfsJob</link>* thunar_vfs_link_files (<link linkend="GList">GList</link> *source_path_list,
+ <link linkend="GList">GList</link> *target_path_list,
+ <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+Like <link linkend="thunar-vfs-link-file"><function>thunar_vfs_link_file()</function></link>, but works on path lists, rather than
+a single path.
+</para>
+<para>
+The caller is responsible to free the returned job using
+<link linkend="g-object-unref"><function>g_object_unref()</function></link> when no longer needed.
+</para>
+<para>
+Note, that the returned job is launched right away, so you don't
+need to call <link linkend="thunar-vfs-job-launch"><function>thunar_vfs_job_launch()</function></link> on it.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>source_path_list</parameter> :</term>
+<listitem><simpara> list of <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link><!---->s to the source files.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>target_path_list</parameter> :</term>
+<listitem><simpara> list of <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link><!---->s to the target files.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter> :</term>
+<listitem><simpara> return location for errors or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the newly allocated <link linkend="ThunarVfsLinkJob"><type>ThunarVfsLinkJob</type></link> or <literal>NULL</literal>
+ if an error occurs while creating the job.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-move-file"/>thunar_vfs_move_file ()</title>
+<indexterm><primary>thunar_vfs_move_file</primary></indexterm><programlisting><link linkend="ThunarVfsJob">ThunarVfsJob</link>* thunar_vfs_move_file (<link linkend="ThunarVfsPath">ThunarVfsPath</link> *source_path,
+ <link linkend="ThunarVfsPath">ThunarVfsPath</link> *target_path,
+ <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+Allocates a new <link linkend="ThunarVfsTransferJob"><type>ThunarVfsTransferJob</type></link>, which moves the file
+from <parameter>source_path</parameter> to <parameter>target_path</parameter>. That said, the file or directory
+located at <parameter>source_path</parameter> will be placed at <parameter>target_path</parameter>, NOT INTO
+<parameter>target_path</parameter>.
+</para>
+<para>
+The caller is responsible to free the returned job using
+<link linkend="g-object-unref"><function>g_object_unref()</function></link> when no longer needed.
+</para>
+<para>
+Note, that the returned job is launched right away, so you don't
+need to call <link linkend="thunar-vfs-job-launch"><function>thunar_vfs_job_launch()</function></link> on it.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>source_path</parameter> :</term>
+<listitem><simpara> the source <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>target_path</parameter> :</term>
+<listitem><simpara> the target <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter> :</term>
+<listitem><simpara> return location for errors or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the newly allocated <link linkend="ThunarVfsTransferJob"><type>ThunarVfsTransferJob</type></link> or <literal>NULL</literal>
+ if an error occurs while creating the job.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-move-files"/>thunar_vfs_move_files ()</title>
+<indexterm><primary>thunar_vfs_move_files</primary></indexterm><programlisting><link linkend="ThunarVfsJob">ThunarVfsJob</link>* thunar_vfs_move_files (<link linkend="GList">GList</link> *source_path_list,
+ <link linkend="GList">GList</link> *target_path_list,
+ <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>source_path_list</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>target_path_list</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-unlink-file"/>thunar_vfs_unlink_file ()</title>
+<indexterm><primary>thunar_vfs_unlink_file</primary></indexterm><programlisting><link linkend="ThunarVfsJob">ThunarVfsJob</link>* thunar_vfs_unlink_file (<link linkend="ThunarVfsPath">ThunarVfsPath</link> *path,
+ <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+Simple wrapper to <link linkend="thunar-vfs-unlink-files"><function>thunar_vfs_unlink_files()</function></link>, which takes
+only a single path.
+</para>
+<para>
+Note, that the returned job is launched right away, so you
+don't need to call <link linkend="thunar-vfs-job-launch"><function>thunar_vfs_job_launch()</function></link> on it. The caller
+is responsible to free the returned object using <link linkend="g-object-unref"><function>g_object_unref()</function></link>
+when no longer needed.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>path</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link>, that should be unlinked.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter> :</term>
+<listitem><simpara> return location for errors or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the newly allocated <link linkend="ThunarVfsUnlinkJob"><type>ThunarVfsUnlinkJob</type></link> or <literal>NULL</literal>
+ if an error occurs while creating the job.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-unlink-files"/>thunar_vfs_unlink_files ()</title>
+<indexterm><primary>thunar_vfs_unlink_files</primary></indexterm><programlisting><link linkend="ThunarVfsJob">ThunarVfsJob</link>* thunar_vfs_unlink_files (<link linkend="GList">GList</link> *path_list,
+ <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+Generates a <link linkend="ThunarVfsInteractiveJob"><type>ThunarVfsInteractiveJob</type></link>, which can be used to unlink
+all files referenced by the <parameter>path_list</parameter>. If the creation of the job
+failes for some reason, <literal>NULL</literal> will be returned and <parameter>error</parameter> will
+be set to point to a <link linkend="GError"><type>GError</type></link> describing the cause. Else, the
+newly allocated <link linkend="ThunarVfsUnlinkJob"><type>ThunarVfsUnlinkJob</type></link> will be returned, and the
+caller is responsible to call <link linkend="g-object-unref"><function>g_object_unref()</function></link>.
+</para>
+<para>
+Note, that the returned job is launched right away, so you
+don't need to call <link linkend="thunar-vfs-job-launch"><function>thunar_vfs_job_launch()</function></link> on it.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>path_list</parameter> :</term>
+<listitem><simpara> a list of <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link><!---->s, that should be unlinked.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter> :</term>
+<listitem><simpara> return location for errors or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the newly allocated <link linkend="ThunarVfsUnlinkJob"><type>ThunarVfsUnlinkJob</type></link> or <literal>NULL</literal>
+ if an error occurs while creating the job.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-make-directory"/>thunar_vfs_make_directory ()</title>
+<indexterm><primary>thunar_vfs_make_directory</primary></indexterm><programlisting><link linkend="ThunarVfsJob">ThunarVfsJob</link>* thunar_vfs_make_directory (<link linkend="ThunarVfsPath">ThunarVfsPath</link> *path,
+ <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+Generates a <link linkend="ThunarVfsMkdirJob"><type>ThunarVfsMkdirJob</type></link>, which can be used to
+asynchronously create a new directory at the given <parameter>path</parameter>. If
+the creation of the job fails for some reason, <literal>NULL</literal> will be
+returned and <parameter>error</parameter> will be set to point to a <link linkend="GError"><type>GError</type></link>
+describing the cause of the problem. Else the newly allocated
+<link linkend="ThunarVfsMkdirJob"><type>ThunarVfsMkdirJob</type></link> will be returned, and the caller is responsible
+to call <link linkend="g-object-unref"><function>g_object_unref()</function></link>.
+</para>
+<para>
+Note, that the returned job is launched right away, so you
+don't need to call <link linkend="thunar-vfs-job-launch"><function>thunar_vfs_job_launch()</function></link> on it.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>path</parameter> :</term>
+<listitem><simpara> the <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link> to the directory to create.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter> :</term>
+<listitem><simpara> return location for errors or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the newly allocated <link linkend="ThunarVfsMkdirJob"><type>ThunarVfsMkdirJob</type></link> or <literal>NULL</literal>
+ if an error occurs while creating the job.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-make-directories"/>thunar_vfs_make_directories ()</title>
+<indexterm><primary>thunar_vfs_make_directories</primary></indexterm><programlisting><link linkend="ThunarVfsJob">ThunarVfsJob</link>* thunar_vfs_make_directories (<link linkend="GList">GList</link> *path_list,
+ <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+Similar to <link linkend="thunar-vfs-make-directory"><function>thunar_vfs_make_directory()</function></link>, but allows the creation
+of multiple directories using a single <link linkend="ThunarVfsJob"><type>ThunarVfsJob</type></link>.
+</para>
+<para>
+The caller is responsible to free the returned job using
+<link linkend="g-object-unref"><function>g_object_unref()</function></link> when no longer needed.
+</para>
+<para>
+Note, that the returned job is launched right away, so you don't
+need to call <link linkend="thunar-vfs-job-launch"><function>thunar_vfs_job_launch()</function></link> on it.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>path_list</parameter> :</term>
+<listitem><simpara> a list of <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link><!--->s that contain the paths
+ to the directories which should be created.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter> :</term>
+<listitem><simpara> return location for errors or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the newly allocated <link linkend="ThunarVfsMkdirJob"><type>ThunarVfsMkdirJob</type></link> or <literal>NULL</literal>
+ if an error occurs while creating the job.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-path.xml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-path.xml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-path.xml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,543 @@
+<refentry id="thunar-vfs-ThunarVfsPath">
+<refmeta>
+<refentrytitle>ThunarVfsPath</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>THUNAR-VFS Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>ThunarVfsPath</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+ <link linkend="ThunarVfsPath">ThunarVfsPath</link>;
+<link linkend="ThunarVfsPath">ThunarVfsPath</link>* <link linkend="thunar-vfs-path-new">thunar_vfs_path_new</link> (const <link linkend="gchar">gchar</link> *identifier,
+ <link linkend="GError">GError</link> **error);
+<link linkend="ThunarVfsPath">ThunarVfsPath</link>* <link linkend="thunar-vfs-path-get-for-home">thunar_vfs_path_get_for_home</link> (void);
+<link linkend="ThunarVfsPath">ThunarVfsPath</link>* <link linkend="thunar-vfs-path-get-for-root">thunar_vfs_path_get_for_root</link> (void);
+<link linkend="ThunarVfsPath">ThunarVfsPath</link>* <link linkend="thunar-vfs-path-ref">thunar_vfs_path_ref</link> (<link linkend="ThunarVfsPath">ThunarVfsPath</link> *path);
+<link linkend="void">void</link> <link linkend="thunar-vfs-path-unref">thunar_vfs_path_unref</link> (<link linkend="ThunarVfsPath">ThunarVfsPath</link> *path);
+<link linkend="guint">guint</link> <link linkend="thunar-vfs-path-hash">thunar_vfs_path_hash</link> (<link linkend="gconstpointer">gconstpointer</link> path_ptr);
+<link linkend="gboolean">gboolean</link> <link linkend="thunar-vfs-path-equal">thunar_vfs_path_equal</link> (<link linkend="gconstpointer">gconstpointer</link> path_ptr_a,
+ <link linkend="gconstpointer">gconstpointer</link> path_ptr_b);
+<link linkend="gboolean">gboolean</link> <link linkend="thunar-vfs-path-is-home">thunar_vfs_path_is_home</link> (const <link linkend="ThunarVfsPath">ThunarVfsPath</link> *path);
+<link linkend="gboolean">gboolean</link> <link linkend="thunar-vfs-path-is-root">thunar_vfs_path_is_root</link> (const <link linkend="ThunarVfsPath">ThunarVfsPath</link> *path);
+<link linkend="ThunarVfsPath">ThunarVfsPath</link>* <link linkend="thunar-vfs-path-relative">thunar_vfs_path_relative</link> (<link linkend="ThunarVfsPath">ThunarVfsPath</link> *parent,
+ const <link linkend="gchar">gchar</link> *name);
+const <link linkend="gchar">gchar</link>* <link linkend="thunar-vfs-path-get-name">thunar_vfs_path_get_name</link> (const <link linkend="ThunarVfsPath">ThunarVfsPath</link> *path);
+<link linkend="ThunarVfsPath">ThunarVfsPath</link>* <link linkend="thunar-vfs-path-get-parent">thunar_vfs_path_get_parent</link> (const <link linkend="ThunarVfsPath">ThunarVfsPath</link> *path);
+<link linkend="gchar">gchar</link>* <link linkend="thunar-vfs-path-dup-string">thunar_vfs_path_dup_string</link> (const <link linkend="ThunarVfsPath">ThunarVfsPath</link> *path);
+<link linkend="gssize">gssize</link> <link linkend="thunar-vfs-path-to-string">thunar_vfs_path_to_string</link> (const <link linkend="ThunarVfsPath">ThunarVfsPath</link> *path,
+ <link linkend="gchar">gchar</link> *buffer,
+ <link linkend="gsize">gsize</link> bufsize,
+ <link linkend="GError">GError</link> **error);
+<link linkend="gchar">gchar</link>* <link linkend="thunar-vfs-path-dup-uri">thunar_vfs_path_dup_uri</link> (const <link linkend="ThunarVfsPath">ThunarVfsPath</link> *path);
+<link linkend="gssize">gssize</link> <link linkend="thunar-vfs-path-to-uri">thunar_vfs_path_to_uri</link> (const <link linkend="ThunarVfsPath">ThunarVfsPath</link> *path,
+ <link linkend="gchar">gchar</link> *buffer,
+ <link linkend="gsize">gsize</link> bufsize,
+ <link linkend="GError">GError</link> **error);
+<link linkend="GList">GList</link>* <link linkend="thunar-vfs-path-list-from-string">thunar_vfs_path_list_from_string</link>
+ (const <link linkend="gchar">gchar</link> *uri_string,
+ <link linkend="GError">GError</link> **error);
+<link linkend="gchar">gchar</link>* <link linkend="thunar-vfs-path-list-to-string">thunar_vfs_path_list_to_string</link> (<link linkend="GList">GList</link> *path_list);
+<link linkend="GList">GList</link>* <link linkend="thunar-vfs-path-list-append">thunar_vfs_path_list_append</link> (<link linkend="GList">GList</link> *path_list,
+ <link linkend="ThunarVfsPath">ThunarVfsPath</link> *path);
+<link linkend="GList">GList</link>* <link linkend="thunar-vfs-path-list-prepend">thunar_vfs_path_list_prepend</link> (<link linkend="GList">GList</link> *path_list,
+ <link linkend="ThunarVfsPath">ThunarVfsPath</link> *path);
+<link linkend="GList">GList</link>* <link linkend="thunar-vfs-path-list-copy">thunar_vfs_path_list_copy</link> (<link linkend="GList">GList</link> *path_list);
+<link linkend="void">void</link> <link linkend="thunar-vfs-path-list-free">thunar_vfs_path_list_free</link> (<link linkend="GList">GList</link> *path_list);
+
+
+</synopsis>
+</refsynopsisdiv>
+
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="ThunarVfsPath"/>ThunarVfsPath</title>
+<indexterm><primary>ThunarVfsPath</primary></indexterm><programlisting>typedef struct {
+} ThunarVfsPath;
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-path-new"/>thunar_vfs_path_new ()</title>
+<indexterm><primary>thunar_vfs_path_new</primary></indexterm><programlisting><link linkend="ThunarVfsPath">ThunarVfsPath</link>* thunar_vfs_path_new (const <link linkend="gchar">gchar</link> *identifier,
+ <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+Returns a <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link> that represents the given
+<parameter>identifier</parameter> or <literal>NULL</literal> on error. In the latter case
+<parameter>error</parameter> will be set to point to an <link linkend="GError"><type>GError</type></link> describing
+the problem.
+</para>
+<para>
+The caller is responsible to free the returned
+object using <link linkend="thunar-vfs-path-unref"><function>thunar_vfs_path_unref()</function></link> when no
+longer needed.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>identifier</parameter> :</term>
+<listitem><simpara> an URI identifier or an absolute path.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter> :</term>
+<listitem><simpara> return location for errors or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link> for <parameter>identifier</parameter>
+ or <literal>NULL</literal> on error.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-path-get-for-home"/>thunar_vfs_path_get_for_home ()</title>
+<indexterm><primary>thunar_vfs_path_get_for_home</primary></indexterm><programlisting><link linkend="ThunarVfsPath">ThunarVfsPath</link>* thunar_vfs_path_get_for_home (void);</programlisting>
+<para>
+Returns the <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link> that represents
+the current users home directory.
+</para>
+<para>
+The caller is responsible to free the
+returned object using <link linkend="thunar-vfs-path-unref"><function>thunar_vfs_path_unref()</function></link>
+when no longer needed.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link> for the
+ current users home directory.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-path-get-for-root"/>thunar_vfs_path_get_for_root ()</title>
+<indexterm><primary>thunar_vfs_path_get_for_root</primary></indexterm><programlisting><link linkend="ThunarVfsPath">ThunarVfsPath</link>* thunar_vfs_path_get_for_root (void);</programlisting>
+<para>
+Returns the <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link> that represents the
+file systems root directory.
+</para>
+<para>
+The caller is responsible to free the returned
+object using <link linkend="thunar-vfs-path-unref"><function>thunar_vfs_path_unref()</function></link> when no
+longer needed.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link> for the file
+ systems root directory.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-path-ref"/>thunar_vfs_path_ref ()</title>
+<indexterm><primary>thunar_vfs_path_ref</primary></indexterm><programlisting><link linkend="ThunarVfsPath">ThunarVfsPath</link>* thunar_vfs_path_ref (<link linkend="ThunarVfsPath">ThunarVfsPath</link> *path);</programlisting>
+<para>
+Increments the reference count on <parameter>path</parameter>
+and returns a reference to <parameter>path</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>path</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> a reference to <parameter>path</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-path-unref"/>thunar_vfs_path_unref ()</title>
+<indexterm><primary>thunar_vfs_path_unref</primary></indexterm><programlisting><link linkend="void">void</link> thunar_vfs_path_unref (<link linkend="ThunarVfsPath">ThunarVfsPath</link> *path);</programlisting>
+<para>
+Decreases the reference count on <parameter>path</parameter> and
+frees the resources allocated for <parameter>path</parameter>
+once the reference count drops to zero.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>path</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-path-hash"/>thunar_vfs_path_hash ()</title>
+<indexterm><primary>thunar_vfs_path_hash</primary></indexterm><programlisting><link linkend="guint">guint</link> thunar_vfs_path_hash (<link linkend="gconstpointer">gconstpointer</link> path_ptr);</programlisting>
+<para>
+Generates a hash value for the given <parameter>path_ptr</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>path_ptr</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the hash value for <parameter>path_ptr</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-path-equal"/>thunar_vfs_path_equal ()</title>
+<indexterm><primary>thunar_vfs_path_equal</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> thunar_vfs_path_equal (<link linkend="gconstpointer">gconstpointer</link> path_ptr_a,
+ <link linkend="gconstpointer">gconstpointer</link> path_ptr_b);</programlisting>
+<para>
+Checks whether <parameter>path_ptr_a</parameter> and <parameter>path_ptr_b</parameter> refer
+to the same local path.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>path_ptr_a</parameter> :</term>
+<listitem><simpara> first <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>path_ptr_b</parameter> :</term>
+<listitem><simpara> second <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <literal>TRUE</literal> if <parameter>path_ptr_a</parameter> and <parameter>path_ptr_b</parameter>
+ are equal.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-path-is-home"/>thunar_vfs_path_is_home ()</title>
+<indexterm><primary>thunar_vfs_path_is_home</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> thunar_vfs_path_is_home (const <link linkend="ThunarVfsPath">ThunarVfsPath</link> *path);</programlisting>
+<para>
+Checks whether <parameter>path</parameter> refers to the users home
+directory.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>path</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <literal>TRUE</literal> if <parameter>path</parameter> refers to the users
+ home directory.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-path-is-root"/>thunar_vfs_path_is_root ()</title>
+<indexterm><primary>thunar_vfs_path_is_root</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> thunar_vfs_path_is_root (const <link linkend="ThunarVfsPath">ThunarVfsPath</link> *path);</programlisting>
+<para>
+Checks whether path refers to the root directory.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>path</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <literal>TRUE</literal> if <parameter>path</parameter> refers to the root
+ directory.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-path-relative"/>thunar_vfs_path_relative ()</title>
+<indexterm><primary>thunar_vfs_path_relative</primary></indexterm><programlisting><link linkend="ThunarVfsPath">ThunarVfsPath</link>* thunar_vfs_path_relative (<link linkend="ThunarVfsPath">ThunarVfsPath</link> *parent,
+ const <link linkend="gchar">gchar</link> *name);</programlisting>
+<para>
+Returns a <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link> for the file <parameter>name</parameter> relative to
+<parameter>parent</parameter>. <parameter>name</parameter> must be a valid filename in the local file
+system encoding and it may not contain any slashes.
+</para>
+<para>
+The caller is responsible to free the returned object
+using <link linkend="thunar-vfs-path-unref"><function>thunar_vfs_path_unref()</function></link> when no longer needed.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>parent</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter> :</term>
+<listitem><simpara> a valid filename in the local file system encoding.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the path to <parameter>name</parameter> relative to <parameter>parent</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-path-get-name"/>thunar_vfs_path_get_name ()</title>
+<indexterm><primary>thunar_vfs_path_get_name</primary></indexterm><programlisting>const <link linkend="gchar">gchar</link>* thunar_vfs_path_get_name (const <link linkend="ThunarVfsPath">ThunarVfsPath</link> *path);</programlisting>
+<para>
+Returns the base name of the <parameter>path</parameter> in the local
+file system encoding.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>path</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the base name of <parameter>path</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-path-get-parent"/>thunar_vfs_path_get_parent ()</title>
+<indexterm><primary>thunar_vfs_path_get_parent</primary></indexterm><programlisting><link linkend="ThunarVfsPath">ThunarVfsPath</link>* thunar_vfs_path_get_parent (const <link linkend="ThunarVfsPath">ThunarVfsPath</link> *path);</programlisting>
+<para>
+Returns the <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link> that refers to the parent
+directory of <parameter>path</parameter> or <literal>NULL</literal> if <parameter>path</parameter> refers to the
+root file system node.
+</para>
+<para>
+No additional reference is taken on the parent, so
+you'll need to call <link linkend="thunar-vfs-path-ref"><function>thunar_vfs_path_ref()</function></link> yourself
+if you need to keep a reference.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>path</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the parent of <parameter>path</parameter> or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-path-dup-string"/>thunar_vfs_path_dup_string ()</title>
+<indexterm><primary>thunar_vfs_path_dup_string</primary></indexterm><programlisting><link linkend="gchar">gchar</link>* thunar_vfs_path_dup_string (const <link linkend="ThunarVfsPath">ThunarVfsPath</link> *path);</programlisting>
+<para>
+Like <link linkend="thunar-vfs-path-to-string"><function>thunar_vfs_path_to_string()</function></link>, this function transform
+the <parameter>path</parameter> to its string representation, but unlike
+<link linkend="thunar-vfs-path-to-string"><function>thunar_vfs_path_to_string()</function></link>, this function automatically
+allocates the required amount of memory from the heap.
+The returned string must be freed by the caller when
+no longer needed.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>path</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the string representation of <parameter>path</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-path-to-string"/>thunar_vfs_path_to_string ()</title>
+<indexterm><primary>thunar_vfs_path_to_string</primary></indexterm><programlisting><link linkend="gssize">gssize</link> thunar_vfs_path_to_string (const <link linkend="ThunarVfsPath">ThunarVfsPath</link> *path,
+ <link linkend="gchar">gchar</link> *buffer,
+ <link linkend="gsize">gsize</link> bufsize,
+ <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+Stores the <parameter>path</parameter> into the string pointed to by <parameter>buffer</parameter>,
+so it can be used for system path operations. Returns
+the number of bytes stored to <parameter>buffer</parameter> or a negative
+value if <parameter>bufsize</parameter> is too small to store the whole <parameter>path</parameter>.
+In the latter case <parameter>error</parameter> will be set to point to an
+error describing the problem.
+</para>
+<para>
+If <parameter>buffer</parameter> is allocated on the stack, it is suggested
+to use <link linkend="THUNAR-VFS-PATH-MAXSTRLEN:CAPS"><type>THUNAR_VFS_PATH_MAXSTRLEN</type></link> for the buffer size
+in most cases. The stack should never be used in recursive
+functions; use <link linkend="thunar-vfs-path-dup-string"><function>thunar_vfs_path_dup_string()</function></link> instead there.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>path</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>buffer</parameter> :</term>
+<listitem><simpara> the buffer to store the path string to.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>bufsize</parameter> :</term>
+<listitem><simpara> the size of <parameter>buffer</parameter> in bytes.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter> :</term>
+<listitem><simpara> return location for errors or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the number of bytes (including the null
+ byte) stored to <parameter>buffer</parameter> or a negative
+ value if <parameter>buffer</parameter> cannot hold the whole
+ <parameter>path</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-path-dup-uri"/>thunar_vfs_path_dup_uri ()</title>
+<indexterm><primary>thunar_vfs_path_dup_uri</primary></indexterm><programlisting><link linkend="gchar">gchar</link>* thunar_vfs_path_dup_uri (const <link linkend="ThunarVfsPath">ThunarVfsPath</link> *path);</programlisting>
+<para>
+Similar to <link linkend="thunar-vfs-path-to-uri"><function>thunar_vfs_path_to_uri()</function></link>, but automatically
+allocates memory on the heap instead of using a user
+supplied buffer for the URI.
+</para>
+<para>
+The caller is responsible to free the returned string
+using <link linkend="g-free"><function>g_free()</function></link> when no longer needed.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>path</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the escaped URI for <parameter>path</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-path-to-uri"/>thunar_vfs_path_to_uri ()</title>
+<indexterm><primary>thunar_vfs_path_to_uri</primary></indexterm><programlisting><link linkend="gssize">gssize</link> thunar_vfs_path_to_uri (const <link linkend="ThunarVfsPath">ThunarVfsPath</link> *path,
+ <link linkend="gchar">gchar</link> *buffer,
+ <link linkend="gsize">gsize</link> bufsize,
+ <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+Escapes <parameter>path</parameter> according to the rules of the file URI
+specification and stores the escaped URI to <parameter>buffer</parameter>.
+Returns the number of bytes stored to <parameter>buffer</parameter> or a
+negative value if <parameter>bufsize</parameter> is too small to store the
+escaped URI. In the latter case <parameter>error</parameter> will be set to
+point to an <link linkend="GError"><type>GError</type></link> describing the problem.
+</para>
+<para>
+When using the stack for <parameter>buffer</parameter>, it is suggested to
+use <link linkend="THUNAR-VFS-PATH-MAXURILEN:CAPS"><type>THUNAR_VFS_PATH_MAXURILEN</type></link> for the buffer size in
+most cases. The stack should never be used in recursive
+functions; use <link linkend="thunar-vfs-path-dup-uri"><function>thunar_vfs_path_dup_uri()</function></link> instead there.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>path</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>buffer</parameter> :</term>
+<listitem><simpara> the buffer to store the URI string to.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>bufsize</parameter> :</term>
+<listitem><simpara> the size of <parameter>buffer</parameter> in bytes.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter> :</term>
+<listitem><simpara> return location for errors or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the number of bytes (including the null
+ byte) stored to <parameter>buffer</parameter> or a negative
+ value if <parameter>buffer</parameter> cannot hold the URI.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-path-list-from-string"/>thunar_vfs_path_list_from_string ()</title>
+<indexterm><primary>thunar_vfs_path_list_from_string</primary></indexterm><programlisting><link linkend="GList">GList</link>* thunar_vfs_path_list_from_string
+ (const <link linkend="gchar">gchar</link> *uri_string,
+ <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+Splits an URI list conforming to the text/uri-list
+mime type defined in RFC 2483 into individual URIs,
+discarding any comments and whitespace.
+</para>
+<para>
+If all URIs were successfully parsed into <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link>
+objects, the list of parsed URIs will be returned, and
+you'll need to call <link linkend="thunar-vfs-path-list-free"><function>thunar_vfs_path_list_free()</function></link> to
+release the list resources. Else if the parsing fails
+at some point, <literal>NULL</literal> will be returned and <parameter>error</parameter> will
+be set to describe the cause.
+</para>
+<para>
+Note, that if <parameter>string</parameter> contains no URIs, this function
+will also return <literal>NULL</literal>, but <parameter>error</parameter> won't be set. So
+take care when checking for an error condition!</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>uri_string</parameter> :</term>
+<listitem><simpara> a string representation of an URI list.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter> :</term>
+<listitem><simpara> return location for errors.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the list of <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link>'s or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-path-list-to-string"/>thunar_vfs_path_list_to_string ()</title>
+<indexterm><primary>thunar_vfs_path_list_to_string</primary></indexterm><programlisting><link linkend="gchar">gchar</link>* thunar_vfs_path_list_to_string (<link linkend="GList">GList</link> *path_list);</programlisting>
+<para>
+Free the returned value using <link linkend="g-free"><function>g_free()</function></link> when you
+are done with it.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>path_list</parameter> :</term>
+<listitem><simpara> a list of <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link><!---->s.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the string representation of <parameter>path_list</parameter> conforming to the
+ text/uri-list mime type defined in RFC 2483.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-path-list-append"/>thunar_vfs_path_list_append ()</title>
+<indexterm><primary>thunar_vfs_path_list_append</primary></indexterm><programlisting><link linkend="GList">GList</link>* thunar_vfs_path_list_append (<link linkend="GList">GList</link> *path_list,
+ <link linkend="ThunarVfsPath">ThunarVfsPath</link> *path);</programlisting>
+<para>
+Appends <parameter>path</parameter> to the <parameter>path_list</parameter> while taking
+an additional reference for <parameter>path</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>path_list</parameter> :</term>
+<listitem><simpara> a list of <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link><!---->s.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>path</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> pointer to the extended <parameter>path_list</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-path-list-prepend"/>thunar_vfs_path_list_prepend ()</title>
+<indexterm><primary>thunar_vfs_path_list_prepend</primary></indexterm><programlisting><link linkend="GList">GList</link>* thunar_vfs_path_list_prepend (<link linkend="GList">GList</link> *path_list,
+ <link linkend="ThunarVfsPath">ThunarVfsPath</link> *path);</programlisting>
+<para>
+Similar to <link linkend="thunar-vfs-path-list-append"><function>thunar_vfs_path_list_append()</function></link>, but
+prepends the <parameter>path</parameter> to the <parameter>path_list</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>path_list</parameter> :</term>
+<listitem><simpara> a list of <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link><!---->s.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>path</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> pointer to the extended <parameter>path_list</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-path-list-copy"/>thunar_vfs_path_list_copy ()</title>
+<indexterm><primary>thunar_vfs_path_list_copy</primary></indexterm><programlisting><link linkend="GList">GList</link>* thunar_vfs_path_list_copy (<link linkend="GList">GList</link> *path_list);</programlisting>
+<para>
+Takes a deep copy of <parameter>path_list</parameter> and returns the
+result. The caller is responsible to free the
+returned list using <link linkend="thunar-vfs-path-list-free"><function>thunar_vfs_path_list_free()</function></link>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>path_list</parameter> :</term>
+<listitem><simpara> a list of <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link><!---->s.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> a deep copy of <parameter>path_list</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-path-list-free"/>thunar_vfs_path_list_free ()</title>
+<indexterm><primary>thunar_vfs_path_list_free</primary></indexterm><programlisting><link linkend="void">void</link> thunar_vfs_path_list_free (<link linkend="GList">GList</link> *path_list);</programlisting>
+<para>
+Frees the <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link><!---->s in <parameter>path_list</parameter> and
+the <parameter>path_list</parameter> itself.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>path_list</parameter> :</term>
+<listitem><simpara> a list of <link linkend="ThunarVfsPath"><type>ThunarVfsPath</type></link><!---->s.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-thumb-factory.xml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-thumb-factory.xml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-thumb-factory.xml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,276 @@
+<refentry id="ThunarVfsThumbFactory">
+<refmeta>
+<refentrytitle>ThunarVfsThumbFactory</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>THUNAR-VFS Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>ThunarVfsThumbFactory</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+ <link linkend="ThunarVfsThumbFactory-struct">ThunarVfsThumbFactory</link>;
+<link linkend="ThunarVfsThumbFactory">ThunarVfsThumbFactory</link>* <link linkend="thunar-vfs-thumb-factory-new">thunar_vfs_thumb_factory_new</link>
+ (<link linkend="ThunarVfsThumbSize">ThunarVfsThumbSize</link> size);
+<link linkend="gchar">gchar</link>* <link linkend="thunar-vfs-thumb-factory-lookup-thumbnail">thunar_vfs_thumb_factory_lookup_thumbnail</link>
+ (<link linkend="ThunarVfsThumbFactory">ThunarVfsThumbFactory</link> *factory,
+ const <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri,
+ <link linkend="ThunarVfsFileTime">ThunarVfsFileTime</link> mtime);
+<link linkend="gboolean">gboolean</link> <link linkend="thunar-vfs-thumb-factory-can-thumbnail">thunar_vfs_thumb_factory_can_thumbnail</link>
+ (<link linkend="ThunarVfsThumbFactory">ThunarVfsThumbFactory</link> *factory,
+ const <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri,
+ const <link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link> *mime_info,
+ <link linkend="ThunarVfsFileTime">ThunarVfsFileTime</link> mtime);
+<link linkend="gboolean">gboolean</link> <link linkend="thunar-vfs-thumb-factory-has-failed-thumbnail">thunar_vfs_thumb_factory_has_failed_thumbnail</link>
+ (<link linkend="ThunarVfsThumbFactory">ThunarVfsThumbFactory</link> *factory,
+ const <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri,
+ <link linkend="ThunarVfsFileTime">ThunarVfsFileTime</link> mtime);
+<link linkend="GdkPixbuf">GdkPixbuf</link>* <link linkend="thunar-vfs-thumb-factory-generate-thumbnail">thunar_vfs_thumb_factory_generate_thumbnail</link>
+ (<link linkend="ThunarVfsThumbFactory">ThunarVfsThumbFactory</link> *factory,
+ const <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri,
+ const <link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link> *mime_info);
+<link linkend="gboolean">gboolean</link> <link linkend="thunar-vfs-thumb-factory-store-thumbnail">thunar_vfs_thumb_factory_store_thumbnail</link>
+ (<link linkend="ThunarVfsThumbFactory">ThunarVfsThumbFactory</link> *factory,
+ const <link linkend="GdkPixbuf">GdkPixbuf</link> *pixbuf,
+ const <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri,
+ <link linkend="ThunarVfsFileTime">ThunarVfsFileTime</link> mtime,
+ <link linkend="GError">GError</link> **error);
+
+
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1>
+<title>Object Hierarchy</title>
+<synopsis>
+
+ <link linkend="GObject">GObject</link>
+ +----ThunarVfsThumbFactory
+</synopsis>
+
+</refsect1>
+
+
+
+
+
+<refsect1>
+<title>Properties</title>
+<synopsis>
+
+ "<link linkend="ThunarVfsThumbFactory--size">size</link>" <link linkend="ThunarVfsThumbSize">ThunarVfsThumbSize</link> : Read / Write / Construct Only
+</synopsis>
+</refsect1>
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="ThunarVfsThumbFactory-struct"/>ThunarVfsThumbFactory</title>
+<indexterm><primary>ThunarVfsThumbFactory</primary></indexterm><programlisting>typedef struct _ThunarVfsThumbFactory ThunarVfsThumbFactory;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-thumb-factory-new"/>thunar_vfs_thumb_factory_new ()</title>
+<indexterm><primary>thunar_vfs_thumb_factory_new</primary></indexterm><programlisting><link linkend="ThunarVfsThumbFactory">ThunarVfsThumbFactory</link>* thunar_vfs_thumb_factory_new
+ (<link linkend="ThunarVfsThumbSize">ThunarVfsThumbSize</link> size);</programlisting>
+<para>
+Allocates a new <link linkend="ThunarVfsThumbFactory"><type>ThunarVfsThumbFactory</type></link>, that is able to
+load and store thumbnails in the given <parameter>size</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>size</parameter> :</term>
+<listitem><simpara> the desired <link linkend="ThunarVfsThumbSize"><type>ThunarVfsThumbSize</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the newly allocated <link linkend="ThunarVfsThumbFactory"><type>ThunarVfsThumbFactory</type></link>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-thumb-factory-lookup-thumbnail"/>thunar_vfs_thumb_factory_lookup_thumbnail ()</title>
+<indexterm><primary>thunar_vfs_thumb_factory_lookup_thumbnail</primary></indexterm><programlisting><link linkend="gchar">gchar</link>* thunar_vfs_thumb_factory_lookup_thumbnail
+ (<link linkend="ThunarVfsThumbFactory">ThunarVfsThumbFactory</link> *factory,
+ const <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri,
+ <link linkend="ThunarVfsFileTime">ThunarVfsFileTime</link> mtime);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>factory</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>uri</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>mtime</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-thumb-factory-can-thumbnail"/>thunar_vfs_thumb_factory_can_thumbnail ()</title>
+<indexterm><primary>thunar_vfs_thumb_factory_can_thumbnail</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> thunar_vfs_thumb_factory_can_thumbnail
+ (<link linkend="ThunarVfsThumbFactory">ThunarVfsThumbFactory</link> *factory,
+ const <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri,
+ const <link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link> *mime_info,
+ <link linkend="ThunarVfsFileTime">ThunarVfsFileTime</link> mtime);</programlisting>
+<para>
+Checks if <parameter>factory</parameter> can generate a thumbnail for
+the file specified by <parameter>uri</parameter>, which is of type
+<parameter>mime_info</parameter>.
+</para>
+<para>
+The usage of this method is thread-safe.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>factory</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsThumbFactory"><type>ThunarVfsThumbFactory</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>uri</parameter> :</term>
+<listitem><simpara> the <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link> to a file.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>mime_info</parameter> :</term>
+<listitem><simpara> the <link linkend="ThunarVfsMimeInfo"><type>ThunarVfsMimeInfo</type></link> of the file referred to by <parameter>uri</parameter>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>mtime</parameter> :</term>
+<listitem><simpara> the modification time of the file referred to by <parameter>uri</parameter>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <literal>TRUE</literal> if <parameter>factory</parameter> can generate a thumbnail for <parameter>uri</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-thumb-factory-has-failed-thumbnail"/>thunar_vfs_thumb_factory_has_failed_thumbnail ()</title>
+<indexterm><primary>thunar_vfs_thumb_factory_has_failed_thumbnail</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> thunar_vfs_thumb_factory_has_failed_thumbnail
+ (<link linkend="ThunarVfsThumbFactory">ThunarVfsThumbFactory</link> *factory,
+ const <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri,
+ <link linkend="ThunarVfsFileTime">ThunarVfsFileTime</link> mtime);</programlisting>
+<para>
+Checks whether we know that <parameter>factory</parameter> won't be able to generate
+a thumbnail for the file referred to by <parameter>uri</parameter>, whose modification
+time is <parameter>mtime</parameter>.
+</para>
+<para>
+The usage of this method is thread-safe.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>factory</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsThumbFactory"><type>ThunarVfsThumbFactory</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>uri</parameter> :</term>
+<listitem><simpara> the <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link> to a file.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>mtime</parameter> :</term>
+<listitem><simpara> the modification time of the file referred to by <parameter>uri</parameter>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <literal>TRUE</literal> if <parameter>factory</parameter> knows that it cannot generate
+ a thumbnail for <parameter>uri</parameter>, else <literal>TRUE</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-thumb-factory-generate-thumbnail"/>thunar_vfs_thumb_factory_generate_thumbnail ()</title>
+<indexterm><primary>thunar_vfs_thumb_factory_generate_thumbnail</primary></indexterm><programlisting><link linkend="GdkPixbuf">GdkPixbuf</link>* thunar_vfs_thumb_factory_generate_thumbnail
+ (<link linkend="ThunarVfsThumbFactory">ThunarVfsThumbFactory</link> *factory,
+ const <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri,
+ const <link linkend="ThunarVfsMimeInfo">ThunarVfsMimeInfo</link> *mime_info);</programlisting>
+<para>
+Tries to generate a thumbnail for the file referred to by <parameter>uri</parameter> in
+<parameter>factory</parameter>.
+</para>
+<para>
+The caller is responsible to free the returned <link linkend="GdkPixbuf"><type>GdkPixbuf</type></link> using
+<link linkend="g-object-unref"><function>g_object_unref()</function></link> when no longer needed.
+</para>
+<para>
+The usage of this method is thread-safe.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>factory</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsThumbFactory"><type>ThunarVfsThumbFactory</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>uri</parameter> :</term>
+<listitem><simpara> the <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link> to the file for which a thumbnail
+ should be generated.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>mime_info</parameter> :</term>
+<listitem><simpara> the <link linkend="ThunarVfsMimeInfo"><type>ThunarVfsMimeInfo</type></link> for the file referred to by <parameter>uri</parameter>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the thumbnail for the <parameter>uri</parameter> or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-thumb-factory-store-thumbnail"/>thunar_vfs_thumb_factory_store_thumbnail ()</title>
+<indexterm><primary>thunar_vfs_thumb_factory_store_thumbnail</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> thunar_vfs_thumb_factory_store_thumbnail
+ (<link linkend="ThunarVfsThumbFactory">ThunarVfsThumbFactory</link> *factory,
+ const <link linkend="GdkPixbuf">GdkPixbuf</link> *pixbuf,
+ const <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri,
+ <link linkend="ThunarVfsFileTime">ThunarVfsFileTime</link> mtime,
+ <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+Stores <parameter>pixbuf</parameter> as thumbnail for <parameter>uri</parameter> in the right place, according
+to the size set for <parameter>factory</parameter>.
+</para>
+<para>
+If you specify <literal>NULL</literal> for <parameter>pixbuf</parameter>, the <parameter>factory</parameter> will remember that
+the thumbnail generation for <parameter>uri</parameter> failed.
+</para>
+<para>
+The usage of this method is thread-safe.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>factory</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsThumbFactory"><type>ThunarVfsThumbFactory</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>pixbuf</parameter> :</term>
+<listitem><simpara> the thumbnail <link linkend="GdkPixbuf"><type>GdkPixbuf</type></link> to store or <literal>NULL</literal>
+ to remember the thumbnail for <parameter>uri</parameter> as failed.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>uri</parameter> :</term>
+<listitem><simpara> the <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link> of the original file.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>mtime</parameter> :</term>
+<listitem><simpara> the last known modification time of the original file.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter> :</term>
+<listitem><simpara> return location for errors or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <literal>TRUE</literal> if the thumbnail was stored successfully,
+ else <literal>FALSE</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+<refsect1>
+<title>Properties</title>
+<refsect2><title><anchor id="ThunarVfsThumbFactory--size"/>The "<literal>size</literal>" property</title>
+<programlisting> "size" <link linkend="ThunarVfsThumbSize">ThunarVfsThumbSize</link> : Read / Write / Construct Only</programlisting>
+<para>The desired thumbnail size.</para><para>Default value: THUNAR_VFS_THUMB_SIZE_NORMAL</para>
+</refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-thumb.xml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-thumb.xml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-thumb.xml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,131 @@
+<refentry id="thunar-vfs-Thumbnail-Functions">
+<refmeta>
+<refentrytitle>Thumbnail Functions</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>THUNAR-VFS Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>Thumbnail Functions</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+enum <link linkend="ThunarVfsThumbSize">ThunarVfsThumbSize</link>;
+<link linkend="gchar">gchar</link>* <link linkend="thunar-vfs-thumb-path-for-uri">thunar_vfs_thumb_path_for_uri</link> (const <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri,
+ <link linkend="ThunarVfsThumbSize">ThunarVfsThumbSize</link> size);
+<link linkend="gboolean">gboolean</link> <link linkend="thunar-vfs-thumb-path-is-valid">thunar_vfs_thumb_path_is_valid</link> (const <link linkend="gchar">gchar</link> *thumb_path,
+ const <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri,
+ <link linkend="ThunarVfsFileTime">ThunarVfsFileTime</link> mtime);
+
+
+</synopsis>
+</refsynopsisdiv>
+
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="ThunarVfsThumbSize"/>enum ThunarVfsThumbSize</title>
+<indexterm><primary>ThunarVfsThumbSize</primary></indexterm><programlisting>typedef enum
+{
+ THUNAR_VFS_THUMB_SIZE_NORMAL,
+ THUNAR_VFS_THUMB_SIZE_LARGE,
+} ThunarVfsThumbSize;
+</programlisting>
+<para>
+The desired size of thumbnails loaded by a <link linkend="ThunarVfsThumbFactory"><type>ThunarVfsThumbFactory</type></link>.</para>
+<para>
+
+</para><variablelist role="enum">
+<varlistentry>
+<term><literal>THUNAR_VFS_THUMB_SIZE_NORMAL</literal></term>
+<listitem><simpara> thumbnails at size 128x128.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_THUMB_SIZE_LARGE</literal></term>
+<listitem><simpara> thumbnails at size 256x256.
+</simpara></listitem>
+</varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-thumb-path-for-uri"/>thunar_vfs_thumb_path_for_uri ()</title>
+<indexterm><primary>thunar_vfs_thumb_path_for_uri</primary></indexterm><programlisting><link linkend="gchar">gchar</link>* thunar_vfs_thumb_path_for_uri (const <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri,
+ <link linkend="ThunarVfsThumbSize">ThunarVfsThumbSize</link> size);</programlisting>
+<para>
+Returns the absolute path to the thumbnail location
+for the file described by <parameter>uri</parameter>, at the given <parameter>size</parameter>.
+</para>
+<para>
+The caller is responsible to free the returned
+string using <link linkend="g-free"><function>g_free()</function></link> when no longer needed.
+</para>
+<para>
+The usage of this method is thread-safe.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>uri</parameter> :</term>
+<listitem><simpara> the <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link> to the original file.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>size</parameter> :</term>
+<listitem><simpara> the desired <link linkend="ThunarVfsThumbSize"><type>ThunarVfsThumbSize</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the absolute path to the thumbnail
+ location for <parameter>uri</parameter> at <parameter>size</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-thumb-path-is-valid"/>thunar_vfs_thumb_path_is_valid ()</title>
+<indexterm><primary>thunar_vfs_thumb_path_is_valid</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> thunar_vfs_thumb_path_is_valid (const <link linkend="gchar">gchar</link> *thumb_path,
+ const <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri,
+ <link linkend="ThunarVfsFileTime">ThunarVfsFileTime</link> mtime);</programlisting>
+<para>
+Checks whether the file located at <parameter>thumb_path</parameter> contains a
+valid thumbnail for the file described by <parameter>uri</parameter>.
+</para>
+<para>
+The usage of this method is thread-safe.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>thumb_path</parameter> :</term>
+<listitem><simpara> the absolute path to a thumbnail file.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>uri</parameter> :</term>
+<listitem><simpara> the <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link> to the original file.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>mtime</parameter> :</term>
+<listitem><simpara> the modification time of the original file.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <literal>TRUE</literal> if <parameter>thumb_path</parameter> is a valid thumbnail for
+ the file referred to by <parameter>uri</parameter>, else <literal>FALSE</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-trash-info.xml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-trash-info.xml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-trash-info.xml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,116 @@
+<refentry id="thunar-vfs-ThunarVfsTrashInfo">
+<refmeta>
+<refentrytitle>ThunarVfsTrashInfo</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>THUNAR-VFS Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>ThunarVfsTrashInfo</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+ <link linkend="ThunarVfsTrashInfo">ThunarVfsTrashInfo</link>;
+<link linkend="ThunarVfsTrashInfo">ThunarVfsTrashInfo</link>* <link linkend="thunar-vfs-trash-info-copy">thunar_vfs_trash_info_copy</link>
+ (const <link linkend="ThunarVfsTrashInfo">ThunarVfsTrashInfo</link> *info);
+<link linkend="void">void</link> <link linkend="thunar-vfs-trash-info-free">thunar_vfs_trash_info_free</link> (<link linkend="ThunarVfsTrashInfo">ThunarVfsTrashInfo</link> *info);
+const <link linkend="gchar">gchar</link>* <link linkend="thunar-vfs-trash-info-get-path">thunar_vfs_trash_info_get_path</link> (const <link linkend="ThunarVfsTrashInfo">ThunarVfsTrashInfo</link> *info);
+const <link linkend="gchar">gchar</link>* <link linkend="thunar-vfs-trash-info-get-deletion-date">thunar_vfs_trash_info_get_deletion_date</link>
+ (const <link linkend="ThunarVfsTrashInfo">ThunarVfsTrashInfo</link> *info);
+
+
+</synopsis>
+</refsynopsisdiv>
+
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="ThunarVfsTrashInfo"/>ThunarVfsTrashInfo</title>
+<indexterm><primary>ThunarVfsTrashInfo</primary></indexterm><programlisting>typedef struct _ThunarVfsTrashInfo ThunarVfsTrashInfo;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-trash-info-copy"/>thunar_vfs_trash_info_copy ()</title>
+<indexterm><primary>thunar_vfs_trash_info_copy</primary></indexterm><programlisting><link linkend="ThunarVfsTrashInfo">ThunarVfsTrashInfo</link>* thunar_vfs_trash_info_copy
+ (const <link linkend="ThunarVfsTrashInfo">ThunarVfsTrashInfo</link> *info);</programlisting>
+<para>
+Creates a new <link linkend="ThunarVfsTrashInfo"><type>ThunarVfsTrashInfo</type></link> as a copy of <parameter>info</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>info</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsTrashInfo"><type>ThunarVfsTrashInfo</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the newly allocated <link linkend="ThunarVfsTrashInfo"><type>ThunarVfsTrashInfo</type></link>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-trash-info-free"/>thunar_vfs_trash_info_free ()</title>
+<indexterm><primary>thunar_vfs_trash_info_free</primary></indexterm><programlisting><link linkend="void">void</link> thunar_vfs_trash_info_free (<link linkend="ThunarVfsTrashInfo">ThunarVfsTrashInfo</link> *info);</programlisting>
+<para>
+Frees the resources allocated to <parameter>info</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>info</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsTrashInfo"><type>ThunarVfsTrashInfo</type></link>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-trash-info-get-path"/>thunar_vfs_trash_info_get_path ()</title>
+<indexterm><primary>thunar_vfs_trash_info_get_path</primary></indexterm><programlisting>const <link linkend="gchar">gchar</link>* thunar_vfs_trash_info_get_path (const <link linkend="ThunarVfsTrashInfo">ThunarVfsTrashInfo</link> *info);</programlisting>
+<para>
+Returns the original path stored with <parameter>info</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>info</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsTrashInfo"><type>ThunarVfsTrashInfo</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the original path.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-trash-info-get-deletion-date"/>thunar_vfs_trash_info_get_deletion_date ()</title>
+<indexterm><primary>thunar_vfs_trash_info_get_deletion_date</primary></indexterm><programlisting>const <link linkend="gchar">gchar</link>* thunar_vfs_trash_info_get_deletion_date
+ (const <link linkend="ThunarVfsTrashInfo">ThunarVfsTrashInfo</link> *info);</programlisting>
+<para>
+Returns the deletion date of <parameter>info</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>info</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsTrashInfo"><type>ThunarVfsTrashInfo</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the deletion date.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-trash-manager.xml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-trash-manager.xml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-trash-manager.xml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,197 @@
+<refentry id="ThunarVfsTrashManager">
+<refmeta>
+<refentrytitle>ThunarVfsTrashManager</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>THUNAR-VFS Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>ThunarVfsTrashManager</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+ <link linkend="ThunarVfsTrashManager-struct">ThunarVfsTrashManager</link>;
+<link linkend="ThunarVfsTrashManager">ThunarVfsTrashManager</link>* <link linkend="thunar-vfs-trash-manager-get-default">thunar_vfs_trash_manager_get_default</link>
+ (void);
+<link linkend="gboolean">gboolean</link> <link linkend="thunar-vfs-trash-manager-is-empty">thunar_vfs_trash_manager_is_empty</link>
+ (<link linkend="ThunarVfsTrashManager">ThunarVfsTrashManager</link> *manager);
+<link linkend="GList">GList</link>* <link linkend="thunar-vfs-trash-manager-get-trashes">thunar_vfs_trash_manager_get_trashes</link>
+ (<link linkend="ThunarVfsTrashManager">ThunarVfsTrashManager</link> *manager);
+<link linkend="ThunarVfsTrash">ThunarVfsTrash</link>* <link linkend="thunar-vfs-trash-manager-resolve-uri">thunar_vfs_trash_manager_resolve_uri</link>
+ (<link linkend="ThunarVfsTrashManager">ThunarVfsTrashManager</link> *manager,
+ <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri,
+ <link linkend="gchar">gchar</link> **path,
+ <link linkend="GError">GError</link> **error);
+
+
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1>
+<title>Object Hierarchy</title>
+<synopsis>
+
+ <link linkend="GObject">GObject</link>
+ +----ThunarVfsTrashManager
+</synopsis>
+
+</refsect1>
+
+
+
+
+
+<refsect1>
+<title>Properties</title>
+<synopsis>
+
+ "<link linkend="ThunarVfsTrashManager--empty">empty</link>" <link linkend="gboolean">gboolean</link> : Read
+</synopsis>
+</refsect1>
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="ThunarVfsTrashManager-struct"/>ThunarVfsTrashManager</title>
+<indexterm><primary>ThunarVfsTrashManager</primary></indexterm><programlisting>typedef struct _ThunarVfsTrashManager ThunarVfsTrashManager;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-trash-manager-get-default"/>thunar_vfs_trash_manager_get_default ()</title>
+<indexterm><primary>thunar_vfs_trash_manager_get_default</primary></indexterm><programlisting><link linkend="ThunarVfsTrashManager">ThunarVfsTrashManager</link>* thunar_vfs_trash_manager_get_default
+ (void);</programlisting>
+<para>
+Returns the default trash manager instance, which is shared by all
+modules using the trash implementation. You'll need to call
+#<link linkend="g-object-unref"><function>g_object_unref()</function></link> on the returned object when you're done with it.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the default trash manager.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-trash-manager-is-empty"/>thunar_vfs_trash_manager_is_empty ()</title>
+<indexterm><primary>thunar_vfs_trash_manager_is_empty</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> thunar_vfs_trash_manager_is_empty
+ (<link linkend="ThunarVfsTrashManager">ThunarVfsTrashManager</link> *manager);</programlisting>
+<para>
+Determines whether all trashes handled by <parameter>manager</parameter> are
+empty. Returns <literal>FALSE</literal> if atleast one trash contains
+files, else <literal>TRUE</literal>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>manager</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsTrashManager"><type>ThunarVfsTrashManager</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <literal>TRUE</literal> if <parameter>manager</parameter> has no files, else <literal>FALSE</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-trash-manager-get-trashes"/>thunar_vfs_trash_manager_get_trashes ()</title>
+<indexterm><primary>thunar_vfs_trash_manager_get_trashes</primary></indexterm><programlisting><link linkend="GList">GList</link>* thunar_vfs_trash_manager_get_trashes
+ (<link linkend="ThunarVfsTrashManager">ThunarVfsTrashManager</link> *manager);</programlisting>
+<para>
+Returns all trashes currently known to the <parameter>manager</parameter>.
+</para>
+<para>
+The returned list must be freed when no longer needed,
+which can be done like this:
+<informalexample><programlisting>
+g_list_foreach (list, (GFunc) g_object_unref, NULL);
+g_list_free (list);
+</programlisting></informalexample></para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>manager</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsTrashManager"><type>ThunarVfsTrashManager</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the list of currently known trashes.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-trash-manager-resolve-uri"/>thunar_vfs_trash_manager_resolve_uri ()</title>
+<indexterm><primary>thunar_vfs_trash_manager_resolve_uri</primary></indexterm><programlisting><link linkend="ThunarVfsTrash">ThunarVfsTrash</link>* thunar_vfs_trash_manager_resolve_uri
+ (<link linkend="ThunarVfsTrashManager">ThunarVfsTrashManager</link> *manager,
+ <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri,
+ <link linkend="gchar">gchar</link> **path,
+ <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+Parses the given <parameter>uri</parameter> and determines the trash referenced by
+the <parameter>uri</parameter> and the relative path of the file within the trash.
+</para>
+<para>
+Returns the <link linkend="ThunarVfsTrash"><type>ThunarVfsTrash</type></link> referenced by <parameter>uri</parameter> or <literal>NULL</literal> on
+error, in which case <parameter>error</parameter> will point to a description
+of the exact cause.
+</para>
+<para>
+For example, the URI 'trash:///0-bar/foo' referes to the
+file 'foo' in 'bar' within the first trash, which is usually
+the "home trash". So a reference to the "home trash" will
+be returned and <parameter>path</parameter> will be set to 'bar/foo'.
+</para>
+<para>
+It is a bug to pass the root trash URI 'trash:///' to
+this function.
+</para>
+<para>
+You'll need to call #<link linkend="g-object-unref"><function>g_object_unref()</function></link> on the returned
+object when you are done with it. In addition if you
+did not specify <literal>NULL</literal> for <parameter>path</parameter>, you'll also have to
+#<link linkend="g-free"><function>g_free()</function></link> the returned path.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>manager</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsTrashManager"><type>ThunarVfsTrashManager</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>uri</parameter> :</term>
+<listitem><simpara> the <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link> to resolve.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>path</parameter> :</term>
+<listitem><simpara> location to store the relative path to.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter> :</term>
+<listitem><simpara> return location for errors or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the <link linkend="ThunarVfsTrash"><type>ThunarVfsTrash</type></link> or <literal>NULL</literal> on error.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+<refsect1>
+<title>Properties</title>
+<refsect2><title><anchor id="ThunarVfsTrashManager--empty"/>The "<literal>empty</literal>" property</title>
+<programlisting> "empty" <link linkend="gboolean">gboolean</link> : Read</programlisting>
+<para>
+<literal>TRUE</literal> if all trashes handled by the given trash manager are
+empty, else <literal>FALSE</literal>.</para>
+<para>
+
+</para><para>Default value: TRUE</para>
+</refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-trash.xml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-trash.xml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-trash.xml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,227 @@
+<refentry id="ThunarVfsTrash">
+<refmeta>
+<refentrytitle>ThunarVfsTrash</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>THUNAR-VFS Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>ThunarVfsTrash</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+ <link linkend="ThunarVfsTrash-struct">ThunarVfsTrash</link>;
+<link linkend="gint">gint</link> <link linkend="thunar-vfs-trash-get-id">thunar_vfs_trash_get_id</link> (<link linkend="ThunarVfsTrash">ThunarVfsTrash</link> *trash);
+<link linkend="GList">GList</link>* <link linkend="thunar-vfs-trash-get-files">thunar_vfs_trash_get_files</link> (<link linkend="ThunarVfsTrash">ThunarVfsTrash</link> *trash);
+<link linkend="ThunarVfsTrashInfo">ThunarVfsTrashInfo</link>* <link linkend="thunar-vfs-trash-get-info">thunar_vfs_trash_get_info</link>
+ (<link linkend="ThunarVfsTrash">ThunarVfsTrash</link> *trash,
+ const <link linkend="gchar">gchar</link> *file);
+<link linkend="gchar">gchar</link>* <link linkend="thunar-vfs-trash-get-info-path">thunar_vfs_trash_get_info_path</link> (<link linkend="ThunarVfsTrash">ThunarVfsTrash</link> *trash,
+ const <link linkend="gchar">gchar</link> *file);
+<link linkend="ThunarVfsURI">ThunarVfsURI</link>* <link linkend="thunar-vfs-trash-get-uri">thunar_vfs_trash_get_uri</link> (<link linkend="ThunarVfsTrash">ThunarVfsTrash</link> *trash,
+ const <link linkend="gchar">gchar</link> *file);
+<link linkend="gchar">gchar</link>* <link linkend="thunar-vfs-trash-get-path">thunar_vfs_trash_get_path</link> (<link linkend="ThunarVfsTrash">ThunarVfsTrash</link> *trash,
+ const <link linkend="gchar">gchar</link> *file);
+
+
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1>
+<title>Object Hierarchy</title>
+<synopsis>
+
+ <link linkend="GObject">GObject</link>
+ +----<link linkend="GtkObject">GtkObject</link>
+ +----ThunarVfsTrash
+</synopsis>
+
+</refsect1>
+
+
+
+
+
+<refsect1>
+<title>Properties</title>
+<synopsis>
+
+ "<link linkend="ThunarVfsTrash--files">files</link>" <link linkend="gpointer">gpointer</link> : Read
+</synopsis>
+</refsect1>
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="ThunarVfsTrash-struct"/>ThunarVfsTrash</title>
+<indexterm><primary>ThunarVfsTrash</primary></indexterm><programlisting>typedef struct _ThunarVfsTrash ThunarVfsTrash;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-trash-get-id"/>thunar_vfs_trash_get_id ()</title>
+<indexterm><primary>thunar_vfs_trash_get_id</primary></indexterm><programlisting><link linkend="gint">gint</link> thunar_vfs_trash_get_id (<link linkend="ThunarVfsTrash">ThunarVfsTrash</link> *trash);</programlisting>
+<para>
+Returns the unique id of the <parameter>trash</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>trash</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsTrash"><type>ThunarVfsTrash</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the unique id of <parameter>trash</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-trash-get-files"/>thunar_vfs_trash_get_files ()</title>
+<indexterm><primary>thunar_vfs_trash_get_files</primary></indexterm><programlisting><link linkend="GList">GList</link>* thunar_vfs_trash_get_files (<link linkend="ThunarVfsTrash">ThunarVfsTrash</link> *trash);</programlisting>
+<para>
+Returns the list of files stored within <parameter>trash</parameter>. The returned
+list contains only the basename of each file relative to the
+<parameter>trash</parameter><!---->s files/ subdirectory.
+</para>
+<para>
+The returned list and the string contained within the list
+are owned by <parameter>trash</parameter> and must not be freed by the caller.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>trash</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsTrash"><type>ThunarVfsTrash</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the list of files stored within <parameter>trash</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-trash-get-info"/>thunar_vfs_trash_get_info ()</title>
+<indexterm><primary>thunar_vfs_trash_get_info</primary></indexterm><programlisting><link linkend="ThunarVfsTrashInfo">ThunarVfsTrashInfo</link>* thunar_vfs_trash_get_info
+ (<link linkend="ThunarVfsTrash">ThunarVfsTrash</link> *trash,
+ const <link linkend="gchar">gchar</link> *file);</programlisting>
+<para>
+Determines the trash info for the given <parameter>file</parameter> in <parameter>trash</parameter>. The trash
+info currently contains the original path and deletion date of the
+<parameter>file</parameter>.
+</para>
+<para>
+This function may return <literal>NULL</literal> if there's no trash info associated
+with <parameter>file</parameter>, even tho the file is listed as being stored within
+<parameter>trash</parameter>.
+</para>
+<para>
+The caller is responsible for freeing the returned trash info
+object using the #<link linkend="thunar-vfs-trash-info-free"><function>thunar_vfs_trash_info_free()</function></link> function.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>trash</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsTrash"><type>ThunarVfsTrash</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>file</parameter> :</term>
+<listitem><simpara> the basename of the trashed file.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the trash info for <parameter>file</parameter> or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-trash-get-info-path"/>thunar_vfs_trash_get_info_path ()</title>
+<indexterm><primary>thunar_vfs_trash_get_info_path</primary></indexterm><programlisting><link linkend="gchar">gchar</link>* thunar_vfs_trash_get_info_path (<link linkend="ThunarVfsTrash">ThunarVfsTrash</link> *trash,
+ const <link linkend="gchar">gchar</link> *file);</programlisting>
+<para>
+Determines the absolute path to the trash info file
+for <parameter>file</parameter>, which includes various informations
+stored when trashing the file.
+</para>
+<para>
+This function should be rarely needed.
+</para>
+<para>
+The caller is responsible to free the returned
+string using #<link linkend="g-free"><function>g_free()</function></link>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>trash</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsTrash"><type>ThunarVfsTrash</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>file</parameter> :</term>
+<listitem><simpara> the basename of the trashed file.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the absolute path to the trash info
+ file for <parameter>file</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-trash-get-uri"/>thunar_vfs_trash_get_uri ()</title>
+<indexterm><primary>thunar_vfs_trash_get_uri</primary></indexterm><programlisting><link linkend="ThunarVfsURI">ThunarVfsURI</link>* thunar_vfs_trash_get_uri (<link linkend="ThunarVfsTrash">ThunarVfsTrash</link> *trash,
+ const <link linkend="gchar">gchar</link> *file);</programlisting>
+<para>
+Generates a 'trash://' URI that refers to the <parameter>file</parameter> in <parameter>trash</parameter>.
+</para>
+<para>
+You'll need to call #<link linkend="thunar-vfs-uri-unref"><function>thunar_vfs_uri_unref()</function></link> on the returned
+object when you are done with it.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>trash</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsTrash"><type>ThunarVfsTrash</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>file</parameter> :</term>
+<listitem><simpara> the basename of the trashed file.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the generated <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-trash-get-path"/>thunar_vfs_trash_get_path ()</title>
+<indexterm><primary>thunar_vfs_trash_get_path</primary></indexterm><programlisting><link linkend="gchar">gchar</link>* thunar_vfs_trash_get_path (<link linkend="ThunarVfsTrash">ThunarVfsTrash</link> *trash,
+ const <link linkend="gchar">gchar</link> *file);</programlisting>
+<para>
+Returns the real absolute path to the <parameter>file</parameter> in <parameter>trash</parameter>. Call
+#<link linkend="g-free"><function>g_free()</function></link> on the returned path if you are done with it.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>trash</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsTrash"><type>ThunarVfsTrash</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>file</parameter> :</term>
+<listitem><simpara> the basename of the trashed file.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the absolute path to <parameter>file</parameter> in <parameter>trash</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+<refsect1>
+<title>Properties</title>
+<refsect2><title><anchor id="ThunarVfsTrash--files"/>The "<literal>files</literal>" property</title>
+<programlisting> "files" <link linkend="gpointer">gpointer</link> : Read</programlisting>
+<para>
+The list of files stored within this trash. The list contains
+only the basename of each file relative to the files/ subdirectory.</para>
+<para>
+
+</para></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-types.xml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-types.xml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-types.xml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,308 @@
+<refentry id="thunar-vfs-Basic-Types">
+<refmeta>
+<refentrytitle>Basic Types</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>THUNAR-VFS Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>Basic Types</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+enum <link linkend="ThunarVfsFileType">ThunarVfsFileType</link>;
+enum <link linkend="ThunarVfsFileMode">ThunarVfsFileMode</link>;
+enum <link linkend="ThunarVfsFileFlags">ThunarVfsFileFlags</link>;
+typedef <link linkend="ThunarVfsFileDevice">ThunarVfsFileDevice</link>;
+typedef <link linkend="ThunarVfsFileInode">ThunarVfsFileInode</link>;
+typedef <link linkend="ThunarVfsFileSize">ThunarVfsFileSize</link>;
+typedef <link linkend="ThunarVfsFileTime">ThunarVfsFileTime</link>;
+typedef <link linkend="ThunarVfsGroupId">ThunarVfsGroupId</link>;
+typedef <link linkend="ThunarVfsUserId">ThunarVfsUserId</link>;
+
+
+</synopsis>
+</refsynopsisdiv>
+
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="ThunarVfsFileType"/>enum ThunarVfsFileType</title>
+<indexterm><primary>ThunarVfsFileType</primary></indexterm><programlisting>typedef enum {
+ THUNAR_VFS_FILE_TYPE_SOCKET = 0140000 >> 12,
+ THUNAR_VFS_FILE_TYPE_SYMLINK = 0120000 >> 12,
+ THUNAR_VFS_FILE_TYPE_REGULAR = 0100000 >> 12,
+ THUNAR_VFS_FILE_TYPE_BLOCKDEV = 0060000 >> 12,
+ THUNAR_VFS_FILE_TYPE_DIRECTORY = 0040000 >> 12,
+ THUNAR_VFS_FILE_TYPE_CHARDEV = 0020000 >> 12,
+ THUNAR_VFS_FILE_TYPE_FIFO = 0010000 >> 12,
+ THUNAR_VFS_FILE_TYPE_UNKNOWN = 0000000 >> 12,
+} ThunarVfsFileType;
+</programlisting>
+<para>
+Describes the type of a file.</para>
+<para>
+
+</para><variablelist role="enum">
+<varlistentry>
+<term><literal>THUNAR_VFS_FILE_TYPE_SOCKET</literal></term>
+<listitem><simpara> A unix domain socket.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_FILE_TYPE_SYMLINK</literal></term>
+<listitem><simpara> A broken symlink, for which the target does
+ not exist (if the target would exist, the
+ <link linkend="ThunarVfsInfo"><type>ThunarVfsInfo</type></link> object would have the type
+ of the target).
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_FILE_TYPE_REGULAR</literal></term>
+<listitem><simpara> A regular file.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_FILE_TYPE_BLOCKDEV</literal></term>
+<listitem><simpara> A block device node.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_FILE_TYPE_DIRECTORY</literal></term>
+<listitem><simpara> A directory node.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_FILE_TYPE_CHARDEV</literal></term>
+<listitem><simpara> A character device node.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_FILE_TYPE_FIFO</literal></term>
+<listitem><simpara> A named FIFO.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_FILE_TYPE_UNKNOWN</literal></term>
+<listitem><simpara>
+
+</simpara></listitem>
+</varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="ThunarVfsFileMode"/>enum ThunarVfsFileMode</title>
+<indexterm><primary>ThunarVfsFileMode</primary></indexterm><programlisting>typedef enum { /*< flags >*/
+ THUNAR_VFS_FILE_MODE_SUID = 04000,
+ THUNAR_VFS_FILE_MODE_SGID = 02000,
+ THUNAR_VFS_FILE_MODE_STICKY = 01000,
+ THUNAR_VFS_FILE_MODE_USR_ALL = 00700,
+ THUNAR_VFS_FILE_MODE_USR_READ = 00400,
+ THUNAR_VFS_FILE_MODE_USR_WRITE = 00200,
+ THUNAR_VFS_FILE_MODE_USR_EXEC = 00100,
+ THUNAR_VFS_FILE_MODE_GRP_ALL = 00070,
+ THUNAR_VFS_FILE_MODE_GRP_READ = 00040,
+ THUNAR_VFS_FILE_MODE_GRP_WRITE = 00020,
+ THUNAR_VFS_FILE_MODE_GRP_EXEC = 00010,
+ THUNAR_VFS_FILE_MODE_OTH_ALL = 00007,
+ THUNAR_VFS_FILE_MODE_OTH_READ = 00004,
+ THUNAR_VFS_FILE_MODE_OTH_WRITE = 00002,
+ THUNAR_VFS_FILE_MODE_OTH_EXEC = 00001,
+} ThunarVfsFileMode;
+</programlisting>
+<para>
+Special flags and permissions of a filesystem entity.</para>
+<para>
+
+</para><variablelist role="enum">
+<varlistentry>
+<term><literal>THUNAR_VFS_FILE_MODE_SUID</literal></term>
+<listitem><simpara> SUID bit.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_FILE_MODE_SGID</literal></term>
+<listitem><simpara> SGID bit.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_FILE_MODE_STICKY</literal></term>
+<listitem><simpara> Sticky bit.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_FILE_MODE_USR_ALL</literal></term>
+<listitem><simpara> Owner can do everything.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_FILE_MODE_USR_READ</literal></term>
+<listitem><simpara> Owner can read the file.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_FILE_MODE_USR_WRITE</literal></term>
+<listitem><simpara> Owner can write the file.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_FILE_MODE_USR_EXEC</literal></term>
+<listitem><simpara> Owner can execute the file.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_FILE_MODE_GRP_ALL</literal></term>
+<listitem><simpara> Owner group can do everything.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_FILE_MODE_GRP_READ</literal></term>
+<listitem><simpara> Owner group can read the file.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_FILE_MODE_GRP_WRITE</literal></term>
+<listitem><simpara> Owner group can write the file.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_FILE_MODE_GRP_EXEC</literal></term>
+<listitem><simpara> Owner group can execute the file.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_FILE_MODE_OTH_ALL</literal></term>
+<listitem><simpara> Others can do everything.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_FILE_MODE_OTH_READ</literal></term>
+<listitem><simpara> Others can read the file.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_FILE_MODE_OTH_WRITE</literal></term>
+<listitem><simpara> Others can write the file.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_FILE_MODE_OTH_EXEC</literal></term>
+<listitem><simpara> Others can execute the file.
+</simpara></listitem>
+</varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="ThunarVfsFileFlags"/>enum ThunarVfsFileFlags</title>
+<indexterm><primary>ThunarVfsFileFlags</primary></indexterm><programlisting>typedef enum { /*< flags >*/
+ THUNAR_VFS_FILE_FLAGS_NONE = 0,
+ THUNAR_VFS_FILE_FLAGS_SYMLINK = 1L << 0,
+ THUNAR_VFS_FILE_FLAGS_EXECUTABLE = 1L << 1,
+} ThunarVfsFileFlags;
+</programlisting>
+<para>
+Flags providing additional information about the
+file system entity.</para>
+<para>
+
+</para><variablelist role="enum">
+<varlistentry>
+<term><literal>THUNAR_VFS_FILE_FLAGS_NONE</literal></term>
+<listitem><simpara> No additional information available.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_FILE_FLAGS_SYMLINK</literal></term>
+<listitem><simpara> The file is a symlink. Whether or not
+ the info fields refer to the symlink
+ itself or the linked file, depends on
+ whether the symlink is broken or not.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_FILE_FLAGS_EXECUTABLE</literal></term>
+<listitem><simpara> The file can most probably be executed
+ by #<link linkend="thunar-vfs-info-execute"><function>thunar_vfs_info_execute()</function></link>.
+</simpara></listitem>
+</varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="ThunarVfsFileDevice"/>ThunarVfsFileDevice</title>
+<indexterm><primary>ThunarVfsFileDevice</primary></indexterm><programlisting>typedef dev_t ThunarVfsFileDevice;
+</programlisting>
+<para>
+</para>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ThunarVfsFileInode"/>ThunarVfsFileInode</title>
+<indexterm><primary>ThunarVfsFileInode</primary></indexterm><programlisting>typedef ino_t ThunarVfsFileInode;
+</programlisting>
+<para>
+</para>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ThunarVfsFileSize"/>ThunarVfsFileSize</title>
+<indexterm><primary>ThunarVfsFileSize</primary></indexterm><programlisting>typedef off_t ThunarVfsFileSize;
+</programlisting>
+<para>
+</para>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ThunarVfsFileTime"/>ThunarVfsFileTime</title>
+<indexterm><primary>ThunarVfsFileTime</primary></indexterm><programlisting>typedef time_t ThunarVfsFileTime;
+</programlisting>
+<para>
+</para>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ThunarVfsGroupId"/>ThunarVfsGroupId</title>
+<indexterm><primary>ThunarVfsGroupId</primary></indexterm><programlisting>typedef gid_t ThunarVfsGroupId;
+</programlisting>
+<para>
+</para>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ThunarVfsUserId"/>ThunarVfsUserId</title>
+<indexterm><primary>ThunarVfsUserId</primary></indexterm><programlisting>typedef uid_t ThunarVfsUserId;
+</programlisting>
+<para>
+</para>
+<para>
+
+</para></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-uri.xml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-uri.xml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-uri.xml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,487 @@
+<refentry id="thunar-vfs-ThunarVfsURI">
+<refmeta>
+<refentrytitle>ThunarVfsURI</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>THUNAR-VFS Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>ThunarVfsURI</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+ <link linkend="ThunarVfsURI">ThunarVfsURI</link>;
+enum <link linkend="ThunarVfsURIScheme">ThunarVfsURIScheme</link>;
+<link linkend="ThunarVfsURI">ThunarVfsURI</link>* <link linkend="thunar-vfs-uri-new">thunar_vfs_uri_new</link> (const <link linkend="gchar">gchar</link> *identifier,
+ <link linkend="GError">GError</link> **error);
+<link linkend="ThunarVfsURI">ThunarVfsURI</link>* <link linkend="thunar-vfs-uri-new-for-path">thunar_vfs_uri_new_for_path</link> (const <link linkend="gchar">gchar</link> *path);
+<link linkend="ThunarVfsURI">ThunarVfsURI</link>* <link linkend="thunar-vfs-uri-ref">thunar_vfs_uri_ref</link> (<link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri);
+<link linkend="void">void</link> <link linkend="thunar-vfs-uri-unref">thunar_vfs_uri_unref</link> (<link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri);
+<link linkend="gboolean">gboolean</link> <link linkend="thunar-vfs-uri-is-home">thunar_vfs_uri_is_home</link> (const <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri);
+<link linkend="gboolean">gboolean</link> <link linkend="thunar-vfs-uri-is-root">thunar_vfs_uri_is_root</link> (const <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri);
+<link linkend="gchar">gchar</link>* <link linkend="thunar-vfs-uri-get-display-name">thunar_vfs_uri_get_display_name</link> (const <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri);
+<link linkend="gchar">gchar</link>* <link linkend="thunar-vfs-uri-get-md5sum">thunar_vfs_uri_get_md5sum</link> (const <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri);
+const <link linkend="gchar">gchar</link>* <link linkend="thunar-vfs-uri-get-name">thunar_vfs_uri_get_name</link> (const <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri);
+const <link linkend="gchar">gchar</link>* <link linkend="thunar-vfs-uri-get-path">thunar_vfs_uri_get_path</link> (const <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri);
+<link linkend="ThunarVfsURIScheme">ThunarVfsURIScheme</link> <link linkend="thunar-vfs-uri-get-scheme">thunar_vfs_uri_get_scheme</link>
+ (const <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri);
+<link linkend="ThunarVfsURI">ThunarVfsURI</link>* <link linkend="thunar-vfs-uri-parent">thunar_vfs_uri_parent</link> (const <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri);
+<link linkend="ThunarVfsURI">ThunarVfsURI</link>* <link linkend="thunar-vfs-uri-relative">thunar_vfs_uri_relative</link> (const <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri,
+ const <link linkend="gchar">gchar</link> *name);
+<link linkend="gchar">gchar</link>* <link linkend="thunar-vfs-uri-to-string">thunar_vfs_uri_to_string</link> (const <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri);
+<link linkend="guint">guint</link> <link linkend="thunar-vfs-uri-hash">thunar_vfs_uri_hash</link> (<link linkend="gconstpointer">gconstpointer</link> uri);
+<link linkend="gboolean">gboolean</link> <link linkend="thunar-vfs-uri-equal">thunar_vfs_uri_equal</link> (<link linkend="gconstpointer">gconstpointer</link> a,
+ <link linkend="gconstpointer">gconstpointer</link> b);
+<link linkend="GList">GList</link>* <link linkend="thunar-vfs-uri-list-from-string">thunar_vfs_uri_list_from_string</link> (const <link linkend="gchar">gchar</link> *string,
+ <link linkend="GError">GError</link> **error);
+<link linkend="gchar">gchar</link>* <link linkend="thunar-vfs-uri-list-to-string">thunar_vfs_uri_list_to_string</link> (<link linkend="GList">GList</link> *uri_list);
+<link linkend="GList">GList</link>* <link linkend="thunar-vfs-uri-list-copy">thunar_vfs_uri_list_copy</link> (<link linkend="GList">GList</link> *uri_list);
+<link linkend="void">void</link> <link linkend="thunar-vfs-uri-list-free">thunar_vfs_uri_list_free</link> (<link linkend="GList">GList</link> *uri_list);
+#define <link linkend="thunar-vfs-uri-list-append">thunar_vfs_uri_list_append</link> (uri_list, uri)
+#define <link linkend="thunar-vfs-uri-list-prepend">thunar_vfs_uri_list_prepend</link> (uri_list, uri)
+
+
+</synopsis>
+</refsynopsisdiv>
+
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="ThunarVfsURI"/>ThunarVfsURI</title>
+<indexterm><primary>ThunarVfsURI</primary></indexterm><programlisting>typedef struct _ThunarVfsURI ThunarVfsURI;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ThunarVfsURIScheme"/>enum ThunarVfsURIScheme</title>
+<indexterm><primary>ThunarVfsURIScheme</primary></indexterm><programlisting>typedef enum
+{
+ THUNAR_VFS_URI_SCHEME_COMPUTER,
+ THUNAR_VFS_URI_SCHEME_FILE,
+ THUNAR_VFS_URI_SCHEME_TRASH,
+} ThunarVfsURIScheme;
+</programlisting>
+<para>
+Currently supported URI types for <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link>.</para>
+<para>
+
+</para><variablelist role="enum">
+<varlistentry>
+<term><literal>THUNAR_VFS_URI_SCHEME_COMPUTER</literal></term>
+<listitem><simpara> 'computer://' uris
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_URI_SCHEME_FILE</literal></term>
+<listitem><simpara> 'file://' uris
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_URI_SCHEME_TRASH</literal></term>
+<listitem><simpara> 'trash://' uris
+</simpara></listitem>
+</varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-uri-new"/>thunar_vfs_uri_new ()</title>
+<indexterm><primary>thunar_vfs_uri_new</primary></indexterm><programlisting><link linkend="ThunarVfsURI">ThunarVfsURI</link>* thunar_vfs_uri_new (const <link linkend="gchar">gchar</link> *identifier,
+ <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+Parses the URI given in <parameter>identifier</parameter> and returns a
+corresponding <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link> object or <literal>NULL</literal> if
+<parameter>identifier</parameter> is not a valid URI.
+</para>
+<para>
+As a special case, <parameter>identifier</parameter> may also include an
+absolute path, in which case the 'file://' scheme is
+assumed.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>identifier</parameter> :</term>
+<listitem><simpara> the resource identifier encoded as string.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter> :</term>
+<listitem><simpara> return location for errors.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link> or <literal>NULL</literal> on error.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-uri-new-for-path"/>thunar_vfs_uri_new_for_path ()</title>
+<indexterm><primary>thunar_vfs_uri_new_for_path</primary></indexterm><programlisting><link linkend="ThunarVfsURI">ThunarVfsURI</link>* thunar_vfs_uri_new_for_path (const <link linkend="gchar">gchar</link> *path);</programlisting>
+<para>
+Allocates a new <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link> instance that refers to the local file
+identified by <parameter>path</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>path</parameter> :</term>
+<listitem><simpara> an absolute path referring to a file accessible via the local
+ file system implementation.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the newly allocated <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link> instance.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-uri-ref"/>thunar_vfs_uri_ref ()</title>
+<indexterm><primary>thunar_vfs_uri_ref</primary></indexterm><programlisting><link linkend="ThunarVfsURI">ThunarVfsURI</link>* thunar_vfs_uri_ref (<link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri);</programlisting>
+<para>
+Increments the reference count on <parameter>uri</parameter> by 1 and
+returns <parameter>uri</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>uri</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link> instance.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> pointer to <parameter>uri</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-uri-unref"/>thunar_vfs_uri_unref ()</title>
+<indexterm><primary>thunar_vfs_uri_unref</primary></indexterm><programlisting><link linkend="void">void</link> thunar_vfs_uri_unref (<link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri);</programlisting>
+<para>
+Decreases the reference count on <parameter>uri</parameter> by 1. If the
+reference count drops to 0, the resources allocated
+for <parameter>uri</parameter> will be freed.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>uri</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link> instance.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-uri-is-home"/>thunar_vfs_uri_is_home ()</title>
+<indexterm><primary>thunar_vfs_uri_is_home</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> thunar_vfs_uri_is_home (const <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri);</programlisting>
+<para>
+Checks whether <parameter>uri</parameter> refers to the home directory
+of the current user.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>uri</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link> instance.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <literal>TRUE</literal> if <parameter>uri</parameter> refers to the home directory.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-uri-is-root"/>thunar_vfs_uri_is_root ()</title>
+<indexterm><primary>thunar_vfs_uri_is_root</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> thunar_vfs_uri_is_root (const <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri);</programlisting>
+<para>
+Checks whether <parameter>uri</parameter> refers to the root of the file system
+scheme described by <parameter>uri</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>uri</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link> instance.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <literal>TRUE</literal> if <parameter>uri</parameter> is a root element, else <literal>FALSE</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-uri-get-display-name"/>thunar_vfs_uri_get_display_name ()</title>
+<indexterm><primary>thunar_vfs_uri_get_display_name</primary></indexterm><programlisting><link linkend="gchar">gchar</link>* thunar_vfs_uri_get_display_name (const <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri);</programlisting>
+<para>
+Returns a displayable version of the <parameter>uri</parameter>'s base
+name in UTF-8 encoding, which is suitable for
+display in the user interface.
+</para>
+<para>
+The returned string must be freed using <link linkend="g-free"><function>g_free()</function></link>
+when no longer needed.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>uri</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link> instance.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> a displayable version of the <parameter>uri</parameter>'s base name.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-uri-get-md5sum"/>thunar_vfs_uri_get_md5sum ()</title>
+<indexterm><primary>thunar_vfs_uri_get_md5sum</primary></indexterm><programlisting><link linkend="gchar">gchar</link>* thunar_vfs_uri_get_md5sum (const <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri);</programlisting>
+<para>
+Calculates the MD5 digest of the full string
+representation of <parameter>uri</parameter>.
+</para>
+<para>
+The caller is responsible to free the returned
+string using <link linkend="g-free"><function>g_free()</function></link>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>uri</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link> instance.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the MD5 digest of the <parameter>uri</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-uri-get-name"/>thunar_vfs_uri_get_name ()</title>
+<indexterm><primary>thunar_vfs_uri_get_name</primary></indexterm><programlisting>const <link linkend="gchar">gchar</link>* thunar_vfs_uri_get_name (const <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri);</programlisting>
+<para>
+Returns the basename of <parameter>uri</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>uri</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link> instance.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the basename of <parameter>uri</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-uri-get-path"/>thunar_vfs_uri_get_path ()</title>
+<indexterm><primary>thunar_vfs_uri_get_path</primary></indexterm><programlisting>const <link linkend="gchar">gchar</link>* thunar_vfs_uri_get_path (const <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri);</programlisting>
+<para>
+Returns the path component of the given <parameter>uri</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>uri</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link> instance.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the path component of <parameter>uri</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-uri-get-scheme"/>thunar_vfs_uri_get_scheme ()</title>
+<indexterm><primary>thunar_vfs_uri_get_scheme</primary></indexterm><programlisting><link linkend="ThunarVfsURIScheme">ThunarVfsURIScheme</link> thunar_vfs_uri_get_scheme
+ (const <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri);</programlisting>
+<para>
+Returns the <link linkend="ThunarVfsURIScheme"><type>ThunarVfsURIScheme</type></link> of <parameter>uri</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>uri</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link> instance.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the scheme of <parameter>uri</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-uri-parent"/>thunar_vfs_uri_parent ()</title>
+<indexterm><primary>thunar_vfs_uri_parent</primary></indexterm><programlisting><link linkend="ThunarVfsURI">ThunarVfsURI</link>* thunar_vfs_uri_parent (const <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri);</programlisting>
+<para>
+Returns the <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link> object that refers to the parent
+folder of <parameter>uri</parameter> or <literal>NULL</literal> if <parameter>uri</parameter> has no parent.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>uri</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link> instance.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link> object referring to the parent folder
+ or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-uri-relative"/>thunar_vfs_uri_relative ()</title>
+<indexterm><primary>thunar_vfs_uri_relative</primary></indexterm><programlisting><link linkend="ThunarVfsURI">ThunarVfsURI</link>* thunar_vfs_uri_relative (const <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri,
+ const <link linkend="gchar">gchar</link> *name);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>uri</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link> instance.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter> :</term>
+<listitem><simpara> the relative name.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-uri-to-string"/>thunar_vfs_uri_to_string ()</title>
+<indexterm><primary>thunar_vfs_uri_to_string</primary></indexterm><programlisting><link linkend="gchar">gchar</link>* thunar_vfs_uri_to_string (const <link linkend="ThunarVfsURI">ThunarVfsURI</link> *uri);</programlisting>
+<para>
+Returns the string representation of <parameter>uri</parameter> (encoded
+as specified on the file URI specification). The
+caller is responsible for freeing the returned
+string using <link linkend="g-free"><function>g_free()</function></link>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>uri</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the string representation of <parameter>uri</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-uri-hash"/>thunar_vfs_uri_hash ()</title>
+<indexterm><primary>thunar_vfs_uri_hash</primary></indexterm><programlisting><link linkend="guint">guint</link> thunar_vfs_uri_hash (<link linkend="gconstpointer">gconstpointer</link> uri);</programlisting>
+<para>
+Calculates a hash value for the given <parameter>uri</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>uri</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> a hash value for <parameter>uri</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-uri-equal"/>thunar_vfs_uri_equal ()</title>
+<indexterm><primary>thunar_vfs_uri_equal</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> thunar_vfs_uri_equal (<link linkend="gconstpointer">gconstpointer</link> a,
+ <link linkend="gconstpointer">gconstpointer</link> b);</programlisting>
+<para>
+Checks whether the two URIs <parameter>a</parameter> and <parameter>b</parameter> refer to the same
+resource.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>a</parameter> :</term>
+<listitem><simpara> first <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>b</parameter> :</term>
+<listitem><simpara> second <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <literal>TRUE</literal> if <parameter>a</parameter> equals <parameter>b</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-uri-list-from-string"/>thunar_vfs_uri_list_from_string ()</title>
+<indexterm><primary>thunar_vfs_uri_list_from_string</primary></indexterm><programlisting><link linkend="GList">GList</link>* thunar_vfs_uri_list_from_string (const <link linkend="gchar">gchar</link> *string,
+ <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+Splits an URI list conforming to the text/uri-list
+mime type defined in RFC 2483 into individual URIs,
+discarding any comments and whitespace.
+</para>
+<para>
+If all URIs were successfully parsed into <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link>
+objects, the list of parsed URIs will be returned, and
+you'll need to call <link linkend="thunar-vfs-uri-list-free"><function>thunar_vfs_uri_list_free()</function></link> to
+release the list resources. Else if the parsing fails
+at some point, <literal>NULL</literal> will be returned and <parameter>error</parameter> will
+be set to describe the cause.
+</para>
+<para>
+Note, that if <parameter>string</parameter> contains no URIs, this function
+will also return <literal>NULL</literal>, but <parameter>error</parameter> won't be set. So
+take care when checking for an error condition!</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>string</parameter> :</term>
+<listitem><simpara> string representation of an URI list.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter> :</term>
+<listitem><simpara> return location for errors.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the list of <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link>'s or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-uri-list-to-string"/>thunar_vfs_uri_list_to_string ()</title>
+<indexterm><primary>thunar_vfs_uri_list_to_string</primary></indexterm><programlisting><link linkend="gchar">gchar</link>* thunar_vfs_uri_list_to_string (<link linkend="GList">GList</link> *uri_list);</programlisting>
+<para>
+Free the returned value using <link linkend="g-free"><function>g_free()</function></link> when you
+are done with it.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>uri_list</parameter> :</term>
+<listitem><simpara> a list of <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link><!---->s.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the string representation of <parameter>uri_list</parameter> conforming to the
+ text/uri-list mime type defined in RFC 2483.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-uri-list-copy"/>thunar_vfs_uri_list_copy ()</title>
+<indexterm><primary>thunar_vfs_uri_list_copy</primary></indexterm><programlisting><link linkend="GList">GList</link>* thunar_vfs_uri_list_copy (<link linkend="GList">GList</link> *uri_list);</programlisting>
+<para>
+Takes a deep copy of the <parameter>uri_list</parameter> and returns it.
+The deep copy also includes taking additional
+references on the <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link><!---->s contained
+within the <parameter>uri_list</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>uri_list</parameter> :</term>
+<listitem><simpara> a list of <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link><!---->s.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> a duplicate of <parameter>uri_list</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-uri-list-free"/>thunar_vfs_uri_list_free ()</title>
+<indexterm><primary>thunar_vfs_uri_list_free</primary></indexterm><programlisting><link linkend="void">void</link> thunar_vfs_uri_list_free (<link linkend="GList">GList</link> *uri_list);</programlisting>
+<para>
+Frees the <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link><!---->s contained in <parameter>uri_list</parameter> and
+the <parameter>uri_list</parameter> itself.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>uri_list</parameter> :</term>
+<listitem><simpara> a list of <link linkend="ThunarVfsURI"><type>ThunarVfsURI</type></link><!---->s.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-uri-list-append"/>thunar_vfs_uri_list_append()</title>
+<indexterm><primary>thunar_vfs_uri_list_append</primary></indexterm><programlisting>#define thunar_vfs_uri_list_append(uri_list, uri)</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>uri_list</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>uri</parameter> :</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-uri-list-prepend"/>thunar_vfs_uri_list_prepend()</title>
+<indexterm><primary>thunar_vfs_uri_list_prepend</primary></indexterm><programlisting>#define thunar_vfs_uri_list_prepend(uri_list, uri)</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>uri_list</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>uri</parameter> :</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-user-manager.xml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-user-manager.xml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-user-manager.xml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,129 @@
+<refentry id="ThunarVfsUserManager">
+<refmeta>
+<refentrytitle>ThunarVfsUserManager</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>THUNAR-VFS Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>ThunarVfsUserManager</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+ <link linkend="ThunarVfsUserManager-struct">ThunarVfsUserManager</link>;
+<link linkend="ThunarVfsUserManager">ThunarVfsUserManager</link>* <link linkend="thunar-vfs-user-manager-get-default">thunar_vfs_user_manager_get_default</link>
+ (void);
+<link linkend="ThunarVfsGroup">ThunarVfsGroup</link>* <link linkend="thunar-vfs-user-manager-get-group-by-id">thunar_vfs_user_manager_get_group_by_id</link>
+ (<link linkend="ThunarVfsUserManager">ThunarVfsUserManager</link> *manager,
+ <link linkend="ThunarVfsGroupId">ThunarVfsGroupId</link> id);
+<link linkend="ThunarVfsUser">ThunarVfsUser</link>* <link linkend="thunar-vfs-user-manager-get-user-by-id">thunar_vfs_user_manager_get_user_by_id</link>
+ (<link linkend="ThunarVfsUserManager">ThunarVfsUserManager</link> *manager,
+ <link linkend="ThunarVfsUserId">ThunarVfsUserId</link> id);
+
+
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1>
+<title>Object Hierarchy</title>
+<synopsis>
+
+ <link linkend="GObject">GObject</link>
+ +----ThunarVfsUserManager
+</synopsis>
+
+</refsect1>
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="ThunarVfsUserManager-struct"/>ThunarVfsUserManager</title>
+<indexterm><primary>ThunarVfsUserManager</primary></indexterm><programlisting>typedef struct _ThunarVfsUserManager ThunarVfsUserManager;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-user-manager-get-default"/>thunar_vfs_user_manager_get_default ()</title>
+<indexterm><primary>thunar_vfs_user_manager_get_default</primary></indexterm><programlisting><link linkend="ThunarVfsUserManager">ThunarVfsUserManager</link>* thunar_vfs_user_manager_get_default
+ (void);</programlisting>
+<para>
+Returns the default <link linkend="ThunarVfsUserManager"><type>ThunarVfsUserManager</type></link> instance, which is shared
+by all modules using the user module. Call <link linkend="g-object-unref"><function>g_object_unref()</function></link> on the
+returned object when you are done with it.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the default <link linkend="ThunarVfsUserManager"><type>ThunarVfsUserManager</type></link> instance.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-user-manager-get-group-by-id"/>thunar_vfs_user_manager_get_group_by_id ()</title>
+<indexterm><primary>thunar_vfs_user_manager_get_group_by_id</primary></indexterm><programlisting><link linkend="ThunarVfsGroup">ThunarVfsGroup</link>* thunar_vfs_user_manager_get_group_by_id
+ (<link linkend="ThunarVfsUserManager">ThunarVfsUserManager</link> *manager,
+ <link linkend="ThunarVfsGroupId">ThunarVfsGroupId</link> id);</programlisting>
+<para>
+Looks up the <link linkend="ThunarVfsGroup"><type>ThunarVfsGroup</type></link> corresponding to <parameter>id</parameter> in <parameter>manager</parameter>. Returns
+<literal>NULL</literal> if <parameter>manager</parameter> is unable to determine the <link linkend="ThunarVfsGroup"><type>ThunarVfsGroup</type></link> for <parameter>id</parameter>,
+else a pointer to the corresponding <link linkend="ThunarVfsGroup"><type>ThunarVfsGroup</type></link>. The caller is
+responsible for freeing the returned object using <link linkend="g-object-unref"><function>g_object_unref()</function></link>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>manager</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsUserManager"><type>ThunarVfsUserManager</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>id</parameter> :</term>
+<listitem><simpara> the group id.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the <link linkend="ThunarVfsGroup"><type>ThunarVfsGroup</type></link> corresponding to <parameter>id</parameter> or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-user-manager-get-user-by-id"/>thunar_vfs_user_manager_get_user_by_id ()</title>
+<indexterm><primary>thunar_vfs_user_manager_get_user_by_id</primary></indexterm><programlisting><link linkend="ThunarVfsUser">ThunarVfsUser</link>* thunar_vfs_user_manager_get_user_by_id
+ (<link linkend="ThunarVfsUserManager">ThunarVfsUserManager</link> *manager,
+ <link linkend="ThunarVfsUserId">ThunarVfsUserId</link> id);</programlisting>
+<para>
+Looks up the <link linkend="ThunarVfsUser"><type>ThunarVfsUser</type></link> corresponding to <parameter>id</parameter> in <parameter>manager</parameter>. Returns
+<literal>NULL</literal> if <parameter>manager</parameter> is unable to determine the <link linkend="ThunarVfsUser"><type>ThunarVfsUser</type></link> for <parameter>id</parameter>,
+else a pointer to the corresponding <link linkend="ThunarVfsUser"><type>ThunarVfsUser</type></link>. The caller is
+responsible for freeing the returned object using <link linkend="g-object-unref"><function>g_object_unref()</function></link>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>manager</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsUserManager"><type>ThunarVfsUserManager</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>id</parameter> :</term>
+<listitem><simpara> the user id.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the <link linkend="ThunarVfsUser"><type>ThunarVfsUser</type></link> corresponding to <parameter>id</parameter> or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-user.xml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-user.xml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-user.xml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,173 @@
+<refentry id="ThunarVfsUser">
+<refmeta>
+<refentrytitle>ThunarVfsUser</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>THUNAR-VFS Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>ThunarVfsUser</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+ <link linkend="ThunarVfsUser-struct">ThunarVfsUser</link>;
+<link linkend="GList">GList</link>* <link linkend="thunar-vfs-user-get-groups">thunar_vfs_user_get_groups</link> (<link linkend="ThunarVfsUser">ThunarVfsUser</link> *user);
+<link linkend="ThunarVfsGroup">ThunarVfsGroup</link>* <link linkend="thunar-vfs-user-get-primary-group">thunar_vfs_user_get_primary_group</link>
+ (<link linkend="ThunarVfsUser">ThunarVfsUser</link> *user);
+<link linkend="ThunarVfsUserId">ThunarVfsUserId</link> <link linkend="thunar-vfs-user-get-id">thunar_vfs_user_get_id</link> (<link linkend="ThunarVfsUser">ThunarVfsUser</link> *user);
+const <link linkend="gchar">gchar</link>* <link linkend="thunar-vfs-user-get-name">thunar_vfs_user_get_name</link> (<link linkend="ThunarVfsUser">ThunarVfsUser</link> *user);
+const <link linkend="gchar">gchar</link>* <link linkend="thunar-vfs-user-get-real-name">thunar_vfs_user_get_real_name</link> (<link linkend="ThunarVfsUser">ThunarVfsUser</link> *user);
+<link linkend="gboolean">gboolean</link> <link linkend="thunar-vfs-user-is-me">thunar_vfs_user_is_me</link> (<link linkend="ThunarVfsUser">ThunarVfsUser</link> *user);
+
+
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1>
+<title>Object Hierarchy</title>
+<synopsis>
+
+ <link linkend="GObject">GObject</link>
+ +----ThunarVfsUser
+</synopsis>
+
+</refsect1>
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="ThunarVfsUser-struct"/>ThunarVfsUser</title>
+<indexterm><primary>ThunarVfsUser</primary></indexterm><programlisting>typedef struct _ThunarVfsUser ThunarVfsUser;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-user-get-groups"/>thunar_vfs_user_get_groups ()</title>
+<indexterm><primary>thunar_vfs_user_get_groups</primary></indexterm><programlisting><link linkend="GList">GList</link>* thunar_vfs_user_get_groups (<link linkend="ThunarVfsUser">ThunarVfsUser</link> *user);</programlisting>
+<para>
+Returns all <link linkend="ThunarVfsGroup"><type>ThunarVfsGroup</type></link><!---->s that <parameter>user</parameter>
+belongs to. The returned list and the <link linkend="ThunarVfsGroup"><type>ThunarVfsGroup</type></link><!---->s
+contained within the list are owned by <parameter>user</parameter> and must not be
+freed or altered by the caller.
+</para>
+<para>
+Note that if <parameter>user</parameter> has a primary group, this group will
+also be contained in the returned list.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>user</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsUser"><type>ThunarVfsUser</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the groups that <parameter>user</parameter> belongs to.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-user-get-primary-group"/>thunar_vfs_user_get_primary_group ()</title>
+<indexterm><primary>thunar_vfs_user_get_primary_group</primary></indexterm><programlisting><link linkend="ThunarVfsGroup">ThunarVfsGroup</link>* thunar_vfs_user_get_primary_group
+ (<link linkend="ThunarVfsUser">ThunarVfsUser</link> *user);</programlisting>
+<para>
+Returns the primary group of <parameter>user</parameter> or <literal>NULL</literal> if <parameter>user</parameter>
+has no primary group.
+</para>
+<para>
+No reference is taken for the caller, so you must
+not call <link linkend="g-object-unref"><function>g_object_unref()</function></link> on the returned object.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>user</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsUser"><type>ThunarVfsUser</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the primary group of <parameter>user</parameter> or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-user-get-id"/>thunar_vfs_user_get_id ()</title>
+<indexterm><primary>thunar_vfs_user_get_id</primary></indexterm><programlisting><link linkend="ThunarVfsUserId">ThunarVfsUserId</link> thunar_vfs_user_get_id (<link linkend="ThunarVfsUser">ThunarVfsUser</link> *user);</programlisting>
+<para>
+Returns the unique id of <parameter>user</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>user</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsUser"><type>ThunarVfsUser</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the unique id of <parameter>user</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-user-get-name"/>thunar_vfs_user_get_name ()</title>
+<indexterm><primary>thunar_vfs_user_get_name</primary></indexterm><programlisting>const <link linkend="gchar">gchar</link>* thunar_vfs_user_get_name (<link linkend="ThunarVfsUser">ThunarVfsUser</link> *user);</programlisting>
+<para>
+Returns the name of <parameter>user</parameter>. If the system is
+unable to determine the account name of <parameter>user</parameter>,
+it'll return the user id as string.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>user</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsUser"><type>ThunarVfsUser</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the name of <parameter>user</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-user-get-real-name"/>thunar_vfs_user_get_real_name ()</title>
+<indexterm><primary>thunar_vfs_user_get_real_name</primary></indexterm><programlisting>const <link linkend="gchar">gchar</link>* thunar_vfs_user_get_real_name (<link linkend="ThunarVfsUser">ThunarVfsUser</link> *user);</programlisting>
+<para>
+Returns the real name of <parameter>user</parameter> or <literal>NULL</literal> if the
+real name for <parameter>user</parameter> is not known to the underlying
+system.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>user</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsUser"><type>ThunarVfsUser</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the real name for <parameter>user</parameter> or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-user-is-me"/>thunar_vfs_user_is_me ()</title>
+<indexterm><primary>thunar_vfs_user_is_me</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> thunar_vfs_user_is_me (<link linkend="ThunarVfsUser">ThunarVfsUser</link> *user);</programlisting>
+<para>
+Checks whether the owner of the current process is
+described by <parameter>user</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>user</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsUser"><type>ThunarVfsUser</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <literal>TRUE</literal> if <parameter>user</parameter> is the owner of the current
+ process, else <literal>FALSE</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-util.xml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-util.xml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-util.xml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,72 @@
+<refentry id="thunar-vfs-Utility-Functions">
+<refmeta>
+<refentrytitle>Utility Functions</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>THUNAR-VFS Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>Utility Functions</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+<link linkend="gchar">gchar</link>* <link linkend="thunar-vfs-humanize-size">thunar_vfs_humanize_size</link> (<link linkend="ThunarVfsFileSize">ThunarVfsFileSize</link> size,
+ <link linkend="gchar">gchar</link> *buffer,
+ <link linkend="gsize">gsize</link> buflen);
+</synopsis>
+</refsynopsisdiv>
+
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="thunar-vfs-humanize-size"/>thunar_vfs_humanize_size ()</title>
+<indexterm><primary>thunar_vfs_humanize_size</primary></indexterm><programlisting><link linkend="gchar">gchar</link>* thunar_vfs_humanize_size (<link linkend="ThunarVfsFileSize">ThunarVfsFileSize</link> size,
+ <link linkend="gchar">gchar</link> *buffer,
+ <link linkend="gsize">gsize</link> buflen);</programlisting>
+<para>
+The caller is responsible to free the returned string using <link linkend="g-free"><function>g_free()</function></link>
+if you pass <literal>NULL</literal> for <parameter>buffer</parameter>. Else the returned string will be a
+pointer to <parameter>buffer</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>size</parameter> :</term>
+<listitem><simpara> size in bytes.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>buffer</parameter> :</term>
+<listitem><simpara> destination buffer or <literal>NULL</literal> to dynamically allocate a buffer.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>buflen</parameter> :</term>
+<listitem><simpara> length of <parameter>buffer</parameter> in bytes.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> a string containing a human readable description of <parameter>size</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-volume-manager.xml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-volume-manager.xml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-volume-manager.xml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,211 @@
+<refentry id="ThunarVfsVolumeManager">
+<refmeta>
+<refentrytitle>ThunarVfsVolumeManager</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>THUNAR-VFS Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>ThunarVfsVolumeManager</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+ <link linkend="ThunarVfsVolumeManagerIface">ThunarVfsVolumeManagerIface</link>;
+ <link linkend="ThunarVfsVolumeManager-struct">ThunarVfsVolumeManager</link>;
+<link linkend="ThunarVfsVolumeManager">ThunarVfsVolumeManager</link>* <link linkend="thunar-vfs-volume-manager-get-default">thunar_vfs_volume_manager_get_default</link>
+ (void);
+<link linkend="ThunarVfsVolume">ThunarVfsVolume</link>* <link linkend="thunar-vfs-volume-manager-get-volume-by-info">thunar_vfs_volume_manager_get_volume_by_info</link>
+ (<link linkend="ThunarVfsVolumeManager">ThunarVfsVolumeManager</link> *manager,
+ const <link linkend="ThunarVfsInfo">ThunarVfsInfo</link> *info);
+<link linkend="GList">GList</link>* <link linkend="thunar-vfs-volume-manager-get-volumes">thunar_vfs_volume_manager_get_volumes</link>
+ (<link linkend="ThunarVfsVolumeManager">ThunarVfsVolumeManager</link> *manager);
+<link linkend="void">void</link> <link linkend="thunar-vfs-volume-manager-volumes-added">thunar_vfs_volume_manager_volumes_added</link>
+ (<link linkend="ThunarVfsVolumeManager">ThunarVfsVolumeManager</link> *manager,
+ <link linkend="GList">GList</link> *volumes);
+<link linkend="void">void</link> <link linkend="thunar-vfs-volume-manager-volumes-removed">thunar_vfs_volume_manager_volumes_removed</link>
+ (<link linkend="ThunarVfsVolumeManager">ThunarVfsVolumeManager</link> *manager,
+ <link linkend="GList">GList</link> *volumes);
+
+
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1>
+<title>Object Hierarchy</title>
+<synopsis>
+
+ <link linkend="GInterface">GInterface</link>
+ +----ThunarVfsVolumeManager
+</synopsis>
+
+</refsect1>
+
+<refsect1>
+<title>Prerequisites</title>
+<para>
+ThunarVfsVolumeManager requires
+ <link linkend="GObject">GObject</link>.</para>
+
+</refsect1>
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="ThunarVfsVolumeManagerIface"/>ThunarVfsVolumeManagerIface</title>
+<indexterm><primary>ThunarVfsVolumeManagerIface</primary></indexterm><programlisting>typedef struct {
+ GTypeInterface __parent__;
+
+ /* methods */
+ ThunarVfsVolume *(*get_volume_by_info) (ThunarVfsVolumeManager *manager,
+ const ThunarVfsInfo *info);
+ GList *(*get_volumes) (ThunarVfsVolumeManager *manager);
+
+ /* signals */
+ void (*volumes_added) (ThunarVfsVolumeManager *manager,
+ GList *volumes);
+ void (*volumes_removed) (ThunarVfsVolumeManager *manager,
+ GList *volumes);
+} ThunarVfsVolumeManagerIface;
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ThunarVfsVolumeManager-struct"/>ThunarVfsVolumeManager</title>
+<indexterm><primary>ThunarVfsVolumeManager</primary></indexterm><programlisting>typedef struct _ThunarVfsVolumeManager ThunarVfsVolumeManager;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-volume-manager-get-default"/>thunar_vfs_volume_manager_get_default ()</title>
+<indexterm><primary>thunar_vfs_volume_manager_get_default</primary></indexterm><programlisting><link linkend="ThunarVfsVolumeManager">ThunarVfsVolumeManager</link>* thunar_vfs_volume_manager_get_default
+ (void);</programlisting>
+<para>
+Returns the default, shared <link linkend="ThunarVfsVolumeManager"><type>ThunarVfsVolumeManager</type></link> instance
+for this system. This function automatically determines, which
+implementation of <link linkend="ThunarVfsVolumeManager"><type>ThunarVfsVolumeManager</type></link> should be used for
+the target system and returns an instance of that class, which
+is shared among all modules using the volume manager facility.
+</para>
+<para>
+Call <link linkend="g-object-unref"><function>g_object_unref()</function></link> on the returned object when you are
+done with it.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the shared <link linkend="ThunarVfsVolumeManager"><type>ThunarVfsVolumeManager</type></link> instance.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-volume-manager-get-volume-by-info"/>thunar_vfs_volume_manager_get_volume_by_info ()</title>
+<indexterm><primary>thunar_vfs_volume_manager_get_volume_by_info</primary></indexterm><programlisting><link linkend="ThunarVfsVolume">ThunarVfsVolume</link>* thunar_vfs_volume_manager_get_volume_by_info
+ (<link linkend="ThunarVfsVolumeManager">ThunarVfsVolumeManager</link> *manager,
+ const <link linkend="ThunarVfsInfo">ThunarVfsInfo</link> *info);</programlisting>
+<para>
+Tries to lookup the <link linkend="ThunarVfsVolume"><type>ThunarVfsVolume</type></link> on which <parameter>info</parameter> is
+located. If <parameter>manager</parameter> doesn't know a <link linkend="ThunarVfsVolume"><type>ThunarVfsVolume</type></link>
+for <parameter>info</parameter>, <literal>NULL</literal> will be returned.
+</para>
+<para>
+The returned <link linkend="ThunarVfsVolume"><type>ThunarVfsVolume</type></link> (if any) is owned by
+<parameter>manager</parameter> and must not be freed by the caller.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>manager</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsVolumeManager"><type>ThunarVfsVolumeManager</type></link> instance.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>info</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsInfo"><type>ThunarVfsInfo</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the <link linkend="ThunarVfsVolume"><type>ThunarVfsVolume</type></link>, on which <parameter>info</parameter> is
+ located or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-volume-manager-get-volumes"/>thunar_vfs_volume_manager_get_volumes ()</title>
+<indexterm><primary>thunar_vfs_volume_manager_get_volumes</primary></indexterm><programlisting><link linkend="GList">GList</link>* thunar_vfs_volume_manager_get_volumes
+ (<link linkend="ThunarVfsVolumeManager">ThunarVfsVolumeManager</link> *manager);</programlisting>
+<para>
+Returns all <link linkend="ThunarVfsVolume"><type>ThunarVfsVolume</type></link><!---->s currently known for
+<parameter>manager</parameter>. The returned list is owned by <parameter>manager</parameter> and should
+therefore considered constant in the caller.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>manager</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsVolumeManager"><type>ThunarVfsVolumeManager</type></link> instance.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the list of volumes known for <parameter>manager</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-volume-manager-volumes-added"/>thunar_vfs_volume_manager_volumes_added ()</title>
+<indexterm><primary>thunar_vfs_volume_manager_volumes_added</primary></indexterm><programlisting><link linkend="void">void</link> thunar_vfs_volume_manager_volumes_added
+ (<link linkend="ThunarVfsVolumeManager">ThunarVfsVolumeManager</link> *manager,
+ <link linkend="GList">GList</link> *volumes);</programlisting>
+<para>
+Emits the "volumes-added" signal on <parameter>manager</parameter> using the
+given <parameter>volumes</parameter>.
+</para>
+<para>
+This method should only be used by classes implementing
+the <link linkend="ThunarVfsVolumeManager"><type>ThunarVfsVolumeManager</type></link> interface.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>manager</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsVolumeManager"><type>ThunarVfsVolumeManager</type></link> instance.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>volumes</parameter> :</term>
+<listitem><simpara> a list of <link linkend="ThunarVfsVolume"><type>ThunarVfsVolume</type></link><!---->s.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-volume-manager-volumes-removed"/>thunar_vfs_volume_manager_volumes_removed ()</title>
+<indexterm><primary>thunar_vfs_volume_manager_volumes_removed</primary></indexterm><programlisting><link linkend="void">void</link> thunar_vfs_volume_manager_volumes_removed
+ (<link linkend="ThunarVfsVolumeManager">ThunarVfsVolumeManager</link> *manager,
+ <link linkend="GList">GList</link> *volumes);</programlisting>
+<para>
+Emits the "volumes-removed" signal on <parameter>manager</parameter> using
+the given <parameter>volumes</parameter>.
+</para>
+<para>
+This method should only be used by classes implementing
+the <link linkend="ThunarVfsVolumeManager"><type>ThunarVfsVolumeManager</type></link> interface.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>manager</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsVolumeManager"><type>ThunarVfsVolumeManager</type></link> instance.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>volumes</parameter> :</term>
+<listitem><simpara> a list of <link linkend="ThunarVfsVolume"><type>ThunarVfsVolume</type></link><!---->s.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-volume.xml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-volume.xml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunar-vfs/xml/thunar-vfs-volume.xml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,359 @@
+<refentry id="ThunarVfsVolume">
+<refmeta>
+<refentrytitle>ThunarVfsVolume</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>THUNAR-VFS Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>ThunarVfsVolume</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+enum <link linkend="ThunarVfsVolumeKind">ThunarVfsVolumeKind</link>;
+enum <link linkend="ThunarVfsVolumeStatus">ThunarVfsVolumeStatus</link>;
+ <link linkend="ThunarVfsVolumeIface">ThunarVfsVolumeIface</link>;
+ <link linkend="ThunarVfsVolume-struct">ThunarVfsVolume</link>;
+<link linkend="ThunarVfsVolumeKind">ThunarVfsVolumeKind</link> <link linkend="thunar-vfs-volume-get-kind">thunar_vfs_volume_get_kind</link>
+ (<link linkend="ThunarVfsVolume">ThunarVfsVolume</link> *volume);
+const <link linkend="gchar">gchar</link>* <link linkend="thunar-vfs-volume-get-name">thunar_vfs_volume_get_name</link> (<link linkend="ThunarVfsVolume">ThunarVfsVolume</link> *volume);
+<link linkend="ThunarVfsVolumeStatus">ThunarVfsVolumeStatus</link> <link linkend="thunar-vfs-volume-get-status">thunar_vfs_volume_get_status</link>
+ (<link linkend="ThunarVfsVolume">ThunarVfsVolume</link> *volume);
+<link linkend="ThunarVfsPath">ThunarVfsPath</link>* <link linkend="thunar-vfs-volume-get-mount-point">thunar_vfs_volume_get_mount_point</link>
+ (<link linkend="ThunarVfsVolume">ThunarVfsVolume</link> *volume);
+<link linkend="gboolean">gboolean</link> <link linkend="thunar-vfs-volume-is-mounted">thunar_vfs_volume_is_mounted</link> (<link linkend="ThunarVfsVolume">ThunarVfsVolume</link> *volume);
+<link linkend="gboolean">gboolean</link> <link linkend="thunar-vfs-volume-is-present">thunar_vfs_volume_is_present</link> (<link linkend="ThunarVfsVolume">ThunarVfsVolume</link> *volume);
+<link linkend="gboolean">gboolean</link> <link linkend="thunar-vfs-volume-is-removable">thunar_vfs_volume_is_removable</link> (<link linkend="ThunarVfsVolume">ThunarVfsVolume</link> *volume);
+<link linkend="gboolean">gboolean</link> <link linkend="thunar-vfs-volume-get-free-space">thunar_vfs_volume_get_free_space</link>
+ (<link linkend="ThunarVfsVolume">ThunarVfsVolume</link> *volume,
+ <link linkend="ThunarVfsFileSize">ThunarVfsFileSize</link> *free_space_return);
+const <link linkend="gchar">gchar</link>* <link linkend="thunar-vfs-volume-lookup-icon-name">thunar_vfs_volume_lookup_icon_name</link>
+ (<link linkend="ThunarVfsVolume">ThunarVfsVolume</link> *volume,
+ <link linkend="GtkIconTheme">GtkIconTheme</link> *icon_theme);
+<link linkend="void">void</link> <link linkend="thunar-vfs-volume-changed">thunar_vfs_volume_changed</link> (<link linkend="ThunarVfsVolume">ThunarVfsVolume</link> *volume);
+
+
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1>
+<title>Object Hierarchy</title>
+<synopsis>
+
+ <link linkend="GInterface">GInterface</link>
+ +----ThunarVfsVolume
+</synopsis>
+
+</refsect1>
+
+<refsect1>
+<title>Prerequisites</title>
+<para>
+ThunarVfsVolume requires
+ <link linkend="GObject">GObject</link>.</para>
+
+</refsect1>
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="ThunarVfsVolumeKind"/>enum ThunarVfsVolumeKind</title>
+<indexterm><primary>ThunarVfsVolumeKind</primary></indexterm><programlisting>typedef enum
+{
+ THUNAR_VFS_VOLUME_KIND_UNKNOWN,
+ THUNAR_VFS_VOLUME_KIND_CDROM,
+ THUNAR_VFS_VOLUME_KIND_DVD,
+ THUNAR_VFS_VOLUME_KIND_FLOPPY,
+ THUNAR_VFS_VOLUME_KIND_HARDDISK,
+ THUNAR_VFS_VOLUME_KIND_USBSTICK,
+} ThunarVfsVolumeKind;
+</programlisting>
+<para>
+Describes the type of a VFS volume.</para>
+<para>
+
+</para><variablelist role="enum">
+<varlistentry>
+<term><literal>THUNAR_VFS_VOLUME_KIND_UNKNOWN</literal></term>
+<listitem><simpara> Unknown volume.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_VOLUME_KIND_CDROM</literal></term>
+<listitem><simpara> CD drives.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_VOLUME_KIND_DVD</literal></term>
+<listitem><simpara> DVD drives.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_VOLUME_KIND_FLOPPY</literal></term>
+<listitem><simpara> Floppy drives.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_VOLUME_KIND_HARDDISK</literal></term>
+<listitem><simpara> Hard disk drives.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_VOLUME_KIND_USBSTICK</literal></term>
+<listitem><simpara> USB sticks.
+</simpara></listitem>
+</varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="ThunarVfsVolumeStatus"/>enum ThunarVfsVolumeStatus</title>
+<indexterm><primary>ThunarVfsVolumeStatus</primary></indexterm><programlisting>typedef enum /*< flags >*/
+{
+ THUNAR_VFS_VOLUME_STATUS_MOUNTED = 1 << 0,
+ THUNAR_VFS_VOLUME_STATUS_PRESENT = 1 << 1,
+} ThunarVfsVolumeStatus;
+</programlisting>
+<para>
+Describes the current status of a VFS volume.</para>
+<para>
+
+</para><variablelist role="enum">
+<varlistentry>
+<term><literal>THUNAR_VFS_VOLUME_STATUS_MOUNTED</literal></term>
+<listitem><simpara> Whether or not the media is currently mounted.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>THUNAR_VFS_VOLUME_STATUS_PRESENT</literal></term>
+<listitem><simpara> Whether or not a medium is present.
+</simpara></listitem>
+</varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="ThunarVfsVolumeIface"/>ThunarVfsVolumeIface</title>
+<indexterm><primary>ThunarVfsVolumeIface</primary></indexterm><programlisting>typedef struct {
+ GTypeInterface __parent__;
+
+ /* methods */
+ ThunarVfsVolumeKind (*get_kind) (ThunarVfsVolume *volume);
+ const gchar *(*get_name) (ThunarVfsVolume *volume);
+ ThunarVfsVolumeStatus (*get_status) (ThunarVfsVolume *volume);
+ ThunarVfsPath *(*get_mount_point) (ThunarVfsVolume *volume);
+ gboolean (*get_free_space) (ThunarVfsVolume *volume,
+ ThunarVfsFileSize *free_space_return);
+ const gchar *(*lookup_icon_name) (ThunarVfsVolume *volume,
+ GtkIconTheme *icon_theme);
+
+ /* signals */
+ void (*changed) (ThunarVfsVolume *volume);
+} ThunarVfsVolumeIface;
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ThunarVfsVolume-struct"/>ThunarVfsVolume</title>
+<indexterm><primary>ThunarVfsVolume</primary></indexterm><programlisting>typedef struct _ThunarVfsVolume ThunarVfsVolume;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-volume-get-kind"/>thunar_vfs_volume_get_kind ()</title>
+<indexterm><primary>thunar_vfs_volume_get_kind</primary></indexterm><programlisting><link linkend="ThunarVfsVolumeKind">ThunarVfsVolumeKind</link> thunar_vfs_volume_get_kind
+ (<link linkend="ThunarVfsVolume">ThunarVfsVolume</link> *volume);</programlisting>
+<para>
+Returns the kind of drive/device representd by <parameter>volume</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>volume</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsVolume"><type>ThunarVfsVolume</type></link> instance.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the kind of <parameter>volume</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-volume-get-name"/>thunar_vfs_volume_get_name ()</title>
+<indexterm><primary>thunar_vfs_volume_get_name</primary></indexterm><programlisting>const <link linkend="gchar">gchar</link>* thunar_vfs_volume_get_name (<link linkend="ThunarVfsVolume">ThunarVfsVolume</link> *volume);</programlisting>
+<para>
+Returns the name of the <parameter>volume</parameter>. This is usually the
+name of the device or the label of the medium, if a
+medium is present.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>volume</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsVolume"><type>ThunarVfsVolume</type></link> instance.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the name of <parameter>volume</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-volume-get-status"/>thunar_vfs_volume_get_status ()</title>
+<indexterm><primary>thunar_vfs_volume_get_status</primary></indexterm><programlisting><link linkend="ThunarVfsVolumeStatus">ThunarVfsVolumeStatus</link> thunar_vfs_volume_get_status
+ (<link linkend="ThunarVfsVolume">ThunarVfsVolume</link> *volume);</programlisting>
+<para>
+Determines the current status of the <parameter>volume</parameter>, e.g. whether
+or not the <parameter>volume</parameter> is currently mounted, or whether a
+medium is present.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>volume</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsVolume"><type>ThunarVfsVolume</type></link> instance.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the status for <parameter>volume</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-volume-get-mount-point"/>thunar_vfs_volume_get_mount_point ()</title>
+<indexterm><primary>thunar_vfs_volume_get_mount_point</primary></indexterm><programlisting><link linkend="ThunarVfsPath">ThunarVfsPath</link>* thunar_vfs_volume_get_mount_point
+ (<link linkend="ThunarVfsVolume">ThunarVfsVolume</link> *volume);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>volume</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsVolume"><type>ThunarVfsVolume</type></link> instance.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the path which identifies the path where
+ the volume will be mounted (or is already
+ mounted).
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-volume-is-mounted"/>thunar_vfs_volume_is_mounted ()</title>
+<indexterm><primary>thunar_vfs_volume_is_mounted</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> thunar_vfs_volume_is_mounted (<link linkend="ThunarVfsVolume">ThunarVfsVolume</link> *volume);</programlisting>
+<para>
+Determines whether <parameter>volume</parameter> is currently mounted into the
+filesystem hierarchy.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>volume</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsVolume"><type>ThunarVfsVolume</type></link> instance.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <literal>TRUE</literal> if <parameter>volume</parameter> is mounted, else <literal>FALSE</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-volume-is-present"/>thunar_vfs_volume_is_present ()</title>
+<indexterm><primary>thunar_vfs_volume_is_present</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> thunar_vfs_volume_is_present (<link linkend="ThunarVfsVolume">ThunarVfsVolume</link> *volume);</programlisting>
+<para>
+Determines whether a medium is currently inserted for
+<parameter>volume</parameter>, e.g. for a CD-ROM drive, this will be <literal>TRUE</literal>
+only if a disc is present in the slot.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>volume</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsVolume"><type>ThunarVfsVolume</type></link> instance.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <literal>TRUE</literal> if <parameter>volume</parameter> is present, else <literal>FALSE</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-volume-is-removable"/>thunar_vfs_volume_is_removable ()</title>
+<indexterm><primary>thunar_vfs_volume_is_removable</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> thunar_vfs_volume_is_removable (<link linkend="ThunarVfsVolume">ThunarVfsVolume</link> *volume);</programlisting>
+<para>
+Determines whether <parameter>volume</parameter> is a removable device, for example
+a CD-ROM or a floppy drive.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>volume</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsVolume"><type>ThunarVfsVolume</type></link> instance.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <literal>TRUE</literal> if <parameter>volume</parameter> is a removable device, else <literal>FALSE</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-volume-get-free-space"/>thunar_vfs_volume_get_free_space ()</title>
+<indexterm><primary>thunar_vfs_volume_get_free_space</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> thunar_vfs_volume_get_free_space
+ (<link linkend="ThunarVfsVolume">ThunarVfsVolume</link> *volume,
+ <link linkend="ThunarVfsFileSize">ThunarVfsFileSize</link> *free_space_return);</programlisting>
+<para>
+Tries to determine the number of available bytes on the specified
+<parameter>volume</parameter> and places the result to the memory pointed to by
+<parameter>free_space_return</parameter>. The returned amount of bytes represents the
+space available to the current user, which may be different from
+the total free amount.
+</para>
+<para>
+If <parameter>volume</parameter> is unable to determine the free space, <literal>FALSE</literal> will be
+returned and <parameter>free_space_return</parameter> won't be set.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>volume</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsVolume"><type>ThunarVfsVolume</type></link> instance.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>free_space_return</parameter> :</term>
+<listitem><simpara> location to store the free space to.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <literal>TRUE</literal> if the free amount was determined successfully,
+ else <literal>FALSE</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-volume-lookup-icon-name"/>thunar_vfs_volume_lookup_icon_name ()</title>
+<indexterm><primary>thunar_vfs_volume_lookup_icon_name</primary></indexterm><programlisting>const <link linkend="gchar">gchar</link>* thunar_vfs_volume_lookup_icon_name
+ (<link linkend="ThunarVfsVolume">ThunarVfsVolume</link> *volume,
+ <link linkend="GtkIconTheme">GtkIconTheme</link> *icon_theme);</programlisting>
+<para>
+Tries to find a suitable icon for <parameter>volume</parameter> in the given <parameter>icon_theme</parameter> and
+returns its name. If no suitable icon is found in <parameter>icon_theme</parameter>, then
+a fallback icon name will be returned. This way you can always count
+on this method to return a valid string.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>volume</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsVolume"><type>ThunarVfsVolume</type></link> instance.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>icon_theme</parameter> :</term>
+<listitem><simpara> a <link linkend="GtkIconTheme"><type>GtkIconTheme</type></link> instance.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the icon name.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunar-vfs-volume-changed"/>thunar_vfs_volume_changed ()</title>
+<indexterm><primary>thunar_vfs_volume_changed</primary></indexterm><programlisting><link linkend="void">void</link> thunar_vfs_volume_changed (<link linkend="ThunarVfsVolume">ThunarVfsVolume</link> *volume);</programlisting>
+<para>
+Emits the "changed" signal on <parameter>volume</parameter>. This function should
+only be used by implementations of the <link linkend="ThunarVfsVolume"><type>ThunarVfsVolume</type></link>
+interface.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>volume</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarVfsVolume"><type>ThunarVfsVolume</type></link> instance.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/Makefile.am
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/Makefile.am 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/Makefile.am 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,62 @@
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+
+AUTOMAKE_OPTIONS = 1.8
+
+# The name of the module.
+DOC_MODULE=thunarx
+
+# The top-level SGML file.
+DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml
+
+# Extra options to supply to gtkdoc-scan
+SCAN_OPTIONS=--deprecated-guards="EXO_DISABLE_DEPRECATED"
+
+# Extra options to pass to gtkdoc-scangobj
+SCANGOBJ_OPTIONS=--type-init-func="gtk_type_init(0);g_type_class_ref(G_TYPE_OBJECT)"
+
+# The directory containing the source code. Relative to $(srcdir)
+DOC_SOURCE_DIR=../../../thunarx
+
+# Extra options to supply to gtkdoc-mkdb
+MKDB_OPTIONS=--sgml-mode --output-format=xml
+
+# Extra options to supply to gtkdoc-fixref
+FIXXREF_OPTIONS=
+
+# Used for dependencies
+HFILE_GLOB=$(top_srcdir)/thunarx/*.h
+CFILE_GLOB=$(top_srcdir)/thunarx/*.c
+
+# Header files to ignore when scanning
+IGNORE_HFILES=thunarx-alias.h
+
+# Extra files to add when scanning (relative to $srcdir)
+EXTRA_HFILES=
+
+# Images to copy into HTML directory
+HTML_IMAGES = \
+ $(srcdir)/images/abstraction.png \
+ $(srcdir)/images/menu-provider.png \
+ $(srcdir)/images/say-hello.png
+
+# Extra SGML files that are included by DOC_MAIN_SGML_FILE
+content_files = \
+ version.xml
+
+# CFLAGS and LDFLAGS for compiling scan program. Only needed
+# if $(DOC_MODULE).types is non-empty.
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_builddir) \
+ $(GTK_CFLAGS)
+
+GTKDOC_LIBS = \
+ $(top_builddir)/thunarx/libthunarx-$(THUNAR_VERSION_API).la
+
+include $(top_srcdir)/gtk-doc.make
+
+# Other files to distribute
+EXTRA_DIST += \
+ version.xml.in
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/Makefile.in
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/Makefile.in 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/Makefile.in 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,631 @@
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004 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.
+
+ at SET_MAKE@
+
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+
+# -*- mode: makefile -*-
+
+####################################
+# Everything below here is generic #
+####################################
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+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@
+target_triplet = @target@
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(srcdir)/version.xml.in $(top_srcdir)/gtk-doc.make
+subdir = docs/reference/thunarx
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = version.xml
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CAIRO_REQUIRED_VERSION = @CAIRO_REQUIRED_VERSION@
+CAIRO_VERSION = @CAIRO_VERSION@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@
+ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@
+EXEEXT = @EXEEXT@
+EXO_CFLAGS = @EXO_CFLAGS@
+EXO_LIBS = @EXO_LIBS@
+EXO_REQUIRED_VERSION = @EXO_REQUIRED_VERSION@
+EXO_VERSION = @EXO_VERSION@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GCONF_CFLAGS = @GCONF_CFLAGS@
+GCONF_LIBS = @GCONF_LIBS@
+GCONF_REQUIRED_VERSION = @GCONF_REQUIRED_VERSION@
+GCONF_VERSION = @GCONF_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_REQUIRED_VERSION = @GLIB_REQUIRED_VERSION@
+GLIB_VERSION = @GLIB_VERSION@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTHREAD_REQUIRED_VERSION = @GTHREAD_REQUIRED_VERSION@
+GTHREAD_VERSION = @GTHREAD_VERSION@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+GTK_LIBS = @GTK_LIBS@
+GTK_REQUIRED_VERSION = @GTK_REQUIRED_VERSION@
+GTK_VERSION = @GTK_VERSION@
+HAVE_CAIRO_FALSE = @HAVE_CAIRO_FALSE@
+HAVE_CAIRO_TRUE = @HAVE_CAIRO_TRUE@
+HAVE_GCONF_FALSE = @HAVE_GCONF_FALSE@
+HAVE_GCONF_TRUE = @HAVE_GCONF_TRUE@
+HAVE_GNUC_VISIBILITY_FALSE = @HAVE_GNUC_VISIBILITY_FALSE@
+HAVE_GNUC_VISIBILITY_TRUE = @HAVE_GNUC_VISIBILITY_TRUE@
+HAVE_LIBSTARTUP_NOTIFICATION_FALSE = @HAVE_LIBSTARTUP_NOTIFICATION_FALSE@
+HAVE_LIBSTARTUP_NOTIFICATION_TRUE = @HAVE_LIBSTARTUP_NOTIFICATION_TRUE@
+HTML_DIR = @HTML_DIR@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LIBFAM_CFLAGS = @LIBFAM_CFLAGS@
+LIBFAM_LIBS = @LIBFAM_LIBS@
+LIBFAM_REQUIRED_VERSION = @LIBFAM_REQUIRED_VERSION@
+LIBFAM_VERSION = @LIBFAM_VERSION@
+LIBJPEG_CFLAGS = @LIBJPEG_CFLAGS@
+LIBJPEG_LIBS = @LIBJPEG_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
+LIBPNG_LIBS = @LIBPNG_LIBS@
+LIBPNG_REQUIRED_VERSION = @LIBPNG_REQUIRED_VERSION@
+LIBPNG_VERSION = @LIBPNG_VERSION@
+LIBS = @LIBS@
+LIBSTARTUP_NOTIFICATION_CFLAGS = @LIBSTARTUP_NOTIFICATION_CFLAGS@
+LIBSTARTUP_NOTIFICATION_LIBS = @LIBSTARTUP_NOTIFICATION_LIBS@
+LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION = @LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION@
+LIBSTARTUP_NOTIFICATION_VERSION = @LIBSTARTUP_NOTIFICATION_VERSION@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_CFLAGS = @PLATFORM_CFLAGS@
+PLATFORM_CPPFLAGS = @PLATFORM_CPPFLAGS@
+PLATFORM_LDFLAGS = @PLATFORM_LDFLAGS@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TDB_U32_TYPE = @TDB_U32_TYPE@
+THUNAR_VERINFO = @THUNAR_VERINFO@
+THUNAR_VERSION_API = @THUNAR_VERSION_API@
+THUNAR_VERSION_MAJOR = @THUNAR_VERSION_MAJOR@
+THUNAR_VERSION_MICRO = @THUNAR_VERSION_MICRO@
+THUNAR_VERSION_MINOR = @THUNAR_VERSION_MINOR@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_ARGS = @XGETTEXT_ARGS@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+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@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+AUTOMAKE_OPTIONS = 1.8
+
+# The name of the module.
+DOC_MODULE = thunarx
+
+# The top-level SGML file.
+DOC_MAIN_SGML_FILE = $(DOC_MODULE)-docs.sgml
+
+# Extra options to supply to gtkdoc-scan
+SCAN_OPTIONS = --deprecated-guards="EXO_DISABLE_DEPRECATED"
+
+# Extra options to pass to gtkdoc-scangobj
+SCANGOBJ_OPTIONS = --type-init-func="gtk_type_init(0);g_type_class_ref(G_TYPE_OBJECT)"
+
+# The directory containing the source code. Relative to $(srcdir)
+DOC_SOURCE_DIR = ../../../thunarx
+
+# Extra options to supply to gtkdoc-mkdb
+MKDB_OPTIONS = --sgml-mode --output-format=xml
+
+# Extra options to supply to gtkdoc-fixref
+FIXXREF_OPTIONS =
+
+# Used for dependencies
+HFILE_GLOB = $(top_srcdir)/thunarx/*.h
+CFILE_GLOB = $(top_srcdir)/thunarx/*.c
+
+# Header files to ignore when scanning
+IGNORE_HFILES = thunarx-alias.h
+
+# Extra files to add when scanning (relative to $srcdir)
+EXTRA_HFILES =
+
+# Images to copy into HTML directory
+HTML_IMAGES = \
+ $(srcdir)/images/abstraction.png \
+ $(srcdir)/images/menu-provider.png \
+ $(srcdir)/images/say-hello.png
+
+
+# Extra SGML files that are included by DOC_MAIN_SGML_FILE
+content_files = \
+ version.xml
+
+
+# CFLAGS and LDFLAGS for compiling scan program. Only needed
+# if $(DOC_MODULE).types is non-empty.
+INCLUDES = \
+ -I$(top_srcdir) \
+ -I$(top_builddir) \
+ $(GTK_CFLAGS)
+
+GTKDOC_LIBS = \
+ $(top_builddir)/thunarx/libthunarx-$(THUNAR_VERSION_API).la
+
+ at GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_CC = $(CC) $(INCLUDES) $(AM_CFLAGS) $(CFLAGS)
+ at GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_CC = $(LIBTOOL) --mode=compile $(CC) $(INCLUDES) $(AM_CFLAGS) $(CFLAGS)
+ at GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_LD = $(CC) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS)
+ at GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_LD = $(LIBTOOL) --mode=link $(CC) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS)
+
+# 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)
+
+# Other files to distribute
+EXTRA_DIST = $(content_files) $(HTML_IMAGES) $(DOC_MAIN_SGML_FILE) \
+ $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt \
+ version.xml.in
+DOC_STAMPS = scan-build.stamp tmpl-build.stamp sgml-build.stamp html-build.stamp \
+ $(srcdir)/tmpl.stamp $(srcdir)/sgml.stamp $(srcdir)/html.stamp
+
+SCANOBJ_FILES = \
+ $(DOC_MODULE).args \
+ $(DOC_MODULE).hierarchy \
+ $(DOC_MODULE).interfaces \
+ $(DOC_MODULE).prerequisites \
+ $(DOC_MODULE).signals
+
+CLEANFILES = $(SCANOBJ_FILES) $(DOC_MODULE)-unused.txt $(DOC_STAMPS)
+all: all-am
+
+.SUFFIXES:
+$(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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/reference/thunarx/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu docs/reference/thunarx/Makefile
+.PRECIOUS: 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
+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
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ $(mkdir_p) $(distdir)/$(srcdir)/images $(distdir)/../../..
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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
+all-am: Makefile all-local
+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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-libtool
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-data-local
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+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-info-am uninstall-local
+
+.PHONY: all all-am all-local check check-am clean clean-generic \
+ clean-libtool clean-local dist-hook distclean \
+ distclean-generic distclean-libtool distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-data-local install-exec \
+ install-exec-am install-info install-info-am install-man \
+ 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 uninstall uninstall-am \
+ uninstall-info-am uninstall-local
+
+
+ at ENABLE_GTK_DOC_TRUE@all-local: html-build.stamp
+
+#### scan ####
+
+ at ENABLE_GTK_DOC_TRUE@scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB)
+ at ENABLE_GTK_DOC_TRUE@ @echo '*** Scanning header files ***'
+ at ENABLE_GTK_DOC_TRUE@ @-chmod -R u+w $(srcdir)
+ at ENABLE_GTK_DOC_TRUE@ if grep -l '^..*$$' $(srcdir)/$(DOC_MODULE).types > /dev/null 2>&1 ; then \
+ at ENABLE_GTK_DOC_TRUE@ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" CFLAGS="$(GTKDOC_CFLAGS)" LDFLAGS="$(GTKDOC_LIBS)" gtkdoc-scangobj $(SCANGOBJ_OPTIONS) --module=$(DOC_MODULE) --output-dir=$(srcdir) ; \
+ at ENABLE_GTK_DOC_TRUE@ else \
+ at ENABLE_GTK_DOC_TRUE@ cd $(srcdir) ; \
+ at ENABLE_GTK_DOC_TRUE@ for i in $(SCANOBJ_FILES) ; do \
+ at ENABLE_GTK_DOC_TRUE@ test -f $$i || touch $$i ; \
+ at ENABLE_GTK_DOC_TRUE@ done \
+ at ENABLE_GTK_DOC_TRUE@ fi
+ at ENABLE_GTK_DOC_TRUE@ cd $(srcdir) && \
+ at ENABLE_GTK_DOC_TRUE@ gtkdoc-scan --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --ignore-headers="$(IGNORE_HFILES)" $(SCAN_OPTIONS) $(EXTRA_HFILES)
+ at ENABLE_GTK_DOC_TRUE@ touch scan-build.stamp
+
+ at ENABLE_GTK_DOC_TRUE@$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES): scan-build.stamp
+ at ENABLE_GTK_DOC_TRUE@ @true
+
+#### templates ####
+
+ at ENABLE_GTK_DOC_TRUE@tmpl-build.stamp: $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt
+ at ENABLE_GTK_DOC_TRUE@ @echo '*** Rebuilding template files ***'
+ at ENABLE_GTK_DOC_TRUE@ @-chmod -R u+w $(srcdir)
+ at ENABLE_GTK_DOC_TRUE@ cd $(srcdir) && gtkdoc-mktmpl --module=$(DOC_MODULE) $(MKTMPL_OPTIONS)
+ at ENABLE_GTK_DOC_TRUE@ touch tmpl-build.stamp
+
+ at ENABLE_GTK_DOC_TRUE@tmpl.stamp: tmpl-build.stamp
+ at ENABLE_GTK_DOC_TRUE@ @true
+
+#### xml ####
+
+ at ENABLE_GTK_DOC_TRUE@sgml-build.stamp: tmpl.stamp $(CFILE_GLOB) $(srcdir)/tmpl/*.sgml $(expand_content_files)
+ at ENABLE_GTK_DOC_TRUE@ @echo '*** Building XML ***'
+ at ENABLE_GTK_DOC_TRUE@ @-chmod -R u+w $(srcdir)
+ at ENABLE_GTK_DOC_TRUE@ cd $(srcdir) && \
+ at ENABLE_GTK_DOC_TRUE@ gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --output-format=xml --expand-content-files="$(expand_content_files)" $(MKDB_OPTIONS)
+ at ENABLE_GTK_DOC_TRUE@ touch sgml-build.stamp
+
+ at ENABLE_GTK_DOC_TRUE@sgml.stamp: sgml-build.stamp
+ at ENABLE_GTK_DOC_TRUE@ @true
+
+#### html ####
+
+ at ENABLE_GTK_DOC_TRUE@html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
+ at ENABLE_GTK_DOC_TRUE@ @echo '*** Building HTML ***'
+ at ENABLE_GTK_DOC_TRUE@ @-chmod -R u+w $(srcdir)
+ at ENABLE_GTK_DOC_TRUE@ rm -rf $(srcdir)/html
+ at ENABLE_GTK_DOC_TRUE@ mkdir $(srcdir)/html
+ at ENABLE_GTK_DOC_TRUE@ cd $(srcdir)/html && gtkdoc-mkhtml $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
+ at ENABLE_GTK_DOC_TRUE@ test "x$(HTML_IMAGES)" = "x" || ( cd $(srcdir) && cp $(HTML_IMAGES) html )
+ at ENABLE_GTK_DOC_TRUE@ @echo '-- Fixing Crossreferences'
+ at ENABLE_GTK_DOC_TRUE@ cd $(srcdir) && gtkdoc-fixxref --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
+ at ENABLE_GTK_DOC_TRUE@ touch html-build.stamp
+ at ENABLE_GTK_DOC_FALSE@all-local:
+
+##############
+
+clean-local:
+ rm -f *~ *.bak
+ rm -rf .libs
+
+maintainer-clean-local: clean
+ cd $(srcdir) && rm -rf xml html $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
+
+install-data-local:
+ installfiles=`echo $(srcdir)/html/*`; \
+ if test "$$installfiles" = '$(srcdir)/html/*'; \
+ then echo '-- Nothing to install' ; \
+ else \
+ $(mkinstalldirs) $(DESTDIR)$(TARGET_DIR); \
+ for i in $$installfiles; do \
+ echo '-- Installing '$$i ; \
+ $(INSTALL_DATA) $$i $(DESTDIR)$(TARGET_DIR); \
+ done; \
+ echo '-- Installing $(srcdir)/html/index.sgml' ; \
+ $(INSTALL_DATA) $(srcdir)/html/index.sgml $(DESTDIR)$(TARGET_DIR) || :; \
+ fi
+
+uninstall-local:
+ rm -f $(DESTDIR)$(TARGET_DIR)/*
+
+#
+# Require gtk-doc when making dist
+#
+ at ENABLE_GTK_DOC_TRUE@dist-check-gtkdoc:
+ at ENABLE_GTK_DOC_FALSE@dist-check-gtkdoc:
+ at ENABLE_GTK_DOC_FALSE@ @echo "*** gtk-doc must be installed and enabled in order to make dist"
+ at ENABLE_GTK_DOC_FALSE@ @false
+
+dist-hook: dist-check-gtkdoc dist-hook-local
+ mkdir $(distdir)/tmpl
+ mkdir $(distdir)/xml
+ mkdir $(distdir)/html
+ -cp $(srcdir)/tmpl/*.sgml $(distdir)/tmpl
+ -cp $(srcdir)/xml/*.xml $(distdir)/xml
+ -cp $(srcdir)/html/* $(distdir)/html
+ if test -f $(srcdir)/$(DOC_MODULE).types; then \
+ cp $(srcdir)/$(DOC_MODULE).types $(distdir)/$(DOC_MODULE).types; \
+ fi
+
+.PHONY : dist-hook-local
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
+# 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:
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/ThunarxFileInfo.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/ThunarxFileInfo.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/ThunarxFileInfo.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,492 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>ThunarxFileInfo</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar Extensions Reference Manual">
+<link rel="up" href="thunarx-abstraction-layer.html" title="Part IV. Abstraction Layer">
+<link rel="prev" href="thunarx-abstraction-layer.html" title="Part IV. Abstraction Layer">
+<link rel="next" href="ThunarxPropertyPage.html" title="ThunarxPropertyPage">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="thunarx-overview.html" title="Part I. Overview">
+<link rel="part" href="thunarx-writing-extensions.html" title="Part II. Writing Extensions">
+<link rel="part" href="thunarx-fundamentals.html" title="Part III. Fundamentals">
+<link rel="part" href="thunarx-abstraction-layer.html" title="Part IV. Abstraction Layer">
+<link rel="part" href="thunarx-providers.html" title="Part V. Providers">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="thunarx-abstraction-layer.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="thunarx-abstraction-layer.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Thunar Extensions Reference Manual</th>
+<td><a accesskey="n" href="ThunarxPropertyPage.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="ThunarxFileInfo"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">ThunarxFileInfo</span></h2>
+<p>ThunarxFileInfo — Abstraction of a file handled within the file manager</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1" lang="en">
+<a name="id2592587"></a><h2>Stability Level</h2>
+Stable, unless otherwise indicated
+</div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
+
+#include <thunarx/thunarx.h>
+
+
+ <a href="ThunarxFileInfo.html#ThunarxFileInfoIface">ThunarxFileInfoIface</a>;
+ <a href="ThunarxFileInfo.html#ThunarxFileInfo-struct">ThunarxFileInfo</a>;
+gchar* <a href="ThunarxFileInfo.html#thunarx-file-info-get-name">thunarx_file_info_get_name</a> (<a href="ThunarxFileInfo.html" title="ThunarxFileInfo">ThunarxFileInfo</a> *file_info);
+gchar* <a href="ThunarxFileInfo.html#thunarx-file-info-get-uri">thunarx_file_info_get_uri</a> (<a href="ThunarxFileInfo.html" title="ThunarxFileInfo">ThunarxFileInfo</a> *file_info);
+gchar* <a href="ThunarxFileInfo.html#thunarx-file-info-get-parent-uri">thunarx_file_info_get_parent_uri</a>
+ (<a href="ThunarxFileInfo.html" title="ThunarxFileInfo">ThunarxFileInfo</a> *file_info);
+gchar* <a href="ThunarxFileInfo.html#thunarx-file-info-get-uri-scheme">thunarx_file_info_get_uri_scheme</a>
+ (<a href="ThunarxFileInfo.html" title="ThunarxFileInfo">ThunarxFileInfo</a> *file_info);
+gchar* <a href="ThunarxFileInfo.html#thunarx-file-info-get-mime-type">thunarx_file_info_get_mime_type</a> (<a href="ThunarxFileInfo.html" title="ThunarxFileInfo">ThunarxFileInfo</a> *file_info);
+gboolean <a href="ThunarxFileInfo.html#thunarx-file-info-has-mime-type">thunarx_file_info_has_mime_type</a> (<a href="ThunarxFileInfo.html" title="ThunarxFileInfo">ThunarxFileInfo</a> *file_info,
+ const gchar *mime_type);
+gboolean <a href="ThunarxFileInfo.html#thunarx-file-info-is-directory">thunarx_file_info_is_directory</a> (<a href="ThunarxFileInfo.html" title="ThunarxFileInfo">ThunarxFileInfo</a> *file_info);
+GList* <a href="ThunarxFileInfo.html#thunarx-file-info-list-copy">thunarx_file_info_list_copy</a> (GList *file_infos);
+void <a href="ThunarxFileInfo.html#thunarx-file-info-list-free">thunarx_file_info_list_free</a> (GList *file_infos);
+
+
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2592842"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+
+ GInterface
+ +----ThunarxFileInfo
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2592859"></a><h2>Prerequisites</h2>
+<p>
+ThunarxFileInfo requires
+ GObject.</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2592874"></a><h2>Description</h2>
+<p>
+ The <span class="interface">ThunarxFileInfo</span> interface provides extensions with
+ a way to access information about a file handled within the file manager.
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2592889"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2592894"></a><h3>
+<a name="ThunarxFileInfoIface"></a>ThunarxFileInfoIface</h3>
+<a class="indexterm" name="id2592903"></a><pre class="programlisting">typedef struct {
+ gchar *(*get_name) (ThunarxFileInfo *file_info);
+
+ gchar *(*get_uri) (ThunarxFileInfo *file_info);
+ gchar *(*get_parent_uri) (ThunarxFileInfo *file_info);
+ gchar *(*get_uri_scheme) (ThunarxFileInfo *file_info);
+
+ gchar *(*get_mime_type) (ThunarxFileInfo *file_info);
+ gboolean (*has_mime_type) (ThunarxFileInfo *file_info,
+ const gchar *mime_type);
+
+ gboolean (*is_directory) (ThunarxFileInfo *file_info);
+} ThunarxFileInfoIface;
+</pre>
+<p>
+ Interface with virtual methods implemented by the file manager and accessible
+ from the extensions.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="structfield"><code>get_name</code></em> ()</span></td>
+<td>See <a href="ThunarxFileInfo.html#thunarx-file-info-get-name"><code class="function">thunarx_file_info_get_name()</code></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="structfield"><code>get_uri</code></em> ()</span></td>
+<td>See <a href="ThunarxFileInfo.html#thunarx-file-info-get-uri"><code class="function">thunarx_file_info_get_uri()</code></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="structfield"><code>get_parent_uri</code></em> ()</span></td>
+<td>See <a href="ThunarxFileInfo.html#thunarx-file-info-get-parent-uri"><code class="function">thunarx_file_info_get_parent_uri()</code></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="structfield"><code>get_uri_scheme</code></em> ()</span></td>
+<td>See <a href="ThunarxFileInfo.html#thunarx-file-info-get-uri-scheme"><code class="function">thunarx_file_info_get_uri_scheme()</code></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="structfield"><code>get_mime_type</code></em> ()</span></td>
+<td>See <a href="ThunarxFileInfo.html#thunarx-file-info-get-mime-type"><code class="function">thunarx_file_info_get_mime_type()</code></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="structfield"><code>has_mime_type</code></em> ()</span></td>
+<td>See <a href="ThunarxFileInfo.html#thunarx-file-info-has-mime-type"><code class="function">thunarx_file_info_has_mime_type()</code></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="structfield"><code>is_directory</code></em> ()</span></td>
+<td>See <a href="ThunarxFileInfo.html#thunarx-file-info-is-directory"><code class="function">thunarx_file_info_is_directory()</code></a>.
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2593217"></a><h3>
+<a name="ThunarxFileInfo-struct"></a>ThunarxFileInfo</h3>
+<a class="indexterm" name="id2593225"></a><pre class="programlisting">typedef struct _ThunarxFileInfo ThunarxFileInfo;</pre>
+<p>
+ File info type, which is mapped to the real file info implementation
+ within the file manager.
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2593240"></a><h3>
+<a name="thunarx-file-info-get-name"></a>thunarx_file_info_get_name ()</h3>
+<a class="indexterm" name="id2593249"></a><pre class="programlisting">gchar* thunarx_file_info_get_name (<a href="ThunarxFileInfo.html" title="ThunarxFileInfo">ThunarxFileInfo</a> *file_info);</pre>
+<p>
+Returns the real name of the file represented
+by <em class="parameter"><code>file_info</code></em> in the local file system encoding.
+You can use <code class="function">g_filename_display_name()</code> or similar
+functions to generate an UTF-8 version of the
+name, which is suitable for use in the user
+interface.
+</p>
+<p>
+The caller is responsible to free the returned
+string using <code class="function">g_free()</code> when no longer needed.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>file_info</code></em> :</span></td>
+<td> a <a href="ThunarxFileInfo.html" title="ThunarxFileInfo"><span class="type">ThunarxFileInfo</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the real name of the file represented
+ by <em class="parameter"><code>file_info</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2593345"></a><h3>
+<a name="thunarx-file-info-get-uri"></a>thunarx_file_info_get_uri ()</h3>
+<a class="indexterm" name="id2593353"></a><pre class="programlisting">gchar* thunarx_file_info_get_uri (<a href="ThunarxFileInfo.html" title="ThunarxFileInfo">ThunarxFileInfo</a> *file_info);</pre>
+<p>
+Returns the escaped, fully qualified URI
+of the file object represented by <em class="parameter"><code>file_info</code></em>.
+You may use <code class="function">g_filename_from_uri()</code> and similar
+functions to work with the returned URI.
+</p>
+<p>
+The caller is responsible to free the returned
+string using <code class="function">g_free()</code> when no longer needed.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>file_info</code></em> :</span></td>
+<td> a <a href="ThunarxFileInfo.html" title="ThunarxFileInfo"><span class="type">ThunarxFileInfo</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the fully qualified URI of <em class="parameter"><code>file_info</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2593447"></a><h3>
+<a name="thunarx-file-info-get-parent-uri"></a>thunarx_file_info_get_parent_uri ()</h3>
+<a class="indexterm" name="id2593459"></a><pre class="programlisting">gchar* thunarx_file_info_get_parent_uri
+ (<a href="ThunarxFileInfo.html" title="ThunarxFileInfo">ThunarxFileInfo</a> *file_info);</pre>
+<p>
+Returns the URI to the parent file of
+<em class="parameter"><code>file_info</code></em> or <code class="literal">NULL</code> if <em class="parameter"><code>file_info</code></em> has
+no parent. Note that the parent URI
+may be of a different type than the
+URI of <em class="parameter"><code>file_info</code></em>. For example, the
+parent of "file:///" is "computer:///".
+</p>
+<p>
+The caller is responsible to free the
+returned string using <code class="function">g_free()</code> when no
+longer needed.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>file_info</code></em> :</span></td>
+<td> a <a href="ThunarxFileInfo.html" title="ThunarxFileInfo"><span class="type">ThunarxFileInfo</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the parent URI for <em class="parameter"><code>file_info</code></em>
+ or <code class="literal">NULL</code>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2593566"></a><h3>
+<a name="thunarx-file-info-get-uri-scheme"></a>thunarx_file_info_get_uri_scheme ()</h3>
+<a class="indexterm" name="id2593578"></a><pre class="programlisting">gchar* thunarx_file_info_get_uri_scheme
+ (<a href="ThunarxFileInfo.html" title="ThunarxFileInfo">ThunarxFileInfo</a> *file_info);</pre>
+<p>
+Returns the URI scheme of the file represented
+by <em class="parameter"><code>file_info</code></em>. E.g. if <em class="parameter"><code>file_info</code></em> refers to the
+file "file:///usr/home", the return value will
+be "file".
+</p>
+<p>
+The caller is responsible to free the returned
+string using <code class="function">g_free()</code> when no longer needed.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>file_info</code></em> :</span></td>
+<td> a <a href="ThunarxFileInfo.html" title="ThunarxFileInfo"><span class="type">ThunarxFileInfo</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the URI scheme for <em class="parameter"><code>file_info</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2593805"></a><h3>
+<a name="thunarx-file-info-get-mime-type"></a>thunarx_file_info_get_mime_type ()</h3>
+<a class="indexterm" name="id2593815"></a><pre class="programlisting">gchar* thunarx_file_info_get_mime_type (<a href="ThunarxFileInfo.html" title="ThunarxFileInfo">ThunarxFileInfo</a> *file_info);</pre>
+<p>
+Returns the MIME-type of the file represented by
+<em class="parameter"><code>file_info</code></em> or <code class="literal">NULL</code> if no MIME-type is known for
+<em class="parameter"><code>file_info</code></em>.
+</p>
+<p>
+The caller is responsible to free the returned
+string using <code class="function">g_free()</code> when no longer needed.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>file_info</code></em> :</span></td>
+<td> a <a href="ThunarxFileInfo.html" title="ThunarxFileInfo"><span class="type">ThunarxFileInfo</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the MIME-type for <em class="parameter"><code>file_info</code></em> or
+ <code class="literal">NULL</code>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2593916"></a><h3>
+<a name="thunarx-file-info-has-mime-type"></a>thunarx_file_info_has_mime_type ()</h3>
+<a class="indexterm" name="id2593926"></a><pre class="programlisting">gboolean thunarx_file_info_has_mime_type (<a href="ThunarxFileInfo.html" title="ThunarxFileInfo">ThunarxFileInfo</a> *file_info,
+ const gchar *mime_type);</pre>
+<p>
+Checks whether <em class="parameter"><code>file_info</code></em> is of the given <em class="parameter"><code>mime_type</code></em>
+or whether the MIME-type of <em class="parameter"><code>file_info</code></em> is a subclass
+of <em class="parameter"><code>mime_type</code></em>.
+</p>
+<p>
+This is the preferred way for most extensions to check
+whether they support a given file or not, and you should
+consider using this method rather than
+<a href="ThunarxFileInfo.html#thunarx-file-info-get-mime-type"><code class="function">thunarx_file_info_get_mime_type()</code></a>. A simple example would
+be a menu extension that performs a certain action on
+text files. In this case you want to check whether a given
+<a href="ThunarxFileInfo.html" title="ThunarxFileInfo"><span class="type">ThunarxFileInfo</span></a> refers to any kind of text file, not only
+to "text/plain" (e.g. this also includes "text/xml" and
+"application/x-desktop").
+</p>
+<p>
+But you should be aware that this method may take some
+time to test whether <em class="parameter"><code>mime_type</code></em> is valid for <em class="parameter"><code>file_info</code></em>,
+so don't call it too often.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>file_info</code></em> :</span></td>
+<td> a <a href="ThunarxFileInfo.html" title="ThunarxFileInfo"><span class="type">ThunarxFileInfo</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>mime_type</code></em> :</span></td>
+<td> a MIME-type (e.g. "text/plain").
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> <code class="literal">TRUE</code> if <em class="parameter"><code>mime_type</code></em> is valid for <em class="parameter"><code>file_info</code></em>,
+ else <code class="literal">FALSE</code>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2594082"></a><h3>
+<a name="thunarx-file-info-is-directory"></a>thunarx_file_info_is_directory ()</h3>
+<a class="indexterm" name="id2594091"></a><pre class="programlisting">gboolean thunarx_file_info_is_directory (<a href="ThunarxFileInfo.html" title="ThunarxFileInfo">ThunarxFileInfo</a> *file_info);</pre>
+<p>
+Checks whether <em class="parameter"><code>file_info</code></em> refers to a directory.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>file_info</code></em> :</span></td>
+<td> a <a href="ThunarxFileInfo.html" title="ThunarxFileInfo"><span class="type">ThunarxFileInfo</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> <code class="literal">TRUE</code> if <em class="parameter"><code>file_info</code></em> is a directory.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2594168"></a><h3>
+<a name="thunarx-file-info-list-copy"></a>thunarx_file_info_list_copy ()</h3>
+<a class="indexterm" name="id2594177"></a><pre class="programlisting">GList* thunarx_file_info_list_copy (GList *file_infos);</pre>
+<p>
+Does a deep copy of <em class="parameter"><code>file_infos</code></em> and returns the
+new list.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>file_infos</code></em> :</span></td>
+<td> a <span class="type">GList</span> of <a href="ThunarxFileInfo.html" title="ThunarxFileInfo"><span class="type">ThunarxFileInfo</span></a>s.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> a copy of <em class="parameter"><code>file_infos</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2594256"></a><h3>
+<a name="thunarx-file-info-list-free"></a>thunarx_file_info_list_free ()</h3>
+<a class="indexterm" name="id2594264"></a><pre class="programlisting">void thunarx_file_info_list_free (GList *file_infos);</pre>
+<p>
+Frees the resources allocated for the <em class="parameter"><code>file_infos</code></em>
+list and decreases the reference count on the
+<a href="ThunarxFileInfo.html" title="ThunarxFileInfo"><span class="type">ThunarxFileInfo</span></a>s contained within.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><em class="parameter"><code>file_infos</code></em> :</span></td>
+<td> a <span class="type">GList</span> of <a href="ThunarxFileInfo.html" title="ThunarxFileInfo"><span class="type">ThunarxFileInfo</span></a>s.
+</td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="thunarx-abstraction-layer.html"><b><< Part IV. Abstraction Layer</b></a></td>
+<td align="right"><a accesskey="n" href="ThunarxPropertyPage.html"><b>ThunarxPropertyPage >></b></a></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/ThunarxMenuProvider.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/ThunarxMenuProvider.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/ThunarxMenuProvider.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,379 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>ThunarxMenuProvider</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar Extensions Reference Manual">
+<link rel="up" href="thunarx-providers.html" title="Part V. Providers">
+<link rel="prev" href="thunarx-providers.html" title="Part V. Providers">
+<link rel="next" href="ThunarxPropertyPageProvider.html" title="ThunarxPropertyPageProvider">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="thunarx-overview.html" title="Part I. Overview">
+<link rel="part" href="thunarx-writing-extensions.html" title="Part II. Writing Extensions">
+<link rel="part" href="thunarx-fundamentals.html" title="Part III. Fundamentals">
+<link rel="part" href="thunarx-abstraction-layer.html" title="Part IV. Abstraction Layer">
+<link rel="part" href="thunarx-providers.html" title="Part V. Providers">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="thunarx-providers.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="thunarx-providers.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Thunar Extensions Reference Manual</th>
+<td><a accesskey="n" href="ThunarxPropertyPageProvider.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="ThunarxMenuProvider"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">ThunarxMenuProvider</span></h2>
+<p>ThunarxMenuProvider — The interface to extensions that provide additional menu items</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1" lang="en">
+<a name="id2597540"></a><h2>Stability Level</h2>
+Stable, unless otherwise indicated
+</div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
+
+#include <thunarx/thunarx.h>
+
+
+ <a href="ThunarxMenuProvider.html#ThunarxMenuProviderIface">ThunarxMenuProviderIface</a>;
+ <a href="ThunarxMenuProvider.html#ThunarxMenuProvider-struct">ThunarxMenuProvider</a>;
+GList* <a href="ThunarxMenuProvider.html#thunarx-menu-provider-get-file-actions">thunarx_menu_provider_get_file_actions</a>
+ (<a href="ThunarxMenuProvider.html" title="ThunarxMenuProvider">ThunarxMenuProvider</a> *provider,
+ GtkWidget *window,
+ GList *files);
+GList* <a href="ThunarxMenuProvider.html#thunarx-menu-provider-get-folder-actions">thunarx_menu_provider_get_folder_actions</a>
+ (<a href="ThunarxMenuProvider.html" title="ThunarxMenuProvider">ThunarxMenuProvider</a> *provider,
+ GtkWidget *window,
+ <a href="ThunarxFileInfo.html" title="ThunarxFileInfo">ThunarxFileInfo</a> *folder);
+
+
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2598590"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+
+ GInterface
+ +----ThunarxMenuProvider
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2598608"></a><h2>Prerequisites</h2>
+<p>
+ThunarxMenuProvider requires
+ GObject.</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2598622"></a><h2>Description</h2>
+<p>
+ The <span class="interface">ThunarxMenuProvider</span> interface is implemented by
+ extensions which provide additional menu items that should be displayed in
+ the file or folder context menus for certain types of files.
+</p>
+<p>
+ Extensions that implement this interface should do its best to respond as
+ fast as possible to method invokations by the file manager. That said, when
+ the file manager calls the <a href="ThunarxMenuProvider.html#thunarx-menu-provider-get-file-actions"><code class="function">thunarx_menu_provider_get_file_actions()</code></a> or the
+ <a href="ThunarxMenuProvider.html#thunarx-menu-provider-get-folder-actions"><code class="function">thunarx_menu_provider_get_folder_actions()</code></a> method, the implementation in the
+ extension should use only the <a href="ThunarxFileInfo.html#thunarx-file-info-has-mime-type"><code class="function">thunarx_file_info_has_mime_type()</code></a> and
+ <a href="ThunarxFileInfo.html#thunarx-file-info-is-directory"><code class="function">thunarx_file_info_is_directory()</code></a> methods to determine the actions that should
+ be added to the file manager's context menu. Don't perform any complicated I/O
+ to determine the action list, as that would block the whole file manager process.
+</p>
+<p>
+ The GtkActions returned from the
+ <a href="ThunarxMenuProvider.html#thunarx-menu-provider-get-file-actions"><code class="function">thunarx_menu_provider_get_file_actions()</code></a> and <a href="ThunarxMenuProvider.html#thunarx-menu-provider-get-folder-actions"><code class="function">thunarx_menu_provider_get_folder_actions()</code></a>
+ methods must be namespaced with the module to avoid collision with internal file manager
+ actions and actions provided by other extensions. For example, the menu action provided
+ by the <code class="systemitem">ThunarOpenTerminal</code> extension should be
+ called <code class="literal">ThunarOpenTerminal::open-terminal</code>.
+</p>
+<div class="example">
+<a name="id2598933"></a><p class="title"><b>Example 5. Menu provider example</b></p>
+<pre class="programlisting">
+static GType hello_type;
+
+static void hello_menu_provider_init (ThunarxMenuProviderIface *iface);
+static GList *hello_get_file_actions (ThunarxMenuProvider *provider,
+ GtkWidget *window,
+ GList *files);
+
+static void
+hello_register_type (GTypeModule *module)
+{
+ static const GTypeInfo info =
+ {
+ sizeof (HelloClass),
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ sizeof (Hello),
+ 0,
+ NULL,
+ NULL,
+ };
+
+ static const GInterfaceInfo menu_provider_info =
+ {
+ (GInterfaceInitFunc) hello_menu_provider_init,
+ NULL,
+ NULL,
+ };
+
+ hello_type = g_type_module_register_type (module, G_TYPE_OBJECT,
+ "Hello", &info, 0);
+ g_type_module_add_interface (module, hello_type,
+ THUNARX_TYPE_MENU_PROVIDER,
+ &menu_provider_info);
+}
+
+static void
+hello_menu_provider_init (ThunarxMenuProviderIface *iface)
+{
+ iface->get_file_actions = hello_get_file_actions;
+}
+
+static void
+hello_activated (GtkAction *action,
+ GtkWidget *window)
+{
+ GtkWidget *dialog;
+
+ dialog = gtk_message_dialog_new (GTK_WINDOW (window),
+ GTK_DIALOG_MODAL
+ | GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_INFO,
+ GTK_BUTTONS_OK,
+ "Hello World!");
+ gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
+}
+
+static GList*
+hello_get_file_actions (ThunarxMenuProvider *provider,
+ GtkWidget *window,
+ GList *files)
+{
+ GtkAction *action;
+
+ action = gtk_action_new ("Hello::say-hello",
+ "Say hello", "Say hello",
+ NULL);
+ g_signal_connect (G_OBJECT (action), "activate",
+ G_CALLBACK (hello_activated),
+ window);
+
+ return g_list_append (NULL, action);
+}</pre>
+<p>
+ The above example will add an item <span class="guimenu"><span class="guimenuitem">Say hello</span></span>
+ to the file context menus as shown in the picture below:
+ </p>
+<p>
+ <img src="say-hello.png">
+ </p>
+</div>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2598968"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2598973"></a><h3>
+<a name="ThunarxMenuProviderIface"></a>ThunarxMenuProviderIface</h3>
+<a class="indexterm" name="id2599118"></a><pre class="programlisting">typedef struct {
+ GList *(*get_file_actions) (ThunarxMenuProvider *provider,
+ GtkWidget *window,
+ GList *files);
+
+ GList *(*get_folder_actions) (ThunarxMenuProvider *provider,
+ GtkWidget *window,
+ ThunarxFileInfo *folder);
+} ThunarxMenuProviderIface;
+</pre>
+<p>
+ Interface with virtual methods implemented by extensions that provide
+ additional menu items for the file manager's context menus.
+</p>
+<p>
+ Providers don't need to implement all of the virtual methods listed in
+ the interface.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="structfield"><code>get_file_actions</code></em> ()</span></td>
+<td>See <a href="ThunarxMenuProvider.html#thunarx-menu-provider-get-file-actions"><code class="function">thunarx_menu_provider_get_file_actions()</code></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="structfield"><code>get_folder_actions</code></em> ()</span></td>
+<td>See <a href="ThunarxMenuProvider.html#thunarx-menu-provider-get-folder-actions"><code class="function">thunarx_menu_provider_get_folder_actions()</code></a>.
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2599189"></a><h3>
+<a name="ThunarxMenuProvider-struct"></a>ThunarxMenuProvider</h3>
+<a class="indexterm" name="id2599197"></a><pre class="programlisting">typedef struct _ThunarxMenuProvider ThunarxMenuProvider;</pre>
+<p>
+ Menu provider type.
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2599212"></a><h3>
+<a name="thunarx-menu-provider-get-file-actions"></a>thunarx_menu_provider_get_file_actions ()</h3>
+<a class="indexterm" name="id2599224"></a><pre class="programlisting">GList* thunarx_menu_provider_get_file_actions
+ (<a href="ThunarxMenuProvider.html" title="ThunarxMenuProvider">ThunarxMenuProvider</a> *provider,
+ GtkWidget *window,
+ GList *files);</pre>
+<p>
+Returns the list of <span class="type">GtkAction</span>s that <em class="parameter"><code>provider</code></em> has to offer for
+<em class="parameter"><code>files</code></em>.
+</p>
+<p>
+As a special note, this method automatically takes a reference on the
+<em class="parameter"><code>provider</code></em> for every <span class="type">GtkAction</span> object returned from the real implementation
+of this method in <em class="parameter"><code>provider</code></em>. This is to make sure that the extension stays
+in memory for atleast the time that the actions are used. If the extension
+wants to stay in memory for a longer time, it'll need to take care of this
+itself (e.g. by taking an additional reference on the <em class="parameter"><code>provider</code></em> itself,
+that's released at a later time).
+</p>
+<p>
+The caller is responsible to free the returned list of actions using
+something like this when no longer needed:
+</p>
+<div class="informalexample"><pre class="programlisting">
+g_list_foreach (list, (GFunc) g_object_unref, NULL);
+g_list_free (list);
+</pre></div>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>provider</code></em> :</span></td>
+<td> a <a href="ThunarxMenuProvider.html" title="ThunarxMenuProvider"><span class="type">ThunarxMenuProvider</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>window</code></em> :</span></td>
+<td> the <span class="type">GtkWindow</span> within which the actions will be used.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>files</code></em> :</span></td>
+<td> the list of <a href="ThunarxFileInfo.html" title="ThunarxFileInfo"><span class="type">ThunarxFileInfo</span></a>s to which the actions will be applied.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the list of <span class="type">GtkAction</span>s that <em class="parameter"><code>provider</code></em> has to offer
+ for <em class="parameter"><code>files</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2599412"></a><h3>
+<a name="thunarx-menu-provider-get-folder-actions"></a>thunarx_menu_provider_get_folder_actions ()</h3>
+<a class="indexterm" name="id2599424"></a><pre class="programlisting">GList* thunarx_menu_provider_get_folder_actions
+ (<a href="ThunarxMenuProvider.html" title="ThunarxMenuProvider">ThunarxMenuProvider</a> *provider,
+ GtkWidget *window,
+ <a href="ThunarxFileInfo.html" title="ThunarxFileInfo">ThunarxFileInfo</a> *folder);</pre>
+<p>
+Returns the list of <span class="type">GtkAction</span>s that <em class="parameter"><code>provider</code></em> has to offer for
+<em class="parameter"><code>folder</code></em>.
+</p>
+<p>
+As a special note, this method automatically takes a reference on the
+<em class="parameter"><code>provider</code></em> for every <span class="type">GtkAction</span> object returned from the real implementation
+of this method in <em class="parameter"><code>provider</code></em>. This is to make sure that the extension stays
+in memory for atleast the time that the actions are used. If the extension
+wants to stay in memory for a longer time, it'll need to take care of this
+itself (e.g. by taking an additional reference on the <em class="parameter"><code>provider</code></em> itself,
+that's released at a later time).
+</p>
+<p>
+The caller is responsible to free the returned list of actions using
+something like this when no longer needed:
+</p>
+<div class="informalexample"><pre class="programlisting">
+g_list_foreach (list, (GFunc) g_object_unref, NULL);
+g_list_free (list);
+</pre></div>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>provider</code></em> :</span></td>
+<td> a <a href="ThunarxMenuProvider.html" title="ThunarxMenuProvider"><span class="type">ThunarxMenuProvider</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>window</code></em> :</span></td>
+<td> the <span class="type">GtkWindow</span> within which the actions will be used.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>folder</code></em> :</span></td>
+<td> the folder to which the actions should will be applied.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the list of <span class="type">GtkAction</span>s that <em class="parameter"><code>provider</code></em> has to offer
+ for <em class="parameter"><code>folder</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2599605"></a><h2>See Also</h2>
+<p>
+ The description of the <a href="ThunarxFileInfo.html" title="ThunarxFileInfo">ThunarxFileInfo</a>
+ interface.
+</p>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="thunarx-providers.html"><b><< Part V. Providers</b></a></td>
+<td align="right"><a accesskey="n" href="ThunarxPropertyPageProvider.html"><b>ThunarxPropertyPageProvider >></b></a></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/ThunarxPropertyPage.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/ThunarxPropertyPage.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/ThunarxPropertyPage.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,321 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>ThunarxPropertyPage</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar Extensions Reference Manual">
+<link rel="up" href="thunarx-abstraction-layer.html" title="Part IV. Abstraction Layer">
+<link rel="prev" href="ThunarxFileInfo.html" title="ThunarxFileInfo">
+<link rel="next" href="thunarx-providers.html" title="Part V. Providers">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="thunarx-overview.html" title="Part I. Overview">
+<link rel="part" href="thunarx-writing-extensions.html" title="Part II. Writing Extensions">
+<link rel="part" href="thunarx-fundamentals.html" title="Part III. Fundamentals">
+<link rel="part" href="thunarx-abstraction-layer.html" title="Part IV. Abstraction Layer">
+<link rel="part" href="thunarx-providers.html" title="Part V. Providers">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="ThunarxFileInfo.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="thunarx-abstraction-layer.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Thunar Extensions Reference Manual</th>
+<td><a accesskey="n" href="thunarx-providers.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="ThunarxPropertyPage"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">ThunarxPropertyPage</span></h2>
+<p>ThunarxPropertyPage — Base class for pages added to the properties dialog</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1" lang="en">
+<a name="id2596074"></a><h2>Stability Level</h2>
+Stable, unless otherwise indicated
+</div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
+
+#include <thunarx/thunarx.h>
+
+
+ <a href="ThunarxPropertyPage.html#ThunarxPropertyPage-struct">ThunarxPropertyPage</a>;
+GtkWidget* <a href="ThunarxPropertyPage.html#thunarx-property-page-new">thunarx_property_page_new</a> (const gchar *label);
+GtkWidget* <a href="ThunarxPropertyPage.html#thunarx-property-page-new-with-label-widget">thunarx_property_page_new_with_label_widget</a>
+ (GtkWidget *label_widget);
+const gchar* <a href="ThunarxPropertyPage.html#thunarx-property-page-get-label">thunarx_property_page_get_label</a>
+ (<a href="ThunarxPropertyPage.html" title="ThunarxPropertyPage">ThunarxPropertyPage</a> *property_page);
+void <a href="ThunarxPropertyPage.html#thunarx-property-page-set-label">thunarx_property_page_set_label</a> (<a href="ThunarxPropertyPage.html" title="ThunarxPropertyPage">ThunarxPropertyPage</a> *property_page,
+ const gchar *label);
+GtkWidget* <a href="ThunarxPropertyPage.html#thunarx-property-page-get-label-widget">thunarx_property_page_get_label_widget</a>
+ (<a href="ThunarxPropertyPage.html" title="ThunarxPropertyPage">ThunarxPropertyPage</a> *property_page);
+void <a href="ThunarxPropertyPage.html#thunarx-property-page-set-label-widget">thunarx_property_page_set_label_widget</a>
+ (<a href="ThunarxPropertyPage.html" title="ThunarxPropertyPage">ThunarxPropertyPage</a> *property_page,
+ GtkWidget *label_widget);
+
+
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2596288"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+
+ GObject
+ +----GtkObject
+ +----GtkWidget
+ +----GtkContainer
+ +----GtkBin
+ +----ThunarxPropertyPage
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2596327"></a><h2>Implemented Interfaces</h2>
+<p>
+ThunarxPropertyPage implements
+ AtkImplementorIface.</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2596343"></a><h2>Properties</h2>
+<pre class="synopsis">
+
+ "<a href="ThunarxPropertyPage.html#ThunarxPropertyPage--label">label</a>" gchararray : Read / Write
+ "<a href="ThunarxPropertyPage.html#ThunarxPropertyPage--label-widget">label-widget</a>" GtkWidget : Read / Write
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2596380"></a><h2>Description</h2>
+<p>
+ The class for pages that can be added to Thunar's file properties dialog
+ by extensions implementing the <a href="ThunarxPropertyPageProvider.html" title="ThunarxPropertyPageProvider"><span class="type">ThunarxPropertyPageProvider</span></a> interface.
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2596396"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2596402"></a><h3>
+<a name="ThunarxPropertyPage-struct"></a>ThunarxPropertyPage</h3>
+<a class="indexterm" name="id2596410"></a><pre class="programlisting">typedef struct _ThunarxPropertyPage ThunarxPropertyPage;</pre>
+<p>
+ Base instance type for property pages.
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2596426"></a><h3>
+<a name="thunarx-property-page-new"></a>thunarx_property_page_new ()</h3>
+<a class="indexterm" name="id2596435"></a><pre class="programlisting">GtkWidget* thunarx_property_page_new (const gchar *label);</pre>
+<p>
+Allocates a new <a href="ThunarxPropertyPage.html" title="ThunarxPropertyPage"><span class="type">ThunarxPropertyPage</span></a> widget and sets its label to the
+specified <em class="parameter"><code>label</code></em>. If <em class="parameter"><code>label</code></em> is <code class="literal">NULL</code>, the label is omitted.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>label</code></em> :</span></td>
+<td> the text to use as the label of the page.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the newly allocated <a href="ThunarxPropertyPage.html" title="ThunarxPropertyPage"><span class="type">ThunarxPropertyPage</span></a>
+ widget.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2596520"></a><h3>
+<a name="thunarx-property-page-new-with-label-widget"></a>thunarx_property_page_new_with_label_widget ()</h3>
+<a class="indexterm" name="id2596532"></a><pre class="programlisting">GtkWidget* thunarx_property_page_new_with_label_widget
+ (GtkWidget *label_widget);</pre>
+<p>
+Allocates a new <a href="ThunarxPropertyPage.html" title="ThunarxPropertyPage"><span class="type">ThunarxPropertyPage</span></a> widget and sets its label to
+the specified <em class="parameter"><code>label_widget</code></em>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>label_widget</code></em> :</span></td>
+<td> a <span class="type">GtkWidget</span>, which should be used as label.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the newly allocated <a href="ThunarxPropertyPage.html" title="ThunarxPropertyPage"><span class="type">ThunarxPropertyPage</span></a> widget.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2596613"></a><h3>
+<a name="thunarx-property-page-get-label"></a>thunarx_property_page_get_label ()</h3>
+<a class="indexterm" name="id2596622"></a><pre class="programlisting">const gchar* thunarx_property_page_get_label
+ (<a href="ThunarxPropertyPage.html" title="ThunarxPropertyPage">ThunarxPropertyPage</a> *property_page);</pre>
+<p>
+If the <em class="parameter"><code>property_page</code></em>'s label widget is a <span class="type">GtkLabel</span>, returns the text
+in the label widget (the <em class="parameter"><code>property_page</code></em> will have a <span class="type">GtkLabel</span> for the
+label widget if a non-<code class="literal">NULL</code> argument was passed to <a href="ThunarxPropertyPage.html#thunarx-property-page-new"><code class="function">thunarx_property_page_new()</code></a>).</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>property_page</code></em> :</span></td>
+<td> a <a href="ThunarxPropertyPage.html" title="ThunarxPropertyPage"><span class="type">ThunarxPropertyPage</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the text in the label or <code class="literal">NULL</code> if there was no label widget or
+ the label widget was not a <span class="type">GtkLabel</span>. The returned string is
+ owned by the <em class="parameter"><code>property_page</code></em> and must not be modified or freed.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2596877"></a><h3>
+<a name="thunarx-property-page-set-label"></a>thunarx_property_page_set_label ()</h3>
+<a class="indexterm" name="id2596887"></a><pre class="programlisting">void thunarx_property_page_set_label (<a href="ThunarxPropertyPage.html" title="ThunarxPropertyPage">ThunarxPropertyPage</a> *property_page,
+ const gchar *label);</pre>
+<p>
+Sets the text of the label. If <em class="parameter"><code>label</code></em> is <code class="literal">NULL</code>, the current label is
+removed.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>property_page</code></em> :</span></td>
+<td> a <a href="ThunarxPropertyPage.html" title="ThunarxPropertyPage"><span class="type">ThunarxPropertyPage</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>label</code></em> :</span></td>
+<td> the text to use as the label of the page.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2596969"></a><h3>
+<a name="thunarx-property-page-get-label-widget"></a>thunarx_property_page_get_label_widget ()</h3>
+<a class="indexterm" name="id2596981"></a><pre class="programlisting">GtkWidget* thunarx_property_page_get_label_widget
+ (<a href="ThunarxPropertyPage.html" title="ThunarxPropertyPage">ThunarxPropertyPage</a> *property_page);</pre>
+<p>
+Returns the label widget for the <em class="parameter"><code>property_page</code></em>. See
+<a href="ThunarxPropertyPage.html#thunarx-property-page-set-label-widget"><code class="function">thunarx_property_page_set_label_widget()</code></a>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>property_page</code></em> :</span></td>
+<td> a <a href="ThunarxPropertyPage.html" title="ThunarxPropertyPage"><span class="type">ThunarxPropertyPage</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the label widget or <code class="literal">NULL</code> if there is none.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2597065"></a><h3>
+<a name="thunarx-property-page-set-label-widget"></a>thunarx_property_page_set_label_widget ()</h3>
+<a class="indexterm" name="id2597077"></a><pre class="programlisting">void thunarx_property_page_set_label_widget
+ (<a href="ThunarxPropertyPage.html" title="ThunarxPropertyPage">ThunarxPropertyPage</a> *property_page,
+ GtkWidget *label_widget);</pre>
+<p>
+Sets the label widget for the <em class="parameter"><code>property_page</code></em>. This is the widget
+that will appear in the notebook header for the <em class="parameter"><code>property_page</code></em>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>property_page</code></em> :</span></td>
+<td> a <a href="ThunarxPropertyPage.html" title="ThunarxPropertyPage"><span class="type">ThunarxPropertyPage</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>label_widget</code></em> :</span></td>
+<td> the new label widget.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2597159"></a><h2>Properties</h2>
+<div class="refsect2" lang="en">
+<a name="id2597164"></a><h3>
+<a name="ThunarxPropertyPage--label"></a>The "<code class="literal">label</code>" property</h3>
+<pre class="programlisting"> "label" gchararray : Read / Write</pre>
+<p>Text of the page's label.</p>
+<p>Default value: NULL</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2597194"></a><h3>
+<a name="ThunarxPropertyPage--label-widget"></a>The "<code class="literal">label-widget</code>" property</h3>
+<pre class="programlisting"> "label-widget" GtkWidget : Read / Write</pre>
+<p>A widget to display in place of the usual page label.</p>
+</div>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2597226"></a><h2>See Also</h2>
+<p>
+ The description of the <a href="ThunarxPropertyPageProvider.html" title="ThunarxPropertyPageProvider"><span class="type">ThunarxPropertyPageProvider</span></a> interface.
+</p>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="ThunarxFileInfo.html"><b><< ThunarxFileInfo</b></a></td>
+<td align="right"><a accesskey="n" href="thunarx-providers.html"><b>Part V. Providers >></b></a></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/ThunarxPropertyPageProvider.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/ThunarxPropertyPageProvider.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/ThunarxPropertyPageProvider.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,183 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>ThunarxPropertyPageProvider</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar Extensions Reference Manual">
+<link rel="up" href="thunarx-providers.html" title="Part V. Providers">
+<link rel="prev" href="ThunarxMenuProvider.html" title="ThunarxMenuProvider">
+<link rel="next" href="ix01.html" title="Index">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="thunarx-overview.html" title="Part I. Overview">
+<link rel="part" href="thunarx-writing-extensions.html" title="Part II. Writing Extensions">
+<link rel="part" href="thunarx-fundamentals.html" title="Part III. Fundamentals">
+<link rel="part" href="thunarx-abstraction-layer.html" title="Part IV. Abstraction Layer">
+<link rel="part" href="thunarx-providers.html" title="Part V. Providers">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="ThunarxMenuProvider.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="thunarx-providers.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Thunar Extensions Reference Manual</th>
+<td><a accesskey="n" href="ix01.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="ThunarxPropertyPageProvider"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">ThunarxPropertyPageProvider</span></h2>
+<p>ThunarxPropertyPageProvider — The interface to extensions that provide additional property pages</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1" lang="en">
+<a name="id2599765"></a><h2>Stability Level</h2>
+Stable, unless otherwise indicated
+</div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
+
+#include <thunarx/thunarx.h>
+
+
+ <a href="ThunarxPropertyPageProvider.html#ThunarxPropertyPageProvider-struct">ThunarxPropertyPageProvider</a>;
+ <a href="ThunarxPropertyPageProvider.html#ThunarxPropertyPageProviderIface">ThunarxPropertyPageProviderIface</a>;
+GList* <a href="ThunarxPropertyPageProvider.html#thunarx-property-page-provider-get-pages">thunarx_property_page_provider_get_pages</a>
+ (<a href="ThunarxPropertyPageProvider.html" title="ThunarxPropertyPageProvider">ThunarxPropertyPageProvider</a> *provider,
+ GList *files);
+
+
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2600781"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+
+ GInterface
+ +----ThunarxPropertyPageProvider
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2600800"></a><h2>Prerequisites</h2>
+<p>
+ThunarxPropertyPageProvider requires
+ GObject.</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2600816"></a><h2>Description</h2>
+<p>
+ To add a property page to the file properties dialog, extensions must implement the
+ <span class="type">ThunarxPropertyPageProvider</span> interface. This interface has only one virtual
+ method, <code class="function">get_pages</code>, that is passed a list of <a href="ThunarxFileInfo.html" title="ThunarxFileInfo"><span class="type">ThunarxFileInfo</span></a> objects and returns a list
+ of <a href="ThunarxPropertyPage.html" title="ThunarxPropertyPage"><span class="type">ThunarxPropertyPage</span></a> objects.
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2600849"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2600854"></a><h3>
+<a name="ThunarxPropertyPageProvider-struct"></a>ThunarxPropertyPageProvider</h3>
+<a class="indexterm" name="id2600865"></a><pre class="programlisting">typedef struct _ThunarxPropertyPageProvider ThunarxPropertyPageProvider;</pre>
+<p>
+ Property page provider type.
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2600880"></a><h3>
+<a name="ThunarxPropertyPageProviderIface"></a>ThunarxPropertyPageProviderIface</h3>
+<a class="indexterm" name="id2600960"></a><pre class="programlisting">typedef struct {
+ GList *(*get_pages) (ThunarxPropertyPageProvider *provider,
+ GList *files);
+} ThunarxPropertyPageProviderIface;
+</pre>
+<p>
+ Interface with virtual methods implemented by extensions that provide
+ additional pages for the file properties dialog.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><em class="structfield"><code>get_pages</code></em> ()</span></td>
+<td>See <a href="ThunarxPropertyPageProvider.html#thunarx-property-page-provider-get-pages"><code class="function">thunarx_property_page_provider_get_pages()</code></a>.
+
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2601003"></a><h3>
+<a name="thunarx-property-page-provider-get-pages"></a>thunarx_property_page_provider_get_pages ()</h3>
+<a class="indexterm" name="id2601015"></a><pre class="programlisting">GList* thunarx_property_page_provider_get_pages
+ (<a href="ThunarxPropertyPageProvider.html" title="ThunarxPropertyPageProvider">ThunarxPropertyPageProvider</a> *provider,
+ GList *files);</pre>
+<p>
+Returns the list of <a href="ThunarxPropertyPage.html" title="ThunarxPropertyPage"><span class="type">ThunarxPropertyPage</span></a>s that <em class="parameter"><code>provider</code></em> has to offer for <em class="parameter"><code>files</code></em>.
+</p>
+<p>
+As a special note, this method automatically takes a reference on the
+<em class="parameter"><code>provider</code></em> for every <a href="ThunarxPropertyPage.html" title="ThunarxPropertyPage"><span class="type">ThunarxPropertyPage</span></a> object returned from the real implementation
+of this method in <em class="parameter"><code>provider</code></em>. This is to make sure that the extension stays
+in memory for atleast the time that the pages are used. If the extension
+wants to stay in memory for a longer time, it'll need to take care of this
+itself (e.g. by taking an additional reference on the <em class="parameter"><code>provider</code></em> itself,
+that's released at a later time).
+</p>
+<p>
+The caller is responsible to free the returned list of pages using
+something like this when no longer needed:
+</p>
+<div class="informalexample"><pre class="programlisting">
+g_list_foreach (list, (GFunc) g_object_ref, NULL);
+g_list_foreach (list, (GFunc) gtk_object_sink, NULL);
+g_list_foreach (list, (GFunc) g_object_unref, NULL);
+g_list_free (list);
+</pre></div>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>provider</code></em> :</span></td>
+<td> a <a href="ThunarxPropertyPageProvider.html" title="ThunarxPropertyPageProvider"><span class="type">ThunarxPropertyPageProvider</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>files</code></em> :</span></td>
+<td> the list of <a href="ThunarxFileInfo.html" title="ThunarxFileInfo"><span class="type">ThunarxFileInfo</span></a>s for which a properties dialog will be displayed.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> the list of <a href="ThunarxPropertyPage.html" title="ThunarxPropertyPage"><span class="type">ThunarxPropertyPage</span></a>s that <em class="parameter"><code>provider</code></em> has to offer
+ for <em class="parameter"><code>files</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2601245"></a><h2>See Also</h2>
+<p>
+ The description of the <a href="ThunarxPropertyPage.html" title="ThunarxPropertyPage"><span class="type">ThunarxPropertyPage</span></a> class.
+</p>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="ThunarxMenuProvider.html"><b><< ThunarxMenuProvider</b></a></td>
+<td align="right"><a accesskey="n" href="ix01.html"><b>Index >></b></a></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/abstraction.png
===================================================================
(Binary files differ)
Property changes on: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/abstraction.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/home.png
===================================================================
(Binary files differ)
Property changes on: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/home.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/index.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/index.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/index.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,83 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Thunar Extensions Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar Extensions Reference Manual">
+<link rel="next" href="thunarx-overview.html" title="Part I. Overview">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="thunarx-overview.html" title="Part I. Overview">
+<link rel="part" href="thunarx-writing-extensions.html" title="Part II. Writing Extensions">
+<link rel="part" href="thunarx-fundamentals.html" title="Part III. Fundamentals">
+<link rel="part" href="thunarx-abstraction-layer.html" title="Part IV. Abstraction Layer">
+<link rel="part" href="thunarx-providers.html" title="Part V. Providers">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="book" lang="en">
+<div class="titlepage">
+<div>
+<div><table class="navigation" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">Thunar Extensions Reference Manual</p></th></tr></table></div>
+<div><div class="authorgroup"><div class="author">
+<h3 class="author">
+<span class="firstname">Benedikt</span> <span class="surname">Meurer</span>
+</h3>
+<div class="affiliation">
+<div class="address"><p><code class="email"><<a href="mailto:benny at xfce.org">benny at xfce.org</a>></code></p></div>
+<span class="orgname">os-cillation<br></span><span class="orgdiv">System development<br></span><span class="jobtitle">Software developer<br></span>
+</div>
+</div></div></div>
+<div><p class="releaseinfo">Version 0.1.4pre-alpha-r18844
+</p></div>
+<div><p class="copyright">Copyright © 2005 Benedikt Meurer</p></div>
+<div><div class="legalnotice">
+<a name="legalnotice"></a><p>
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.1 or
+ any later version published by the Free Software Foundation; with no
+ Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+ Texts. The complete license text is available from the <a href="http://www.gnu.org/" target="_top">Free Software Foundation</a>.
+ </p>
+</div></div>
+<div><p class="pubdate">September 2005</p></div>
+</div>
+<hr>
+</div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="part"><a href="thunarx-overview.html">I. Overview</a></span></dt>
+<dt><span class="part"><a href="thunarx-writing-extensions.html">II. Writing Extensions</a></span></dt>
+<dt><span class="part"><a href="thunarx-fundamentals.html">III. Fundamentals</a></span></dt>
+<dd><dl><dt>
+<span class="refentrytitle"><a href="thunarx-Variables-and-functions-to-check-the-library-version.html">Version information</a></span><span class="refpurpose"> - Variables and functions to check the library version</span>
+</dt></dl></dd>
+<dt><span class="part"><a href="thunarx-abstraction-layer.html">IV. Abstraction Layer</a></span></dt>
+<dd><dl>
+<dt>
+<span class="refentrytitle"><a href="ThunarxFileInfo.html">ThunarxFileInfo</a></span><span class="refpurpose"> - Abstraction of a file handled within the file manager</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="ThunarxPropertyPage.html">ThunarxPropertyPage</a></span><span class="refpurpose"> - Base class for pages added to the properties dialog</span>
+</dt>
+</dl></dd>
+<dt><span class="part"><a href="thunarx-providers.html">V. Providers</a></span></dt>
+<dd><dl>
+<dt>
+<span class="refentrytitle"><a href="ThunarxMenuProvider.html">ThunarxMenuProvider</a></span><span class="refpurpose"> - The interface to extensions that provide additional menu items</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="ThunarxPropertyPageProvider.html">ThunarxPropertyPageProvider</a></span><span class="refpurpose"> - The interface to extensions that provide additional property pages</span>
+</dt>
+</dl></dd>
+<dt><span class="index"><a href="ix01.html">Index</a></span></dt>
+</dl>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"></td>
+<td align="right"><a accesskey="n" href="thunarx-overview.html"><b>Part I. Overview >></b></a></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/index.sgml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/index.sgml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/index.sgml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,40 @@
+<ANCHOR id="thunarx-Variables-and-functions-to-check-the-library-version" href="thunarx/thunarx-Variables-and-functions-to-check-the-library-version.html">
+<ANCHOR id="thunarx-major-version" href="thunarx/thunarx-Variables-and-functions-to-check-the-library-version.html#thunarx-major-version">
+<ANCHOR id="thunarx-minor-version" href="thunarx/thunarx-Variables-and-functions-to-check-the-library-version.html#thunarx-minor-version">
+<ANCHOR id="thunarx-micro-version" href="thunarx/thunarx-Variables-and-functions-to-check-the-library-version.html#thunarx-micro-version">
+<ANCHOR id="thunarx-check-version" href="thunarx/thunarx-Variables-and-functions-to-check-the-library-version.html#thunarx-check-version">
+<ANCHOR id="THUNARX-MAJOR-VERSION:CAPS" href="thunarx/thunarx-Variables-and-functions-to-check-the-library-version.html#THUNARX-MAJOR-VERSION:CAPS">
+<ANCHOR id="THUNARX-MINOR-VERSION:CAPS" href="thunarx/thunarx-Variables-and-functions-to-check-the-library-version.html#THUNARX-MINOR-VERSION:CAPS">
+<ANCHOR id="THUNARX-MICRO-VERSION:CAPS" href="thunarx/thunarx-Variables-and-functions-to-check-the-library-version.html#THUNARX-MICRO-VERSION:CAPS">
+<ANCHOR id="THUNARX-CHECK-VERSION:CAPS" href="thunarx/thunarx-Variables-and-functions-to-check-the-library-version.html#THUNARX-CHECK-VERSION:CAPS">
+<ANCHOR id="ThunarxFileInfo" href="thunarx/ThunarxFileInfo.html">
+<ANCHOR id="ThunarxFileInfoIface" href="thunarx/ThunarxFileInfo.html#ThunarxFileInfoIface">
+<ANCHOR id="ThunarxFileInfo-struct" href="thunarx/ThunarxFileInfo.html#ThunarxFileInfo-struct">
+<ANCHOR id="thunarx-file-info-get-name" href="thunarx/ThunarxFileInfo.html#thunarx-file-info-get-name">
+<ANCHOR id="thunarx-file-info-get-uri" href="thunarx/ThunarxFileInfo.html#thunarx-file-info-get-uri">
+<ANCHOR id="thunarx-file-info-get-parent-uri" href="thunarx/ThunarxFileInfo.html#thunarx-file-info-get-parent-uri">
+<ANCHOR id="thunarx-file-info-get-uri-scheme" href="thunarx/ThunarxFileInfo.html#thunarx-file-info-get-uri-scheme">
+<ANCHOR id="thunarx-file-info-get-mime-type" href="thunarx/ThunarxFileInfo.html#thunarx-file-info-get-mime-type">
+<ANCHOR id="thunarx-file-info-has-mime-type" href="thunarx/ThunarxFileInfo.html#thunarx-file-info-has-mime-type">
+<ANCHOR id="thunarx-file-info-is-directory" href="thunarx/ThunarxFileInfo.html#thunarx-file-info-is-directory">
+<ANCHOR id="thunarx-file-info-list-copy" href="thunarx/ThunarxFileInfo.html#thunarx-file-info-list-copy">
+<ANCHOR id="thunarx-file-info-list-free" href="thunarx/ThunarxFileInfo.html#thunarx-file-info-list-free">
+<ANCHOR id="ThunarxPropertyPage" href="thunarx/ThunarxPropertyPage.html">
+<ANCHOR id="ThunarxPropertyPage-struct" href="thunarx/ThunarxPropertyPage.html#ThunarxPropertyPage-struct">
+<ANCHOR id="thunarx-property-page-new" href="thunarx/ThunarxPropertyPage.html#thunarx-property-page-new">
+<ANCHOR id="thunarx-property-page-new-with-label-widget" href="thunarx/ThunarxPropertyPage.html#thunarx-property-page-new-with-label-widget">
+<ANCHOR id="thunarx-property-page-get-label" href="thunarx/ThunarxPropertyPage.html#thunarx-property-page-get-label">
+<ANCHOR id="thunarx-property-page-set-label" href="thunarx/ThunarxPropertyPage.html#thunarx-property-page-set-label">
+<ANCHOR id="thunarx-property-page-get-label-widget" href="thunarx/ThunarxPropertyPage.html#thunarx-property-page-get-label-widget">
+<ANCHOR id="thunarx-property-page-set-label-widget" href="thunarx/ThunarxPropertyPage.html#thunarx-property-page-set-label-widget">
+<ANCHOR id="ThunarxPropertyPage--label" href="thunarx/ThunarxPropertyPage.html#ThunarxPropertyPage--label">
+<ANCHOR id="ThunarxPropertyPage--label-widget" href="thunarx/ThunarxPropertyPage.html#ThunarxPropertyPage--label-widget">
+<ANCHOR id="ThunarxMenuProvider" href="thunarx/ThunarxMenuProvider.html">
+<ANCHOR id="ThunarxMenuProviderIface" href="thunarx/ThunarxMenuProvider.html#ThunarxMenuProviderIface">
+<ANCHOR id="ThunarxMenuProvider-struct" href="thunarx/ThunarxMenuProvider.html#ThunarxMenuProvider-struct">
+<ANCHOR id="thunarx-menu-provider-get-file-actions" href="thunarx/ThunarxMenuProvider.html#thunarx-menu-provider-get-file-actions">
+<ANCHOR id="thunarx-menu-provider-get-folder-actions" href="thunarx/ThunarxMenuProvider.html#thunarx-menu-provider-get-folder-actions">
+<ANCHOR id="ThunarxPropertyPageProvider" href="thunarx/ThunarxPropertyPageProvider.html">
+<ANCHOR id="ThunarxPropertyPageProvider-struct" href="thunarx/ThunarxPropertyPageProvider.html#ThunarxPropertyPageProvider-struct">
+<ANCHOR id="ThunarxPropertyPageProviderIface" href="thunarx/ThunarxPropertyPageProvider.html#ThunarxPropertyPageProviderIface">
+<ANCHOR id="thunarx-property-page-provider-get-pages" href="thunarx/ThunarxPropertyPageProvider.html#thunarx-property-page-provider-get-pages">
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/ix01.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/ix01.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/ix01.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,104 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Index</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar Extensions Reference Manual">
+<link rel="up" href="index.html" title="Thunar Extensions Reference Manual">
+<link rel="prev" href="ThunarxPropertyPageProvider.html" title="ThunarxPropertyPageProvider">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="thunarx-overview.html" title="Part I. Overview">
+<link rel="part" href="thunarx-writing-extensions.html" title="Part II. Writing Extensions">
+<link rel="part" href="thunarx-fundamentals.html" title="Part III. Fundamentals">
+<link rel="part" href="thunarx-abstraction-layer.html" title="Part IV. Abstraction Layer">
+<link rel="part" href="thunarx-providers.html" title="Part V. Providers">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="ThunarxPropertyPageProvider.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Thunar Extensions Reference Manual</th>
+</tr></table>
+<div class="index">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="id2600177"></a>Index</h2></div></div></div>
+<div class="index"><div class="indexdiv">
+<h3>T</h3>
+<dl>
+<dt>ThunarxFileInfo, <a href="ThunarxFileInfo.html#id2593217">ThunarxFileInfo</a>
+</dt>
+<dt>ThunarxFileInfoIface, <a href="ThunarxFileInfo.html#id2592894">ThunarxFileInfoIface</a>
+</dt>
+<dt>ThunarxMenuProvider, <a href="ThunarxMenuProvider.html#id2599189">ThunarxMenuProvider</a>
+</dt>
+<dt>ThunarxMenuProviderIface, <a href="ThunarxMenuProvider.html#id2598973">ThunarxMenuProviderIface</a>
+</dt>
+<dt>ThunarxPropertyPage, <a href="ThunarxPropertyPage.html#id2596402">ThunarxPropertyPage</a>
+</dt>
+<dt>ThunarxPropertyPageProvider, <a href="ThunarxPropertyPageProvider.html#id2600854">ThunarxPropertyPageProvider</a>
+</dt>
+<dt>ThunarxPropertyPageProviderIface, <a href="ThunarxPropertyPageProvider.html#id2600880">ThunarxPropertyPageProviderIface</a>
+</dt>
+<dt>thunarx_check_version, <a href="thunarx-Variables-and-functions-to-check-the-library-version.html#id2591237">thunarx_check_version ()</a>
+</dt>
+<dt>THUNARX_CHECK_VERSION, <a href="thunarx-Variables-and-functions-to-check-the-library-version.html#id2591514">THUNARX_CHECK_VERSION()</a>
+</dt>
+<dt>thunarx_file_info_get_mime_type, <a href="ThunarxFileInfo.html#id2593805">thunarx_file_info_get_mime_type ()</a>
+</dt>
+<dt>thunarx_file_info_get_name, <a href="ThunarxFileInfo.html#id2593240">thunarx_file_info_get_name ()</a>
+</dt>
+<dt>thunarx_file_info_get_parent_uri, <a href="ThunarxFileInfo.html#id2593447">thunarx_file_info_get_parent_uri ()</a>
+</dt>
+<dt>thunarx_file_info_get_uri, <a href="ThunarxFileInfo.html#id2593345">thunarx_file_info_get_uri ()</a>
+</dt>
+<dt>thunarx_file_info_get_uri_scheme, <a href="ThunarxFileInfo.html#id2593566">thunarx_file_info_get_uri_scheme ()</a>
+</dt>
+<dt>thunarx_file_info_has_mime_type, <a href="ThunarxFileInfo.html#id2593916">thunarx_file_info_has_mime_type ()</a>
+</dt>
+<dt>thunarx_file_info_is_directory, <a href="ThunarxFileInfo.html#id2594082">thunarx_file_info_is_directory ()</a>
+</dt>
+<dt>thunarx_file_info_list_copy, <a href="ThunarxFileInfo.html#id2594168">thunarx_file_info_list_copy ()</a>
+</dt>
+<dt>thunarx_file_info_list_free, <a href="ThunarxFileInfo.html#id2594256">thunarx_file_info_list_free ()</a>
+</dt>
+<dt>thunarx_major_version, <a href="thunarx-Variables-and-functions-to-check-the-library-version.html#id2590977">thunarx_major_version</a>
+</dt>
+<dt>THUNARX_MAJOR_VERSION, <a href="thunarx-Variables-and-functions-to-check-the-library-version.html#id2591418">THUNARX_MAJOR_VERSION</a>
+</dt>
+<dt>thunarx_menu_provider_get_file_actions, <a href="ThunarxMenuProvider.html#id2599212">thunarx_menu_provider_get_file_actions ()</a>
+</dt>
+<dt>thunarx_menu_provider_get_folder_actions, <a href="ThunarxMenuProvider.html#id2599412">thunarx_menu_provider_get_folder_actions ()</a>
+</dt>
+<dt>thunarx_micro_version, <a href="thunarx-Variables-and-functions-to-check-the-library-version.html#id2591105">thunarx_micro_version</a>
+</dt>
+<dt>THUNARX_MICRO_VERSION, <a href="thunarx-Variables-and-functions-to-check-the-library-version.html#id2591482">THUNARX_MICRO_VERSION</a>
+</dt>
+<dt>thunarx_minor_version, <a href="thunarx-Variables-and-functions-to-check-the-library-version.html#id2591041">thunarx_minor_version</a>
+</dt>
+<dt>THUNARX_MINOR_VERSION, <a href="thunarx-Variables-and-functions-to-check-the-library-version.html#id2591450">THUNARX_MINOR_VERSION</a>
+</dt>
+<dt>thunarx_property_page_get_label, <a href="ThunarxPropertyPage.html#id2596613">thunarx_property_page_get_label ()</a>
+</dt>
+<dt>thunarx_property_page_get_label_widget, <a href="ThunarxPropertyPage.html#id2596969">thunarx_property_page_get_label_widget ()</a>
+</dt>
+<dt>thunarx_property_page_new, <a href="ThunarxPropertyPage.html#id2596426">thunarx_property_page_new ()</a>
+</dt>
+<dt>thunarx_property_page_new_with_label_widget, <a href="ThunarxPropertyPage.html#id2596520">thunarx_property_page_new_with_label_widget ()</a>
+</dt>
+<dt>thunarx_property_page_provider_get_pages, <a href="ThunarxPropertyPageProvider.html#id2601003">thunarx_property_page_provider_get_pages ()</a>
+</dt>
+<dt>thunarx_property_page_set_label, <a href="ThunarxPropertyPage.html#id2596877">thunarx_property_page_set_label ()</a>
+</dt>
+<dt>thunarx_property_page_set_label_widget, <a href="ThunarxPropertyPage.html#id2597065">thunarx_property_page_set_label_widget ()</a>
+</dt>
+</dl>
+</div></div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="ThunarxPropertyPageProvider.html"><b><< ThunarxPropertyPageProvider</b></a></td>
+<td align="right"></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/left.png
===================================================================
(Binary files differ)
Property changes on: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/left.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/menu-provider.png
===================================================================
(Binary files differ)
Property changes on: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/menu-provider.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/right.png
===================================================================
(Binary files differ)
Property changes on: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/right.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/say-hello.png
===================================================================
(Binary files differ)
Property changes on: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/say-hello.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/style.css
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/style.css 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/style.css 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,66 @@
+.synopsis, .classsynopsis
+{
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+ padding: 0.5em;
+}
+.programlisting
+{
+ background: #eeeeff;
+ border: solid 1px #aaaaff;
+ padding: 0.5em;
+}
+.variablelist
+{
+ padding: 4px;
+ margin-left: 3em;
+}
+.variablelist td:first-child
+{
+ vertical-align: top;
+}
+table.navigation
+{
+ background: #ffeeee;
+ border: solid 1px #ffaaaa;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+}
+.navigation a
+{
+ color: #770000;
+}
+.navigation a:visited
+{
+ color: #550000;
+}
+.navigation .title
+{
+ font-size: 200%;
+}
+div.refnamediv
+{
+ margin-top: 2em;
+}
+div.gallery-float
+{
+ float: left;
+ padding: 10px;
+}
+div.gallery-float img
+{
+ border-style: none;
+}
+div.gallery-spacer
+{
+ clear: both;
+}
+a
+{
+ text-decoration: none;
+}
+a:hover
+{
+ text-decoration: underline;
+ color: #FF0000;
+}
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx-Variables-and-functions-to-check-the-library-version.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx-Variables-and-functions-to-check-the-library-version.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx-Variables-and-functions-to-check-the-library-version.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,288 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Version information</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar Extensions Reference Manual">
+<link rel="up" href="thunarx-fundamentals.html" title="Part III. Fundamentals">
+<link rel="prev" href="thunarx-fundamentals.html" title="Part III. Fundamentals">
+<link rel="next" href="thunarx-abstraction-layer.html" title="Part IV. Abstraction Layer">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="thunarx-overview.html" title="Part I. Overview">
+<link rel="part" href="thunarx-writing-extensions.html" title="Part II. Writing Extensions">
+<link rel="part" href="thunarx-fundamentals.html" title="Part III. Fundamentals">
+<link rel="part" href="thunarx-abstraction-layer.html" title="Part IV. Abstraction Layer">
+<link rel="part" href="thunarx-providers.html" title="Part V. Providers">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="thunarx-fundamentals.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="thunarx-fundamentals.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Thunar Extensions Reference Manual</th>
+<td><a accesskey="n" href="thunarx-abstraction-layer.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="thunarx-Variables-and-functions-to-check-the-library-version"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">Version information</span></h2>
+<p>Version information — Variables and functions to check the library version</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1" lang="en">
+<a name="id2590809"></a><h2>Stability Level</h2>
+Stable, unless otherwise indicated
+</div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
+
+#include <thunarx/thunarx.h>
+
+
+extern const guint <a href="thunarx-Variables-and-functions-to-check-the-library-version.html#thunarx-major-version">thunarx_major_version</a>;
+extern const guint <a href="thunarx-Variables-and-functions-to-check-the-library-version.html#thunarx-minor-version">thunarx_minor_version</a>;
+extern const guint <a href="thunarx-Variables-and-functions-to-check-the-library-version.html#thunarx-micro-version">thunarx_micro_version</a>;
+const gchar* <a href="thunarx-Variables-and-functions-to-check-the-library-version.html#thunarx-check-version">thunarx_check_version</a> (guint required_major,
+ guint required_minor,
+ guint required_micro);
+#define <a href="thunarx-Variables-and-functions-to-check-the-library-version.html#THUNARX-MAJOR-VERSION:CAPS">THUNARX_MAJOR_VERSION</a>
+#define <a href="thunarx-Variables-and-functions-to-check-the-library-version.html#THUNARX-MINOR-VERSION:CAPS">THUNARX_MINOR_VERSION</a>
+#define <a href="thunarx-Variables-and-functions-to-check-the-library-version.html#THUNARX-MICRO-VERSION:CAPS">THUNARX_MICRO_VERSION</a>
+#define <a href="thunarx-Variables-and-functions-to-check-the-library-version.html#THUNARX-CHECK-VERSION:CAPS">THUNARX_CHECK_VERSION</a> (major,minor,micro)
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2590962"></a><h2>Description</h2>
+<p>
+ The Thunar Extension library provides version information,
+ which should be used by extensions.
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2590971"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2590977"></a><h3>
+<a name="thunarx-major-version"></a>thunarx_major_version</h3>
+<a class="indexterm" name="id2590985"></a><pre class="programlisting">extern const guint thunarx_major_version;
+</pre>
+<p>
+The major version number of the
+<code class="systemitem">thunarx</code> library (e.g. in
+version 0.5.1 this is 0).
+</p>
+<p>
+This variable is in the library, so represents the
+<code class="systemitem">thunarx</code> library you have
+linked against. Contrast with the <a href="thunarx-Variables-and-functions-to-check-the-library-version.html#THUNARX-MAJOR-VERSION:CAPS"><span class="type">THUNARX_MAJOR_VERSION</span></a> macro, which
+represents the major version of the
+<code class="systemitem">thunarx</code> headers you have
+included.</p>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2591041"></a><h3>
+<a name="thunarx-minor-version"></a>thunarx_minor_version</h3>
+<a class="indexterm" name="id2591049"></a><pre class="programlisting">extern const guint thunarx_minor_version;
+</pre>
+<p>
+The minor version number of the
+<code class="systemitem">thunarx</code> library (e.g. in
+version 0.5.1 this is 5).
+</p>
+<p>
+This variable is in the library, so represents the
+<code class="systemitem">thunarx</code> library you have
+linked against. Contrast with the <a href="thunarx-Variables-and-functions-to-check-the-library-version.html#THUNARX-MINOR-VERSION:CAPS"><span class="type">THUNARX_MINOR_VERSION</span></a> macro, which
+represents the minor version of the
+<code class="systemitem">thunarx</code> headers you have
+included.</p>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2591105"></a><h3>
+<a name="thunarx-micro-version"></a>thunarx_micro_version</h3>
+<a class="indexterm" name="id2591113"></a><pre class="programlisting">extern const guint thunarx_micro_version;
+</pre>
+<p>
+The micro version number of the
+<code class="systemitem">thunarx</code> library (e.g. in
+version 0.5.1 this is 1).
+</p>
+<p>
+This variable is in the library, so represents the
+<code class="systemitem">thunarx</code> library you have
+linked against. Contrast with the <a href="thunarx-Variables-and-functions-to-check-the-library-version.html#THUNARX-MICRO-VERSION:CAPS"><span class="type">THUNARX_MICRO_VERSION</span></a> macro, which
+represents the micro version of the
+<code class="systemitem">thunarx</code> headers you have
+included.</p>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2591237"></a><h3>
+<a name="thunarx-check-version"></a>thunarx_check_version ()</h3>
+<a class="indexterm" name="id2591245"></a><pre class="programlisting">const gchar* thunarx_check_version (guint required_major,
+ guint required_minor,
+ guint required_micro);</pre>
+<p>
+Checks that the <code class="systemitem">thunarx</code> library
+in use is compatible with the given version. Generally you would pass in
+the constants <a href="thunarx-Variables-and-functions-to-check-the-library-version.html#THUNARX-MAJOR-VERSION:CAPS"><span class="type">THUNARX_MAJOR_VERSION</span></a>, <a href="thunarx-Variables-and-functions-to-check-the-library-version.html#THUNARX-MINOR-VERSION:CAPS"><span class="type">THUNARX_MINOR_VERSION</span></a> and
+<span class="type">THUNARX_VERSION_MICRO</span> as the three arguments to this function; that produces
+a check that the library in use is compatible with the version of
+<code class="systemitem">thunarx</code> the extension was
+compiled against.
+</p>
+<p>
+This function should be called by extensions in the
+<code class="function">thunar_extension_initialize()</code> method to verify that the <code class="systemitem">thunarx</code> library used by file manager is
+compatible with the version the extension was compiled with.
+</p>
+<p>
+</p>
+<div class="example">
+<a name="id2591341"></a><p class="title"><b>Example 3. Checking the runtime version of the Thunar Extension library</b></p>
+<pre class="programlisting">
+const gchar *mismatch;
+mismatch = thunarx_check_version (THUNARX_VERSION_MAJOR,
+ THUNARX_VERSION_MINOR,
+ THUNARX_VERSION_MICRO);
+if (G_UNLIKELY (mismatch != NULL))
+ g_error ("Version mismatch: %s", mismatch);
+</pre>
+</div>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>required_major</code></em> :</span></td>
+<td> the required major version.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>required_minor</code></em> :</span></td>
+<td> the required minor version.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>required_micro</code></em> :</span></td>
+<td> the required micro version.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td> <code class="literal">NULL</code> if the library is compatible with the given version,
+ or a string describing the version mismatch. The returned
+ string is owned by the library and must not be freed or
+ modified by the caller.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2591418"></a><h3>
+<a name="THUNARX-MAJOR-VERSION:CAPS"></a>THUNARX_MAJOR_VERSION</h3>
+<a class="indexterm" name="id2591427"></a><pre class="programlisting">#define THUNARX_MAJOR_VERSION 0
+</pre>
+<p>
+ The major version number of the <code class="systemitem">thunarx</code> library.
+ Like thunarx_major_version, but from the headers used at application compile time, rather
+ than from the library linked against at application run time.
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2591450"></a><h3>
+<a name="THUNARX-MINOR-VERSION:CAPS"></a>THUNARX_MINOR_VERSION</h3>
+<a class="indexterm" name="id2591459"></a><pre class="programlisting">#define THUNARX_MINOR_VERSION 1
+</pre>
+<p>
+ The minor version number of the <code class="systemitem">thunarx</code> library.
+ Like thunarx_minor_version, but from the headers used at application compile time, rather
+ than from the library linked against at application run time.
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2591482"></a><h3>
+<a name="THUNARX-MICRO-VERSION:CAPS"></a>THUNARX_MICRO_VERSION</h3>
+<a class="indexterm" name="id2591491"></a><pre class="programlisting">#define THUNARX_MICRO_VERSION 3
+</pre>
+<p>
+ The micro version number of the <code class="systemitem">thunarx</code> library.
+ Like thunarx_micro_version, but from the headers used at application compile time, rather
+ than from the library linked against at application run time.
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2591514"></a><h3>
+<a name="THUNARX-CHECK-VERSION:CAPS"></a>THUNARX_CHECK_VERSION()</h3>
+<a class="indexterm" name="id2591523"></a><pre class="programlisting">#define THUNARX_CHECK_VERSION(major,minor,micro)</pre>
+<p>
+ Checks the version of the <code class="systemitem">thunarx</code> library. Returns
+ <code class="literal">TRUE</code> if the version of the <code class="systemitem">thunarx</code> header files is
+ the same as or newer than the passed-in version.
+</p>
+<div class="example">
+<a name="id2591558"></a><p class="title"><b>Example 4. Checking the version of the Thunar Extension library</b></p>
+<pre class="programlisting">
+if (!THUNARX_CHECK_VERSION (0, 1, 0))
+ g_error ("Thunarx version 0.1.0 or above is required");</pre>
+</div>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>major</code></em> :</span></td>
+<td>the major version number.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>minor</code></em> :</span></td>
+<td>the minor version number
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>micro</code></em> :</span></td>
+<td>the micro version number.
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="thunarx-fundamentals.html"><b><< Part III. Fundamentals</b></a></td>
+<td align="right"><a accesskey="n" href="thunarx-abstraction-layer.html"><b>Part IV. Abstraction Layer >></b></a></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx-abstraction-layer.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx-abstraction-layer.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx-abstraction-layer.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,49 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Part IV. Abstraction Layer</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar Extensions Reference Manual">
+<link rel="up" href="index.html" title="Thunar Extensions Reference Manual">
+<link rel="prev" href="thunarx-Variables-and-functions-to-check-the-library-version.html" title="Version information">
+<link rel="next" href="ThunarxFileInfo.html" title="ThunarxFileInfo">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="thunarx-overview.html" title="Part I. Overview">
+<link rel="part" href="thunarx-writing-extensions.html" title="Part II. Writing Extensions">
+<link rel="part" href="thunarx-fundamentals.html" title="Part III. Fundamentals">
+<link rel="part" href="thunarx-abstraction-layer.html" title="Part IV. Abstraction Layer">
+<link rel="part" href="thunarx-providers.html" title="Part V. Providers">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="thunarx-Variables-and-functions-to-check-the-library-version.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Thunar Extensions Reference Manual</th>
+<td><a accesskey="n" href="ThunarxFileInfo.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="part" lang="en">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="thunarx-abstraction-layer"></a>Abstraction Layer</h1></div></div></div>
+<p>
+ In order to hide the internals of the file manager from the extensions, the <code class="systemitem">thunarx</code> provides an abstraction layer, which includes interfaces
+ accessible to the extension, that are implemented by the file manager at runtime.
+ </p>
+<p>
+ <img src="abstraction.png">
+ </p>
+<p>
+ Currently the abstraction layer consists of the interface <a href="ThunarxFileInfo.html" title="ThunarxFileInfo"><span class="type">ThunarxFileInfo</span></a>, which provides
+ extensions with a way to access information about a file handled within
+ the file manager, and the class <a href="ThunarxPropertyPage.html" title="ThunarxPropertyPage"><span class="type">ThunarxPropertyPage</span></a>, which
+ is the base class for widgets that can be added to the properties dialog by
+ extensions.
+ </p>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="thunarx-Variables-and-functions-to-check-the-library-version.html"><b><< Version information</b></a></td>
+<td align="right"><a accesskey="n" href="ThunarxFileInfo.html"><b>ThunarxFileInfo >></b></a></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx-fundamentals.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx-fundamentals.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx-fundamentals.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,33 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Part III. Fundamentals</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar Extensions Reference Manual">
+<link rel="up" href="index.html" title="Thunar Extensions Reference Manual">
+<link rel="prev" href="thunarx-writing-extensions-advanced-topics.html" title="Advanced topics">
+<link rel="next" href="thunarx-Variables-and-functions-to-check-the-library-version.html" title="Version information">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="thunarx-overview.html" title="Part I. Overview">
+<link rel="part" href="thunarx-writing-extensions.html" title="Part II. Writing Extensions">
+<link rel="part" href="thunarx-fundamentals.html" title="Part III. Fundamentals">
+<link rel="part" href="thunarx-abstraction-layer.html" title="Part IV. Abstraction Layer">
+<link rel="part" href="thunarx-providers.html" title="Part V. Providers">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="thunarx-writing-extensions-advanced-topics.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Thunar Extensions Reference Manual</th>
+<td><a accesskey="n" href="thunarx-Variables-and-functions-to-check-the-library-version.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="part" lang="en"><div class="titlepage"><div><div><h1 class="title">
+<a name="thunarx-fundamentals"></a>Fundamentals</h1></div></div></div></div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="thunarx-writing-extensions-advanced-topics.html"><b><< Advanced topics</b></a></td>
+<td align="right"><a accesskey="n" href="thunarx-Variables-and-functions-to-check-the-library-version.html"><b>Version information >></b></a></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx-overview.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx-overview.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx-overview.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,85 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Part I. Overview</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar Extensions Reference Manual">
+<link rel="up" href="index.html" title="Thunar Extensions Reference Manual">
+<link rel="prev" href="index.html" title="Thunar Extensions Reference Manual">
+<link rel="next" href="thunarx-writing-extensions.html" title="Part II. Writing Extensions">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="thunarx-overview.html" title="Part I. Overview">
+<link rel="part" href="thunarx-writing-extensions.html" title="Part II. Writing Extensions">
+<link rel="part" href="thunarx-fundamentals.html" title="Part III. Fundamentals">
+<link rel="part" href="thunarx-abstraction-layer.html" title="Part IV. Abstraction Layer">
+<link rel="part" href="thunarx-providers.html" title="Part V. Providers">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="index.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Thunar Extensions Reference Manual</th>
+<td><a accesskey="n" href="thunarx-writing-extensions.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="part" lang="en">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="thunarx-overview"></a>Overview</h1></div></div></div>
+<p>
+ The Thunar Extension Framework (<code class="systemitem">thunarx</code>) provides
+ developers with an easy way to extend the basic functionality provided by
+ the <a href="http://thunar.xfce.org/" target="_top">Thunar File Manager</a>.
+ The <code class="systemitem">thunarx</code> library includes interfaces that can
+ be implemented by extensions for various purposes.
+ </p>
+<p>
+ It is based on the <a href="http://developer.gnome.org/doc/API/2.0/gobject/ch02.html" target="_top">GLib Dynamic Type
+ System</a> and loads the extensions on demand to reduce the system resources
+ allocated for the file manager process.
+ </p>
+<div class="sect1" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="thunarx-overview-goals"></a>Goals</h2></div></div></div>
+<p>
+ The Thunar Extension Framework was developed with the following goals in mind:
+ </p>
+<div class="orderedlist"><ol type="1">
+<li>
+ It should be easy to extend the functionality of the file manager in certain
+ ways.
+ </li>
+<li>
+ The internals of the file manager should be hidden from the extensions to be
+ able to maintain API/ABI compatibility for extensions over various major
+ releases of the file manager.
+ </li>
+<li>
+ Provide basic compatibility with the <a href="http://www.gnome.org/projects/nautilus/" target="_top">Nautilus</a> Extension Framework,
+ so vendors don't need to write several versions of their extensions for the various
+ file managers. With the current implementation it should be easy to write a small
+ wrapper library for generic extensions that can be loaded into both Thunar and
+ Nautilus.
+ </li>
+<li>
+ Extensions should not be loaded into memory until they are actually required to
+ save system resources. This differs from the way Nautilus handles extensions and
+ therefore people that already know how to write Nautilus extensions must be
+ careful when writing extensions for Thunar, because Thunar actually unloads the
+ extension when it's no longer needed. The <a href="http://developer.gnome.org/doc/API/2.0/gobject/GTypePlugin.html" target="_top">GTypePlugin</a>
+ and <a href="http://developer.gnome.org/doc/API/2.0/gobject/GTypeModule.html" target="_top">GTypeModule</a>
+ sections in the <a href="http://developer.gnome.org/doc/API/2.0/gobject/" target="_top">GObject
+ Reference Manual</a> provide details about the handling of dynamic type plugins.
+ </li>
+<li>
+ Permit developers to write extensions in languages other than C.
+ </li>
+</ol></div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="index.html"><b><< Thunar Extensions Reference Manual</b></a></td>
+<td align="right"><a accesskey="n" href="thunarx-writing-extensions.html"><b>Part II. Writing Extensions >></b></a></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx-providers.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx-providers.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx-providers.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,50 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Part V. Providers</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar Extensions Reference Manual">
+<link rel="up" href="index.html" title="Thunar Extensions Reference Manual">
+<link rel="prev" href="ThunarxPropertyPage.html" title="ThunarxPropertyPage">
+<link rel="next" href="ThunarxMenuProvider.html" title="ThunarxMenuProvider">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="thunarx-overview.html" title="Part I. Overview">
+<link rel="part" href="thunarx-writing-extensions.html" title="Part II. Writing Extensions">
+<link rel="part" href="thunarx-fundamentals.html" title="Part III. Fundamentals">
+<link rel="part" href="thunarx-abstraction-layer.html" title="Part IV. Abstraction Layer">
+<link rel="part" href="thunarx-providers.html" title="Part V. Providers">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="ThunarxPropertyPage.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Thunar Extensions Reference Manual</th>
+<td><a accesskey="n" href="ThunarxMenuProvider.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="part" lang="en">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="thunarx-providers"></a>Providers</h1></div></div></div>
+<p>
+ The extensions interact with the file manager by implementing so called
+ <span class="emphasis"><em>providers</em></span>. This is a concept adopted from the Nautilus
+ Extension Framework.
+ </p>
+<p>
+ Providers are interfaces in the <code class="systemitem">thunarx</code>
+ library that describe the functionality provided by a certain extension. For
+ example, when the file manager pops up the file context menu, it'll first lookup
+ all extensions that implement the interface <span class="interface">ThunarxMenuProvider</span>
+ ask those extensions for the list of additional actions.
+ </p>
+<p>
+ <img src="menu-provider.png">
+ </p>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="ThunarxPropertyPage.html"><b><< ThunarxPropertyPage</b></a></td>
+<td align="right"><a accesskey="n" href="ThunarxMenuProvider.html"><b>ThunarxMenuProvider >></b></a></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx-writing-extensions-advanced-topics.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx-writing-extensions-advanced-topics.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx-writing-extensions-advanced-topics.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,73 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Advanced topics</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar Extensions Reference Manual">
+<link rel="up" href="thunarx-writing-extensions.html" title="Part II. Writing Extensions">
+<link rel="prev" href="thunarx-writing-extensions-getting-started.html" title="Getting Started">
+<link rel="next" href="thunarx-fundamentals.html" title="Part III. Fundamentals">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="thunarx-overview.html" title="Part I. Overview">
+<link rel="part" href="thunarx-writing-extensions.html" title="Part II. Writing Extensions">
+<link rel="part" href="thunarx-fundamentals.html" title="Part III. Fundamentals">
+<link rel="part" href="thunarx-abstraction-layer.html" title="Part IV. Abstraction Layer">
+<link rel="part" href="thunarx-providers.html" title="Part V. Providers">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="thunarx-writing-extensions-getting-started.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="thunarx-writing-extensions.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Thunar Extensions Reference Manual</th>
+<td><a accesskey="n" href="thunarx-fundamentals.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="sect1" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="thunarx-writing-extensions-advanced-topics"></a>Advanced topics</h2></div></div></div>
+<p>
+ This section provides a short introduction to some of the advanced topics in the
+ Thunar Extension Framework.
+ </p>
+<div class="sect2" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="thunarx-writing-extensions-memory-resident-extensions"></a>Memory-Resident Extensions</h3></div></div></div>
+<p>
+ Some extensions may not play well with Thunar's on-demand loading and unloading
+ of extensions. For example, an extension that uses a desktop library, which in
+ turn registers additional static GTypes will not work after being loaded and
+ unloaded for the first time. For these kind of extensions, Thunar provides the
+ option to make extensions <span class="emphasis"><em>memory resident</em></span>, which means the
+ extension will be loaded once and afterwards will never be unloaded again until
+ Thunar exits.
+ </p>
+<p>
+ Such extensions must set the <code class="literal">resident</code> property of the type
+ module in its <code class="function">thunar_extension_initialize()</code> function to
+ <code class="literal">TRUE</code>.
+ </p>
+<div class="example">
+<a name="id2538660"></a><p class="title"><b>Example 2. Making an extension memory resident</b></p>
+<pre class="programlisting">
+G_MODULE_EXPORT void
+thunar_extension_initialize (GTypeModule *module)
+{
+ /* setup the types for the extension */
+ ...
+
+ /* ensure that the extension will never be unloaded */
+ g_object_set (G_OBJECT (module),
+ "resident", TRUE,
+ NULL);
+}</pre>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="thunarx-writing-extensions-getting-started.html"><b><< Getting Started</b></a></td>
+<td align="right"><a accesskey="n" href="thunarx-fundamentals.html"><b>Part III. Fundamentals >></b></a></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx-writing-extensions-getting-started.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx-writing-extensions-getting-started.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx-writing-extensions-getting-started.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,179 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Getting Started</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar Extensions Reference Manual">
+<link rel="up" href="thunarx-writing-extensions.html" title="Part II. Writing Extensions">
+<link rel="prev" href="thunarx-writing-extensions.html" title="Part II. Writing Extensions">
+<link rel="next" href="thunarx-writing-extensions-advanced-topics.html" title="Advanced topics">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="thunarx-overview.html" title="Part I. Overview">
+<link rel="part" href="thunarx-writing-extensions.html" title="Part II. Writing Extensions">
+<link rel="part" href="thunarx-fundamentals.html" title="Part III. Fundamentals">
+<link rel="part" href="thunarx-abstraction-layer.html" title="Part IV. Abstraction Layer">
+<link rel="part" href="thunarx-providers.html" title="Part V. Providers">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="thunarx-writing-extensions.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="thunarx-writing-extensions.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Thunar Extensions Reference Manual</th>
+<td><a accesskey="n" href="thunarx-writing-extensions-advanced-topics.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="sect1" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="thunarx-writing-extensions-getting-started"></a>Getting Started</h2></div></div></div>
+<p>
+ Providers are <span class="type">GTypeModule</span>s loaded from shared libraries installed in
+ <code class="filename">$libdir/thunarx-1/</code>. The shared libraries are linked against the
+ <code class="systemitem">thunarx-1</code> library.
+ </p>
+<p>
+ The extensions must provide three public functions, <code class="function">thunar_extension_initialize()</code>,
+ <code class="function">thunar_extension_shutdown()</code> and <code class="function">thunar_extension_list_types()</code>.
+ </p>
+<p>
+ <code class="function">thunar_extension_initialize()</code> is passed a <span class="type">GTypeModule</span>
+ object, and must register all GTypes that the extension needs. <code class="function">thunar_extension_shutdown()</code> should
+ perform any extension-specific shutdown required prior to unloading the extension. <code class="function">thunar_extension_list_types()</code>
+ returns an array of GTypes that represent the types of the providers exported by the extension. Thunar will instantiate
+ objects of those types when needed.
+ </p>
+<div class="example">
+<a name="id2539667"></a><p class="title"><b>Example 1. Basic Structure of an extension</b></p>
+<pre class="programlisting">
+#include <gmodule.h>
+#include <thunarx/thunarx.h>
+
+static GType type_list[1];
+
+static void
+foo_extension_register_type (GTypeModule *module)
+{
+ static const GTypeInfo info =
+ {
+ sizeof (FooExtensionClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) foo_extension_class_init,
+ NULL,
+ NULL,
+ sizeof (FooExtension),
+ 0,
+ (GInstanceInitFunc) foo_extension_init,
+ NULL,
+ };
+
+ type_list[0] = g_type_module_register_type (module,
+ G_TYPE_OBJECT,
+ "FooExtension",
+ &info, 0);
+
+ /* implement the desired provider interfaces */
+}
+
+static GType
+foo_extension_get_type (void)
+{
+ return type_list[0];
+}
+
+G_MODULE_EXPORT void
+thunar_extension_initialize (GTypeModule *module)
+{
+ const gchar *mismatch;
+
+ /* verify the versions */
+ mismatch = thunarx_check_version (THUNARX_MAJOR_VERSION,
+ THUNARX_MINOR_VERSION,
+ THUNARX_MICRO_VERSION);
+ if (G_UNLIKELY (mismatch != NULL))
+ {
+ g_warning ("Version mismatch: %s", mismatch);
+ return;
+ }
+
+ foo_extension_register_type (module);
+}
+
+G_MODULE_EXPORT void
+thunar_extension_shutdown (void)
+{
+ /* any extension-specific shutdown */
+}
+
+G_MODULE_EXPORT void
+thunar_extension_list_types (const GType **types,
+ gint *n_types)
+{
+ *types = type_list;
+ *n_types = G_N_ELEMENTS (type_list);
+}</pre>
+</div>
+<div class="sect2" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="thunarx-writing-extensions-compiling-thunar-extensions"></a>Compiling Thunar Extensions</h3></div></div></div>
+<p>
+ To compile a Thunar extension, you need to tell the compiler where to find the
+ <code class="systemitem">thunarx</code> header files and library. This
+ is done with the <code class="literal">pkg-config</code> utility.
+ </p>
+<p>
+ The following interactive shell session demonstrates how <code class="literal">pkg-config</code>
+ is used (the actual output on your system will be different):
+ </p>
+<pre class="screen">
+$ pkg-config --cflags thunarx-1
+-DXTHREADS -DXUSE_MTSAFE_API -I/opt/local/include/thunarx-1 -I/usr/local/include/atk-1.0 \
+-I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include -I/usr/X11R6/include/gtk-2.0 \
+-I/usr/X11R6/lib/gtk-2.0/include -I/usr/X11R6/include -I/usr/X11R6/include/pango-1.0 \
+-I/usr/local/include/freetype2 -I/usr/local/include
+$ pkg-config --libs thunarx-1
+-Wl,--rpath -Wl,/usr/local/lib -L/usr/local/lib -L/usr/X11R6/lib -L/opt/local/lib -lthunarx-1</pre>
+<p>
+ </p>
+<p>
+ The easiest way to compile an extension is to use the <span class="emphasis"><em>backticks</em></span>
+ feature of the shell. If you enclose a command in backticks (<span class="emphasis"><em>not single
+ quotes</em></span>), then its output will be substituted into the command line before
+ execution. So to compile an extension, you would type the following:
+ </p>
+<pre class="screen">
+$ gcc -shared -fPIC -DPIC `pkg-config --cflags --libs thunarx-1` foo.c -o foo.so</pre>
+<p>
+ </p>
+</div>
+<div class="sect2" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="thunarx-writing-extensions-installing-thunar-extensions"></a>Installing Thunar Extensions</h3></div></div></div>
+<p>
+ To determine the directory where extensions must be installed on your local system,
+ you can use the following command (as mentioned above, the output will be different
+ on your system):
+ </p>
+<pre class="screen">
+$ pkg-config --variable=extensionsdir thunarx-1
+/opt/local/lib/thunarx-1</pre>
+<p>
+ </p>
+<p>
+ For example, to install the extension <code class="filename">foo.so</code> on your system,
+ you would type the following:
+ </p>
+<pre class="screen">
+$ install -d `pkg-config --variable=extensionsdir thunarx-1`
+$ install -c -m 0755 foo.so `pkg-config --variable=extensionsdir thunarx-1`/foo.so</pre>
+<p>
+ </p>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="thunarx-writing-extensions.html"><b><< Part II. Writing Extensions</b></a></td>
+<td align="right"><a accesskey="n" href="thunarx-writing-extensions-advanced-topics.html"><b>Advanced topics >></b></a></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx-writing-extensions.html
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx-writing-extensions.html 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx-writing-extensions.html 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,99 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Part II. Writing Extensions</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="Thunar Extensions Reference Manual">
+<link rel="up" href="index.html" title="Thunar Extensions Reference Manual">
+<link rel="prev" href="thunarx-overview.html" title="Part I. Overview">
+<link rel="next" href="thunarx-writing-extensions-getting-started.html" title="Getting Started">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="thunarx-overview.html" title="Part I. Overview">
+<link rel="part" href="thunarx-writing-extensions.html" title="Part II. Writing Extensions">
+<link rel="part" href="thunarx-fundamentals.html" title="Part III. Fundamentals">
+<link rel="part" href="thunarx-abstraction-layer.html" title="Part IV. Abstraction Layer">
+<link rel="part" href="thunarx-providers.html" title="Part V. Providers">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="thunarx-overview.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">Thunar Extensions Reference Manual</th>
+<td><a accesskey="n" href="thunarx-writing-extensions-getting-started.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="part" lang="en">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="thunarx-writing-extensions"></a>Writing Extensions</h1></div></div></div>
+<p>
+ This section explains the basic steps required to write an extension for the <a href="http://thunar.xfce.org" target="_top">Thunar File Manager</a> using the C language interface. It is
+ just a short introduction and not meant to provide extensive details about the internal workings
+ of the file manager.
+ </p>
+<div class="sect1" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="thunarx-writing-extensions-basic-concepts"></a>Basic Concepts</h2></div></div></div>
+<div class="sect2" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="thunarx-writing-extensions-extensions-and-providers"></a>Extensions and Providers</h3></div></div></div>
+<p>
+ <span class="emphasis"><em>Thunar Extensions</em></span> are shared libraries that extend the basic functionality
+ provided by the Thunar File Manager. An extension exports one or more <span class="type">GObject</span>s, called <span class="emphasis"><em>providers</em></span> to Thunar.
+ </p>
+<p>
+ Providers implement one or more of the <span class="type">GInterface</span>s included with
+ the <code class="systemitem">thunarx</code> library. The currently exported interfaces
+ include the <a href="ThunarxMenuProvider.html" title="ThunarxMenuProvider"><span class="type">ThunarxMenuProvider</span></a> for adding context menu
+ items to the file views and the <a href="ThunarxPropertyPageProvider.html" title="ThunarxPropertyPageProvider"><span class="type">ThunarxPropertyPageProvider</span></a> for adding pages to the
+ file properties dialog.
+ </p>
+</div>
+<div class="sect2" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="thunarx-writing-extensions-thunarxfileinfo"></a>ThunarxFileInfo</h3></div></div></div>
+<p>
+ Thunar passes file references to the provider using <a href="ThunarxFileInfo.html" title="ThunarxFileInfo"><span class="type">ThunarxFileInfo</span></a>
+ objects. The <a href="ThunarxFileInfo.html" title="ThunarxFileInfo"><span class="type">ThunarxFileInfo</span></a> interface provides access to the file
+ information that Thunar has already read - mime type, URI, name, etc. Extensions should use the data from
+ from the <a href="ThunarxFileInfo.html" title="ThunarxFileInfo"><span class="type">ThunarxFileInfo</span></a> rather than reading it themselves, to
+ prevent excessive I/O.
+ </p>
+<p>
+ There is exactly one <a href="ThunarxFileInfo.html" title="ThunarxFileInfo"><span class="type">ThunarxFileInfo</span></a> per file, and it is kept around
+ for as long as Thunar is interested in the file. Extensions can use this information to manage lifecycles of
+ its own data - e.g. when the <a href="ThunarxFileInfo.html" title="ThunarxFileInfo"><span class="type">ThunarxFileInfo</span></a> goes away, it is safe
+ for the extension to forget any private data for that file.
+ </p>
+</div>
+<div class="sect2" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="thunarx-writing-extensions-names"></a>Names</h3></div></div></div>
+<p>
+ Most objects created by the extensions need names, e.g. the <span class="type">GtkAction</span>s
+ returned from the <a href="ThunarxMenuProvider.html" title="ThunarxMenuProvider"><span class="type">ThunarxMenuProvider</span></a>s. These names must be
+ namespaced with the name of the extension. For example the main action returned from the
+ <span class="application">OpenTerminal</span> extension should be called <code class="literal">OpenTerminal::open-terminal</code>.
+ The namespace must be global among the providers exported by a certain extension.
+ </p>
+</div>
+<div class="sect2" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="thunarx-writing-extensions-types"></a>Types</h3></div></div></div>
+<p>
+ Thunar extensions are loaded as <span class="type">GTypeModule</span>s. This means that all GTypes
+ created by the extension must be registered with the <span class="type">GTypeModule</span>, using
+ <code class="function">g_type_module_register_type()</code> function rather
+ than <code class="function">g_type_register_static()</code>. All types exported by
+ an extension must be registered in
+ <code class="function">thunar_extension_initialize()</code>.
+ </p>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="thunarx-overview.html"><b><< Part I. Overview</b></a></td>
+<td align="right"><a accesskey="n" href="thunarx-writing-extensions-getting-started.html"><b>Getting Started >></b></a></td>
+</tr></table>
+</body>
+</html>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx.devhelp
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx.devhelp 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/thunarx.devhelp 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<book xmlns="http://www.devhelp.net/book" title="Thunar Extensions Reference Manual" link="index.html" author="Benedikt Meurer" name="thunarx">
+ <chapters>
+ <sub name="Overview" link="thunarx-overview.html">
+ <sub name="Goals" link="thunarx-overview.html#thunarx-overview-goals"/>
+ </sub>
+ <sub name="Writing Extensions" link="thunarx-writing-extensions.html">
+ <sub name="Basic Concepts" link="thunarx-writing-extensions.html#thunarx-writing-extensions-basic-concepts"/>
+ <sub name="Getting Started" link="thunarx-writing-extensions-getting-started.html"/>
+ <sub name="Advanced topics" link="thunarx-writing-extensions-advanced-topics.html"/>
+ </sub>
+ <sub name="Fundamentals" link="thunarx-fundamentals.html">
+ <sub name="Version information" link="thunarx-Variables-and-functions-to-check-the-library-version.html"/>
+ </sub>
+ <sub name="Abstraction Layer" link="thunarx-abstraction-layer.html">
+ <sub name="ThunarxFileInfo" link="ThunarxFileInfo.html"/>
+ <sub name="ThunarxPropertyPage" link="ThunarxPropertyPage.html"/>
+ </sub>
+ <sub name="Providers" link="thunarx-providers.html">
+ <sub name="ThunarxMenuProvider" link="ThunarxMenuProvider.html"/>
+ <sub name="ThunarxPropertyPageProvider" link="ThunarxPropertyPageProvider.html"/>
+ </sub>
+ <sub name="Index" link="ix01.html"/>
+ </chapters>
+ <functions>
+ <function name="thunarx_major_version" link="thunarx-Variables-and-functions-to-check-the-library-version.html#thunarx-major-version"/>
+ <function name="thunarx_minor_version" link="thunarx-Variables-and-functions-to-check-the-library-version.html#thunarx-minor-version"/>
+ <function name="thunarx_micro_version" link="thunarx-Variables-and-functions-to-check-the-library-version.html#thunarx-micro-version"/>
+ <function name="thunarx_check_version ()" link="thunarx-Variables-and-functions-to-check-the-library-version.html#thunarx-check-version"/>
+ <function name="THUNARX_MAJOR_VERSION" link="thunarx-Variables-and-functions-to-check-the-library-version.html#THUNARX-MAJOR-VERSION:CAPS"/>
+ <function name="THUNARX_MINOR_VERSION" link="thunarx-Variables-and-functions-to-check-the-library-version.html#THUNARX-MINOR-VERSION:CAPS"/>
+ <function name="THUNARX_MICRO_VERSION" link="thunarx-Variables-and-functions-to-check-the-library-version.html#THUNARX-MICRO-VERSION:CAPS"/>
+ <function name="THUNARX_CHECK_VERSION()" link="thunarx-Variables-and-functions-to-check-the-library-version.html#THUNARX-CHECK-VERSION:CAPS"/>
+ <function name="ThunarxFileInfoIface" link="ThunarxFileInfo.html#ThunarxFileInfoIface"/>
+ <function name="ThunarxFileInfo" link="ThunarxFileInfo.html#ThunarxFileInfo-struct"/>
+ <function name="thunarx_file_info_get_name ()" link="ThunarxFileInfo.html#thunarx-file-info-get-name"/>
+ <function name="thunarx_file_info_get_uri ()" link="ThunarxFileInfo.html#thunarx-file-info-get-uri"/>
+ <function name="thunarx_file_info_get_parent_uri ()" link="ThunarxFileInfo.html#thunarx-file-info-get-parent-uri"/>
+ <function name="thunarx_file_info_get_uri_scheme ()" link="ThunarxFileInfo.html#thunarx-file-info-get-uri-scheme"/>
+ <function name="thunarx_file_info_get_mime_type ()" link="ThunarxFileInfo.html#thunarx-file-info-get-mime-type"/>
+ <function name="thunarx_file_info_has_mime_type ()" link="ThunarxFileInfo.html#thunarx-file-info-has-mime-type"/>
+ <function name="thunarx_file_info_is_directory ()" link="ThunarxFileInfo.html#thunarx-file-info-is-directory"/>
+ <function name="thunarx_file_info_list_copy ()" link="ThunarxFileInfo.html#thunarx-file-info-list-copy"/>
+ <function name="thunarx_file_info_list_free ()" link="ThunarxFileInfo.html#thunarx-file-info-list-free"/>
+ <function name="ThunarxPropertyPage" link="ThunarxPropertyPage.html#ThunarxPropertyPage-struct"/>
+ <function name="thunarx_property_page_new ()" link="ThunarxPropertyPage.html#thunarx-property-page-new"/>
+ <function name="thunarx_property_page_new_with_label_widget ()" link="ThunarxPropertyPage.html#thunarx-property-page-new-with-label-widget"/>
+ <function name="thunarx_property_page_get_label ()" link="ThunarxPropertyPage.html#thunarx-property-page-get-label"/>
+ <function name="thunarx_property_page_set_label ()" link="ThunarxPropertyPage.html#thunarx-property-page-set-label"/>
+ <function name="thunarx_property_page_get_label_widget ()" link="ThunarxPropertyPage.html#thunarx-property-page-get-label-widget"/>
+ <function name="thunarx_property_page_set_label_widget ()" link="ThunarxPropertyPage.html#thunarx-property-page-set-label-widget"/>
+ <function name="The "label" property" link="ThunarxPropertyPage.html#ThunarxPropertyPage--label"/>
+ <function name="The "label-widget" property" link="ThunarxPropertyPage.html#ThunarxPropertyPage--label-widget"/>
+ <function name="ThunarxMenuProviderIface" link="ThunarxMenuProvider.html#ThunarxMenuProviderIface"/>
+ <function name="ThunarxMenuProvider" link="ThunarxMenuProvider.html#ThunarxMenuProvider-struct"/>
+ <function name="thunarx_menu_provider_get_file_actions ()" link="ThunarxMenuProvider.html#thunarx-menu-provider-get-file-actions"/>
+ <function name="thunarx_menu_provider_get_folder_actions ()" link="ThunarxMenuProvider.html#thunarx-menu-provider-get-folder-actions"/>
+ <function name="ThunarxPropertyPageProvider" link="ThunarxPropertyPageProvider.html#ThunarxPropertyPageProvider-struct"/>
+ <function name="ThunarxPropertyPageProviderIface" link="ThunarxPropertyPageProvider.html#ThunarxPropertyPageProviderIface"/>
+ <function name="thunarx_property_page_provider_get_pages ()" link="ThunarxPropertyPageProvider.html#thunarx-property-page-provider-get-pages"/>
+ </functions>
+</book>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/up.png
===================================================================
(Binary files differ)
Property changes on: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/html/up.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/images/abstraction.png
===================================================================
(Binary files differ)
Property changes on: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/images/abstraction.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/images/menu-provider.png
===================================================================
(Binary files differ)
Property changes on: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/images/menu-provider.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/images/say-hello.png
===================================================================
(Binary files differ)
Property changes on: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/images/say-hello.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/thunarx-docs.sgml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/thunarx-docs.sgml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/thunarx-docs.sgml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,454 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
+
+<!ENTITY ThunarxFileInfo SYSTEM "xml/thunarx-file-info.xml">
+<!ENTITY ThunarxMenuProvider SYSTEM "xml/thunarx-menu-provider.xml">
+<!ENTITY ThunarxPropertyPage SYSTEM "xml/thunarx-property-page.xml">
+<!ENTITY ThunarxPropertyPageProvider SYSTEM "xml/thunarx-property-page-provider.xml">
+<!ENTITY thunarx-version-information SYSTEM "xml/thunarx-version-information.xml">
+
+<!ENTITY version SYSTEM "version.xml">
+<!ENTITY date "September 2005">
+]>
+
+<book id="index">
+ <bookinfo>
+ <title>Thunar Extensions Reference Manual</title>
+ <releaseinfo>Version &version;</releaseinfo>
+ <pubdate>&date;</pubdate>
+
+ <copyright>
+ <year>2005</year>
+ <holder>Benedikt Meurer</holder>
+ </copyright>
+
+ <legalnotice id="legalnotice">
+ <para>
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.1 or
+ any later version published by the Free Software Foundation; with no
+ Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+ Texts. The complete license text is available from the <ulink
+ type="http" url="http://www.gnu.org/">Free Software Foundation</ulink>.
+ </para>
+ </legalnotice>
+
+ <authorgroup>
+ <author>
+ <firstname>Benedikt</firstname>
+ <surname>Meurer</surname>
+ <affiliation>
+ <address><email>benny at xfce.org</email></address>
+ <orgname>os-cillation</orgname>
+ <orgdiv>System development</orgdiv>
+ <jobtitle>Software developer</jobtitle>
+ </affiliation>
+ </author>
+ </authorgroup>
+ </bookinfo>
+
+ <part id="thunarx-overview">
+ <title>Overview</title>
+
+ <para>
+ The Thunar Extension Framework (<systemitem class="library">thunarx</systemitem>) provides
+ developers with an easy way to extend the basic functionality provided by
+ the <ulink type="http" url="http://thunar.xfce.org/">Thunar File Manager</ulink>.
+ The <systemitem class="library">thunarx</systemitem> library includes interfaces that can
+ be implemented by extensions for various purposes.
+ </para>
+
+ <para>
+ It is based on the <ulink type="http"
+ url="http://developer.gnome.org/doc/API/2.0/gobject/ch02.html">GLib Dynamic Type
+ System</ulink> and loads the extensions on demand to reduce the system resources
+ allocated for the file manager process.
+ </para>
+
+ <sect1 id="thunarx-overview-goals">
+ <title>Goals</title>
+
+ <para>
+ The Thunar Extension Framework was developed with the following goals in mind:
+ </para>
+
+ <orderedlist>
+ <listitem>
+ It should be easy to extend the functionality of the file manager in certain
+ ways.
+ </listitem>
+
+ <listitem>
+ The internals of the file manager should be hidden from the extensions to be
+ able to maintain API/ABI compatibility for extensions over various major
+ releases of the file manager.
+ </listitem>
+
+ <listitem>
+ Provide basic compatibility with the <ulink type="http"
+ url="http://www.gnome.org/projects/nautilus/">Nautilus</ulink> Extension Framework,
+ so vendors don't need to write several versions of their extensions for the various
+ file managers. With the current implementation it should be easy to write a small
+ wrapper library for generic extensions that can be loaded into both Thunar and
+ Nautilus.
+ </listitem>
+
+ <listitem>
+ Extensions should not be loaded into memory until they are actually required to
+ save system resources. This differs from the way Nautilus handles extensions and
+ therefore people that already know how to write Nautilus extensions must be
+ careful when writing extensions for Thunar, because Thunar actually unloads the
+ extension when it's no longer needed. The <ulink type="http"
+ url="http://developer.gnome.org/doc/API/2.0/gobject/GTypePlugin.html">GTypePlugin</ulink>
+ and <ulink type="http"
+ url="http://developer.gnome.org/doc/API/2.0/gobject/GTypeModule.html">GTypeModule</ulink>
+ sections in the <ulink type="http" url="http://developer.gnome.org/doc/API/2.0/gobject/">GObject
+ Reference Manual</ulink> provide details about the handling of dynamic type plugins.
+ </listitem>
+
+ <listitem>
+ Permit developers to write extensions in languages other than C.
+ </listitem>
+ </orderedlist>
+ </sect1>
+ </part>
+
+ <part id="thunarx-writing-extensions">
+ <title>Writing Extensions</title>
+
+ <para>
+ This section explains the basic steps required to write an extension for the <ulink type="http"
+ url="http://thunar.xfce.org">Thunar File Manager</ulink> using the C language interface. It is
+ just a short introduction and not meant to provide extensive details about the internal workings
+ of the file manager.
+ </para>
+
+ <sect1 id="thunarx-writing-extensions-basic-concepts">
+ <title>Basic Concepts</title>
+
+ <sect2 id="thunarx-writing-extensions-extensions-and-providers">
+ <title>Extensions and Providers</title>
+
+ <para>
+ <emphasis>Thunar Extensions</emphasis> are shared libraries that extend the basic functionality
+ provided by the Thunar File Manager. An extension exports one or more <link
+ linkend="GObject"><type>GObject</type></link>s, called <emphasis>providers</emphasis> to Thunar.
+ </para>
+
+ <para>
+ Providers implement one or more of the <link linkend="GInterface"><type>GInterface</type></link>s included with
+ the <systemitem class="library">thunarx</systemitem> library. The currently exported interfaces
+ include the <link linkend="ThunarxMenuProvider"><type>ThunarxMenuProvider</type></link> for adding context menu
+ items to the file views and the <link
+ linkend="ThunarxPropertyPageProvider"><type>ThunarxPropertyPageProvider</type></link> for adding pages to the
+ file properties dialog.
+ </para>
+ </sect2>
+
+ <sect2 id="thunarx-writing-extensions-thunarxfileinfo">
+ <title>ThunarxFileInfo</title>
+
+ <para>
+ Thunar passes file references to the provider using <link linkend="ThunarxFileInfo"><type>ThunarxFileInfo</type></link>
+ objects. The <link linkend="ThunarxFileInfo"><type>ThunarxFileInfo</type></link> interface provides access to the file
+ information that Thunar has already read - mime type, URI, name, etc. Extensions should use the data from
+ from the <link linkend="ThunarxFileInfo"><type>ThunarxFileInfo</type></link> rather than reading it themselves, to
+ prevent excessive I/O.
+ </para>
+
+ <para>
+ There is exactly one <link linkend="ThunarxFileInfo"><type>ThunarxFileInfo</type></link> per file, and it is kept around
+ for as long as Thunar is interested in the file. Extensions can use this information to manage lifecycles of
+ its own data - e.g. when the <link linkend="ThunarxFileInfo"><type>ThunarxFileInfo</type></link> goes away, it is safe
+ for the extension to forget any private data for that file.
+ </para>
+ </sect2>
+
+ <sect2 id="thunarx-writing-extensions-names">
+ <title>Names</title>
+
+ <para>
+ Most objects created by the extensions need names, e.g. the <link linkend="GtkAction"><type>GtkAction</type></link>s
+ returned from the <link linkend="ThunarxMenuProvider"><type>ThunarxMenuProvider</type></link>s. These names must be
+ namespaced with the name of the extension. For example the main action returned from the
+ <application>OpenTerminal</application> extension should be called <literal>OpenTerminal::open-terminal</literal>.
+ The namespace must be global among the providers exported by a certain extension.
+ </para>
+ </sect2>
+
+ <sect2 id="thunarx-writing-extensions-types">
+ <title>Types</title>
+
+ <para>
+ Thunar extensions are loaded as <link linkend="GTypeModule"><type>GTypeModule</type></link>s. This means that all GTypes
+ created by the extension must be registered with the <link linkend="GTypeModule"><type>GTypeModule</type></link>, using
+ <link linkend="g-type-module-register-type"><function>g_type_module_register_type()</function></link> function rather
+ than <link linked="g-type-register-static"><function>g_type_register_static()</function></link>. All types exported by
+ an extension must be registered in
+ <link linkend="thunar-extension-initialize"><function>thunar_extension_initialize()</function></link>.
+ </para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="thunarx-writing-extensions-getting-started">
+ <title>Getting Started</title>
+
+ <para>
+ Providers are <link linkend="GTypeModule"><type>GTypeModule</type></link>s loaded from shared libraries installed in
+ <filename role="directory">$libdir/thunarx-1/</filename>. The shared libraries are linked against the
+ <systemitem class="library">thunarx-1</systemitem> library.
+ </para>
+
+ <para>
+ The extensions must provide three public functions, <function>thunar_extension_initialize()</function>,
+ <function>thunar_extension_shutdown()</function> and <function>thunar_extension_list_types()</function>.
+ </para>
+
+ <para>
+ <function>thunar_extension_initialize()</function> is passed a <link linkend="GTypeModule"><type>GTypeModule</type></link>
+ object, and must register all GTypes that the extension needs. <function>thunar_extension_shutdown()</function> should
+ perform any extension-specific shutdown required prior to unloading the extension. <function>thunar_extension_list_types()</function>
+ returns an array of GTypes that represent the types of the providers exported by the extension. Thunar will instantiate
+ objects of those types when needed.
+ </para>
+
+ <example>
+ <title>Basic Structure of an extension</title>
+
+ <programlisting>
+#include <gmodule.h>
+#include <thunarx/thunarx.h>
+
+static GType type_list[1];
+
+static void
+foo_extension_register_type (GTypeModule *module)
+{
+ static const GTypeInfo info =
+ {
+ sizeof (FooExtensionClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) foo_extension_class_init,
+ NULL,
+ NULL,
+ sizeof (FooExtension),
+ 0,
+ (GInstanceInitFunc) foo_extension_init,
+ NULL,
+ };
+
+ type_list[0] = g_type_module_register_type (module,
+ G_TYPE_OBJECT,
+ "FooExtension",
+ &info, 0);
+
+ /* implement the desired provider interfaces */
+}
+
+static GType
+foo_extension_get_type (void)
+{
+ return type_list[0];
+}
+
+G_MODULE_EXPORT void
+thunar_extension_initialize (GTypeModule *module)
+{
+ const gchar *mismatch;
+
+ /* verify the versions */
+ mismatch = thunarx_check_version (THUNARX_MAJOR_VERSION,
+ THUNARX_MINOR_VERSION,
+ THUNARX_MICRO_VERSION);
+ if (G_UNLIKELY (mismatch != NULL))
+ {
+ g_warning ("Version mismatch: %s", mismatch);
+ return;
+ }
+
+ foo_extension_register_type (module);
+}
+
+G_MODULE_EXPORT void
+thunar_extension_shutdown (void)
+{
+ /* any extension-specific shutdown */
+}
+
+G_MODULE_EXPORT void
+thunar_extension_list_types (const GType **types,
+ gint *n_types)
+{
+ *types = type_list;
+ *n_types = G_N_ELEMENTS (type_list);
+}</programlisting>
+ </example>
+
+ <sect2 id="thunarx-writing-extensions-compiling-thunar-extensions">
+ <title>Compiling Thunar Extensions</title>
+
+ <para>
+ To compile a Thunar extension, you need to tell the compiler where to find the
+ <systemitem class="library">thunarx</systemitem> header files and library. This
+ is done with the <literal>pkg-config</literal> utility.
+ </para>
+
+ <para>
+ The following interactive shell session demonstrates how <literal>pkg-config</literal>
+ is used (the actual output on your system will be different):
+ <screen>
+$ pkg-config --cflags thunarx-1
+-DXTHREADS -DXUSE_MTSAFE_API -I/opt/local/include/thunarx-1 -I/usr/local/include/atk-1.0 \
+-I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include -I/usr/X11R6/include/gtk-2.0 \
+-I/usr/X11R6/lib/gtk-2.0/include -I/usr/X11R6/include -I/usr/X11R6/include/pango-1.0 \
+-I/usr/local/include/freetype2 -I/usr/local/include
+$ pkg-config --libs thunarx-1
+-Wl,--rpath -Wl,/usr/local/lib -L/usr/local/lib -L/usr/X11R6/lib -L/opt/local/lib -lthunarx-1</screen>
+ </para>
+
+ <para>
+ The easiest way to compile an extension is to use the <emphasis>backticks</emphasis>
+ feature of the shell. If you enclose a command in backticks (<emphasis>not single
+ quotes</emphasis>), then its output will be substituted into the command line before
+ execution. So to compile an extension, you would type the following:
+ <screen>
+$ gcc -shared -fPIC -DPIC `pkg-config --cflags --libs thunarx-1` foo.c -o foo.so</screen>
+ </para>
+ </sect2>
+
+ <sect2 id="thunarx-writing-extensions-installing-thunar-extensions">
+ <title>Installing Thunar Extensions</title>
+
+ <para>
+ To determine the directory where extensions must be installed on your local system,
+ you can use the following command (as mentioned above, the output will be different
+ on your system):
+ <screen>
+$ pkg-config --variable=extensionsdir thunarx-1
+/opt/local/lib/thunarx-1</screen>
+ </para>
+
+ <para>
+ For example, to install the extension <filename>foo.so</filename> on your system,
+ you would type the following:
+ <screen>
+$ install -d `pkg-config --variable=extensionsdir thunarx-1`
+$ install -c -m 0755 foo.so `pkg-config --variable=extensionsdir thunarx-1`/foo.so</screen>
+ </para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="thunarx-writing-extensions-advanced-topics">
+ <title>Advanced topics</title>
+
+ <para>
+ This section provides a short introduction to some of the advanced topics in the
+ Thunar Extension Framework.
+ </para>
+
+ <sect2 id="thunarx-writing-extensions-memory-resident-extensions">
+ <title>Memory-Resident Extensions</title>
+
+ <para>
+ Some extensions may not play well with Thunar's on-demand loading and unloading
+ of extensions. For example, an extension that uses a desktop library, which in
+ turn registers additional static GTypes will not work after being loaded and
+ unloaded for the first time. For these kind of extensions, Thunar provides the
+ option to make extensions <emphasis>memory resident</emphasis>, which means the
+ extension will be loaded once and afterwards will never be unloaded again until
+ Thunar exits.
+ </para>
+
+ <para>
+ Such extensions must set the <literal>resident</literal> property of the type
+ module in its <function>thunar_extension_initialize()</function> function to
+ <literal>TRUE</literal>.
+ </para>
+
+ <example>
+ <title>Making an extension memory resident</title>
+ <programlisting>
+G_MODULE_EXPORT void
+thunar_extension_initialize (GTypeModule *module)
+{
+ /* setup the types for the extension */
+ ...
+
+ /* ensure that the extension will never be unloaded */
+ g_object_set (G_OBJECT (module),
+ "resident", TRUE,
+ NULL);
+}</programlisting>
+ </example>
+ </sect2>
+ </sect1>
+ </part>
+
+ <part id="thunarx-fundamentals">
+ <title>Fundamentals</title>
+
+ &thunarx-version-information;
+ </part>
+
+ <part id="thunarx-abstraction-layer">
+ <title>Abstraction Layer</title>
+
+ <para>
+ In order to hide the internals of the file manager from the extensions, the <systemitem
+ class="library">thunarx</systemitem> provides an abstraction layer, which includes interfaces
+ accessible to the extension, that are implemented by the file manager at runtime.
+ </para>
+
+ <para>
+ <inlinegraphic fileref="abstraction.png" format="PNG" />
+ </para>
+
+ <para>
+ Currently the abstraction layer consists of the interface <link
+ linkend="ThunarxFileInfo"><type>ThunarxFileInfo</type></link>, which provides
+ extensions with a way to access information about a file handled within
+ the file manager, and the class <link
+ linkend="ThunarxPropertyPage"><type>ThunarxPropertyPage</type></link>, which
+ is the base class for widgets that can be added to the properties dialog by
+ extensions.
+ </para>
+
+ &ThunarxFileInfo;
+ &ThunarxPropertyPage;
+ </part>
+
+ <part id="thunarx-providers">
+ <title>Providers</title>
+
+ <para>
+ The extensions interact with the file manager by implementing so called
+ <emphasis>providers</emphasis>. This is a concept adopted from the Nautilus
+ Extension Framework.
+ </para>
+
+ <para>
+ Providers are interfaces in the <systemitem class="library">thunarx</systemitem>
+ library that describe the functionality provided by a certain extension. For
+ example, when the file manager pops up the file context menu, it'll first lookup
+ all extensions that implement the interface <interface>ThunarxMenuProvider</interface>
+ ask those extensions for the list of additional actions.
+ </para>
+
+ <para>
+ <inlinegraphic fileref="menu-provider.png" format="PNG" />
+ </para>
+
+ &ThunarxMenuProvider;
+ &ThunarxPropertyPageProvider;
+ </part>
+
+ <index>
+ <title>Index</title>
+ </index>
+</book>
+
+<!--
+ vi:set ts=2 sw=2 et ai syntax=docbkxml:
+-->
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/thunarx-overrides.txt
===================================================================
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/thunarx-sections.txt
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/thunarx-sections.txt 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/thunarx-sections.txt 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,92 @@
+<INCLUDE>thunarx/thunarx.h</INCLUDE>
+
+<SECTION>
+<FILE>thunarx-file-info</FILE>
+<TITLE>ThunarxFileInfo</TITLE>
+ThunarxFileInfoIface
+ThunarxFileInfo
+thunarx_file_info_get_name
+thunarx_file_info_get_uri
+thunarx_file_info_get_parent_uri
+thunarx_file_info_get_uri_scheme
+thunarx_file_info_get_mime_type
+thunarx_file_info_has_mime_type
+thunarx_file_info_is_directory
+thunarx_file_info_list_copy
+thunarx_file_info_list_free
+<SUBSECTION Standard>
+THUNARX_TYPE_FILE_INFO
+THUNARX_FILE_INFO
+THUNARX_IS_FILE_INFO
+THUNARX_FILE_INFO_GET_IFACE
+<SUBSECTION Private>
+thunarx_file_info_get_type
+</SECTION>
+
+<SECTION>
+<FILE>thunarx-menu-provider</FILE>
+<TITLE>ThunarxMenuProvider</TITLE>
+ThunarxMenuProviderIface
+ThunarxMenuProvider
+thunarx_menu_provider_get_file_actions
+thunarx_menu_provider_get_folder_actions
+<SUBSECTION Standard>
+THUNARX_TYPE_MENU_PROVIDER
+THUNARX_MENU_PROVIDER
+THUNARX_IS_MENU_PROVIDER
+THUNARX_MENU_PROVIDER_GET_IFACE
+<SUBSECTION Private>
+thunarx_menu_provider_get_type
+</SECTION>
+
+<SECTION>
+<FILE>thunarx-property-page</FILE>
+<TITLE>ThunarxPropertyPage</TITLE>
+ThunarxPropertyPage
+thunarx_property_page_new
+thunarx_property_page_new_with_label_widget
+thunarx_property_page_get_label
+thunarx_property_page_set_label
+thunarx_property_page_get_label_widget
+thunarx_property_page_set_label_widget
+<SUBSECTION Standard>
+ThunarxPropertyPageClass
+THUNARX_TYPE_PROPERTY_PAGE
+THUNARX_PROPERTY_PAGE
+THUNARX_PROPERTY_PAGE_CLASS
+THUNARX_IS_PROPERTY_PAGE
+THUNARX_IS_PROPERTY_PAGE_CLASS
+THUNARX_PROPERTY_PAGE_GET_CLASS
+<SUBSECTION Private>
+ThunarxPropertyPagePrivate
+thunarx_property_page_get_type
+</SECTION>
+
+<SECTION>
+<FILE>thunarx-property-page-provider</FILE>
+<TITLE>ThunarxPropertyPageProvider</TITLE>
+ThunarxPropertyPageProvider
+ThunarxPropertyPageProviderIface
+thunarx_property_page_provider_get_pages
+<SUBSECTION Standard>
+THUNARX_TYPE_PROPERTY_PAGE_PROVIDER
+THUNARX_PROPERTY_PAGE_PROVIDER
+THUNARX_IS_PROPERTY_PAGE_PROVIDER
+THUNARX_PROPERTY_PAGE_PROVIDER_GET_IFACE
+<SUBSECTION Private>
+thunarx_property_page_provider_get_type
+</SECTION>
+
+<SECTION>
+<FILE>thunarx-version-information</FILE>
+<TITLE>Variables and functions to check the library version</TITLE>
+thunarx_major_version
+thunarx_minor_version
+thunarx_micro_version
+thunarx_check_version
+THUNARX_MAJOR_VERSION
+THUNARX_MINOR_VERSION
+THUNARX_MICRO_VERSION
+THUNARX_CHECK_VERSION
+</SECTION>
+
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/thunarx.types
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/thunarx.types 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/thunarx.types 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,6 @@
+#include <thunarx/thunarx.h>
+
+thunarx_file_info_get_type
+thunarx_menu_provider_get_type
+thunarx_property_page_get_type
+thunarx_property_page_provider_get_type
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/tmpl/thunarx-file-info.sgml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/tmpl/thunarx-file-info.sgml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/tmpl/thunarx-file-info.sgml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,122 @@
+<!-- ##### SECTION Title ##### -->
+ThunarxFileInfo
+
+<!-- ##### SECTION Short_Description ##### -->
+Abstraction of a file handled within the file manager
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+ The <interface>ThunarxFileInfo</interface> interface provides extensions with
+ a way to access information about a file handled within the file manager.
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+Stable
+
+<!-- ##### STRUCT ThunarxFileInfoIface ##### -->
+<para>
+ Interface with virtual methods implemented by the file manager and accessible
+ from the extensions.
+</para>
+
+ at get_name: See thunarx_file_info_get_name().
+ at get_uri: See thunarx_file_info_get_uri().
+ at get_parent_uri: See thunarx_file_info_get_parent_uri().
+ at get_uri_scheme: See thunarx_file_info_get_uri_scheme().
+ at get_mime_type: See thunarx_file_info_get_mime_type().
+ at has_mime_type: See thunarx_file_info_has_mime_type().
+ at is_directory: See thunarx_file_info_is_directory().
+
+<!-- ##### STRUCT ThunarxFileInfo ##### -->
+<para>
+ File info type, which is mapped to the real file info implementation
+ within the file manager.
+</para>
+
+
+<!-- ##### FUNCTION thunarx_file_info_get_name ##### -->
+<para>
+
+</para>
+
+ at file_info:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunarx_file_info_get_uri ##### -->
+<para>
+
+</para>
+
+ at file_info:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunarx_file_info_get_parent_uri ##### -->
+<para>
+
+</para>
+
+ at file_info:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunarx_file_info_get_uri_scheme ##### -->
+<para>
+
+</para>
+
+ at file_info:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunarx_file_info_get_mime_type ##### -->
+<para>
+
+</para>
+
+ at file_info:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunarx_file_info_has_mime_type ##### -->
+<para>
+
+</para>
+
+ at file_info:
+ at mime_type:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunarx_file_info_is_directory ##### -->
+<para>
+
+</para>
+
+ at file_info:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunarx_file_info_list_copy ##### -->
+<para>
+
+</para>
+
+ at file_infos:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunarx_file_info_list_free ##### -->
+<para>
+
+</para>
+
+ at file_infos:
+
+
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/tmpl/thunarx-menu-provider.sgml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/tmpl/thunarx-menu-provider.sgml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/tmpl/thunarx-menu-provider.sgml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,175 @@
+<!-- ##### SECTION Title ##### -->
+ThunarxMenuProvider
+
+<!-- ##### SECTION Short_Description ##### -->
+The interface to extensions that provide additional menu items
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+ The <interface>ThunarxMenuProvider</interface> interface is implemented by
+ extensions which provide additional menu items that should be displayed in
+ the file or folder context menus for certain types of files.
+</para>
+
+<para>
+ Extensions that implement this interface should do its best to respond as
+ fast as possible to method invokations by the file manager. That said, when
+ the file manager calls the thunarx_menu_provider_get_file_actions() or the
+ thunarx_menu_provider_get_folder_actions() method, the implementation in the
+ extension should use only the thunarx_file_info_has_mime_type() and
+ thunarx_file_info_is_directory() methods to determine the actions that should
+ be added to the file manager's context menu. Don't perform any complicated I/O
+ to determine the action list, as that would block the whole file manager process.
+</para>
+
+<para>
+ The <link linkend="GtkAction">GtkAction</link>s returned from the
+ thunarx_menu_provider_get_file_actions() and thunarx_menu_provider_get_folder_actions()
+ methods must be namespaced with the module to avoid collision with internal file manager
+ actions and actions provided by other extensions. For example, the menu action provided
+ by the <systemitem class="library">ThunarOpenTerminal</systemitem> extension should be
+ called <literal>ThunarOpenTerminal::open-terminal</literal>.
+</para>
+
+<example>
+ <title>Menu provider example</title>
+
+ <programlisting>
+static GType hello_type;
+
+static void hello_menu_provider_init (ThunarxMenuProviderIface *iface);
+static GList *hello_get_file_actions (ThunarxMenuProvider *provider,
+ GtkWidget *window,
+ GList *files);
+
+static void
+hello_register_type (GTypeModule *module)
+{
+ static const GTypeInfo info =
+ {
+ sizeof (HelloClass),
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ sizeof (Hello),
+ 0,
+ NULL,
+ NULL,
+ };
+
+ static const GInterfaceInfo menu_provider_info =
+ {
+ (GInterfaceInitFunc) hello_menu_provider_init,
+ NULL,
+ NULL,
+ };
+
+ hello_type = g_type_module_register_type (module, G_TYPE_OBJECT,
+ "Hello", &info, 0);
+ g_type_module_add_interface (module, hello_type,
+ THUNARX_TYPE_MENU_PROVIDER,
+ &menu_provider_info);
+}
+
+static void
+hello_menu_provider_init (ThunarxMenuProviderIface *iface)
+{
+ iface->get_file_actions = hello_get_file_actions;
+}
+
+static void
+hello_activated (GtkAction *action,
+ GtkWidget *window)
+{
+ GtkWidget *dialog;
+
+ dialog = gtk_message_dialog_new (GTK_WINDOW (window),
+ GTK_DIALOG_MODAL
+ | GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_INFO,
+ GTK_BUTTONS_OK,
+ "Hello World!");
+ gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
+}
+
+static GList*
+hello_get_file_actions (ThunarxMenuProvider *provider,
+ GtkWidget *window,
+ GList *files)
+{
+ GtkAction *action;
+
+ action = gtk_action_new ("Hello::say-hello",
+ "Say hello", "Say hello",
+ NULL);
+ g_signal_connect (G_OBJECT (action), "activate",
+ G_CALLBACK (hello_activated),
+ window);
+
+ return g_list_append (NULL, action);
+}</programlisting>
+
+ <para>
+ The above example will add an item <guimenu><guimenuitem>Say hello</guimenuitem></guimenu>
+ to the file context menus as shown in the picture below:
+ </para>
+
+ <para>
+ <inlinegraphic fileref="say-hello.png" format="PNG" />
+ </para>
+</example>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+ The description of the <link linkend="ThunarxFileInfo">ThunarxFileInfo</link>
+ interface.
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+Stable
+
+<!-- ##### STRUCT ThunarxMenuProviderIface ##### -->
+<para>
+ Interface with virtual methods implemented by extensions that provide
+ additional menu items for the file manager's context menus.
+</para>
+
+<para>
+ Providers don't need to implement all of the virtual methods listed in
+ the interface.
+</para>
+
+ at get_file_actions: See thunarx_menu_provider_get_file_actions().
+ at get_folder_actions: See thunarx_menu_provider_get_folder_actions().
+
+<!-- ##### STRUCT ThunarxMenuProvider ##### -->
+<para>
+ Menu provider type.
+</para>
+
+
+<!-- ##### FUNCTION thunarx_menu_provider_get_file_actions ##### -->
+<para>
+
+</para>
+
+ at provider:
+ at window:
+ at files:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunarx_menu_provider_get_folder_actions ##### -->
+<para>
+
+</para>
+
+ at provider:
+ at window:
+ at folder:
+ at Returns:
+
+
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/tmpl/thunarx-property-page-provider.sgml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/tmpl/thunarx-property-page-provider.sgml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/tmpl/thunarx-property-page-provider.sgml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,47 @@
+<!-- ##### SECTION Title ##### -->
+ThunarxPropertyPageProvider
+
+<!-- ##### SECTION Short_Description ##### -->
+The interface to extensions that provide additional property pages
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+ To add a property page to the file properties dialog, extensions must implement the
+ <type>ThunarxPropertyPageProvider</type> interface. This interface has only one virtual
+ method, <function>get_pages</function>, that is passed a list of <link
+ linkend="ThunarxFileInfo"><type>ThunarxFileInfo</type></link> objects and returns a list
+ of <link linkend="ThunarxPropertyPage"><type>ThunarxPropertyPage</type></link> objects.
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+ The description of the <link linkend="ThunarxPropertyPage"><type>ThunarxPropertyPage</type></link> class.
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+Stable
+
+<!-- ##### STRUCT ThunarxPropertyPageProvider ##### -->
+<para>
+ Property page provider type.
+</para>
+
+
+<!-- ##### STRUCT ThunarxPropertyPageProviderIface ##### -->
+<para>
+ Interface with virtual methods implemented by extensions that provide
+ additional pages for the file properties dialog.
+</para>
+
+ at get_pages: See thunarx_property_page_provider_get_pages().
+
+<!-- ##### FUNCTION thunarx_property_page_provider_get_pages ##### -->
+<para>
+
+</para>
+
+ at provider:
+ at files:
+ at Returns:
+
+
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/tmpl/thunarx-property-page.sgml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/tmpl/thunarx-property-page.sgml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/tmpl/thunarx-property-page.sgml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,90 @@
+<!-- ##### SECTION Title ##### -->
+ThunarxPropertyPage
+
+<!-- ##### SECTION Short_Description ##### -->
+Base class for pages added to the properties dialog
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+ The class for pages that can be added to Thunar's file properties dialog
+ by extensions implementing the #ThunarxPropertyPageProvider interface.
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+ The description of the <link linkend="ThunarxPropertyPageProvider"><type>ThunarxPropertyPageProvider</type></link> interface.
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+Stable
+
+<!-- ##### STRUCT ThunarxPropertyPage ##### -->
+<para>
+ Base instance type for property pages.
+</para>
+
+
+<!-- ##### ARG ThunarxPropertyPage:label ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG ThunarxPropertyPage:label-widget ##### -->
+<para>
+
+</para>
+
+<!-- ##### FUNCTION thunarx_property_page_new ##### -->
+<para>
+
+</para>
+
+ at label:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunarx_property_page_new_with_label_widget ##### -->
+<para>
+
+</para>
+
+ at label_widget:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunarx_property_page_get_label ##### -->
+<para>
+
+</para>
+
+ at property_page:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunarx_property_page_set_label ##### -->
+<para>
+
+</para>
+
+ at property_page:
+ at label:
+
+
+<!-- ##### FUNCTION thunarx_property_page_get_label_widget ##### -->
+<para>
+
+</para>
+
+ at property_page:
+ at Returns:
+
+
+<!-- ##### FUNCTION thunarx_property_page_set_label_widget ##### -->
+<para>
+
+</para>
+
+ at property_page:
+ at label_widget:
+
+
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/tmpl/thunarx-unused.sgml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/tmpl/thunarx-unused.sgml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/tmpl/thunarx-unused.sgml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,14 @@
+<!-- ##### STRUCT ThunarxPropertyPageClass ##### -->
+<para>
+
+</para>
+
+ at __parent__:
+
+<!-- ##### FUNCTION thunarx_property_page_provider_get_type ##### -->
+<para>
+
+</para>
+
+ at Returns:
+
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/tmpl/thunarx-version-information.sgml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/tmpl/thunarx-version-information.sgml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/tmpl/thunarx-version-information.sgml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,96 @@
+<!-- ##### SECTION Title ##### -->
+Version information
+
+<!-- ##### SECTION Short_Description ##### -->
+Variables and functions to check the library version
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+ The Thunar Extension library provides version information,
+ which should be used by extensions.
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+Stable
+
+<!-- ##### VARIABLE thunarx_major_version ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### VARIABLE thunarx_minor_version ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### VARIABLE thunarx_micro_version ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION thunarx_check_version ##### -->
+<para>
+
+</para>
+
+ at required_major:
+ at required_minor:
+ at required_micro:
+ at Returns:
+
+
+<!-- ##### MACRO THUNARX_MAJOR_VERSION ##### -->
+<para>
+ The major version number of the <systemitem class="library">thunarx</systemitem> library.
+ Like thunarx_major_version, but from the headers used at application compile time, rather
+ than from the library linked against at application run time.
+</para>
+
+
+
+<!-- ##### MACRO THUNARX_MINOR_VERSION ##### -->
+<para>
+ The minor version number of the <systemitem class="library">thunarx</systemitem> library.
+ Like thunarx_minor_version, but from the headers used at application compile time, rather
+ than from the library linked against at application run time.
+</para>
+
+
+
+<!-- ##### MACRO THUNARX_MICRO_VERSION ##### -->
+<para>
+ The micro version number of the <systemitem class="library">thunarx</systemitem> library.
+ Like thunarx_micro_version, but from the headers used at application compile time, rather
+ than from the library linked against at application run time.
+</para>
+
+
+
+<!-- ##### MACRO THUNARX_CHECK_VERSION ##### -->
+<para>
+ Checks the version of the <systemitem class="library">thunarx</systemitem> library. Returns
+ %TRUE if the version of the <systemitem class="library">thunarx</systemitem> header files is
+ the same as or newer than the passed-in version.
+</para>
+
+<example>
+ <title>Checking the version of the Thunar Extension library</title>
+
+ <programlisting>
+if (!THUNARX_CHECK_VERSION (0, 1, 0))
+ g_error ("Thunarx version 0.1.0 or above is required");</programlisting>
+</example>
+
+ at major: the major version number.
+ at minor: the minor version number
+ at micro: the micro version number.
+
+
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/version.xml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/version.xml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/version.xml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1 @@
+0.1.4pre-alpha-r18850
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/version.xml.in
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/version.xml.in 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/version.xml.in 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1 @@
+ at PACKAGE_VERSION@
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/xml/thunarx-file-info.xml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/xml/thunarx-file-info.xml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/xml/thunarx-file-info.xml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,340 @@
+<refentry id="ThunarxFileInfo">
+<refmeta>
+<refentrytitle>ThunarxFileInfo</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>THUNARX Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>ThunarxFileInfo</refname><refpurpose>Abstraction of a file handled within the file manager</refpurpose>
+</refnamediv>
+<refsect1>
+<title>Stability Level</title>
+Stable, unless otherwise indicated
+</refsect1>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+#include <thunarx/thunarx.h>
+
+
+ <link linkend="ThunarxFileInfoIface">ThunarxFileInfoIface</link>;
+ <link linkend="ThunarxFileInfo-struct">ThunarxFileInfo</link>;
+<link linkend="gchar">gchar</link>* <link linkend="thunarx-file-info-get-name">thunarx_file_info_get_name</link> (<link linkend="ThunarxFileInfo">ThunarxFileInfo</link> *file_info);
+<link linkend="gchar">gchar</link>* <link linkend="thunarx-file-info-get-uri">thunarx_file_info_get_uri</link> (<link linkend="ThunarxFileInfo">ThunarxFileInfo</link> *file_info);
+<link linkend="gchar">gchar</link>* <link linkend="thunarx-file-info-get-parent-uri">thunarx_file_info_get_parent_uri</link>
+ (<link linkend="ThunarxFileInfo">ThunarxFileInfo</link> *file_info);
+<link linkend="gchar">gchar</link>* <link linkend="thunarx-file-info-get-uri-scheme">thunarx_file_info_get_uri_scheme</link>
+ (<link linkend="ThunarxFileInfo">ThunarxFileInfo</link> *file_info);
+<link linkend="gchar">gchar</link>* <link linkend="thunarx-file-info-get-mime-type">thunarx_file_info_get_mime_type</link> (<link linkend="ThunarxFileInfo">ThunarxFileInfo</link> *file_info);
+<link linkend="gboolean">gboolean</link> <link linkend="thunarx-file-info-has-mime-type">thunarx_file_info_has_mime_type</link> (<link linkend="ThunarxFileInfo">ThunarxFileInfo</link> *file_info,
+ const <link linkend="gchar">gchar</link> *mime_type);
+<link linkend="gboolean">gboolean</link> <link linkend="thunarx-file-info-is-directory">thunarx_file_info_is_directory</link> (<link linkend="ThunarxFileInfo">ThunarxFileInfo</link> *file_info);
+<link linkend="GList">GList</link>* <link linkend="thunarx-file-info-list-copy">thunarx_file_info_list_copy</link> (<link linkend="GList">GList</link> *file_infos);
+<link linkend="void">void</link> <link linkend="thunarx-file-info-list-free">thunarx_file_info_list_free</link> (<link linkend="GList">GList</link> *file_infos);
+
+
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1>
+<title>Object Hierarchy</title>
+<synopsis>
+
+ <link linkend="GInterface">GInterface</link>
+ +----ThunarxFileInfo
+</synopsis>
+
+</refsect1>
+
+<refsect1>
+<title>Prerequisites</title>
+<para>
+ThunarxFileInfo requires
+ <link linkend="GObject">GObject</link>.</para>
+
+</refsect1>
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+ The <interface>ThunarxFileInfo</interface> interface provides extensions with
+ a way to access information about a file handled within the file manager.
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="ThunarxFileInfoIface"/>ThunarxFileInfoIface</title>
+<indexterm><primary>ThunarxFileInfoIface</primary></indexterm><programlisting>typedef struct {
+ gchar *(*get_name) (ThunarxFileInfo *file_info);
+
+ gchar *(*get_uri) (ThunarxFileInfo *file_info);
+ gchar *(*get_parent_uri) (ThunarxFileInfo *file_info);
+ gchar *(*get_uri_scheme) (ThunarxFileInfo *file_info);
+
+ gchar *(*get_mime_type) (ThunarxFileInfo *file_info);
+ gboolean (*has_mime_type) (ThunarxFileInfo *file_info,
+ const gchar *mime_type);
+
+ gboolean (*is_directory) (ThunarxFileInfo *file_info);
+} ThunarxFileInfoIface;
+</programlisting>
+<para>
+ Interface with virtual methods implemented by the file manager and accessible
+ from the extensions.
+</para><variablelist role="struct">
+<varlistentry>
+<term><structfield>get_name</structfield> ()</term>
+<listitem><simpara>See <link linkend="thunarx-file-info-get-name"><function>thunarx_file_info_get_name()</function></link>.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><structfield>get_uri</structfield> ()</term>
+<listitem><simpara>See <link linkend="thunarx-file-info-get-uri"><function>thunarx_file_info_get_uri()</function></link>.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><structfield>get_parent_uri</structfield> ()</term>
+<listitem><simpara>See <link linkend="thunarx-file-info-get-parent-uri"><function>thunarx_file_info_get_parent_uri()</function></link>.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><structfield>get_uri_scheme</structfield> ()</term>
+<listitem><simpara>See <link linkend="thunarx-file-info-get-uri-scheme"><function>thunarx_file_info_get_uri_scheme()</function></link>.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><structfield>get_mime_type</structfield> ()</term>
+<listitem><simpara>See <link linkend="thunarx-file-info-get-mime-type"><function>thunarx_file_info_get_mime_type()</function></link>.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><structfield>has_mime_type</structfield> ()</term>
+<listitem><simpara>See <link linkend="thunarx-file-info-has-mime-type"><function>thunarx_file_info_has_mime_type()</function></link>.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><structfield>is_directory</structfield> ()</term>
+<listitem><simpara>See <link linkend="thunarx-file-info-is-directory"><function>thunarx_file_info_is_directory()</function></link>.
+
+</simpara></listitem>
+</varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="ThunarxFileInfo-struct"/>ThunarxFileInfo</title>
+<indexterm><primary>ThunarxFileInfo</primary></indexterm><programlisting>typedef struct _ThunarxFileInfo ThunarxFileInfo;</programlisting>
+<para>
+ File info type, which is mapped to the real file info implementation
+ within the file manager.
+</para></refsect2>
+<refsect2>
+<title><anchor id="thunarx-file-info-get-name"/>thunarx_file_info_get_name ()</title>
+<indexterm><primary>thunarx_file_info_get_name</primary></indexterm><programlisting><link linkend="gchar">gchar</link>* thunarx_file_info_get_name (<link linkend="ThunarxFileInfo">ThunarxFileInfo</link> *file_info);</programlisting>
+<para>
+Returns the real name of the file represented
+by <parameter>file_info</parameter> in the local file system encoding.
+You can use <link linkend="g-filename-display-name"><function>g_filename_display_name()</function></link> or similar
+functions to generate an UTF-8 version of the
+name, which is suitable for use in the user
+interface.
+</para>
+<para>
+The caller is responsible to free the returned
+string using <link linkend="g-free"><function>g_free()</function></link> when no longer needed.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>file_info</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarxFileInfo"><type>ThunarxFileInfo</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the real name of the file represented
+ by <parameter>file_info</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunarx-file-info-get-uri"/>thunarx_file_info_get_uri ()</title>
+<indexterm><primary>thunarx_file_info_get_uri</primary></indexterm><programlisting><link linkend="gchar">gchar</link>* thunarx_file_info_get_uri (<link linkend="ThunarxFileInfo">ThunarxFileInfo</link> *file_info);</programlisting>
+<para>
+Returns the escaped, fully qualified URI
+of the file object represented by <parameter>file_info</parameter>.
+You may use <link linkend="g-filename-from-uri"><function>g_filename_from_uri()</function></link> and similar
+functions to work with the returned URI.
+</para>
+<para>
+The caller is responsible to free the returned
+string using <link linkend="g-free"><function>g_free()</function></link> when no longer needed.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>file_info</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarxFileInfo"><type>ThunarxFileInfo</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the fully qualified URI of <parameter>file_info</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunarx-file-info-get-parent-uri"/>thunarx_file_info_get_parent_uri ()</title>
+<indexterm><primary>thunarx_file_info_get_parent_uri</primary></indexterm><programlisting><link linkend="gchar">gchar</link>* thunarx_file_info_get_parent_uri
+ (<link linkend="ThunarxFileInfo">ThunarxFileInfo</link> *file_info);</programlisting>
+<para>
+Returns the URI to the parent file of
+<parameter>file_info</parameter> or <literal>NULL</literal> if <parameter>file_info</parameter> has
+no parent. Note that the parent URI
+may be of a different type than the
+URI of <parameter>file_info</parameter>. For example, the
+parent of "file:///" is "computer:///".
+</para>
+<para>
+The caller is responsible to free the
+returned string using <link linkend="g-free"><function>g_free()</function></link> when no
+longer needed.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>file_info</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarxFileInfo"><type>ThunarxFileInfo</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the parent URI for <parameter>file_info</parameter>
+ or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunarx-file-info-get-uri-scheme"/>thunarx_file_info_get_uri_scheme ()</title>
+<indexterm><primary>thunarx_file_info_get_uri_scheme</primary></indexterm><programlisting><link linkend="gchar">gchar</link>* thunarx_file_info_get_uri_scheme
+ (<link linkend="ThunarxFileInfo">ThunarxFileInfo</link> *file_info);</programlisting>
+<para>
+Returns the URI scheme of the file represented
+by <parameter>file_info</parameter>. E.g. if <parameter>file_info</parameter> refers to the
+file "file:///usr/home", the return value will
+be "file".
+</para>
+<para>
+The caller is responsible to free the returned
+string using <link linkend="g-free"><function>g_free()</function></link> when no longer needed.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>file_info</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarxFileInfo"><type>ThunarxFileInfo</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the URI scheme for <parameter>file_info</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunarx-file-info-get-mime-type"/>thunarx_file_info_get_mime_type ()</title>
+<indexterm><primary>thunarx_file_info_get_mime_type</primary></indexterm><programlisting><link linkend="gchar">gchar</link>* thunarx_file_info_get_mime_type (<link linkend="ThunarxFileInfo">ThunarxFileInfo</link> *file_info);</programlisting>
+<para>
+Returns the MIME-type of the file represented by
+<parameter>file_info</parameter> or <literal>NULL</literal> if no MIME-type is known for
+<parameter>file_info</parameter>.
+</para>
+<para>
+The caller is responsible to free the returned
+string using <link linkend="g-free"><function>g_free()</function></link> when no longer needed.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>file_info</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarxFileInfo"><type>ThunarxFileInfo</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the MIME-type for <parameter>file_info</parameter> or
+ <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunarx-file-info-has-mime-type"/>thunarx_file_info_has_mime_type ()</title>
+<indexterm><primary>thunarx_file_info_has_mime_type</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> thunarx_file_info_has_mime_type (<link linkend="ThunarxFileInfo">ThunarxFileInfo</link> *file_info,
+ const <link linkend="gchar">gchar</link> *mime_type);</programlisting>
+<para>
+Checks whether <parameter>file_info</parameter> is of the given <parameter>mime_type</parameter>
+or whether the MIME-type of <parameter>file_info</parameter> is a subclass
+of <parameter>mime_type</parameter>.
+</para>
+<para>
+This is the preferred way for most extensions to check
+whether they support a given file or not, and you should
+consider using this method rather than
+<link linkend="thunarx-file-info-get-mime-type"><function>thunarx_file_info_get_mime_type()</function></link>. A simple example would
+be a menu extension that performs a certain action on
+text files. In this case you want to check whether a given
+<link linkend="ThunarxFileInfo"><type>ThunarxFileInfo</type></link> refers to any kind of text file, not only
+to "text/plain" (e.g. this also includes "text/xml" and
+"application/x-desktop").
+</para>
+<para>
+But you should be aware that this method may take some
+time to test whether <parameter>mime_type</parameter> is valid for <parameter>file_info</parameter>,
+so don't call it too often.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>file_info</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarxFileInfo"><type>ThunarxFileInfo</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>mime_type</parameter> :</term>
+<listitem><simpara> a MIME-type (e.g. "text/plain").
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <literal>TRUE</literal> if <parameter>mime_type</parameter> is valid for <parameter>file_info</parameter>,
+ else <literal>FALSE</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunarx-file-info-is-directory"/>thunarx_file_info_is_directory ()</title>
+<indexterm><primary>thunarx_file_info_is_directory</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> thunarx_file_info_is_directory (<link linkend="ThunarxFileInfo">ThunarxFileInfo</link> *file_info);</programlisting>
+<para>
+Checks whether <parameter>file_info</parameter> refers to a directory.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>file_info</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarxFileInfo"><type>ThunarxFileInfo</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <literal>TRUE</literal> if <parameter>file_info</parameter> is a directory.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunarx-file-info-list-copy"/>thunarx_file_info_list_copy ()</title>
+<indexterm><primary>thunarx_file_info_list_copy</primary></indexterm><programlisting><link linkend="GList">GList</link>* thunarx_file_info_list_copy (<link linkend="GList">GList</link> *file_infos);</programlisting>
+<para>
+Does a deep copy of <parameter>file_infos</parameter> and returns the
+new list.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>file_infos</parameter> :</term>
+<listitem><simpara> a <link linkend="GList"><type>GList</type></link> of <link linkend="ThunarxFileInfo"><type>ThunarxFileInfo</type></link><!---->s.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> a copy of <parameter>file_infos</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunarx-file-info-list-free"/>thunarx_file_info_list_free ()</title>
+<indexterm><primary>thunarx_file_info_list_free</primary></indexterm><programlisting><link linkend="void">void</link> thunarx_file_info_list_free (<link linkend="GList">GList</link> *file_infos);</programlisting>
+<para>
+Frees the resources allocated for the <parameter>file_infos</parameter>
+list and decreases the reference count on the
+<link linkend="ThunarxFileInfo"><type>ThunarxFileInfo</type></link><!---->s contained within.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>file_infos</parameter> :</term>
+<listitem><simpara> a <link linkend="GList"><type>GList</type></link> of <link linkend="ThunarxFileInfo"><type>ThunarxFileInfo</type></link><!---->s.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/xml/thunarx-menu-provider.xml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/xml/thunarx-menu-provider.xml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/xml/thunarx-menu-provider.xml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,320 @@
+<refentry id="ThunarxMenuProvider">
+<refmeta>
+<refentrytitle>ThunarxMenuProvider</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>THUNARX Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>ThunarxMenuProvider</refname><refpurpose>The interface to extensions that provide additional menu items</refpurpose>
+</refnamediv>
+<refsect1>
+<title>Stability Level</title>
+Stable, unless otherwise indicated
+</refsect1>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+#include <thunarx/thunarx.h>
+
+
+ <link linkend="ThunarxMenuProviderIface">ThunarxMenuProviderIface</link>;
+ <link linkend="ThunarxMenuProvider-struct">ThunarxMenuProvider</link>;
+<link linkend="GList">GList</link>* <link linkend="thunarx-menu-provider-get-file-actions">thunarx_menu_provider_get_file_actions</link>
+ (<link linkend="ThunarxMenuProvider">ThunarxMenuProvider</link> *provider,
+ <link linkend="GtkWidget">GtkWidget</link> *window,
+ <link linkend="GList">GList</link> *files);
+<link linkend="GList">GList</link>* <link linkend="thunarx-menu-provider-get-folder-actions">thunarx_menu_provider_get_folder_actions</link>
+ (<link linkend="ThunarxMenuProvider">ThunarxMenuProvider</link> *provider,
+ <link linkend="GtkWidget">GtkWidget</link> *window,
+ <link linkend="ThunarxFileInfo">ThunarxFileInfo</link> *folder);
+
+
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1>
+<title>Object Hierarchy</title>
+<synopsis>
+
+ <link linkend="GInterface">GInterface</link>
+ +----ThunarxMenuProvider
+</synopsis>
+
+</refsect1>
+
+<refsect1>
+<title>Prerequisites</title>
+<para>
+ThunarxMenuProvider requires
+ <link linkend="GObject">GObject</link>.</para>
+
+</refsect1>
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+ The <interface>ThunarxMenuProvider</interface> interface is implemented by
+ extensions which provide additional menu items that should be displayed in
+ the file or folder context menus for certain types of files.
+</para>
+
+<para>
+ Extensions that implement this interface should do its best to respond as
+ fast as possible to method invokations by the file manager. That said, when
+ the file manager calls the <link linkend="thunarx-menu-provider-get-file-actions"><function>thunarx_menu_provider_get_file_actions()</function></link> or the
+ <link linkend="thunarx-menu-provider-get-folder-actions"><function>thunarx_menu_provider_get_folder_actions()</function></link> method, the implementation in the
+ extension should use only the <link linkend="thunarx-file-info-has-mime-type"><function>thunarx_file_info_has_mime_type()</function></link> and
+ <link linkend="thunarx-file-info-is-directory"><function>thunarx_file_info_is_directory()</function></link> methods to determine the actions that should
+ be added to the file manager's context menu. Don't perform any complicated I/O
+ to determine the action list, as that would block the whole file manager process.
+</para>
+
+<para>
+ The <link linkend="GtkAction">GtkAction</link>s returned from the
+ <link linkend="thunarx-menu-provider-get-file-actions"><function>thunarx_menu_provider_get_file_actions()</function></link> and <link linkend="thunarx-menu-provider-get-folder-actions"><function>thunarx_menu_provider_get_folder_actions()</function></link>
+ methods must be namespaced with the module to avoid collision with internal file manager
+ actions and actions provided by other extensions. For example, the menu action provided
+ by the <systemitem class="library">ThunarOpenTerminal</systemitem> extension should be
+ called <literal>ThunarOpenTerminal::open-terminal</literal>.
+</para>
+
+<example>
+ <title>Menu provider example</title>
+
+ <programlisting>
+static GType hello_type;
+
+static void hello_menu_provider_init (ThunarxMenuProviderIface *iface);
+static GList *hello_get_file_actions (ThunarxMenuProvider *provider,
+ GtkWidget *window,
+ GList *files);
+
+static void
+hello_register_type (GTypeModule *module)
+{
+ static const GTypeInfo info =
+ {
+ sizeof (HelloClass),
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ sizeof (Hello),
+ 0,
+ NULL,
+ NULL,
+ };
+
+ static const GInterfaceInfo menu_provider_info =
+ {
+ (GInterfaceInitFunc) hello_menu_provider_init,
+ NULL,
+ NULL,
+ };
+
+ hello_type = g_type_module_register_type (module, G_TYPE_OBJECT,
+ "Hello", &info, 0);
+ g_type_module_add_interface (module, hello_type,
+ THUNARX_TYPE_MENU_PROVIDER,
+ &menu_provider_info);
+}
+
+static void
+hello_menu_provider_init (ThunarxMenuProviderIface *iface)
+{
+ iface->get_file_actions = hello_get_file_actions;
+}
+
+static void
+hello_activated (GtkAction *action,
+ GtkWidget *window)
+{
+ GtkWidget *dialog;
+
+ dialog = gtk_message_dialog_new (GTK_WINDOW (window),
+ GTK_DIALOG_MODAL
+ | GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_INFO,
+ GTK_BUTTONS_OK,
+ "Hello World!");
+ gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
+}
+
+static GList*
+hello_get_file_actions (ThunarxMenuProvider *provider,
+ GtkWidget *window,
+ GList *files)
+{
+ GtkAction *action;
+
+ action = gtk_action_new ("Hello::say-hello",
+ "Say hello", "Say hello",
+ NULL);
+ g_signal_connect (G_OBJECT (action), "activate",
+ G_CALLBACK (hello_activated),
+ window);
+
+ return g_list_append (NULL, action);
+}</programlisting>
+
+ <para>
+ The above example will add an item <guimenu><guimenuitem>Say hello</guimenuitem></guimenu>
+ to the file context menus as shown in the picture below:
+ </para>
+
+ <para>
+ <inlinegraphic fileref="say-hello.png" format="PNG" />
+ </para>
+</example>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="ThunarxMenuProviderIface"/>ThunarxMenuProviderIface</title>
+<indexterm><primary>ThunarxMenuProviderIface</primary></indexterm><programlisting>typedef struct {
+ GList *(*get_file_actions) (ThunarxMenuProvider *provider,
+ GtkWidget *window,
+ GList *files);
+
+ GList *(*get_folder_actions) (ThunarxMenuProvider *provider,
+ GtkWidget *window,
+ ThunarxFileInfo *folder);
+} ThunarxMenuProviderIface;
+</programlisting>
+<para>
+ Interface with virtual methods implemented by extensions that provide
+ additional menu items for the file manager's context menus.
+</para>
+
+<para>
+ Providers don't need to implement all of the virtual methods listed in
+ the interface.
+</para><variablelist role="struct">
+<varlistentry>
+<term><structfield>get_file_actions</structfield> ()</term>
+<listitem><simpara>See <link linkend="thunarx-menu-provider-get-file-actions"><function>thunarx_menu_provider_get_file_actions()</function></link>.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><structfield>get_folder_actions</structfield> ()</term>
+<listitem><simpara>See <link linkend="thunarx-menu-provider-get-folder-actions"><function>thunarx_menu_provider_get_folder_actions()</function></link>.
+
+</simpara></listitem>
+</varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="ThunarxMenuProvider-struct"/>ThunarxMenuProvider</title>
+<indexterm><primary>ThunarxMenuProvider</primary></indexterm><programlisting>typedef struct _ThunarxMenuProvider ThunarxMenuProvider;</programlisting>
+<para>
+ Menu provider type.
+</para></refsect2>
+<refsect2>
+<title><anchor id="thunarx-menu-provider-get-file-actions"/>thunarx_menu_provider_get_file_actions ()</title>
+<indexterm><primary>thunarx_menu_provider_get_file_actions</primary></indexterm><programlisting><link linkend="GList">GList</link>* thunarx_menu_provider_get_file_actions
+ (<link linkend="ThunarxMenuProvider">ThunarxMenuProvider</link> *provider,
+ <link linkend="GtkWidget">GtkWidget</link> *window,
+ <link linkend="GList">GList</link> *files);</programlisting>
+<para>
+Returns the list of <link linkend="GtkAction"><type>GtkAction</type></link><!---->s that <parameter>provider</parameter> has to offer for
+<parameter>files</parameter>.
+</para>
+<para>
+As a special note, this method automatically takes a reference on the
+<parameter>provider</parameter> for every <link linkend="GtkAction"><type>GtkAction</type></link> object returned from the real implementation
+of this method in <parameter>provider</parameter>. This is to make sure that the extension stays
+in memory for atleast the time that the actions are used. If the extension
+wants to stay in memory for a longer time, it'll need to take care of this
+itself (e.g. by taking an additional reference on the <parameter>provider</parameter> itself,
+that's released at a later time).
+</para>
+<para>
+The caller is responsible to free the returned list of actions using
+something like this when no longer needed:
+<informalexample><programlisting>
+g_list_foreach (list, (GFunc) g_object_unref, NULL);
+g_list_free (list);
+</programlisting></informalexample></para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>provider</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarxMenuProvider"><type>ThunarxMenuProvider</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>window</parameter> :</term>
+<listitem><simpara> the <link linkend="GtkWindow"><type>GtkWindow</type></link> within which the actions will be used.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>files</parameter> :</term>
+<listitem><simpara> the list of <link linkend="ThunarxFileInfo"><type>ThunarxFileInfo</type></link><!---->s to which the actions will be applied.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the list of <link linkend="GtkAction"><type>GtkAction</type></link><!---->s that <parameter>provider</parameter> has to offer
+ for <parameter>files</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunarx-menu-provider-get-folder-actions"/>thunarx_menu_provider_get_folder_actions ()</title>
+<indexterm><primary>thunarx_menu_provider_get_folder_actions</primary></indexterm><programlisting><link linkend="GList">GList</link>* thunarx_menu_provider_get_folder_actions
+ (<link linkend="ThunarxMenuProvider">ThunarxMenuProvider</link> *provider,
+ <link linkend="GtkWidget">GtkWidget</link> *window,
+ <link linkend="ThunarxFileInfo">ThunarxFileInfo</link> *folder);</programlisting>
+<para>
+Returns the list of <link linkend="GtkAction"><type>GtkAction</type></link><!---->s that <parameter>provider</parameter> has to offer for
+<parameter>folder</parameter>.
+</para>
+<para>
+As a special note, this method automatically takes a reference on the
+<parameter>provider</parameter> for every <link linkend="GtkAction"><type>GtkAction</type></link> object returned from the real implementation
+of this method in <parameter>provider</parameter>. This is to make sure that the extension stays
+in memory for atleast the time that the actions are used. If the extension
+wants to stay in memory for a longer time, it'll need to take care of this
+itself (e.g. by taking an additional reference on the <parameter>provider</parameter> itself,
+that's released at a later time).
+</para>
+<para>
+The caller is responsible to free the returned list of actions using
+something like this when no longer needed:
+<informalexample><programlisting>
+g_list_foreach (list, (GFunc) g_object_unref, NULL);
+g_list_free (list);
+</programlisting></informalexample></para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>provider</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarxMenuProvider"><type>ThunarxMenuProvider</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>window</parameter> :</term>
+<listitem><simpara> the <link linkend="GtkWindow"><type>GtkWindow</type></link> within which the actions will be used.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>folder</parameter> :</term>
+<listitem><simpara> the folder to which the actions should will be applied.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the list of <link linkend="GtkAction"><type>GtkAction</type></link><!---->s that <parameter>provider</parameter> has to offer
+ for <parameter>folder</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+<refsect1>
+<title>See Also</title>
+<para>
+ The description of the <link linkend="ThunarxFileInfo">ThunarxFileInfo</link>
+ interface.
+</para>
+</refsect1>
+
+</refentry>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/xml/thunarx-property-page-provider.xml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/xml/thunarx-property-page-provider.xml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/xml/thunarx-property-page-provider.xml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,145 @@
+<refentry id="ThunarxPropertyPageProvider">
+<refmeta>
+<refentrytitle>ThunarxPropertyPageProvider</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>THUNARX Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>ThunarxPropertyPageProvider</refname><refpurpose>The interface to extensions that provide additional property pages</refpurpose>
+</refnamediv>
+<refsect1>
+<title>Stability Level</title>
+Stable, unless otherwise indicated
+</refsect1>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+#include <thunarx/thunarx.h>
+
+
+ <link linkend="ThunarxPropertyPageProvider-struct">ThunarxPropertyPageProvider</link>;
+ <link linkend="ThunarxPropertyPageProviderIface">ThunarxPropertyPageProviderIface</link>;
+<link linkend="GList">GList</link>* <link linkend="thunarx-property-page-provider-get-pages">thunarx_property_page_provider_get_pages</link>
+ (<link linkend="ThunarxPropertyPageProvider">ThunarxPropertyPageProvider</link> *provider,
+ <link linkend="GList">GList</link> *files);
+
+
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1>
+<title>Object Hierarchy</title>
+<synopsis>
+
+ <link linkend="GInterface">GInterface</link>
+ +----ThunarxPropertyPageProvider
+</synopsis>
+
+</refsect1>
+
+<refsect1>
+<title>Prerequisites</title>
+<para>
+ThunarxPropertyPageProvider requires
+ <link linkend="GObject">GObject</link>.</para>
+
+</refsect1>
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+ To add a property page to the file properties dialog, extensions must implement the
+ <type>ThunarxPropertyPageProvider</type> interface. This interface has only one virtual
+ method, <function>get_pages</function>, that is passed a list of <link
+ linkend="ThunarxFileInfo"><type>ThunarxFileInfo</type></link> objects and returns a list
+ of <link linkend="ThunarxPropertyPage"><type>ThunarxPropertyPage</type></link> objects.
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="ThunarxPropertyPageProvider-struct"/>ThunarxPropertyPageProvider</title>
+<indexterm><primary>ThunarxPropertyPageProvider</primary></indexterm><programlisting>typedef struct _ThunarxPropertyPageProvider ThunarxPropertyPageProvider;</programlisting>
+<para>
+ Property page provider type.
+</para></refsect2>
+<refsect2>
+<title><anchor id="ThunarxPropertyPageProviderIface"/>ThunarxPropertyPageProviderIface</title>
+<indexterm><primary>ThunarxPropertyPageProviderIface</primary></indexterm><programlisting>typedef struct {
+ GList *(*get_pages) (ThunarxPropertyPageProvider *provider,
+ GList *files);
+} ThunarxPropertyPageProviderIface;
+</programlisting>
+<para>
+ Interface with virtual methods implemented by extensions that provide
+ additional pages for the file properties dialog.
+</para><variablelist role="struct">
+<varlistentry>
+<term><structfield>get_pages</structfield> ()</term>
+<listitem><simpara>See <link linkend="thunarx-property-page-provider-get-pages"><function>thunarx_property_page_provider_get_pages()</function></link>.
+
+</simpara></listitem>
+</varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunarx-property-page-provider-get-pages"/>thunarx_property_page_provider_get_pages ()</title>
+<indexterm><primary>thunarx_property_page_provider_get_pages</primary></indexterm><programlisting><link linkend="GList">GList</link>* thunarx_property_page_provider_get_pages
+ (<link linkend="ThunarxPropertyPageProvider">ThunarxPropertyPageProvider</link> *provider,
+ <link linkend="GList">GList</link> *files);</programlisting>
+<para>
+Returns the list of <link linkend="ThunarxPropertyPage"><type>ThunarxPropertyPage</type></link><!---->s that <parameter>provider</parameter> has to offer for <parameter>files</parameter>.
+</para>
+<para>
+As a special note, this method automatically takes a reference on the
+<parameter>provider</parameter> for every <link linkend="ThunarxPropertyPage"><type>ThunarxPropertyPage</type></link> object returned from the real implementation
+of this method in <parameter>provider</parameter>. This is to make sure that the extension stays
+in memory for atleast the time that the pages are used. If the extension
+wants to stay in memory for a longer time, it'll need to take care of this
+itself (e.g. by taking an additional reference on the <parameter>provider</parameter> itself,
+that's released at a later time).
+</para>
+<para>
+The caller is responsible to free the returned list of pages using
+something like this when no longer needed:
+<informalexample><programlisting>
+g_list_foreach (list, (GFunc) g_object_ref, NULL);
+g_list_foreach (list, (GFunc) gtk_object_sink, NULL);
+g_list_foreach (list, (GFunc) g_object_unref, NULL);
+g_list_free (list);
+</programlisting></informalexample></para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>provider</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarxPropertyPageProvider"><type>ThunarxPropertyPageProvider</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>files</parameter> :</term>
+<listitem><simpara> the list of <link linkend="ThunarxFileInfo"><type>ThunarxFileInfo</type></link><!---->s for which a properties dialog will be displayed.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the list of <link linkend="ThunarxPropertyPage"><type>ThunarxPropertyPage</type></link><!---->s that <parameter>provider</parameter> has to offer
+ for <parameter>files</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+<refsect1>
+<title>See Also</title>
+<para>
+ The description of the <link linkend="ThunarxPropertyPage"><type>ThunarxPropertyPage</type></link> class.
+</para>
+</refsect1>
+
+</refentry>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/xml/thunarx-property-page.xml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/xml/thunarx-property-page.xml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/xml/thunarx-property-page.xml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,218 @@
+<refentry id="ThunarxPropertyPage">
+<refmeta>
+<refentrytitle>ThunarxPropertyPage</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>THUNARX Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>ThunarxPropertyPage</refname><refpurpose>Base class for pages added to the properties dialog</refpurpose>
+</refnamediv>
+<refsect1>
+<title>Stability Level</title>
+Stable, unless otherwise indicated
+</refsect1>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+#include <thunarx/thunarx.h>
+
+
+ <link linkend="ThunarxPropertyPage-struct">ThunarxPropertyPage</link>;
+<link linkend="GtkWidget">GtkWidget</link>* <link linkend="thunarx-property-page-new">thunarx_property_page_new</link> (const <link linkend="gchar">gchar</link> *label);
+<link linkend="GtkWidget">GtkWidget</link>* <link linkend="thunarx-property-page-new-with-label-widget">thunarx_property_page_new_with_label_widget</link>
+ (<link linkend="GtkWidget">GtkWidget</link> *label_widget);
+const <link linkend="gchar">gchar</link>* <link linkend="thunarx-property-page-get-label">thunarx_property_page_get_label</link>
+ (<link linkend="ThunarxPropertyPage">ThunarxPropertyPage</link> *property_page);
+<link linkend="void">void</link> <link linkend="thunarx-property-page-set-label">thunarx_property_page_set_label</link> (<link linkend="ThunarxPropertyPage">ThunarxPropertyPage</link> *property_page,
+ const <link linkend="gchar">gchar</link> *label);
+<link linkend="GtkWidget">GtkWidget</link>* <link linkend="thunarx-property-page-get-label-widget">thunarx_property_page_get_label_widget</link>
+ (<link linkend="ThunarxPropertyPage">ThunarxPropertyPage</link> *property_page);
+<link linkend="void">void</link> <link linkend="thunarx-property-page-set-label-widget">thunarx_property_page_set_label_widget</link>
+ (<link linkend="ThunarxPropertyPage">ThunarxPropertyPage</link> *property_page,
+ <link linkend="GtkWidget">GtkWidget</link> *label_widget);
+
+
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1>
+<title>Object Hierarchy</title>
+<synopsis>
+
+ <link linkend="GObject">GObject</link>
+ +----<link linkend="GtkObject">GtkObject</link>
+ +----<link linkend="GtkWidget">GtkWidget</link>
+ +----<link linkend="GtkContainer">GtkContainer</link>
+ +----<link linkend="GtkBin">GtkBin</link>
+ +----ThunarxPropertyPage
+</synopsis>
+
+</refsect1>
+
+
+
+<refsect1>
+<title>Implemented Interfaces</title>
+<para>
+ThunarxPropertyPage implements
+ <link linkend="AtkImplementorIface">AtkImplementorIface</link>.</para>
+
+</refsect1>
+
+
+<refsect1>
+<title>Properties</title>
+<synopsis>
+
+ "<link linkend="ThunarxPropertyPage--label">label</link>" <link linkend="gchararray">gchararray</link> : Read / Write
+ "<link linkend="ThunarxPropertyPage--label-widget">label-widget</link>" <link linkend="GtkWidget">GtkWidget</link> : Read / Write
+</synopsis>
+</refsect1>
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+ The class for pages that can be added to Thunar's file properties dialog
+ by extensions implementing the <link linkend="ThunarxPropertyPageProvider"><type>ThunarxPropertyPageProvider</type></link> interface.
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="ThunarxPropertyPage-struct"/>ThunarxPropertyPage</title>
+<indexterm><primary>ThunarxPropertyPage</primary></indexterm><programlisting>typedef struct _ThunarxPropertyPage ThunarxPropertyPage;</programlisting>
+<para>
+ Base instance type for property pages.
+</para></refsect2>
+<refsect2>
+<title><anchor id="thunarx-property-page-new"/>thunarx_property_page_new ()</title>
+<indexterm><primary>thunarx_property_page_new</primary></indexterm><programlisting><link linkend="GtkWidget">GtkWidget</link>* thunarx_property_page_new (const <link linkend="gchar">gchar</link> *label);</programlisting>
+<para>
+Allocates a new <link linkend="ThunarxPropertyPage"><type>ThunarxPropertyPage</type></link> widget and sets its label to the
+specified <parameter>label</parameter>. If <parameter>label</parameter> is <literal>NULL</literal>, the label is omitted.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>label</parameter> :</term>
+<listitem><simpara> the text to use as the label of the page.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the newly allocated <link linkend="ThunarxPropertyPage"><type>ThunarxPropertyPage</type></link>
+ widget.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunarx-property-page-new-with-label-widget"/>thunarx_property_page_new_with_label_widget ()</title>
+<indexterm><primary>thunarx_property_page_new_with_label_widget</primary></indexterm><programlisting><link linkend="GtkWidget">GtkWidget</link>* thunarx_property_page_new_with_label_widget
+ (<link linkend="GtkWidget">GtkWidget</link> *label_widget);</programlisting>
+<para>
+Allocates a new <link linkend="ThunarxPropertyPage"><type>ThunarxPropertyPage</type></link> widget and sets its label to
+the specified <parameter>label_widget</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>label_widget</parameter> :</term>
+<listitem><simpara> a <link linkend="GtkWidget"><type>GtkWidget</type></link>, which should be used as label.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the newly allocated <link linkend="ThunarxPropertyPage"><type>ThunarxPropertyPage</type></link> widget.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunarx-property-page-get-label"/>thunarx_property_page_get_label ()</title>
+<indexterm><primary>thunarx_property_page_get_label</primary></indexterm><programlisting>const <link linkend="gchar">gchar</link>* thunarx_property_page_get_label
+ (<link linkend="ThunarxPropertyPage">ThunarxPropertyPage</link> *property_page);</programlisting>
+<para>
+If the <parameter>property_page</parameter>'s label widget is a <link linkend="GtkLabel"><type>GtkLabel</type></link>, returns the text
+in the label widget (the <parameter>property_page</parameter> will have a <link linkend="GtkLabel"><type>GtkLabel</type></link> for the
+label widget if a non-<literal>NULL</literal> argument was passed to <link linkend="thunarx-property-page-new"><function>thunarx_property_page_new()</function></link>).</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>property_page</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarxPropertyPage"><type>ThunarxPropertyPage</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the text in the label or <literal>NULL</literal> if there was no label widget or
+ the label widget was not a <link linkend="GtkLabel"><type>GtkLabel</type></link>. The returned string is
+ owned by the <parameter>property_page</parameter> and must not be modified or freed.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunarx-property-page-set-label"/>thunarx_property_page_set_label ()</title>
+<indexterm><primary>thunarx_property_page_set_label</primary></indexterm><programlisting><link linkend="void">void</link> thunarx_property_page_set_label (<link linkend="ThunarxPropertyPage">ThunarxPropertyPage</link> *property_page,
+ const <link linkend="gchar">gchar</link> *label);</programlisting>
+<para>
+Sets the text of the label. If <parameter>label</parameter> is <literal>NULL</literal>, the current label is
+removed.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>property_page</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarxPropertyPage"><type>ThunarxPropertyPage</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>label</parameter> :</term>
+<listitem><simpara> the text to use as the label of the page.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunarx-property-page-get-label-widget"/>thunarx_property_page_get_label_widget ()</title>
+<indexterm><primary>thunarx_property_page_get_label_widget</primary></indexterm><programlisting><link linkend="GtkWidget">GtkWidget</link>* thunarx_property_page_get_label_widget
+ (<link linkend="ThunarxPropertyPage">ThunarxPropertyPage</link> *property_page);</programlisting>
+<para>
+Returns the label widget for the <parameter>property_page</parameter>. See
+<link linkend="thunarx-property-page-set-label-widget"><function>thunarx_property_page_set_label_widget()</function></link>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>property_page</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarxPropertyPage"><type>ThunarxPropertyPage</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the label widget or <literal>NULL</literal> if there is none.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="thunarx-property-page-set-label-widget"/>thunarx_property_page_set_label_widget ()</title>
+<indexterm><primary>thunarx_property_page_set_label_widget</primary></indexterm><programlisting><link linkend="void">void</link> thunarx_property_page_set_label_widget
+ (<link linkend="ThunarxPropertyPage">ThunarxPropertyPage</link> *property_page,
+ <link linkend="GtkWidget">GtkWidget</link> *label_widget);</programlisting>
+<para>
+Sets the label widget for the <parameter>property_page</parameter>. This is the widget
+that will appear in the notebook header for the <parameter>property_page</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>property_page</parameter> :</term>
+<listitem><simpara> a <link linkend="ThunarxPropertyPage"><type>ThunarxPropertyPage</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>label_widget</parameter> :</term>
+<listitem><simpara> the new label widget.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+<refsect1>
+<title>Properties</title>
+<refsect2><title><anchor id="ThunarxPropertyPage--label"/>The "<literal>label</literal>" property</title>
+<programlisting> "label" <link linkend="gchararray">gchararray</link> : Read / Write</programlisting>
+<para>Text of the page's label.</para><para>Default value: NULL</para>
+</refsect2>
+<refsect2><title><anchor id="ThunarxPropertyPage--label-widget"/>The "<literal>label-widget</literal>" property</title>
+<programlisting> "label-widget" <link linkend="GtkWidget">GtkWidget</link> : Read / Write</programlisting>
+<para>A widget to display in place of the usual page label.</para></refsect2>
+
+</refsect1>
+
+
+
+<refsect1>
+<title>See Also</title>
+<para>
+ The description of the <link linkend="ThunarxPropertyPageProvider"><type>ThunarxPropertyPageProvider</type></link> interface.
+</para>
+</refsect1>
+
+</refentry>
Added: desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/xml/thunarx-version-information.xml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/xml/thunarx-version-information.xml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/docs/reference/thunarx/xml/thunarx-version-information.xml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,222 @@
+<refentry id="thunarx-Variables-and-functions-to-check-the-library-version">
+<refmeta>
+<refentrytitle>Version information</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>THUNARX Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>Version information</refname><refpurpose>Variables and functions to check the library version</refpurpose>
+</refnamediv>
+<refsect1>
+<title>Stability Level</title>
+Stable, unless otherwise indicated
+</refsect1>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+#include <thunarx/thunarx.h>
+
+
+extern const guint <link linkend="thunarx-major-version">thunarx_major_version</link>;
+extern const guint <link linkend="thunarx-minor-version">thunarx_minor_version</link>;
+extern const guint <link linkend="thunarx-micro-version">thunarx_micro_version</link>;
+const <link linkend="gchar">gchar</link>* <link linkend="thunarx-check-version">thunarx_check_version</link> (<link linkend="guint">guint</link> required_major,
+ <link linkend="guint">guint</link> required_minor,
+ <link linkend="guint">guint</link> required_micro);
+#define <link linkend="THUNARX-MAJOR-VERSION:CAPS">THUNARX_MAJOR_VERSION</link>
+#define <link linkend="THUNARX-MINOR-VERSION:CAPS">THUNARX_MINOR_VERSION</link>
+#define <link linkend="THUNARX-MICRO-VERSION:CAPS">THUNARX_MICRO_VERSION</link>
+#define <link linkend="THUNARX-CHECK-VERSION:CAPS">THUNARX_CHECK_VERSION</link> (major,minor,micro)
+</synopsis>
+</refsynopsisdiv>
+
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+ The Thunar Extension library provides version information,
+ which should be used by extensions.
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="thunarx-major-version"/>thunarx_major_version</title>
+<indexterm><primary>thunarx_major_version</primary></indexterm><programlisting>extern const guint thunarx_major_version;
+</programlisting>
+<para>
+The major version number of the
+<systemitem class="library">thunarx</systemitem> library (e.g. in
+version 0.5.1 this is 0).
+</para>
+<para>
+This variable is in the library, so represents the
+<systemitem class="library">thunarx</systemitem> library you have
+linked against. Contrast with the <link linkend="THUNARX-MAJOR-VERSION:CAPS"><type>THUNARX_MAJOR_VERSION</type></link> macro, which
+represents the major version of the
+<systemitem class="library">thunarx</systemitem> headers you have
+included.</para>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="thunarx-minor-version"/>thunarx_minor_version</title>
+<indexterm><primary>thunarx_minor_version</primary></indexterm><programlisting>extern const guint thunarx_minor_version;
+</programlisting>
+<para>
+The minor version number of the
+<systemitem class="library">thunarx</systemitem> library (e.g. in
+version 0.5.1 this is 5).
+</para>
+<para>
+This variable is in the library, so represents the
+<systemitem class="library">thunarx</systemitem> library you have
+linked against. Contrast with the <link linkend="THUNARX-MINOR-VERSION:CAPS"><type>THUNARX_MINOR_VERSION</type></link> macro, which
+represents the minor version of the
+<systemitem class="library">thunarx</systemitem> headers you have
+included.</para>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="thunarx-micro-version"/>thunarx_micro_version</title>
+<indexterm><primary>thunarx_micro_version</primary></indexterm><programlisting>extern const guint thunarx_micro_version;
+</programlisting>
+<para>
+The micro version number of the
+<systemitem class="library">thunarx</systemitem> library (e.g. in
+version 0.5.1 this is 1).
+</para>
+<para>
+This variable is in the library, so represents the
+<systemitem class="library">thunarx</systemitem> library you have
+linked against. Contrast with the <link linkend="THUNARX-MICRO-VERSION:CAPS"><type>THUNARX_MICRO_VERSION</type></link> macro, which
+represents the micro version of the
+<systemitem class="library">thunarx</systemitem> headers you have
+included.</para>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="thunarx-check-version"/>thunarx_check_version ()</title>
+<indexterm><primary>thunarx_check_version</primary></indexterm><programlisting>const <link linkend="gchar">gchar</link>* thunarx_check_version (<link linkend="guint">guint</link> required_major,
+ <link linkend="guint">guint</link> required_minor,
+ <link linkend="guint">guint</link> required_micro);</programlisting>
+<para>
+Checks that the <systemitem class="library">thunarx</systemitem> library
+in use is compatible with the given version. Generally you would pass in
+the constants <link linkend="THUNARX-MAJOR-VERSION:CAPS"><type>THUNARX_MAJOR_VERSION</type></link>, <link linkend="THUNARX-MINOR-VERSION:CAPS"><type>THUNARX_MINOR_VERSION</type></link> and
+<link linkend="THUNARX-VERSION-MICRO:CAPS"><type>THUNARX_VERSION_MICRO</type></link> as the three arguments to this function; that produces
+a check that the library in use is compatible with the version of
+<systemitem class="library">thunarx</systemitem> the extension was
+compiled against.
+</para>
+<para>
+This function should be called by extensions in the
+<link linkend="thunar-extension-initialize"><function>thunar_extension_initialize()</function></link> method to verify that the <systemitem
+class="library">thunarx</systemitem> library used by file manager is
+compatible with the version the extension was compiled with.
+</para>
+<para>
+<example>
+<title>Checking the runtime version of the Thunar Extension library</title>
+<programlisting>
+const gchar *mismatch;
+mismatch = thunarx_check_version (THUNARX_VERSION_MAJOR,
+ THUNARX_VERSION_MINOR,
+ THUNARX_VERSION_MICRO);
+if (G_UNLIKELY (mismatch != NULL))
+ g_error ("Version mismatch: %<!---->s", mismatch);
+</programlisting>
+</example></para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>required_major</parameter> :</term>
+<listitem><simpara> the required major version.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>required_minor</parameter> :</term>
+<listitem><simpara> the required minor version.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>required_micro</parameter> :</term>
+<listitem><simpara> the required micro version.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <literal>NULL</literal> if the library is compatible with the given version,
+ or a string describing the version mismatch. The returned
+ string is owned by the library and must not be freed or
+ modified by the caller.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="THUNARX-MAJOR-VERSION:CAPS"/>THUNARX_MAJOR_VERSION</title>
+<indexterm><primary>THUNARX_MAJOR_VERSION</primary></indexterm><programlisting>#define THUNARX_MAJOR_VERSION 0
+</programlisting>
+<para>
+ The major version number of the <systemitem class="library">thunarx</systemitem> library.
+ Like thunarx_major_version, but from the headers used at application compile time, rather
+ than from the library linked against at application run time.
+</para></refsect2>
+<refsect2>
+<title><anchor id="THUNARX-MINOR-VERSION:CAPS"/>THUNARX_MINOR_VERSION</title>
+<indexterm><primary>THUNARX_MINOR_VERSION</primary></indexterm><programlisting>#define THUNARX_MINOR_VERSION 1
+</programlisting>
+<para>
+ The minor version number of the <systemitem class="library">thunarx</systemitem> library.
+ Like thunarx_minor_version, but from the headers used at application compile time, rather
+ than from the library linked against at application run time.
+</para></refsect2>
+<refsect2>
+<title><anchor id="THUNARX-MICRO-VERSION:CAPS"/>THUNARX_MICRO_VERSION</title>
+<indexterm><primary>THUNARX_MICRO_VERSION</primary></indexterm><programlisting>#define THUNARX_MICRO_VERSION 3
+</programlisting>
+<para>
+ The micro version number of the <systemitem class="library">thunarx</systemitem> library.
+ Like thunarx_micro_version, but from the headers used at application compile time, rather
+ than from the library linked against at application run time.
+</para></refsect2>
+<refsect2>
+<title><anchor id="THUNARX-CHECK-VERSION:CAPS"/>THUNARX_CHECK_VERSION()</title>
+<indexterm><primary>THUNARX_CHECK_VERSION</primary></indexterm><programlisting>#define THUNARX_CHECK_VERSION(major,minor,micro)</programlisting>
+<para>
+ Checks the version of the <systemitem class="library">thunarx</systemitem> library. Returns
+ <literal>TRUE</literal> if the version of the <systemitem class="library">thunarx</systemitem> header files is
+ the same as or newer than the passed-in version.
+</para>
+
+<example>
+ <title>Checking the version of the Thunar Extension library</title>
+
+ <programlisting>
+if (!THUNARX_CHECK_VERSION (0, 1, 0))
+ g_error ("Thunarx version 0.1.0 or above is required");</programlisting>
+</example><variablelist role="params">
+<varlistentry><term><parameter>major</parameter> :</term>
+<listitem><simpara>the major version number.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>minor</parameter> :</term>
+<listitem><simpara>the minor version number
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>micro</parameter> :</term>
+<listitem><simpara>the micro version number.
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>
Added: desktop/trunk/thunar/branches/upstream/current/examples/Makefile.am
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/examples/Makefile.am 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/examples/Makefile.am 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,6 @@
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+
+SUBDIRS = \
+ open-terminal-here
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
Added: desktop/trunk/thunar/branches/upstream/current/examples/Makefile.in
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/examples/Makefile.in 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/examples/Makefile.in 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,573 @@
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004 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.
+
+ at SET_MAKE@
+
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+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@
+target_triplet = @target@
+subdir = examples
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-exec-recursive install-info-recursive \
+ install-recursive installcheck-recursive installdirs-recursive \
+ pdf-recursive ps-recursive uninstall-info-recursive \
+ uninstall-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CAIRO_REQUIRED_VERSION = @CAIRO_REQUIRED_VERSION@
+CAIRO_VERSION = @CAIRO_VERSION@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@
+ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@
+EXEEXT = @EXEEXT@
+EXO_CFLAGS = @EXO_CFLAGS@
+EXO_LIBS = @EXO_LIBS@
+EXO_REQUIRED_VERSION = @EXO_REQUIRED_VERSION@
+EXO_VERSION = @EXO_VERSION@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GCONF_CFLAGS = @GCONF_CFLAGS@
+GCONF_LIBS = @GCONF_LIBS@
+GCONF_REQUIRED_VERSION = @GCONF_REQUIRED_VERSION@
+GCONF_VERSION = @GCONF_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_REQUIRED_VERSION = @GLIB_REQUIRED_VERSION@
+GLIB_VERSION = @GLIB_VERSION@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTHREAD_REQUIRED_VERSION = @GTHREAD_REQUIRED_VERSION@
+GTHREAD_VERSION = @GTHREAD_VERSION@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+GTK_LIBS = @GTK_LIBS@
+GTK_REQUIRED_VERSION = @GTK_REQUIRED_VERSION@
+GTK_VERSION = @GTK_VERSION@
+HAVE_CAIRO_FALSE = @HAVE_CAIRO_FALSE@
+HAVE_CAIRO_TRUE = @HAVE_CAIRO_TRUE@
+HAVE_GCONF_FALSE = @HAVE_GCONF_FALSE@
+HAVE_GCONF_TRUE = @HAVE_GCONF_TRUE@
+HAVE_GNUC_VISIBILITY_FALSE = @HAVE_GNUC_VISIBILITY_FALSE@
+HAVE_GNUC_VISIBILITY_TRUE = @HAVE_GNUC_VISIBILITY_TRUE@
+HAVE_LIBSTARTUP_NOTIFICATION_FALSE = @HAVE_LIBSTARTUP_NOTIFICATION_FALSE@
+HAVE_LIBSTARTUP_NOTIFICATION_TRUE = @HAVE_LIBSTARTUP_NOTIFICATION_TRUE@
+HTML_DIR = @HTML_DIR@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LIBFAM_CFLAGS = @LIBFAM_CFLAGS@
+LIBFAM_LIBS = @LIBFAM_LIBS@
+LIBFAM_REQUIRED_VERSION = @LIBFAM_REQUIRED_VERSION@
+LIBFAM_VERSION = @LIBFAM_VERSION@
+LIBJPEG_CFLAGS = @LIBJPEG_CFLAGS@
+LIBJPEG_LIBS = @LIBJPEG_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
+LIBPNG_LIBS = @LIBPNG_LIBS@
+LIBPNG_REQUIRED_VERSION = @LIBPNG_REQUIRED_VERSION@
+LIBPNG_VERSION = @LIBPNG_VERSION@
+LIBS = @LIBS@
+LIBSTARTUP_NOTIFICATION_CFLAGS = @LIBSTARTUP_NOTIFICATION_CFLAGS@
+LIBSTARTUP_NOTIFICATION_LIBS = @LIBSTARTUP_NOTIFICATION_LIBS@
+LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION = @LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION@
+LIBSTARTUP_NOTIFICATION_VERSION = @LIBSTARTUP_NOTIFICATION_VERSION@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_CFLAGS = @PLATFORM_CFLAGS@
+PLATFORM_CPPFLAGS = @PLATFORM_CPPFLAGS@
+PLATFORM_LDFLAGS = @PLATFORM_LDFLAGS@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TDB_U32_TYPE = @TDB_U32_TYPE@
+THUNAR_VERINFO = @THUNAR_VERINFO@
+THUNAR_VERSION_API = @THUNAR_VERSION_API@
+THUNAR_VERSION_MAJOR = @THUNAR_VERSION_MAJOR@
+THUNAR_VERSION_MICRO = @THUNAR_VERSION_MICRO@
+THUNAR_VERSION_MINOR = @THUNAR_VERSION_MINOR@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_ARGS = @XGETTEXT_ARGS@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+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@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+SUBDIRS = \
+ open-terminal-here
+
+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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu examples/Makefile
+.PRECIOUS: 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
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+
+# 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.
+$(RECURSIVE_TARGETS):
+ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; 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; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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 || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+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)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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 \
+ test -d "$(distdir)/$$subdir" \
+ || $(mkdir_p) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ 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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-libtool \
+ distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+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: uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
+ clean clean-generic clean-libtool clean-recursive ctags \
+ ctags-recursive distclean distclean-generic distclean-libtool \
+ distclean-recursive distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-exec install-exec-am install-info \
+ install-info-am install-man install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic maintainer-clean-recursive \
+ mostlyclean mostlyclean-generic mostlyclean-libtool \
+ mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
+ uninstall uninstall-am uninstall-info-am
+
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
+# 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:
Added: desktop/trunk/thunar/branches/upstream/current/examples/open-terminal-here/Makefile.am
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/examples/open-terminal-here/Makefile.am 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/examples/open-terminal-here/Makefile.am 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,40 @@
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+
+INCLUDES = \
+ -I$(top_builddir) \
+ -I$(top_srcdir) \
+ -DG_LOG_DOMAIN=\"OpenTerminalHere\" \
+ $(PLATFORM_CPPFLAGS)
+
+extensionsdir = $(libdir)/thunarx-$(THUNAR_VERSION_API)
+extensions_LTLIBRARIES = \
+ open-terminal-here.la
+
+open_terminal_here_la_SOURCES = \
+ open-terminal-here.c
+
+open_terminal_here_la_CFLAGS = \
+ $(GTK_CFLAGS) \
+ $(PLATFORM_CFLAGS)
+
+open_terminal_here_la_DEPENDENCIES = \
+ $(top_builddir)/thunarx/libthunarx-$(THUNAR_VERSION_API).la
+
+open_terminal_here_la_LIBADD = \
+ $(top_builddir)/thunarx/libthunarx-$(THUNAR_VERSION_API).la \
+ $(GTK_LIBS)
+
+open_terminal_here_la_LDFLAGS = \
+ -avoid-version \
+ -export-dynamic \
+ -module \
+ $(PLATFORM_LDFLAGS)
+
+EXTRA_DIST = \
+ README
+
+# Don't install/uninstall examples by default
+install:
+uninstall:
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
Added: desktop/trunk/thunar/branches/upstream/current/examples/open-terminal-here/Makefile.in
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/examples/open-terminal-here/Makefile.in 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/examples/open-terminal-here/Makefile.in 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,608 @@
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004 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.
+
+ at SET_MAKE@
+
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+
+SOURCES = $(open_terminal_here_la_SOURCES)
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+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@
+target_triplet = @target@
+subdir = examples/open-terminal-here
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_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 = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(extensionsdir)"
+extensionsLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(extensions_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+am_open_terminal_here_la_OBJECTS = \
+ open_terminal_here_la-open-terminal-here.lo
+open_terminal_here_la_OBJECTS = $(am_open_terminal_here_la_OBJECTS)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link --tag=CC $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(open_terminal_here_la_SOURCES)
+DIST_SOURCES = $(open_terminal_here_la_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CAIRO_REQUIRED_VERSION = @CAIRO_REQUIRED_VERSION@
+CAIRO_VERSION = @CAIRO_VERSION@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@
+ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@
+EXEEXT = @EXEEXT@
+EXO_CFLAGS = @EXO_CFLAGS@
+EXO_LIBS = @EXO_LIBS@
+EXO_REQUIRED_VERSION = @EXO_REQUIRED_VERSION@
+EXO_VERSION = @EXO_VERSION@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GCONF_CFLAGS = @GCONF_CFLAGS@
+GCONF_LIBS = @GCONF_LIBS@
+GCONF_REQUIRED_VERSION = @GCONF_REQUIRED_VERSION@
+GCONF_VERSION = @GCONF_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_REQUIRED_VERSION = @GLIB_REQUIRED_VERSION@
+GLIB_VERSION = @GLIB_VERSION@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTHREAD_REQUIRED_VERSION = @GTHREAD_REQUIRED_VERSION@
+GTHREAD_VERSION = @GTHREAD_VERSION@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+GTK_LIBS = @GTK_LIBS@
+GTK_REQUIRED_VERSION = @GTK_REQUIRED_VERSION@
+GTK_VERSION = @GTK_VERSION@
+HAVE_CAIRO_FALSE = @HAVE_CAIRO_FALSE@
+HAVE_CAIRO_TRUE = @HAVE_CAIRO_TRUE@
+HAVE_GCONF_FALSE = @HAVE_GCONF_FALSE@
+HAVE_GCONF_TRUE = @HAVE_GCONF_TRUE@
+HAVE_GNUC_VISIBILITY_FALSE = @HAVE_GNUC_VISIBILITY_FALSE@
+HAVE_GNUC_VISIBILITY_TRUE = @HAVE_GNUC_VISIBILITY_TRUE@
+HAVE_LIBSTARTUP_NOTIFICATION_FALSE = @HAVE_LIBSTARTUP_NOTIFICATION_FALSE@
+HAVE_LIBSTARTUP_NOTIFICATION_TRUE = @HAVE_LIBSTARTUP_NOTIFICATION_TRUE@
+HTML_DIR = @HTML_DIR@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LIBFAM_CFLAGS = @LIBFAM_CFLAGS@
+LIBFAM_LIBS = @LIBFAM_LIBS@
+LIBFAM_REQUIRED_VERSION = @LIBFAM_REQUIRED_VERSION@
+LIBFAM_VERSION = @LIBFAM_VERSION@
+LIBJPEG_CFLAGS = @LIBJPEG_CFLAGS@
+LIBJPEG_LIBS = @LIBJPEG_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
+LIBPNG_LIBS = @LIBPNG_LIBS@
+LIBPNG_REQUIRED_VERSION = @LIBPNG_REQUIRED_VERSION@
+LIBPNG_VERSION = @LIBPNG_VERSION@
+LIBS = @LIBS@
+LIBSTARTUP_NOTIFICATION_CFLAGS = @LIBSTARTUP_NOTIFICATION_CFLAGS@
+LIBSTARTUP_NOTIFICATION_LIBS = @LIBSTARTUP_NOTIFICATION_LIBS@
+LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION = @LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION@
+LIBSTARTUP_NOTIFICATION_VERSION = @LIBSTARTUP_NOTIFICATION_VERSION@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_CFLAGS = @PLATFORM_CFLAGS@
+PLATFORM_CPPFLAGS = @PLATFORM_CPPFLAGS@
+PLATFORM_LDFLAGS = @PLATFORM_LDFLAGS@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TDB_U32_TYPE = @TDB_U32_TYPE@
+THUNAR_VERINFO = @THUNAR_VERINFO@
+THUNAR_VERSION_API = @THUNAR_VERSION_API@
+THUNAR_VERSION_MAJOR = @THUNAR_VERSION_MAJOR@
+THUNAR_VERSION_MICRO = @THUNAR_VERSION_MICRO@
+THUNAR_VERSION_MINOR = @THUNAR_VERSION_MINOR@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_ARGS = @XGETTEXT_ARGS@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+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@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+INCLUDES = \
+ -I$(top_builddir) \
+ -I$(top_srcdir) \
+ -DG_LOG_DOMAIN=\"OpenTerminalHere\" \
+ $(PLATFORM_CPPFLAGS)
+
+extensionsdir = $(libdir)/thunarx-$(THUNAR_VERSION_API)
+extensions_LTLIBRARIES = \
+ open-terminal-here.la
+
+open_terminal_here_la_SOURCES = \
+ open-terminal-here.c
+
+open_terminal_here_la_CFLAGS = \
+ $(GTK_CFLAGS) \
+ $(PLATFORM_CFLAGS)
+
+open_terminal_here_la_DEPENDENCIES = \
+ $(top_builddir)/thunarx/libthunarx-$(THUNAR_VERSION_API).la
+
+open_terminal_here_la_LIBADD = \
+ $(top_builddir)/thunarx/libthunarx-$(THUNAR_VERSION_API).la \
+ $(GTK_LIBS)
+
+open_terminal_here_la_LDFLAGS = \
+ -avoid-version \
+ -export-dynamic \
+ -module \
+ $(PLATFORM_LDFLAGS)
+
+EXTRA_DIST = \
+ README
+
+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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/open-terminal-here/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu examples/open-terminal-here/Makefile
+.PRECIOUS: 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
+install-extensionsLTLIBRARIES: $(extensions_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(extensionsdir)" || $(mkdir_p) "$(DESTDIR)$(extensionsdir)"
+ @list='$(extensions_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=install $(extensionsLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(extensionsdir)/$$f'"; \
+ $(LIBTOOL) --mode=install $(extensionsLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(extensionsdir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-extensionsLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @set -x; list='$(extensions_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(extensionsdir)/$$p'"; \
+ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(extensionsdir)/$$p"; \
+ done
+
+clean-extensionsLTLIBRARIES:
+ -test -z "$(extensions_LTLIBRARIES)" || rm -f $(extensions_LTLIBRARIES)
+ @list='$(extensions_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+open-terminal-here.la: $(open_terminal_here_la_OBJECTS) $(open_terminal_here_la_DEPENDENCIES)
+ $(LINK) -rpath $(extensionsdir) $(open_terminal_here_la_LDFLAGS) $(open_terminal_here_la_OBJECTS) $(open_terminal_here_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/open_terminal_here_la-open-terminal-here.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+open_terminal_here_la-open-terminal-here.lo: open-terminal-here.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(open_terminal_here_la_CFLAGS) $(CFLAGS) -MT open_terminal_here_la-open-terminal-here.lo -MD -MP -MF "$(DEPDIR)/open_terminal_here_la-open-terminal-here.Tpo" -c -o open_terminal_here_la-open-terminal-here.lo `test -f 'open-terminal-here.c' || echo '$(srcdir)/'`open-terminal-here.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/open_terminal_here_la-open-terminal-here.Tpo" "$(DEPDIR)/open_terminal_here_la-open-terminal-here.Plo"; else rm -f "$(DEPDIR)/open_terminal_here_la-open-terminal-here.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='open-terminal-here.c' object='open_terminal_here_la-open-terminal-here.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(open_terminal_here_la_CFLAGS) $(CFLAGS) -c -o open_terminal_here_la-open-terminal-here.lo `test -f 'open-terminal-here.c' || echo '$(srcdir)/'`open-terminal-here.c
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+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)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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 $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(extensionsdir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+install-exec: install-exec-am
+install-data: install-data-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-extensionsLTLIBRARIES clean-generic clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-extensionsLTLIBRARIES
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+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-extensionsLTLIBRARIES uninstall-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean \
+ clean-extensionsLTLIBRARIES clean-generic clean-libtool ctags \
+ distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-exec install-exec-am \
+ install-extensionsLTLIBRARIES install-info install-info-am \
+ install-man install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-extensionsLTLIBRARIES uninstall-info-am
+
+
+# Don't install/uninstall examples by default
+install:
+uninstall:
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
+# 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:
Added: desktop/trunk/thunar/branches/upstream/current/examples/open-terminal-here/README
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/examples/open-terminal-here/README 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/examples/open-terminal-here/README 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,15 @@
+This is an example for a Thunar Extension that provides additional context
+menu items. It adds an "Open Terminal Here" action to the folder context
+menu and to the file context menu of directories, and thereby allows you
+to open a new Terminal instance in the given folder.
+
+The example is mainly provided for developers to get an idea about how
+to write an extension that implements the ThunarxMenuProvider interface.
+
+The extension is not installed by default, as every installed extension
+increases the resources required to run Thunar. If you want to install
+this extension, you can use the command
+
+ make install-extensionsLTLIBRARIES
+
+in this directory.
Added: desktop/trunk/thunar/branches/upstream/current/examples/open-terminal-here/open-terminal-here.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/examples/open-terminal-here/open-terminal-here.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/examples/open-terminal-here/open-terminal-here.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,244 @@
+/* $Id: open-terminal-here.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#include <thunarx/thunarx.h>
+
+
+
+/* make sure to export the required public functions */
+#ifdef HAVE_GNUC_VISIBILITY
+extern void thunar_extension_initialize (GTypeModule *module) __attribute__((visibility("default")));
+extern void thunar_extension_shutdown (void) __attribute__((visibility("default")));
+extern void thunar_extension_list_types (const GType **types, gint *n_types) __attribute__((visibility("default")));
+#else
+extern G_MODULE_EXPORT void thunar_extension_initialize (GTypeModule *module);
+extern G_MODULE_EXPORT void thunar_extension_shutdown (void);
+extern G_MODULE_EXPORT void thunar_extension_list_types (const GType **types, gint *n_types);
+#endif
+
+
+
+static GType type_list[1];
+
+
+
+typedef struct _OpenTerminalHereClass OpenTerminalHereClass;
+typedef struct _OpenTerminalHere OpenTerminalHere;
+
+
+
+static void open_terminal_here_register_type (GTypeModule *module);
+static void open_terminal_here_menu_provider_init (ThunarxMenuProviderIface *iface);
+static GList *open_terminal_here_get_file_actions (ThunarxMenuProvider *provider,
+ GtkWidget *window,
+ GList *files);
+static GList *open_terminal_here_get_folder_actions (ThunarxMenuProvider *provider,
+ GtkWidget *window,
+ ThunarxFileInfo *folder);
+static void open_terminal_here_activated (GtkAction *action,
+ GtkWidget *window);
+
+
+
+struct _OpenTerminalHereClass
+{
+ GObjectClass __parent__;
+};
+
+struct _OpenTerminalHere
+{
+ GObject __parent__;
+};
+
+
+
+static void
+open_terminal_here_register_type (GTypeModule *module)
+{
+ static const GTypeInfo info =
+ {
+ sizeof (OpenTerminalHereClass),
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ sizeof (OpenTerminalHere),
+ 0,
+ NULL,
+ NULL,
+ };
+
+ static const GInterfaceInfo menu_provider_info =
+ {
+ (GInterfaceInitFunc) open_terminal_here_menu_provider_init,
+ NULL,
+ NULL,
+ };
+
+ type_list[0] = g_type_module_register_type (module, G_TYPE_OBJECT, "OpenTerminalHere", &info, 0);
+ g_type_module_add_interface (module, type_list[0], THUNARX_TYPE_MENU_PROVIDER, &menu_provider_info);
+}
+
+
+
+static void
+open_terminal_here_menu_provider_init (ThunarxMenuProviderIface *iface)
+{
+ iface->get_file_actions = open_terminal_here_get_file_actions;
+ iface->get_folder_actions = open_terminal_here_get_folder_actions;
+}
+
+
+
+static GList*
+open_terminal_here_get_file_actions (ThunarxMenuProvider *provider,
+ GtkWidget *window,
+ GList *files)
+{
+ /* check if we have a directory here */
+ if (G_LIKELY (files != NULL && files->next == NULL && thunarx_file_info_is_directory (files->data)))
+ return open_terminal_here_get_folder_actions (provider, window, files->data);
+
+ return NULL;
+}
+
+
+
+static GList*
+open_terminal_here_get_folder_actions (ThunarxMenuProvider *provider,
+ GtkWidget *window,
+ ThunarxFileInfo *folder)
+{
+ GtkAction *action = NULL;
+ gchar *scheme;
+ gchar *path;
+ gchar *uri;
+
+ /* determine the uri scheme of the folder and check if we support it */
+ scheme = thunarx_file_info_get_uri_scheme (folder);
+ if (G_LIKELY (strcmp (scheme, "file") == 0))
+ {
+ /* determine the local path to the folder */
+ uri = thunarx_file_info_get_uri (folder);
+ path = g_filename_from_uri (uri, NULL, NULL);
+ g_free (uri);
+
+ /* check if we have a valid path here */
+ if (G_LIKELY (path != NULL))
+ {
+ action = gtk_action_new ("OpenTerminalHere::open-terminal-here", "Open Terminal Here", "Open Terminal in this folder", NULL);
+ g_signal_connect (G_OBJECT (action), "activate", G_CALLBACK (open_terminal_here_activated), window);
+ g_object_set_data_full (G_OBJECT (action), "open-terminal-here-path", path, g_free);
+ }
+ }
+ g_free (scheme);
+
+ return (action != NULL) ? g_list_prepend (NULL, action) : NULL;
+}
+
+
+
+static void
+open_terminal_here_activated (GtkAction *action,
+ GtkWidget *window)
+{
+ const gchar *path;
+ GtkWidget *dialog;
+ GError *error = NULL;
+ gchar *command;
+
+ /* determine the folder path */
+ path = g_object_get_data (G_OBJECT (action), "open-terminal-here-path");
+ if (G_UNLIKELY (path == NULL))
+ return;
+
+ /* build up the command line for the terminal */
+ command = g_strdup_printf ("Terminal --working-directory \"%s\"", path);
+
+ /* try to run the terminal command */
+ if (!gdk_spawn_command_line_on_screen (gtk_widget_get_screen (window), command, &error))
+ {
+ /* display an error dialog */
+ dialog = gtk_message_dialog_new (GTK_WINDOW (window),
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_CLOSE,
+ "Failed to open terminal in folder %s.",
+ path);
+ gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), "%s.", error->message);
+ gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
+ g_error_free (error);
+ }
+
+ /* cleanup */
+ g_free (command);
+}
+
+
+
+void
+thunar_extension_initialize (GTypeModule *module)
+{
+ const gchar *mismatch;
+
+ /* verify that the thunarx versions are compatible */
+ mismatch = thunarx_check_version (THUNARX_MAJOR_VERSION, THUNARX_MINOR_VERSION, THUNARX_MICRO_VERSION);
+ if (G_UNLIKELY (mismatch != NULL))
+ {
+ g_warning ("Version mismatch: %s", mismatch);
+ return;
+ }
+
+ g_message ("Initializing OpenTerminalHere extension");
+
+ open_terminal_here_register_type (module);
+}
+
+
+
+void
+thunar_extension_shutdown (void)
+{
+ g_message ("Shutting down OpenTerminalHere extension");
+}
+
+
+
+void
+thunar_extension_list_types (const GType **types,
+ gint *n_types)
+{
+ *types = type_list;
+ *n_types = G_N_ELEMENTS (type_list);
+}
+
Added: desktop/trunk/thunar/branches/upstream/current/gtk-doc.make
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/gtk-doc.make 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/gtk-doc.make 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,153 @@
+# -*- mode: makefile -*-
+
+####################################
+# Everything below here is generic #
+####################################
+
+if GTK_DOC_USE_LIBTOOL
+GTKDOC_CC = $(LIBTOOL) --mode=compile $(CC) $(INCLUDES) $(AM_CFLAGS) $(CFLAGS)
+GTKDOC_LD = $(LIBTOOL) --mode=link $(CC) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS)
+else
+GTKDOC_CC = $(CC) $(INCLUDES) $(AM_CFLAGS) $(CFLAGS)
+GTKDOC_LD = $(CC) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS)
+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)
+
+EXTRA_DIST = \
+ $(content_files) \
+ $(HTML_IMAGES) \
+ $(DOC_MAIN_SGML_FILE) \
+ $(DOC_MODULE)-sections.txt \
+ $(DOC_MODULE)-overrides.txt
+
+DOC_STAMPS=scan-build.stamp tmpl-build.stamp sgml-build.stamp html-build.stamp \
+ $(srcdir)/tmpl.stamp $(srcdir)/sgml.stamp $(srcdir)/html.stamp
+
+SCANOBJ_FILES = \
+ $(DOC_MODULE).args \
+ $(DOC_MODULE).hierarchy \
+ $(DOC_MODULE).interfaces \
+ $(DOC_MODULE).prerequisites \
+ $(DOC_MODULE).signals
+
+CLEANFILES = $(SCANOBJ_FILES) $(DOC_MODULE)-unused.txt $(DOC_STAMPS)
+
+if ENABLE_GTK_DOC
+all-local: html-build.stamp
+
+#### scan ####
+
+scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB)
+ @echo '*** Scanning header files ***'
+ @-chmod -R u+w $(srcdir)
+ if grep -l '^..*$$' $(srcdir)/$(DOC_MODULE).types > /dev/null 2>&1 ; then \
+ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" CFLAGS="$(GTKDOC_CFLAGS)" LDFLAGS="$(GTKDOC_LIBS)" gtkdoc-scangobj $(SCANGOBJ_OPTIONS) --module=$(DOC_MODULE) --output-dir=$(srcdir) ; \
+ else \
+ cd $(srcdir) ; \
+ for i in $(SCANOBJ_FILES) ; do \
+ test -f $$i || touch $$i ; \
+ done \
+ fi
+ cd $(srcdir) && \
+ gtkdoc-scan --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --ignore-headers="$(IGNORE_HFILES)" $(SCAN_OPTIONS) $(EXTRA_HFILES)
+ touch scan-build.stamp
+
+$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES): scan-build.stamp
+ @true
+
+#### templates ####
+
+tmpl-build.stamp: $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt
+ @echo '*** Rebuilding template files ***'
+ @-chmod -R u+w $(srcdir)
+ cd $(srcdir) && gtkdoc-mktmpl --module=$(DOC_MODULE) $(MKTMPL_OPTIONS)
+ touch tmpl-build.stamp
+
+tmpl.stamp: tmpl-build.stamp
+ @true
+
+#### xml ####
+
+sgml-build.stamp: tmpl.stamp $(CFILE_GLOB) $(srcdir)/tmpl/*.sgml $(expand_content_files)
+ @echo '*** Building XML ***'
+ @-chmod -R u+w $(srcdir)
+ cd $(srcdir) && \
+ gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --output-format=xml --expand-content-files="$(expand_content_files)" $(MKDB_OPTIONS)
+ touch sgml-build.stamp
+
+sgml.stamp: sgml-build.stamp
+ @true
+
+#### html ####
+
+html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
+ @echo '*** Building HTML ***'
+ @-chmod -R u+w $(srcdir)
+ rm -rf $(srcdir)/html
+ mkdir $(srcdir)/html
+ cd $(srcdir)/html && gtkdoc-mkhtml $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
+ test "x$(HTML_IMAGES)" = "x" || ( cd $(srcdir) && cp $(HTML_IMAGES) html )
+ @echo '-- Fixing Crossreferences'
+ cd $(srcdir) && gtkdoc-fixxref --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
+ touch html-build.stamp
+else
+all-local:
+endif
+
+##############
+
+clean-local:
+ rm -f *~ *.bak
+ rm -rf .libs
+
+maintainer-clean-local: clean
+ cd $(srcdir) && rm -rf xml html $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
+
+install-data-local:
+ installfiles=`echo $(srcdir)/html/*`; \
+ if test "$$installfiles" = '$(srcdir)/html/*'; \
+ then echo '-- Nothing to install' ; \
+ else \
+ $(mkinstalldirs) $(DESTDIR)$(TARGET_DIR); \
+ for i in $$installfiles; do \
+ echo '-- Installing '$$i ; \
+ $(INSTALL_DATA) $$i $(DESTDIR)$(TARGET_DIR); \
+ done; \
+ echo '-- Installing $(srcdir)/html/index.sgml' ; \
+ $(INSTALL_DATA) $(srcdir)/html/index.sgml $(DESTDIR)$(TARGET_DIR) || :; \
+ fi
+
+uninstall-local:
+ rm -f $(DESTDIR)$(TARGET_DIR)/*
+
+#
+# Require gtk-doc when making dist
+#
+if ENABLE_GTK_DOC
+dist-check-gtkdoc:
+else
+dist-check-gtkdoc:
+ @echo "*** gtk-doc must be installed and enabled in order to make dist"
+ @false
+endif
+
+dist-hook: dist-check-gtkdoc dist-hook-local
+ mkdir $(distdir)/tmpl
+ mkdir $(distdir)/xml
+ mkdir $(distdir)/html
+ -cp $(srcdir)/tmpl/*.sgml $(distdir)/tmpl
+ -cp $(srcdir)/xml/*.xml $(distdir)/xml
+ -cp $(srcdir)/html/* $(distdir)/html
+ if test -f $(srcdir)/$(DOC_MODULE).types; then \
+ cp $(srcdir)/$(DOC_MODULE).types $(distdir)/$(DOC_MODULE).types; \
+ fi
+
+.PHONY : dist-hook-local
Added: desktop/trunk/thunar/branches/upstream/current/icons/24x24/Makefile.am
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/icons/24x24/Makefile.am 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/icons/24x24/Makefile.am 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,10 @@
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+
+iconsdir = $(datadir)/icons/hicolor/24x24/apps
+icons_DATA = \
+ Thunar.png
+
+EXTRA_DIST = \
+ $(icons_DATA)
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
Added: desktop/trunk/thunar/branches/upstream/current/icons/24x24/Makefile.in
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/icons/24x24/Makefile.in 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/icons/24x24/Makefile.in 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,462 @@
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004 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.
+
+ at SET_MAKE@
+
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+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@
+target_triplet = @target@
+subdir = icons/24x24
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+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 = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(iconsdir)"
+iconsDATA_INSTALL = $(INSTALL_DATA)
+DATA = $(icons_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CAIRO_REQUIRED_VERSION = @CAIRO_REQUIRED_VERSION@
+CAIRO_VERSION = @CAIRO_VERSION@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@
+ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@
+EXEEXT = @EXEEXT@
+EXO_CFLAGS = @EXO_CFLAGS@
+EXO_LIBS = @EXO_LIBS@
+EXO_REQUIRED_VERSION = @EXO_REQUIRED_VERSION@
+EXO_VERSION = @EXO_VERSION@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GCONF_CFLAGS = @GCONF_CFLAGS@
+GCONF_LIBS = @GCONF_LIBS@
+GCONF_REQUIRED_VERSION = @GCONF_REQUIRED_VERSION@
+GCONF_VERSION = @GCONF_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_REQUIRED_VERSION = @GLIB_REQUIRED_VERSION@
+GLIB_VERSION = @GLIB_VERSION@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTHREAD_REQUIRED_VERSION = @GTHREAD_REQUIRED_VERSION@
+GTHREAD_VERSION = @GTHREAD_VERSION@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+GTK_LIBS = @GTK_LIBS@
+GTK_REQUIRED_VERSION = @GTK_REQUIRED_VERSION@
+GTK_VERSION = @GTK_VERSION@
+HAVE_CAIRO_FALSE = @HAVE_CAIRO_FALSE@
+HAVE_CAIRO_TRUE = @HAVE_CAIRO_TRUE@
+HAVE_GCONF_FALSE = @HAVE_GCONF_FALSE@
+HAVE_GCONF_TRUE = @HAVE_GCONF_TRUE@
+HAVE_GNUC_VISIBILITY_FALSE = @HAVE_GNUC_VISIBILITY_FALSE@
+HAVE_GNUC_VISIBILITY_TRUE = @HAVE_GNUC_VISIBILITY_TRUE@
+HAVE_LIBSTARTUP_NOTIFICATION_FALSE = @HAVE_LIBSTARTUP_NOTIFICATION_FALSE@
+HAVE_LIBSTARTUP_NOTIFICATION_TRUE = @HAVE_LIBSTARTUP_NOTIFICATION_TRUE@
+HTML_DIR = @HTML_DIR@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LIBFAM_CFLAGS = @LIBFAM_CFLAGS@
+LIBFAM_LIBS = @LIBFAM_LIBS@
+LIBFAM_REQUIRED_VERSION = @LIBFAM_REQUIRED_VERSION@
+LIBFAM_VERSION = @LIBFAM_VERSION@
+LIBJPEG_CFLAGS = @LIBJPEG_CFLAGS@
+LIBJPEG_LIBS = @LIBJPEG_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
+LIBPNG_LIBS = @LIBPNG_LIBS@
+LIBPNG_REQUIRED_VERSION = @LIBPNG_REQUIRED_VERSION@
+LIBPNG_VERSION = @LIBPNG_VERSION@
+LIBS = @LIBS@
+LIBSTARTUP_NOTIFICATION_CFLAGS = @LIBSTARTUP_NOTIFICATION_CFLAGS@
+LIBSTARTUP_NOTIFICATION_LIBS = @LIBSTARTUP_NOTIFICATION_LIBS@
+LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION = @LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION@
+LIBSTARTUP_NOTIFICATION_VERSION = @LIBSTARTUP_NOTIFICATION_VERSION@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_CFLAGS = @PLATFORM_CFLAGS@
+PLATFORM_CPPFLAGS = @PLATFORM_CPPFLAGS@
+PLATFORM_LDFLAGS = @PLATFORM_LDFLAGS@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TDB_U32_TYPE = @TDB_U32_TYPE@
+THUNAR_VERINFO = @THUNAR_VERINFO@
+THUNAR_VERSION_API = @THUNAR_VERSION_API@
+THUNAR_VERSION_MAJOR = @THUNAR_VERSION_MAJOR@
+THUNAR_VERSION_MICRO = @THUNAR_VERSION_MICRO@
+THUNAR_VERSION_MINOR = @THUNAR_VERSION_MINOR@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_ARGS = @XGETTEXT_ARGS@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+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@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+iconsdir = $(datadir)/icons/hicolor/24x24/apps
+icons_DATA = \
+ Thunar.png
+
+EXTRA_DIST = \
+ $(icons_DATA)
+
+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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu icons/24x24/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu icons/24x24/Makefile
+.PRECIOUS: 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
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+install-iconsDATA: $(icons_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(iconsdir)" || $(mkdir_p) "$(DESTDIR)$(iconsdir)"
+ @list='$(icons_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(iconsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(iconsdir)/$$f'"; \
+ $(iconsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(iconsdir)/$$f"; \
+ done
+
+uninstall-iconsDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(icons_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(iconsdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(iconsdir)/$$f"; \
+ done
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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 $(DATA)
+installdirs:
+ for dir in "$(DESTDIR)$(iconsdir)"; 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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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 distclean-libtool
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-iconsDATA
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+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-iconsDATA uninstall-info-am
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ distclean distclean-generic distclean-libtool distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-exec install-exec-am \
+ install-iconsDATA install-info install-info-am install-man \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ uninstall uninstall-am uninstall-iconsDATA uninstall-info-am
+
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
+# 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:
Added: desktop/trunk/thunar/branches/upstream/current/icons/24x24/Thunar.png
===================================================================
(Binary files differ)
Property changes on: desktop/trunk/thunar/branches/upstream/current/icons/24x24/Thunar.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: desktop/trunk/thunar/branches/upstream/current/icons/48x48/Makefile.am
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/icons/48x48/Makefile.am 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/icons/48x48/Makefile.am 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,10 @@
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+
+iconsdir = $(datadir)/icons/hicolor/48x48/apps
+icons_DATA = \
+ Thunar.png
+
+EXTRA_DIST = \
+ $(icons_DATA)
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
Added: desktop/trunk/thunar/branches/upstream/current/icons/48x48/Makefile.in
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/icons/48x48/Makefile.in 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/icons/48x48/Makefile.in 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,462 @@
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004 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.
+
+ at SET_MAKE@
+
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+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@
+target_triplet = @target@
+subdir = icons/48x48
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+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 = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(iconsdir)"
+iconsDATA_INSTALL = $(INSTALL_DATA)
+DATA = $(icons_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CAIRO_REQUIRED_VERSION = @CAIRO_REQUIRED_VERSION@
+CAIRO_VERSION = @CAIRO_VERSION@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@
+ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@
+EXEEXT = @EXEEXT@
+EXO_CFLAGS = @EXO_CFLAGS@
+EXO_LIBS = @EXO_LIBS@
+EXO_REQUIRED_VERSION = @EXO_REQUIRED_VERSION@
+EXO_VERSION = @EXO_VERSION@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GCONF_CFLAGS = @GCONF_CFLAGS@
+GCONF_LIBS = @GCONF_LIBS@
+GCONF_REQUIRED_VERSION = @GCONF_REQUIRED_VERSION@
+GCONF_VERSION = @GCONF_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_REQUIRED_VERSION = @GLIB_REQUIRED_VERSION@
+GLIB_VERSION = @GLIB_VERSION@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTHREAD_REQUIRED_VERSION = @GTHREAD_REQUIRED_VERSION@
+GTHREAD_VERSION = @GTHREAD_VERSION@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+GTK_LIBS = @GTK_LIBS@
+GTK_REQUIRED_VERSION = @GTK_REQUIRED_VERSION@
+GTK_VERSION = @GTK_VERSION@
+HAVE_CAIRO_FALSE = @HAVE_CAIRO_FALSE@
+HAVE_CAIRO_TRUE = @HAVE_CAIRO_TRUE@
+HAVE_GCONF_FALSE = @HAVE_GCONF_FALSE@
+HAVE_GCONF_TRUE = @HAVE_GCONF_TRUE@
+HAVE_GNUC_VISIBILITY_FALSE = @HAVE_GNUC_VISIBILITY_FALSE@
+HAVE_GNUC_VISIBILITY_TRUE = @HAVE_GNUC_VISIBILITY_TRUE@
+HAVE_LIBSTARTUP_NOTIFICATION_FALSE = @HAVE_LIBSTARTUP_NOTIFICATION_FALSE@
+HAVE_LIBSTARTUP_NOTIFICATION_TRUE = @HAVE_LIBSTARTUP_NOTIFICATION_TRUE@
+HTML_DIR = @HTML_DIR@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LIBFAM_CFLAGS = @LIBFAM_CFLAGS@
+LIBFAM_LIBS = @LIBFAM_LIBS@
+LIBFAM_REQUIRED_VERSION = @LIBFAM_REQUIRED_VERSION@
+LIBFAM_VERSION = @LIBFAM_VERSION@
+LIBJPEG_CFLAGS = @LIBJPEG_CFLAGS@
+LIBJPEG_LIBS = @LIBJPEG_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
+LIBPNG_LIBS = @LIBPNG_LIBS@
+LIBPNG_REQUIRED_VERSION = @LIBPNG_REQUIRED_VERSION@
+LIBPNG_VERSION = @LIBPNG_VERSION@
+LIBS = @LIBS@
+LIBSTARTUP_NOTIFICATION_CFLAGS = @LIBSTARTUP_NOTIFICATION_CFLAGS@
+LIBSTARTUP_NOTIFICATION_LIBS = @LIBSTARTUP_NOTIFICATION_LIBS@
+LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION = @LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION@
+LIBSTARTUP_NOTIFICATION_VERSION = @LIBSTARTUP_NOTIFICATION_VERSION@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_CFLAGS = @PLATFORM_CFLAGS@
+PLATFORM_CPPFLAGS = @PLATFORM_CPPFLAGS@
+PLATFORM_LDFLAGS = @PLATFORM_LDFLAGS@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TDB_U32_TYPE = @TDB_U32_TYPE@
+THUNAR_VERINFO = @THUNAR_VERINFO@
+THUNAR_VERSION_API = @THUNAR_VERSION_API@
+THUNAR_VERSION_MAJOR = @THUNAR_VERSION_MAJOR@
+THUNAR_VERSION_MICRO = @THUNAR_VERSION_MICRO@
+THUNAR_VERSION_MINOR = @THUNAR_VERSION_MINOR@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_ARGS = @XGETTEXT_ARGS@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+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@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+iconsdir = $(datadir)/icons/hicolor/48x48/apps
+icons_DATA = \
+ Thunar.png
+
+EXTRA_DIST = \
+ $(icons_DATA)
+
+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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu icons/48x48/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu icons/48x48/Makefile
+.PRECIOUS: 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
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+install-iconsDATA: $(icons_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(iconsdir)" || $(mkdir_p) "$(DESTDIR)$(iconsdir)"
+ @list='$(icons_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(iconsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(iconsdir)/$$f'"; \
+ $(iconsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(iconsdir)/$$f"; \
+ done
+
+uninstall-iconsDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(icons_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(iconsdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(iconsdir)/$$f"; \
+ done
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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 $(DATA)
+installdirs:
+ for dir in "$(DESTDIR)$(iconsdir)"; 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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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 distclean-libtool
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-iconsDATA
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+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-iconsDATA uninstall-info-am
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ distclean distclean-generic distclean-libtool distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-exec install-exec-am \
+ install-iconsDATA install-info install-info-am install-man \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ uninstall uninstall-am uninstall-iconsDATA uninstall-info-am
+
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
+# 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:
Added: desktop/trunk/thunar/branches/upstream/current/icons/48x48/Thunar.png
===================================================================
(Binary files differ)
Property changes on: desktop/trunk/thunar/branches/upstream/current/icons/48x48/Thunar.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: desktop/trunk/thunar/branches/upstream/current/icons/Makefile.am
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/icons/Makefile.am 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/icons/Makefile.am 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,7 @@
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+
+SUBDIRS = \
+ 24x24 \
+ 48x48
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
Added: desktop/trunk/thunar/branches/upstream/current/icons/Makefile.in
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/icons/Makefile.in 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/icons/Makefile.in 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,574 @@
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004 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.
+
+ at SET_MAKE@
+
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+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@
+target_triplet = @target@
+subdir = icons
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-exec-recursive install-info-recursive \
+ install-recursive installcheck-recursive installdirs-recursive \
+ pdf-recursive ps-recursive uninstall-info-recursive \
+ uninstall-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CAIRO_REQUIRED_VERSION = @CAIRO_REQUIRED_VERSION@
+CAIRO_VERSION = @CAIRO_VERSION@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@
+ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@
+EXEEXT = @EXEEXT@
+EXO_CFLAGS = @EXO_CFLAGS@
+EXO_LIBS = @EXO_LIBS@
+EXO_REQUIRED_VERSION = @EXO_REQUIRED_VERSION@
+EXO_VERSION = @EXO_VERSION@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GCONF_CFLAGS = @GCONF_CFLAGS@
+GCONF_LIBS = @GCONF_LIBS@
+GCONF_REQUIRED_VERSION = @GCONF_REQUIRED_VERSION@
+GCONF_VERSION = @GCONF_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_REQUIRED_VERSION = @GLIB_REQUIRED_VERSION@
+GLIB_VERSION = @GLIB_VERSION@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTHREAD_REQUIRED_VERSION = @GTHREAD_REQUIRED_VERSION@
+GTHREAD_VERSION = @GTHREAD_VERSION@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+GTK_LIBS = @GTK_LIBS@
+GTK_REQUIRED_VERSION = @GTK_REQUIRED_VERSION@
+GTK_VERSION = @GTK_VERSION@
+HAVE_CAIRO_FALSE = @HAVE_CAIRO_FALSE@
+HAVE_CAIRO_TRUE = @HAVE_CAIRO_TRUE@
+HAVE_GCONF_FALSE = @HAVE_GCONF_FALSE@
+HAVE_GCONF_TRUE = @HAVE_GCONF_TRUE@
+HAVE_GNUC_VISIBILITY_FALSE = @HAVE_GNUC_VISIBILITY_FALSE@
+HAVE_GNUC_VISIBILITY_TRUE = @HAVE_GNUC_VISIBILITY_TRUE@
+HAVE_LIBSTARTUP_NOTIFICATION_FALSE = @HAVE_LIBSTARTUP_NOTIFICATION_FALSE@
+HAVE_LIBSTARTUP_NOTIFICATION_TRUE = @HAVE_LIBSTARTUP_NOTIFICATION_TRUE@
+HTML_DIR = @HTML_DIR@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LIBFAM_CFLAGS = @LIBFAM_CFLAGS@
+LIBFAM_LIBS = @LIBFAM_LIBS@
+LIBFAM_REQUIRED_VERSION = @LIBFAM_REQUIRED_VERSION@
+LIBFAM_VERSION = @LIBFAM_VERSION@
+LIBJPEG_CFLAGS = @LIBJPEG_CFLAGS@
+LIBJPEG_LIBS = @LIBJPEG_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
+LIBPNG_LIBS = @LIBPNG_LIBS@
+LIBPNG_REQUIRED_VERSION = @LIBPNG_REQUIRED_VERSION@
+LIBPNG_VERSION = @LIBPNG_VERSION@
+LIBS = @LIBS@
+LIBSTARTUP_NOTIFICATION_CFLAGS = @LIBSTARTUP_NOTIFICATION_CFLAGS@
+LIBSTARTUP_NOTIFICATION_LIBS = @LIBSTARTUP_NOTIFICATION_LIBS@
+LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION = @LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION@
+LIBSTARTUP_NOTIFICATION_VERSION = @LIBSTARTUP_NOTIFICATION_VERSION@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_CFLAGS = @PLATFORM_CFLAGS@
+PLATFORM_CPPFLAGS = @PLATFORM_CPPFLAGS@
+PLATFORM_LDFLAGS = @PLATFORM_LDFLAGS@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TDB_U32_TYPE = @TDB_U32_TYPE@
+THUNAR_VERINFO = @THUNAR_VERINFO@
+THUNAR_VERSION_API = @THUNAR_VERSION_API@
+THUNAR_VERSION_MAJOR = @THUNAR_VERSION_MAJOR@
+THUNAR_VERSION_MICRO = @THUNAR_VERSION_MICRO@
+THUNAR_VERSION_MINOR = @THUNAR_VERSION_MINOR@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_ARGS = @XGETTEXT_ARGS@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+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@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+SUBDIRS = \
+ 24x24 \
+ 48x48
+
+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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu icons/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu icons/Makefile
+.PRECIOUS: 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
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+
+# 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.
+$(RECURSIVE_TARGETS):
+ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; 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; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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 || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+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)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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 \
+ test -d "$(distdir)/$$subdir" \
+ || $(mkdir_p) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ 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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-libtool \
+ distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+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: uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
+ clean clean-generic clean-libtool clean-recursive ctags \
+ ctags-recursive distclean distclean-generic distclean-libtool \
+ distclean-recursive distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-exec install-exec-am install-info \
+ install-info-am install-man install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic maintainer-clean-recursive \
+ mostlyclean mostlyclean-generic mostlyclean-libtool \
+ mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
+ uninstall uninstall-am uninstall-info-am
+
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
+# 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:
Added: desktop/trunk/thunar/branches/upstream/current/install-sh
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/install-sh 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/install-sh 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,322 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2004-09-10.20
+
+# 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. It can only install one file at a time, a restriction
+# shared with many OS's install programs.
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit="${DOITPROG-}"
+
+# put in absolute paths if you don't have them in your path; or use env. vars.
+
+mvprog="${MVPROG-mv}"
+cpprog="${CPPROG-cp}"
+chmodprog="${CHMODPROG-chmod}"
+chownprog="${CHOWNPROG-chown}"
+chgrpprog="${CHGRPPROG-chgrp}"
+stripprog="${STRIPPROG-strip}"
+rmprog="${RMPROG-rm}"
+mkdirprog="${MKDIRPROG-mkdir}"
+
+chmodcmd="$chmodprog 0755"
+chowncmd=
+chgrpcmd=
+stripcmd=
+rmcmd="$rmprog -f"
+mvcmd="$mvprog"
+src=
+dst=
+dir_arg=
+dstarg=
+no_target_directory=
+
+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:
+-c (ignored)
+-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.
+--help display this help and exit.
+--version display version info and exit.
+
+Environment variables override the default commands:
+ CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
+"
+
+while test -n "$1"; do
+ case $1 in
+ -c) shift
+ continue;;
+
+ -d) dir_arg=true
+ shift
+ continue;;
+
+ -g) chgrpcmd="$chgrpprog $2"
+ shift
+ shift
+ continue;;
+
+ --help) echo "$usage"; exit 0;;
+
+ -m) chmodcmd="$chmodprog $2"
+ shift
+ shift
+ continue;;
+
+ -o) chowncmd="$chownprog $2"
+ shift
+ shift
+ continue;;
+
+ -s) stripcmd=$stripprog
+ shift
+ continue;;
+
+ -t) dstarg=$2
+ shift
+ shift
+ continue;;
+
+ -T) no_target_directory=true
+ shift
+ continue;;
+
+ --version) echo "$0 $scriptversion"; exit 0;;
+
+ *) # When -d is used, all remaining arguments are directories to create.
+ # When -t is used, the destination is already specified.
+ test -n "$dir_arg$dstarg" && break
+ # Otherwise, the last argument is the destination. Remove it from $@.
+ for arg
+ do
+ if test -n "$dstarg"; then
+ # $@ is not empty: it contains at least $arg.
+ set fnord "$@" "$dstarg"
+ shift # fnord
+ fi
+ shift # arg
+ dstarg=$arg
+ done
+ break;;
+ esac
+done
+
+if test -z "$1"; 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
+
+for src
+do
+ # Protect names starting with `-'.
+ case $src in
+ -*) src=./$src ;;
+ esac
+
+ if test -n "$dir_arg"; then
+ dst=$src
+ src=
+
+ if test -d "$dst"; then
+ mkdircmd=:
+ chmodcmd=
+ else
+ mkdircmd=$mkdirprog
+ fi
+ 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 "$dstarg"; then
+ echo "$0: no destination specified." >&2
+ exit 1
+ fi
+
+ dst=$dstarg
+ # Protect names starting with `-'.
+ case $dst in
+ -*) dst=./$dst ;;
+ esac
+
+ # If destination is a directory, append the input filename; won't work
+ # if double slashes aren't ignored.
+ if test -d "$dst"; then
+ if test -n "$no_target_directory"; then
+ echo "$0: $dstarg: Is a directory" >&2
+ exit 1
+ fi
+ dst=$dst/`basename "$src"`
+ fi
+ fi
+
+ # This sed command emulates the dirname command.
+ dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
+
+ # Make sure that the destination directory exists.
+
+ # Skip lots of stat calls in the usual case.
+ if test ! -d "$dstdir"; then
+ defaultIFS='
+ '
+ IFS="${IFS-$defaultIFS}"
+
+ oIFS=$IFS
+ # Some sh's can't handle IFS=/ for some reason.
+ IFS='%'
+ set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+ IFS=$oIFS
+
+ pathcomp=
+
+ while test $# -ne 0 ; do
+ pathcomp=$pathcomp$1
+ shift
+ if test ! -d "$pathcomp"; then
+ $mkdirprog "$pathcomp"
+ # mkdir can fail with a `File exist' error in case several
+ # install-sh are creating the directory concurrently. This
+ # is OK.
+ test -d "$pathcomp" || exit
+ fi
+ pathcomp=$pathcomp/
+ done
+ fi
+
+ if test -n "$dir_arg"; then
+ $doit $mkdircmd "$dst" \
+ && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
+ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
+ && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
+ && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
+
+ else
+ dstfile=`basename "$dst"`
+
+ # 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
+ trap '(exit $?); exit' 1 2 13 15
+
+ # Copy the file name to the temp name.
+ $doit $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 "$dsttmp"; } &&
+
+ # Now rename the file to the real destination.
+ { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 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.
+ {
+ if test -f "$dstdir/$dstfile"; then
+ $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
+ || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
+ || {
+ echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
+ (exit 1); exit
+ }
+ else
+ :
+ fi
+ } &&
+
+ # Now rename the file to the real destination.
+ $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
+ }
+ }
+ fi || { (exit 1); exit; }
+done
+
+# The final little trick to "correctly" pass the exit status to the exit trap.
+{
+ (exit 0); exit
+}
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
Property changes on: desktop/trunk/thunar/branches/upstream/current/install-sh
___________________________________________________________________
Name: svn:executable
+
Added: desktop/trunk/thunar/branches/upstream/current/intltool-extract.in
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/intltool-extract.in 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/intltool-extract.in 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,516 @@
+#!@INTLTOOL_PERL@ -w
+# -*- Mode: perl; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+
+#
+# The Intltool Message Extractor
+#
+# Copyright (C) 2000-2001, 2003 Free Software Foundation.
+#
+# Intltool 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.
+#
+# Intltool is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+#
+# Authors: Kenneth Christiansen <kenneth at gnu.org>
+# Darin Adler <darin at bentspoon.com>
+#
+
+## Release information
+my $PROGRAM = "intltool-extract";
+my $PACKAGE = "intltool";
+my $VERSION = "0.33";
+
+## Loaded modules
+use strict;
+use File::Basename;
+use Getopt::Long;
+
+## Scalars used by the option stuff
+my $TYPE_ARG = "0";
+my $LOCAL_ARG = "0";
+my $HELP_ARG = "0";
+my $VERSION_ARG = "0";
+my $UPDATE_ARG = "0";
+my $QUIET_ARG = "0";
+my $SRCDIR_ARG = ".";
+
+my $FILE;
+my $OUTFILE;
+
+my $gettext_type = "";
+my $input;
+my %messages = ();
+my %loc = ();
+my %count = ();
+my %comments = ();
+my $strcount = 0;
+
+## Use this instead of \w for XML files to handle more possible characters.
+my $w = "[-A-Za-z0-9._:]";
+
+## Always print first
+$| = 1;
+
+## Handle options
+GetOptions (
+ "type=s" => \$TYPE_ARG,
+ "local|l" => \$LOCAL_ARG,
+ "help|h" => \$HELP_ARG,
+ "version|v" => \$VERSION_ARG,
+ "update" => \$UPDATE_ARG,
+ "quiet|q" => \$QUIET_ARG,
+ "srcdir=s" => \$SRCDIR_ARG,
+ ) or &error;
+
+&split_on_argument;
+
+
+## Check for options.
+## This section will check for the different options.
+
+sub split_on_argument {
+
+ if ($VERSION_ARG) {
+ &version;
+
+ } elsif ($HELP_ARG) {
+ &help;
+
+ } elsif ($LOCAL_ARG) {
+ &place_local;
+ &extract;
+
+ } elsif ($UPDATE_ARG) {
+ &place_normal;
+ &extract;
+
+ } elsif (@ARGV > 0) {
+ &place_normal;
+ &message;
+ &extract;
+
+ } else {
+ &help;
+
+ }
+}
+
+sub place_normal {
+ $FILE = $ARGV[0];
+ $OUTFILE = "$FILE.h";
+}
+
+sub place_local {
+ $FILE = $ARGV[0];
+ $OUTFILE = fileparse($FILE, ());
+ if (!-e "tmp/") {
+ system("mkdir tmp/");
+ }
+ $OUTFILE = "./tmp/$OUTFILE.h"
+}
+
+sub determine_type {
+ if ($TYPE_ARG =~ /^gettext\/(.*)/) {
+ $gettext_type=$1
+ }
+}
+
+## Sub for printing release information
+sub version{
+ print <<_EOF_;
+${PROGRAM} (${PACKAGE}) $VERSION
+Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+Written by Kenneth Christiansen, 2000.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+_EOF_
+ exit;
+}
+
+## Sub for printing usage information
+sub help {
+ print <<_EOF_;
+Usage: ${PROGRAM} [OPTION]... [FILENAME]
+Generates a header file from an XML source file.
+
+It grabs all strings between <_translatable_node> and its end tag in
+XML files. Read manpage (man ${PROGRAM}) for more info.
+
+ --type=TYPE Specify the file type of FILENAME. Currently supports:
+ "gettext/glade", "gettext/ini", "gettext/keys"
+ "gettext/rfc822deb", "gettext/schemas",
+ "gettext/scheme", "gettext/xml"
+ -l, --local Writes output into current working directory
+ (conflicts with --update)
+ --update Writes output into the same directory the source file
+ reside (conflicts with --local)
+ --srcdir Root of the source tree
+ -v, --version Output version information and exit
+ -h, --help Display this help and exit
+ -q, --quiet Quiet mode
+
+Report bugs to http://bugzilla.gnome.org/ (product name "$PACKAGE")
+or send email to <xml-i18n-tools\@gnome.org>.
+_EOF_
+ exit;
+}
+
+## Sub for printing error messages
+sub error{
+ print STDERR "Try `${PROGRAM} --help' for more information.\n";
+ exit;
+}
+
+sub message {
+ print "Generating C format header file for translation.\n" unless $QUIET_ARG;
+}
+
+sub extract {
+ &determine_type;
+
+ &convert;
+
+ open OUT, ">$OUTFILE";
+ &msg_write;
+ close OUT;
+
+ print "Wrote $OUTFILE\n" unless $QUIET_ARG;
+}
+
+sub convert {
+
+ ## Reading the file
+ {
+ local (*IN);
+ local $/; #slurp mode
+ open (IN, "<$SRCDIR_ARG/$FILE") || die "can't open $SRCDIR_ARG/$FILE: $!";
+ $input = <IN>;
+ }
+
+ &type_ini if $gettext_type eq "ini";
+ &type_keys if $gettext_type eq "keys";
+ &type_xml if $gettext_type eq "xml";
+ &type_glade if $gettext_type eq "glade";
+ &type_scheme if $gettext_type eq "scheme";
+ &type_schemas if $gettext_type eq "schemas";
+ &type_rfc822deb if $gettext_type eq "rfc822deb";
+}
+
+sub entity_decode_minimal
+{
+ local ($_) = @_;
+
+ s/'/'/g; # '
+ s/"/"/g; # "
+ s/&/&/g;
+
+ return $_;
+}
+
+sub entity_decode
+{
+ local ($_) = @_;
+
+ s/'/'/g; # '
+ s/"/"/g; # "
+ s/&/&/g;
+ s/</</g;
+ s/>/>/g;
+
+ return $_;
+}
+
+sub escape_char
+{
+ return '\"' if $_ eq '"';
+ return '\n' if $_ eq "\n";
+ return '\\' if $_ eq '\\';
+
+ return $_;
+}
+
+sub escape
+{
+ my ($string) = @_;
+ return join "", map &escape_char, split //, $string;
+}
+
+sub type_ini {
+ ### For generic translatable desktop files ###
+ while ($input =~ /^_.*=(.*)$/mg) {
+ $messages{$1} = [];
+ }
+}
+
+sub type_keys {
+ ### For generic translatable mime/keys files ###
+ while ($input =~ /^\s*_\w+=(.*)$/mg) {
+ $messages{$1} = [];
+ }
+}
+
+sub type_xml {
+ ### For generic translatable XML files ###
+
+ while ($input =~ /(?:<!--([^>]*?)-->[^\n]*\n?[^\n]*)?\s_$w+\s*=\s*\"([^"]*)\"/sg) { # "
+ $messages{entity_decode_minimal($2)} = [];
+ $comments{entity_decode_minimal($2)} = $1 if (defined($1));
+ }
+
+ while ($input =~ /(?:<!--([^>]*?)-->\s*)?<_($w+)(?: xml:space="($w+)")?[^>]*>(.*?)<\/_\2>/sg) {
+ $_ = $4;
+ if (!defined($3) || $3 ne "preserve") {
+ s/\s+/ /g;
+ s/^ //;
+ s/ $//;
+ }
+ $messages{$_} = [];
+ $comments{$_} = $1 if (defined($1));
+ }
+}
+
+sub type_schemas {
+ ### For schemas XML files ###
+
+ # FIXME: We should handle escaped < (less than)
+ while ($input =~ /
+ <locale\ name="C">\s*
+ (<default>\s*(?:<!--([^>]*?)-->\s*)?(.*?)\s*<\/default>\s*)?
+ (<short>\s*(?:<!--([^>]*?)-->\s*)?(.*?)\s*<\/short>\s*)?
+ (<long>\s*(?:<!--([^>]*?)-->\s*)?(.*?)\s*<\/long>\s*)?
+ <\/locale>
+ /sgx) {
+ my @totranslate = ($3,$6,$9);
+ my @eachcomment = ($2,$5,$8);
+ foreach (@totranslate) {
+ my $currentcomment = shift @eachcomment;
+ next if !$_;
+ s/\s+/ /g;
+ $messages{entity_decode_minimal($_)} = [];
+ $comments{entity_decode_minimal($_)} = $currentcomment if (defined($currentcomment));
+ }
+ }
+}
+
+sub type_rfc822deb {
+ ### For rfc822-style Debian configuration files ###
+
+ my $lineno = 1;
+ my $type = '';
+ while ($input =~ /\G(.*?)(^|\n)(_+)([^:]+):[ \t]*(.*?)(?=\n\S|$)/sg)
+ {
+ my ($pre, $newline, $underscore, $tag, $text) = ($1, $2, $3, $4, $5);
+ while ($pre =~ m/\n/g)
+ {
+ $lineno ++;
+ }
+ $lineno += length($newline);
+ my @str_list = rfc822deb_split(length($underscore), $text);
+ for my $str (@str_list)
+ {
+ $strcount++;
+ $messages{$str} = [];
+ $loc{$str} = $lineno;
+ $count{$str} = $strcount;
+ my $usercomment = '';
+ while($pre =~ s/(^|\n)#([^\n]*)$//s)
+ {
+ $usercomment = "\n" . $2 . $usercomment;
+ }
+ $comments{$str} = $tag . $usercomment;
+ }
+ $lineno += ($text =~ s/\n//g);
+ }
+}
+
+sub rfc822deb_split {
+ # Debian defines a special way to deal with rfc822-style files:
+ # when a value contain newlines, it consists of
+ # 1. a short form (first line)
+ # 2. a long description, all lines begin with a space,
+ # and paragraphs are separated by a single dot on a line
+ # This routine returns an array of all paragraphs, and reformat
+ # them.
+ # When first argument is 2, the string is a comma separated list of
+ # values.
+ my $type = shift;
+ my $text = shift;
+ $text =~ s/^[ \t]//mg;
+ return (split(/, */, $text, 0)) if $type ne 1;
+ return ($text) if $text !~ /\n/;
+
+ $text =~ s/([^\n]*)\n//;
+ my @list = ($1);
+ my $str = '';
+ for my $line (split (/\n/, $text))
+ {
+ chomp $line;
+ if ($line =~ /^\.\s*$/)
+ {
+ # New paragraph
+ $str =~ s/\s*$//;
+ push(@list, $str);
+ $str = '';
+ }
+ elsif ($line =~ /^\s/)
+ {
+ # Line which must not be reformatted
+ $str .= "\n" if length ($str) && $str !~ /\n$/;
+ $line =~ s/\s+$//;
+ $str .= $line."\n";
+ }
+ else
+ {
+ # Continuation line, remove newline
+ $str .= " " if length ($str) && $str !~ /\n$/;
+ $str .= $line;
+ }
+ }
+ $str =~ s/\s*$//;
+ push(@list, $str) if length ($str);
+ return @list;
+}
+
+sub type_glade {
+ ### For translatable Glade XML files ###
+
+ my $tags = "label|title|text|format|copyright|comments|preview_text|tooltip|message";
+
+ while ($input =~ /<($tags)>([^<]+)<\/($tags)>/sg) {
+ # Glade sometimes uses tags that normally mark translatable things for
+ # little bits of non-translatable content. We work around this by not
+ # translating strings that only includes something like label4 or window1.
+ $messages{entity_decode($2)} = [] unless $2 =~ /^(window|label|dialog)[0-9]+$/;
+ }
+
+ while ($input =~ /<items>(..[^<]*)<\/items>/sg) {
+ for my $item (split (/\n/, $1)) {
+ $messages{entity_decode($item)} = [];
+ }
+ }
+
+ ## handle new glade files
+ while ($input =~ /<(property|atkproperty)\s+[^>]*translatable\s*=\s*"yes"(?:\s+[^>]*comments\s*=\s*"([^"]*)")?[^>]*>([^<]+)<\/\1>/sg) {
+ $messages{entity_decode($3)} = [] unless $3 =~ /^(window|label)[0-9]+$/;
+ if (defined($2) and !($3 =~ /^(window|label)[0-9]+$/)) {
+ $comments{entity_decode($3)} = entity_decode($2) ;
+ }
+ }
+ while ($input =~ /<atkaction\s+action_name="([^>]*)"\s+description="([^>]+)"\/>/sg) {
+ $messages{entity_decode_minimal($2)} = [];
+ }
+}
+
+sub type_scheme {
+ my ($line, $i, $state, $str, $trcomment, $char);
+ for $line (split(/\n/, $input)) {
+ $i = 0;
+ $state = 0; # 0 - nothing, 1 - string, 2 - translatable string
+ while ($i < length($line)) {
+ if (substr($line,$i,1) eq "\"") {
+ if ($state == 2) {
+ $comments{$str} = $trcomment if ($trcomment);
+ $messages{$str} = [];
+ $str = '';
+ $state = 0; $trcomment = "";
+ } elsif ($state == 1) {
+ $str = '';
+ $state = 0; $trcomment = "";
+ } else {
+ $state = 1;
+ $str = '';
+ if ($i>0 && substr($line,$i-1,1) eq '_') {
+ $state = 2;
+ }
+ }
+ } elsif (!$state) {
+ if (substr($line,$i,1) eq ";") {
+ $trcomment = substr($line,$i+1);
+ $trcomment =~ s/^;*\s*//;
+ $i = length($line);
+ } elsif ($trcomment && substr($line,$i,1) !~ /\s|\(|\)|_/) {
+ $trcomment = "";
+ }
+ } else {
+ if (substr($line,$i,1) eq "\\") {
+ $char = substr($line,$i+1,1);
+ if ($char ne "\"" && $char ne "\\") {
+ $str = $str . "\\";
+ }
+ $i++;
+ }
+ $str = $str . substr($line,$i,1);
+ }
+ $i++;
+ }
+ }
+}
+
+sub msg_write {
+ my @msgids;
+ if (%count)
+ {
+ @msgids = sort { $count{$a} <=> $count{$b} } keys %count;
+ }
+ else
+ {
+ @msgids = sort keys %messages;
+ }
+ for my $message (@msgids)
+ {
+ my $offsetlines = 1;
+ $offsetlines++ if $message =~ /%/;
+ if (defined ($comments{$message}))
+ {
+ while ($comments{$message} =~ m/\n/g)
+ {
+ $offsetlines++;
+ }
+ }
+ print OUT "# ".($loc{$message} - $offsetlines). " \"$FILE\"\n"
+ if defined $loc{$message};
+ print OUT "/* ".$comments{$message}." */\n"
+ if defined $comments{$message};
+ print OUT "/* xgettext:no-c-format */\n" if $message =~ /%/;
+
+ my @lines = split (/\n/, $message, -1);
+ for (my $n = 0; $n < @lines; $n++)
+ {
+ if ($n == 0)
+ {
+ print OUT "char *s = N_(\"";
+ }
+ else
+ {
+ print OUT " \"";
+ }
+
+ print OUT escape($lines[$n]);
+
+ if ($n < @lines - 1)
+ {
+ print OUT "\\n\"\n";
+ }
+ else
+ {
+ print OUT "\");\n";
+ }
+ }
+ }
+}
+
Added: desktop/trunk/thunar/branches/upstream/current/intltool-merge.in
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/intltool-merge.in 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/intltool-merge.in 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,1315 @@
+#!@INTLTOOL_PERL@ -w
+# -*- Mode: perl; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+
+#
+# The Intltool Message Merger
+#
+# Copyright (C) 2000, 2003 Free Software Foundation.
+# Copyright (C) 2000, 2001 Eazel, Inc
+#
+# Intltool is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# version 2 published by the Free Software Foundation.
+#
+# Intltool is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+#
+# Authors: Maciej Stachowiak <mjs at noisehavoc.org>
+# Kenneth Christiansen <kenneth at gnu.org>
+# Darin Adler <darin at bentspoon.com>
+#
+# Proper XML UTF-8'ification written by Cyrille Chepelov <chepelov at calixo.net>
+#
+
+## Release information
+my $PROGRAM = "intltool-merge";
+my $PACKAGE = "intltool";
+my $VERSION = "0.33";
+
+## Loaded modules
+use strict;
+use Getopt::Long;
+use Text::Wrap;
+use File::Basename;
+
+my $must_end_tag = -1;
+my $last_depth = -1;
+my $translation_depth = -1;
+my @tag_stack = ();
+my @entered_tag = ();
+my @translation_strings = ();
+my $leading_space = "";
+
+## Scalars used by the option stuff
+my $HELP_ARG = 0;
+my $VERSION_ARG = 0;
+my $BA_STYLE_ARG = 0;
+my $XML_STYLE_ARG = 0;
+my $KEYS_STYLE_ARG = 0;
+my $DESKTOP_STYLE_ARG = 0;
+my $SCHEMAS_STYLE_ARG = 0;
+my $RFC822DEB_STYLE_ARG = 0;
+my $QUIET_ARG = 0;
+my $PASS_THROUGH_ARG = 0;
+my $UTF8_ARG = 0;
+my $MULTIPLE_OUTPUT = 0;
+my $cache_file;
+
+## Handle options
+GetOptions
+(
+ "help" => \$HELP_ARG,
+ "version" => \$VERSION_ARG,
+ "quiet|q" => \$QUIET_ARG,
+ "oaf-style|o" => \$BA_STYLE_ARG, ## for compatibility
+ "ba-style|b" => \$BA_STYLE_ARG,
+ "xml-style|x" => \$XML_STYLE_ARG,
+ "keys-style|k" => \$KEYS_STYLE_ARG,
+ "desktop-style|d" => \$DESKTOP_STYLE_ARG,
+ "schemas-style|s" => \$SCHEMAS_STYLE_ARG,
+ "rfc822deb-style|r" => \$RFC822DEB_STYLE_ARG,
+ "pass-through|p" => \$PASS_THROUGH_ARG,
+ "utf8|u" => \$UTF8_ARG,
+ "multiple-output|m" => \$MULTIPLE_OUTPUT,
+ "cache|c=s" => \$cache_file
+ ) or &error;
+
+my $PO_DIR;
+my $FILE;
+my $OUTFILE;
+
+my %po_files_by_lang = ();
+my %translations = ();
+my $iconv = $ENV{"ICONV"} || $ENV{"INTLTOOL_ICONV"} || "/usr/local/bin/iconv";
+
+# Use this instead of \w for XML files to handle more possible characters.
+my $w = "[-A-Za-z0-9._:]";
+
+# XML quoted string contents
+my $q = "[^\\\"]*";
+
+## Check for options.
+
+if ($VERSION_ARG)
+{
+ &print_version;
+}
+elsif ($HELP_ARG)
+{
+ &print_help;
+}
+elsif ($BA_STYLE_ARG && @ARGV > 2)
+{
+ &utf8_sanity_check;
+ &preparation;
+ &print_message;
+ &ba_merge_translations;
+ &finalize;
+}
+elsif ($XML_STYLE_ARG && @ARGV > 2)
+{
+ &utf8_sanity_check;
+ &preparation;
+ &print_message;
+ &xml_merge_output;
+ &finalize;
+}
+elsif ($KEYS_STYLE_ARG && @ARGV > 2)
+{
+ &utf8_sanity_check;
+ &preparation;
+ &print_message;
+ &keys_merge_translations;
+ &finalize;
+}
+elsif ($DESKTOP_STYLE_ARG && @ARGV > 2)
+{
+ &utf8_sanity_check;
+ &preparation;
+ &print_message;
+ &desktop_merge_translations;
+ &finalize;
+}
+elsif ($SCHEMAS_STYLE_ARG && @ARGV > 2)
+{
+ &utf8_sanity_check;
+ &preparation;
+ &print_message;
+ &schemas_merge_translations;
+ &finalize;
+}
+elsif ($RFC822DEB_STYLE_ARG && @ARGV > 2)
+{
+ &preparation;
+ &print_message;
+ &rfc822deb_merge_translations;
+ &finalize;
+}
+else
+{
+ &print_help;
+}
+
+exit;
+
+## Sub for printing release information
+sub print_version
+{
+ print <<_EOF_;
+${PROGRAM} (${PACKAGE}) ${VERSION}
+Written by Maciej Stachowiak, Darin Adler and Kenneth Christiansen.
+
+Copyright (C) 2000-2003 Free Software Foundation, Inc.
+Copyright (C) 2000-2001 Eazel, 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.
+_EOF_
+ exit;
+}
+
+## Sub for printing usage information
+sub print_help
+{
+ print <<_EOF_;
+Usage: ${PROGRAM} [OPTION]... PO_DIRECTORY FILENAME OUTPUT_FILE
+Generates an output file that includes some localized attributes from an
+untranslated source file.
+
+Mandatory options: (exactly one must be specified)
+ -b, --ba-style includes translations in the bonobo-activation style
+ -d, --desktop-style includes translations in the desktop style
+ -k, --keys-style includes translations in the keys style
+ -s, --schemas-style includes translations in the schemas style
+ -r, --rfc822deb-style includes translations in the RFC822 style
+ -x, --xml-style includes translations in the standard xml style
+
+Other options:
+ -u, --utf8 convert all strings to UTF-8 before merging
+ (default for everything except RFC822 style)
+ -p, --pass-through deprecated, does nothing and issues a warning
+ -m, --multiple-output output one localized file per locale, instead of
+ a single file containing all localized elements
+ -c, --cache=FILE specify cache file name
+ (usually \$top_builddir/po/.intltool-merge-cache)
+ -q, --quiet suppress most messages
+ --help display this help and exit
+ --version output version information and exit
+
+Report bugs to http://bugzilla.gnome.org/ (product name "$PACKAGE")
+or send email to <xml-i18n-tools\@gnome.org>.
+_EOF_
+ exit;
+}
+
+
+## Sub for printing error messages
+sub print_error
+{
+ print STDERR "Try `${PROGRAM} --help' for more information.\n";
+ exit;
+}
+
+
+sub print_message
+{
+ print "Merging translations into $OUTFILE.\n" unless $QUIET_ARG;
+}
+
+
+sub preparation
+{
+ $PO_DIR = $ARGV[0];
+ $FILE = $ARGV[1];
+ $OUTFILE = $ARGV[2];
+
+ &gather_po_files;
+ &get_translation_database;
+}
+
+# General-purpose code for looking up translations in .po files
+
+sub po_file2lang
+{
+ my ($tmp) = @_;
+ $tmp =~ s/^.*\/(.*)\.po$/$1/;
+ return $tmp;
+}
+
+sub gather_po_files
+{
+ for my $po_file (glob "$PO_DIR/*.po") {
+ $po_files_by_lang{po_file2lang($po_file)} = $po_file;
+ }
+}
+
+sub get_local_charset
+{
+ my ($encoding) = @_;
+ my $alias_file = $ENV{"G_CHARSET_ALIAS"} || "/opt/local/lib/charset.alias";
+
+ # seek character encoding aliases in charset.alias (glib)
+
+ if (open CHARSET_ALIAS, $alias_file)
+ {
+ while (<CHARSET_ALIAS>)
+ {
+ next if /^\#/;
+ return $1 if (/^\s*([-._a-zA-Z0-9]+)\s+$encoding\b/i)
+ }
+
+ close CHARSET_ALIAS;
+ }
+
+ # if not found, return input string
+
+ return $encoding;
+}
+
+sub get_po_encoding
+{
+ my ($in_po_file) = @_;
+ my $encoding = "";
+
+ open IN_PO_FILE, $in_po_file or die;
+ while (<IN_PO_FILE>)
+ {
+ ## example: "Content-Type: text/plain; charset=ISO-8859-1\n"
+ if (/Content-Type\:.*charset=([-a-zA-Z0-9]+)\\n/)
+ {
+ $encoding = $1;
+ last;
+ }
+ }
+ close IN_PO_FILE;
+
+ if (!$encoding)
+ {
+ print STDERR "Warning: no encoding found in $in_po_file. Assuming ISO-8859-1\n" unless $QUIET_ARG;
+ $encoding = "ISO-8859-1";
+ }
+
+ system ("$iconv -f $encoding -t UTF-8 </dev/null 2>/dev/null");
+ if ($?) {
+ $encoding = get_local_charset($encoding);
+ }
+
+ return $encoding
+}
+
+sub utf8_sanity_check
+{
+ print STDERR "Warning: option --pass-through has been removed.\n" if $PASS_THROUGH_ARG;
+ $UTF8_ARG = 1;
+}
+
+sub get_translation_database
+{
+ if ($cache_file) {
+ &get_cached_translation_database;
+ } else {
+ &create_translation_database;
+ }
+}
+
+sub get_newest_po_age
+{
+ my $newest_age;
+
+ foreach my $file (values %po_files_by_lang)
+ {
+ my $file_age = -M $file;
+ $newest_age = $file_age if !$newest_age || $file_age < $newest_age;
+ }
+
+ $newest_age = 0 if !$newest_age;
+
+ return $newest_age;
+}
+
+sub create_cache
+{
+ print "Generating and caching the translation database\n" unless $QUIET_ARG;
+
+ &create_translation_database;
+
+ open CACHE, ">$cache_file" || die;
+ print CACHE join "\x01", %translations;
+ close CACHE;
+}
+
+sub load_cache
+{
+ print "Found cached translation database\n" unless $QUIET_ARG;
+
+ my $contents;
+ open CACHE, "<$cache_file" || die;
+ {
+ local $/;
+ $contents = <CACHE>;
+ }
+ close CACHE;
+ %translations = split "\x01", $contents;
+}
+
+sub get_cached_translation_database
+{
+ my $cache_file_age = -M $cache_file;
+ if (defined $cache_file_age)
+ {
+ if ($cache_file_age <= &get_newest_po_age)
+ {
+ &load_cache;
+ return;
+ }
+ print "Found too-old cached translation database\n" unless $QUIET_ARG;
+ }
+
+ &create_cache;
+}
+
+sub create_translation_database
+{
+ for my $lang (keys %po_files_by_lang)
+ {
+ my $po_file = $po_files_by_lang{$lang};
+
+ if ($UTF8_ARG)
+ {
+ my $encoding = get_po_encoding ($po_file);
+
+ if (lc $encoding eq "utf-8")
+ {
+ open PO_FILE, "<$po_file";
+ }
+ else
+ {
+ print STDERR "WARNING: $po_file is not in UTF-8 but $encoding, converting...\n" unless $QUIET_ARG;;
+
+ open PO_FILE, "$iconv -f $encoding -t UTF-8 $po_file|";
+ }
+ }
+ else
+ {
+ open PO_FILE, "<$po_file";
+ }
+
+ my $nextfuzzy = 0;
+ my $inmsgid = 0;
+ my $inmsgstr = 0;
+ my $msgid = "";
+ my $msgstr = "";
+
+ while (<PO_FILE>)
+ {
+ $nextfuzzy = 1 if /^#, fuzzy/;
+
+ if (/^msgid "((\\.|[^\\])*)"/ )
+ {
+ $translations{$lang, $msgid} = $msgstr if $inmsgstr && $msgid && $msgstr;
+ $msgid = "";
+ $msgstr = "";
+
+ if ($nextfuzzy) {
+ $inmsgid = 0;
+ } else {
+ $msgid = unescape_po_string($1);
+ $inmsgid = 1;
+ }
+ $inmsgstr = 0;
+ $nextfuzzy = 0;
+ }
+
+ if (/^msgstr "((\\.|[^\\])*)"/)
+ {
+ $msgstr = unescape_po_string($1);
+ $inmsgstr = 1;
+ $inmsgid = 0;
+ }
+
+ if (/^"((\\.|[^\\])*)"/)
+ {
+ $msgid .= unescape_po_string($1) if $inmsgid;
+ $msgstr .= unescape_po_string($1) if $inmsgstr;
+ }
+ }
+ $translations{$lang, $msgid} = $msgstr if $inmsgstr && $msgid && $msgstr;
+ }
+}
+
+sub finalize
+{
+}
+
+sub unescape_one_sequence
+{
+ my ($sequence) = @_;
+
+ return "\\" if $sequence eq "\\\\";
+ return "\"" if $sequence eq "\\\"";
+ return "\n" if $sequence eq "\\n";
+ return "\r" if $sequence eq "\\r";
+ return "\t" if $sequence eq "\\t";
+ return "\b" if $sequence eq "\\b";
+ return "\f" if $sequence eq "\\f";
+ return "\a" if $sequence eq "\\a";
+ return chr(11) if $sequence eq "\\v"; # vertical tab, see ascii(7)
+
+ return chr(hex($1)) if ($sequence =~ /\\x([0-9a-fA-F]{2})/);
+ return chr(oct($1)) if ($sequence =~ /\\([0-7]{3})/);
+
+ # FIXME: Is \0 supported as well? Kenneth and Rodney don't want it, see bug #48489
+
+ return $sequence;
+}
+
+sub unescape_po_string
+{
+ my ($string) = @_;
+
+ $string =~ s/(\\x[0-9a-fA-F]{2}|\\[0-7]{3}|\\.)/unescape_one_sequence($1)/eg;
+
+ return $string;
+}
+
+## NOTE: deal with < - < but not > - > because it seems its ok to have
+## > in the entity. For further info please look at #84738.
+sub entity_decode
+{
+ local ($_) = @_;
+
+ s/'/'/g; # '
+ s/"/"/g; # "
+ s/&/&/g;
+ s/</</g;
+
+ return $_;
+}
+
+# entity_encode: (string)
+#
+# Encode the given string to XML format (encode '<' etc).
+
+sub entity_encode
+{
+ my ($pre_encoded) = @_;
+
+ my @list_of_chars = unpack ('C*', $pre_encoded);
+
+ # with UTF-8 we only encode minimalistic
+ return join ('', map (&entity_encode_int_minimalist, @list_of_chars));
+}
+
+sub entity_encode_int_minimalist
+{
+ return """ if $_ == 34;
+ return "&" if $_ == 38;
+ return "'" if $_ == 39;
+ return "<" if $_ == 60;
+ return chr $_;
+}
+
+sub entity_encoded_translation
+{
+ my ($lang, $string) = @_;
+
+ my $translation = $translations{$lang, $string};
+ return $string if !$translation;
+ return entity_encode ($translation);
+}
+
+## XML (bonobo-activation specific) merge code
+
+sub ba_merge_translations
+{
+ my $source;
+
+ {
+ local $/; # slurp mode
+ open INPUT, "<$FILE" or die "can't open $FILE: $!";
+ $source = <INPUT>;
+ close INPUT;
+ }
+
+ open OUTPUT, ">$OUTFILE" or die "can't open $OUTFILE: $!";
+
+ while ($source =~ s|^(.*?)([ \t]*<\s*$w+\s+($w+\s*=\s*"$q"\s*)+/?>)([ \t]*\n)?||s)
+ {
+ print OUTPUT $1;
+
+ my $node = $2 . "\n";
+
+ my @strings = ();
+ $_ = $node;
+ while (s/(\s)_($w+\s*=\s*"($q)")/$1$2/s) {
+ push @strings, entity_decode($3);
+ }
+ print OUTPUT;
+
+ my %langs;
+ for my $string (@strings)
+ {
+ for my $lang (keys %po_files_by_lang)
+ {
+ $langs{$lang} = 1 if $translations{$lang, $string};
+ }
+ }
+
+ for my $lang (sort keys %langs)
+ {
+ $_ = $node;
+ s/(\sname\s*=\s*)"($q)"/$1"$2-$lang"/s;
+ s/(\s)_($w+\s*=\s*")($q)"/$1 . $2 . entity_encoded_translation($lang, $3) . '"'/seg;
+ print OUTPUT;
+ }
+ }
+
+ print OUTPUT $source;
+
+ close OUTPUT;
+}
+
+
+## XML (non-bonobo-activation) merge code
+
+
+# Process tag attributes
+# Only parameter is a HASH containing attributes -> values mapping
+sub getAttributeString
+{
+ my $sub = shift;
+ my $do_translate = shift || 0;
+ my $language = shift || "";
+ my $result = "";
+ my $translate = shift;
+ foreach my $e (reverse(sort(keys %{ $sub }))) {
+ my $key = $e;
+ my $string = $sub->{$e};
+ my $quote = '"';
+
+ $string =~ s/^[\s]+//;
+ $string =~ s/[\s]+$//;
+
+ if ($string =~ /^'.*'$/)
+ {
+ $quote = "'";
+ }
+ $string =~ s/^['"]//g;
+ $string =~ s/['"]$//g;
+
+ if ($do_translate && $key =~ /^_/) {
+ $key =~ s|^_||g;
+ if ($language) {
+
+ # Handle translation
+ #
+ my $decode_string = entity_decode($string);
+ my $translation = $translations{$language, $decode_string};
+ if ($translation) {
+ $translation = entity_encode($translation);
+ $string = $translation;
+ $$translate = 2;
+ } else {
+ $$translate = 2; # we still want translations for deep nesting (FIXME: this will cause
+ # problems since we might get untranslated duplicated entries, but with xml:lang set)
+ # Fix would be to set it here to eg. 3, and do a check in traverse() to see if any of the containing tags
+ # really need translation, and only emit "translation" if there is (this means parsing same data twice)
+ }
+ } else {
+ $$translate = 2 if ($translate && (!$$translate)); # watch not to "overwrite" if $translate == 2
+ }
+ }
+
+ $result .= " $key=$quote$string$quote";
+ }
+ return $result;
+}
+
+# Returns a translatable string from XML node, it works on contents of every node in XML::Parser tree
+# doesn't support nesting of translatable tags (i.e. <_blah>this <_doh>doesn't</_doh> work</_blah> -- besides
+# can you define the correct semantics for this?)
+#
+
+sub getXMLstring
+{
+ my $ref = shift;
+ my @list = @{ $ref };
+ my $result = "";
+
+ my $count = scalar(@list);
+ my $attrs = $list[0];
+ my $index = 1;
+
+ while ($index < $count) {
+ my $type = $list[$index];
+ my $content = $list[$index+1];
+ if (! $type ) {
+ # We've got CDATA
+ if ($content) {
+ # lets strip the whitespace here, and *ONLY* here
+ $content =~ s/\s+/ /gs if (!((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?preserve["']?$/)));
+ $result .= ($content);
+ } else {
+ #print "no cdata content when expected it\n"; # is this possible, is this ok?
+ # what to do if this happens?
+ # Did I mention that I hate XML::Parser tree style?
+ }
+ } else {
+ # We've got another element
+ $result .= "<$type";
+ $result .= getAttributeString(@{$content}[0], 0); # no nested translatable elements
+ if ($content) {
+ my $subresult = getXMLstring($content);
+ if ($subresult) {
+ $result .= ">".$subresult . "</$type>";
+ } else {
+ $result .= "/>";
+ }
+ } else {
+ $result .= "/>";
+ }
+ }
+ $index += 2;
+ }
+ return $result;
+}
+
+# Translate list of nodes if necessary
+sub translate_subnodes
+{
+ my $fh = shift;
+ my $content = shift;
+ my $language = shift || "";
+ my $singlelang = shift || 0;
+
+ my @nodes = @{ $content };
+
+ my $count = scalar(@nodes);
+ my $index = 0;
+ while ($index < $count) {
+ my $type = $nodes[$index];
+ my $rest = $nodes[$index+1];
+ if ($singlelang) {
+ my $oldMO = $MULTIPLE_OUTPUT;
+ $MULTIPLE_OUTPUT = 1;
+ traverse($fh, $type, $rest, $language);
+ $MULTIPLE_OUTPUT = $oldMO;
+ } else {
+ traverse($fh, $type, $rest, $language);
+ }
+ $index += 2;
+ }
+}
+
+sub traverse
+{
+ my $fh = shift;
+ my $nodename = shift;
+ my $content = shift;
+ my $language = shift || "";
+
+ if (!$nodename) {
+ if ($content =~ /^[\s]*$/) {
+ $leading_space .= $content;
+ }
+ print $fh $content;
+ } else {
+ # element
+ my @all = @{ $content };
+ my $attrs = shift @all;
+ my $translate = 0;
+ my $outattr = getAttributeString($attrs, 1, $language, \$translate);
+
+ if ($nodename =~ /^_/) {
+ $translate = 1;
+ $nodename =~ s/^_//;
+ }
+ my $lookup = '';
+ print $fh "<$nodename", $outattr;
+ if ($translate) {
+ $lookup = getXMLstring($content);
+ if (!((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?preserve["']?$/))) {
+ $lookup =~ s/^\s+//s;
+ $lookup =~ s/\s+$//s;
+ }
+
+ if ($lookup || $translate == 2) {
+ my $translation = $translations{$language, $lookup};
+ if ($MULTIPLE_OUTPUT && ($translation || $translate == 2)) {
+ $translation = $lookup if (!$translation);
+ print $fh " xml:lang=\"", $language, "\"" if $language;
+ print $fh ">";
+ if ($translate == 2) {
+ translate_subnodes($fh, \@all, $language, 1);
+ } else {
+ print $fh $translation;
+ }
+ print $fh "</$nodename>";
+
+ return; # this means there will be no same translation with xml:lang="$language"...
+ # if we want them both, just remove this "return"
+ } else {
+ print $fh ">";
+ if ($translate == 2) {
+ translate_subnodes($fh, \@all, $language, 1);
+ } else {
+ print $fh $lookup;
+ }
+ print $fh "</$nodename>";
+ }
+ } else {
+ print $fh "/>";
+ }
+
+ for my $lang (sort keys %po_files_by_lang) {
+ if ($MULTIPLE_OUTPUT && $lang ne "$language") {
+ next;
+ }
+ if ($lang) {
+ # Handle translation
+ #
+ my $translate = 0;
+ my $localattrs = getAttributeString($attrs, 1, $lang, \$translate);
+ my $translation = $translations{$lang, $lookup};
+ if ($translate && !$translation) {
+ $translation = $lookup;
+ }
+
+ if ($translation || $translate) {
+ print $fh "\n";
+ $leading_space =~ s/.*\n//g;
+ print $fh $leading_space;
+ print $fh "<", $nodename, " xml:lang=\"", $lang, "\"", $localattrs, ">";
+ if ($translate == 2) {
+ translate_subnodes($fh, \@all, $lang, 1);
+ } else {
+ print $fh $translation;
+ }
+ print $fh "</$nodename>";
+ }
+ }
+ }
+
+ } else {
+ my $count = scalar(@all);
+ if ($count > 0) {
+ print $fh ">";
+ my $index = 0;
+ while ($index < $count) {
+ my $type = $all[$index];
+ my $rest = $all[$index+1];
+ traverse($fh, $type, $rest, $language);
+ $index += 2;
+ }
+ print $fh "</$nodename>";
+ } else {
+ print $fh "/>";
+ }
+ }
+ }
+}
+
+sub intltool_tree_cdatastart
+{
+ my $expat = shift;
+ my $clist = $expat->{Curlist};
+ my $pos = $#$clist;
+
+ push @$clist, 0 => $expat->original_string();
+}
+
+sub intltool_tree_cdataend
+{
+ my $expat = shift;
+ my $clist = $expat->{Curlist};
+ my $pos = $#$clist;
+
+ $clist->[$pos] .= $expat->original_string();
+}
+
+sub intltool_tree_char
+{
+ my $expat = shift;
+ my $text = shift;
+ my $clist = $expat->{Curlist};
+ my $pos = $#$clist;
+
+ # Use original_string so that we retain escaped entities
+ # in CDATA sections.
+ #
+ if ($pos > 0 and $clist->[$pos - 1] eq '0') {
+ $clist->[$pos] .= $expat->original_string();
+ } else {
+ push @$clist, 0 => $expat->original_string();
+ }
+}
+
+sub intltool_tree_start
+{
+ my $expat = shift;
+ my $tag = shift;
+ my @origlist = ();
+
+ # Use original_string so that we retain escaped entities
+ # in attribute values. We must convert the string to an
+ # @origlist array to conform to the structure of the Tree
+ # Style.
+ #
+ my @original_array = split /\x/, $expat->original_string();
+ my $source = $expat->original_string();
+
+ # Remove leading tag.
+ #
+ $source =~ s|^\s*<\s*(\S+)||s;
+
+ # Grab attribute key/value pairs and push onto @origlist array.
+ #
+ while ($source)
+ {
+ if ($source =~ /^\s*([\w:-]+)\s*[=]\s*["]/)
+ {
+ $source =~ s|^\s*([\w:-]+)\s*[=]\s*["]([^"]*)["]||s;
+ push @origlist, $1;
+ push @origlist, '"' . $2 . '"';
+ }
+ elsif ($source =~ /^\s*([\w:-]+)\s*[=]\s*[']/)
+ {
+ $source =~ s|^\s*([\w:-]+)\s*[=]\s*[']([^']*)[']||s;
+ push @origlist, $1;
+ push @origlist, "'" . $2 . "'";
+ }
+ else
+ {
+ last;
+ }
+ }
+
+ my $ol = [ { @origlist } ];
+
+ push @{ $expat->{Lists} }, $expat->{Curlist};
+ push @{ $expat->{Curlist} }, $tag => $ol;
+ $expat->{Curlist} = $ol;
+}
+
+sub readXml
+{
+ my $filename = shift || return;
+ if(!-f $filename) {
+ die "ERROR Cannot find filename: $filename\n";
+ }
+
+ my $ret = eval 'require XML::Parser';
+ if(!$ret) {
+ die "You must have XML::Parser installed to run $0\n\n";
+ }
+ my $xp = new XML::Parser(Style => 'Tree');
+ $xp->setHandlers(Char => \&intltool_tree_char);
+ $xp->setHandlers(Start => \&intltool_tree_start);
+ $xp->setHandlers(CdataStart => \&intltool_tree_cdatastart);
+ $xp->setHandlers(CdataEnd => \&intltool_tree_cdataend);
+ my $tree = $xp->parsefile($filename);
+
+# <foo><head id="a">Hello <em>there</em></head><bar>Howdy<ref/></bar>do</foo>
+# would be:
+# [foo, [{}, head, [{id => "a"}, 0, "Hello ", em, [{}, 0, "there"]], bar, [{},
+# 0, "Howdy", ref, [{}]], 0, "do" ] ]
+
+ return $tree;
+}
+
+sub print_header
+{
+ my $infile = shift;
+ my $fh = shift;
+ my $source;
+
+ if(!-f $infile) {
+ die "ERROR Cannot find filename: $infile\n";
+ }
+
+ print $fh qq{<?xml version="1.0" encoding="UTF-8"?>\n};
+ {
+ local $/;
+ open DOCINPUT, "<${FILE}" or die;
+ $source = <DOCINPUT>;
+ close DOCINPUT;
+ }
+ if ($source =~ /(<!DOCTYPE.*\[.*\]\s*>)/s)
+ {
+ print $fh "$1\n";
+ }
+ elsif ($source =~ /(<!DOCTYPE[^>]*>)/s)
+ {
+ print $fh "$1\n";
+ }
+}
+
+sub parseTree
+{
+ my $fh = shift;
+ my $ref = shift;
+ my $language = shift || "";
+
+ my $name = shift @{ $ref };
+ my $cont = shift @{ $ref };
+ traverse($fh, $name, $cont, $language);
+}
+
+sub xml_merge_output
+{
+ my $source;
+
+ if ($MULTIPLE_OUTPUT) {
+ for my $lang (sort keys %po_files_by_lang) {
+ if ( ! -e $lang ) {
+ mkdir $lang or die "Cannot create subdirectory $lang: $!\n";
+ }
+ open OUTPUT, ">$lang/$OUTFILE" or die "Cannot open $lang/$OUTFILE: $!\n";
+ my $tree = readXml($FILE);
+ print_header($FILE, \*OUTPUT);
+ parseTree(\*OUTPUT, $tree, $lang);
+ close OUTPUT;
+ print "CREATED $lang/$OUTFILE\n" unless $QUIET_ARG;
+ }
+ }
+ open OUTPUT, ">$OUTFILE" or die "Cannot open $OUTFILE: $!\n";
+ my $tree = readXml($FILE);
+ print_header($FILE, \*OUTPUT);
+ parseTree(\*OUTPUT, $tree);
+ close OUTPUT;
+ print "CREATED $OUTFILE\n" unless $QUIET_ARG;
+}
+
+sub keys_merge_translations
+{
+ open INPUT, "<${FILE}" or die;
+ open OUTPUT, ">${OUTFILE}" or die;
+
+ while (<INPUT>)
+ {
+ if (s/^(\s*)_(\w+=(.*))/$1$2/)
+ {
+ my $string = $3;
+
+ print OUTPUT;
+
+ my $non_translated_line = $_;
+
+ for my $lang (sort keys %po_files_by_lang)
+ {
+ my $translation = $translations{$lang, $string};
+ next if !$translation;
+
+ $_ = $non_translated_line;
+ s/(\w+)=.*/[$lang]$1=$translation/;
+ print OUTPUT;
+ }
+ }
+ else
+ {
+ print OUTPUT;
+ }
+ }
+
+ close OUTPUT;
+ close INPUT;
+}
+
+sub desktop_merge_translations
+{
+ open INPUT, "<${FILE}" or die;
+ open OUTPUT, ">${OUTFILE}" or die;
+
+ while (<INPUT>)
+ {
+ if (s/^(\s*)_(\w+=(.*))/$1$2/)
+ {
+ my $string = $3;
+
+ print OUTPUT;
+
+ my $non_translated_line = $_;
+
+ for my $lang (sort keys %po_files_by_lang)
+ {
+ my $translation = $translations{$lang, $string};
+ next if !$translation;
+
+ $_ = $non_translated_line;
+ s/(\w+)=.*/${1}[$lang]=$translation/;
+ print OUTPUT;
+ }
+ }
+ else
+ {
+ print OUTPUT;
+ }
+ }
+
+ close OUTPUT;
+ close INPUT;
+}
+
+sub schemas_merge_translations
+{
+ my $source;
+
+ {
+ local $/; # slurp mode
+ open INPUT, "<$FILE" or die "can't open $FILE: $!";
+ $source = <INPUT>;
+ close INPUT;
+ }
+
+ open OUTPUT, ">$OUTFILE" or die;
+
+ # FIXME: support attribute translations
+
+ # Empty nodes never need translation, so unmark all of them.
+ # For example, <_foo/> is just replaced by <foo/>.
+ $source =~ s|<\s*_($w+)\s*/>|<$1/>|g;
+
+ while ($source =~ s/
+ (.*?)
+ (\s+)(<locale\ name="C">(\s*)
+ (<default>\s*(?:<!--[^>]*?-->\s*)?(.*?)\s*<\/default>)?(\s*)
+ (<short>\s*(?:<!--[^>]*?-->\s*)?(.*?)\s*<\/short>)?(\s*)
+ (<long>\s*(?:<!--[^>]*?-->\s*)?(.*?)\s*<\/long>)?(\s*)
+ <\/locale>)
+ //sx)
+ {
+ print OUTPUT $1;
+
+ my $locale_start_spaces = $2 ? $2 : '';
+ my $default_spaces = $4 ? $4 : '';
+ my $short_spaces = $7 ? $7 : '';
+ my $long_spaces = $10 ? $10 : '';
+ my $locale_end_spaces = $13 ? $13 : '';
+ my $c_default_block = $3 ? $3 : '';
+ my $default_string = $6 ? $6 : '';
+ my $short_string = $9 ? $9 : '';
+ my $long_string = $12 ? $12 : '';
+
+ print OUTPUT "$locale_start_spaces$c_default_block";
+
+ $default_string =~ s/\s+/ /g;
+ $default_string = entity_decode($default_string);
+ $short_string =~ s/\s+/ /g;
+ $short_string = entity_decode($short_string);
+ $long_string =~ s/\s+/ /g;
+ $long_string = entity_decode($long_string);
+
+ for my $lang (sort keys %po_files_by_lang)
+ {
+ my $default_translation = $translations{$lang, $default_string};
+ my $short_translation = $translations{$lang, $short_string};
+ my $long_translation = $translations{$lang, $long_string};
+
+ next if (!$default_translation && !$short_translation &&
+ !$long_translation);
+
+ print OUTPUT "\n$locale_start_spaces<locale name=\"$lang\">";
+
+ print OUTPUT "$default_spaces";
+
+ if ($default_translation)
+ {
+ $default_translation = entity_encode($default_translation);
+ print OUTPUT "<default>$default_translation</default>";
+ }
+
+ print OUTPUT "$short_spaces";
+
+ if ($short_translation)
+ {
+ $short_translation = entity_encode($short_translation);
+ print OUTPUT "<short>$short_translation</short>";
+ }
+
+ print OUTPUT "$long_spaces";
+
+ if ($long_translation)
+ {
+ $long_translation = entity_encode($long_translation);
+ print OUTPUT "<long>$long_translation</long>";
+ }
+
+ print OUTPUT "$locale_end_spaces</locale>";
+ }
+ }
+
+ print OUTPUT $source;
+
+ close OUTPUT;
+}
+
+sub rfc822deb_merge_translations
+{
+ my %encodings = ();
+ for my $lang (keys %po_files_by_lang) {
+ $encodings{$lang} = ($UTF8_ARG ? 'UTF-8' : get_po_encoding($po_files_by_lang{$lang}));
+ }
+
+ my $source;
+
+ $Text::Wrap::huge = 'overflow';
+ $Text::Wrap::break = qr/\n|\s(?=\S)/;
+
+ {
+ local $/; # slurp mode
+ open INPUT, "<$FILE" or die "can't open $FILE: $!";
+ $source = <INPUT>;
+ close INPUT;
+ }
+
+ open OUTPUT, ">${OUTFILE}" or die;
+
+ while ($source =~ /(^|\n+)(_*)([^:\s]+)(:[ \t]*)(.*?)(?=\n[\S\n]|$)/sg)
+ {
+ my $sep = $1;
+ my $non_translated_line = $3.$4;
+ my $string = $5;
+ my $underscore = length($2);
+ next if $underscore eq 0 && $non_translated_line =~ /^#/;
+ # Remove [] dummy strings
+ my $stripped = $string;
+ $stripped =~ s/\[\s[^\[\]]*\],/,/g if $underscore eq 2;
+ $stripped =~ s/\[\s[^\[\]]*\]$//;
+ $non_translated_line .= $stripped;
+
+ print OUTPUT $sep.$non_translated_line;
+
+ if ($underscore)
+ {
+ my @str_list = rfc822deb_split($underscore, $string);
+
+ for my $lang (sort keys %po_files_by_lang)
+ {
+ my $is_translated = 1;
+ my $str_translated = '';
+ my $first = 1;
+
+ for my $str (@str_list)
+ {
+ my $translation = $translations{$lang, $str};
+
+ if (!$translation)
+ {
+ $is_translated = 0;
+ last;
+ }
+
+ # $translation may also contain [] dummy
+ # strings, mostly to indicate an empty string
+ $translation =~ s/\[\s[^\[\]]*\]$//;
+
+ if ($first)
+ {
+ if ($underscore eq 2)
+ {
+ $str_translated .= $translation;
+ }
+ else
+ {
+ $str_translated .=
+ Text::Tabs::expand($translation) .
+ "\n";
+ }
+ }
+ else
+ {
+ if ($underscore eq 2)
+ {
+ $str_translated .= ', ' . $translation;
+ }
+ else
+ {
+ $str_translated .= Text::Tabs::expand(
+ Text::Wrap::wrap(' ', ' ', $translation)) .
+ "\n .\n";
+ }
+ }
+ $first = 0;
+
+ # To fix some problems with Text::Wrap::wrap
+ $str_translated =~ s/(\n )+\n/\n .\n/g;
+ }
+ next unless $is_translated;
+
+ $str_translated =~ s/\n \.\n$//;
+ $str_translated =~ s/\s+$//;
+
+ $_ = $non_translated_line;
+ s/^(\w+):\s*.*/$sep${1}-$lang.$encodings{$lang}: $str_translated/s;
+ print OUTPUT;
+ }
+ }
+ }
+ print OUTPUT "\n";
+
+ close OUTPUT;
+ close INPUT;
+}
+
+sub rfc822deb_split
+{
+ # Debian defines a special way to deal with rfc822-style files:
+ # when a value contain newlines, it consists of
+ # 1. a short form (first line)
+ # 2. a long description, all lines begin with a space,
+ # and paragraphs are separated by a single dot on a line
+ # This routine returns an array of all paragraphs, and reformat
+ # them.
+ # When first argument is 2, the string is a comma separated list of
+ # values.
+ my $type = shift;
+ my $text = shift;
+ $text =~ s/^[ \t]//mg;
+ return (split(/, */, $text, 0)) if $type ne 1;
+ return ($text) if $text !~ /\n/;
+
+ $text =~ s/([^\n]*)\n//;
+ my @list = ($1);
+ my $str = '';
+
+ for my $line (split (/\n/, $text))
+ {
+ chomp $line;
+ if ($line =~ /^\.\s*$/)
+ {
+ # New paragraph
+ $str =~ s/\s*$//;
+ push(@list, $str);
+ $str = '';
+ }
+ elsif ($line =~ /^\s/)
+ {
+ # Line which must not be reformatted
+ $str .= "\n" if length ($str) && $str !~ /\n$/;
+ $line =~ s/\s+$//;
+ $str .= $line."\n";
+ }
+ else
+ {
+ # Continuation line, remove newline
+ $str .= " " if length ($str) && $str !~ /\n$/;
+ $str .= $line;
+ }
+ }
+
+ $str =~ s/\s*$//;
+ push(@list, $str) if length ($str);
+
+ return @list;
+}
+
Added: desktop/trunk/thunar/branches/upstream/current/intltool-update.in
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/intltool-update.in 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/intltool-update.in 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,1063 @@
+#!@INTLTOOL_PERL@ -w
+# -*- Mode: perl; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+
+#
+# The Intltool Message Updater
+#
+# Copyright (C) 2000-2003 Free Software Foundation.
+#
+# Intltool is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# version 2 published by the Free Software Foundation.
+#
+# Intltool is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+#
+# Authors: Kenneth Christiansen <kenneth at gnu.org>
+# Maciej Stachowiak
+# Darin Adler <darin at bentspoon.com>
+
+## Release information
+my $PROGRAM = "intltool-update";
+my $VERSION = "0.33";
+my $PACKAGE = "intltool";
+
+## Loaded modules
+use strict;
+use Getopt::Long;
+use Cwd;
+use File::Copy;
+use File::Find;
+
+## Scalars used by the option stuff
+my $HELP_ARG = 0;
+my $VERSION_ARG = 0;
+my $DIST_ARG = 0;
+my $POT_ARG = 0;
+my $HEADERS_ARG = 0;
+my $MAINTAIN_ARG = 0;
+my $REPORT_ARG = 0;
+my $VERBOSE = 0;
+my $GETTEXT_PACKAGE = "";
+my $OUTPUT_FILE = "";
+
+my @languages;
+my %varhash = ();
+my %po_files_by_lang = ();
+
+# Regular expressions to categorize file types.
+# FIXME: Please check if the following is correct
+
+my $xml_support =
+"xml(?:\\.in)*|". # http://www.w3.org/XML/ (Note: .in is not required)
+"ui|". # Bonobo specific - User Interface desc. files
+"lang|". # ?
+"glade2?(?:\\.in)*|". # Glade specific - User Interface desc. files (Note: .in is not required)
+"scm(?:\\.in)*|". # ? (Note: .in is not required)
+"oaf(?:\\.in)+|". # DEPRECATED: Replaces by Bonobo .server files
+"etspec|". # ?
+"server(?:\\.in)+|". # Bonobo specific
+"sheet(?:\\.in)+|". # ?
+"schemas(?:\\.in)+|". # GConf specific
+"pong(?:\\.in)+|". # DEPRECATED: PONG is not used [by GNOME] any longer.
+"kbd(?:\\.in)+"; # GOK specific.
+
+my $ini_support =
+"icon(?:\\.in)+|". # http://www.freedesktop.org/Standards/icon-theme-spec
+"desktop(?:\\.in)+|". # http://www.freedesktop.org/Standards/menu-spec
+"caves(?:\\.in)+|". # GNOME Games specific
+"directory(?:\\.in)+|". # http://www.freedesktop.org/Standards/menu-spec
+"soundlist(?:\\.in)+|". # GNOME specific
+"keys(?:\\.in)+|". # GNOME Mime database specific
+"theme(?:\\.in)+"; # http://www.freedesktop.org/Standards/icon-theme-spec
+
+my $buildin_gettext_support =
+"c|y|cs|cc|cpp|c\\+\\+|h|hh|gob|py";
+
+## Always flush buffer when printing
+$| = 1;
+
+## Sometimes the source tree will be rooted somewhere else.
+my $SRCDIR = ".";
+my $POTFILES_in;
+
+$SRCDIR = $ENV{"srcdir"} if $ENV{"srcdir"};
+$POTFILES_in = "<$SRCDIR/POTFILES.in";
+
+## Handle options
+GetOptions
+(
+ "help" => \$HELP_ARG,
+ "version" => \$VERSION_ARG,
+ "dist|d" => \$DIST_ARG,
+ "pot|p" => \$POT_ARG,
+ "headers|s" => \$HEADERS_ARG,
+ "maintain|m" => \$MAINTAIN_ARG,
+ "report|r" => \$REPORT_ARG,
+ "verbose|x" => \$VERBOSE,
+ "gettext-package|g=s" => \$GETTEXT_PACKAGE,
+ "output-file|o=s" => \$OUTPUT_FILE,
+ ) or &Console_WriteError_InvalidOption;
+
+&Console_Write_IntltoolHelp if $HELP_ARG;
+&Console_Write_IntltoolVersion if $VERSION_ARG;
+
+my $arg_count = ($DIST_ARG > 0)
+ + ($POT_ARG > 0)
+ + ($HEADERS_ARG > 0)
+ + ($MAINTAIN_ARG > 0)
+ + ($REPORT_ARG > 0);
+
+&Console_Write_IntltoolHelp if $arg_count > 1;
+
+# --version and --help don't require a module name
+my $MODULE = $GETTEXT_PACKAGE || &FindPackageName;
+
+if ($POT_ARG)
+{
+ &GenerateHeaders;
+ &GeneratePOTemplate;
+}
+elsif ($HEADERS_ARG)
+{
+ &GenerateHeaders;
+}
+elsif ($MAINTAIN_ARG)
+{
+ &FindLeftoutFiles;
+}
+elsif ($REPORT_ARG)
+{
+ &GenerateHeaders;
+ &GeneratePOTemplate;
+ &Console_Write_CoverageReport;
+}
+elsif ((defined $ARGV[0]) && $ARGV[0] =~ /^[a-z]/)
+{
+ my $lang = $ARGV[0];
+
+ ## Report error if the language file supplied
+ ## to the command line is non-existent
+ &Console_WriteError_NotExisting("$SRCDIR/$lang.po")
+ if ! -s "$SRCDIR/$lang.po";
+
+ if (!$DIST_ARG)
+ {
+ print "Working, please wait..." if $VERBOSE;
+ &GenerateHeaders;
+ &GeneratePOTemplate;
+ }
+ &POFile_Update ($lang, $OUTPUT_FILE);
+ &Console_Write_TranslationStatus ($lang, $OUTPUT_FILE);
+}
+else
+{
+ &Console_Write_IntltoolHelp;
+}
+
+exit;
+
+#########
+
+sub Console_Write_IntltoolVersion
+{
+ print <<_EOF_;
+${PROGRAM} (${PACKAGE}) $VERSION
+Written by Kenneth Christiansen, Maciej Stachowiak, and Darin Adler.
+
+Copyright (C) 2000-2003 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.
+_EOF_
+ exit;
+}
+
+sub Console_Write_IntltoolHelp
+{
+ print <<_EOF_;
+Usage: ${PROGRAM} [OPTION]... LANGCODE
+Updates PO template files and merge them with the translations.
+
+Mode of operation (only one is allowed):
+ -p, --pot generate the PO template only
+ -s, --headers generate the header files in POTFILES.in
+ -m, --maintain search for left out files from POTFILES.in
+ -r, --report display a status report for the module
+ -d, --dist merge LANGCODE.po with existing PO template
+
+Extra options:
+ -g, --gettext-package=NAME override PO template name, useful with --pot
+ -o, --output-file=FILE write merged translation to FILE
+ -x, --verbose display lots of feedback
+ --help display this help and exit
+ --version output version information and exit
+
+Examples of use:
+${PROGRAM} --pot just create a new PO template
+${PROGRAM} xy create new PO template and merge xy.po with it
+
+Report bugs to http://bugzilla.gnome.org/ (product name "$PACKAGE")
+or send email to <xml-i18n-tools\@gnome.org>.
+_EOF_
+ exit;
+}
+
+sub echo_n
+{
+ my $str = shift;
+ my $ret = `echo "$str"`;
+
+ $ret =~ s/\n$//; # do we need the "s" flag?
+
+ return $ret;
+}
+
+sub POFile_DetermineType ($)
+{
+ my $type = $_;
+ my $gettext_type;
+
+ my $xml_regex = "(?:" . $xml_support . ")";
+ my $ini_regex = "(?:" . $ini_support . ")";
+ my $buildin_regex = "(?:" . $buildin_gettext_support . ")";
+
+ if ($type =~ /\[type: gettext\/([^\]].*)]/)
+ {
+ $gettext_type=$1;
+ }
+ elsif ($type =~ /schemas(\.in)+$/)
+ {
+ $gettext_type="schemas";
+ }
+ elsif ($type =~ /glade2?(\.in)*$/)
+ {
+ $gettext_type="glade";
+ }
+ elsif ($type =~ /scm(\.in)*$/)
+ {
+ $gettext_type="scheme";
+ }
+ elsif ($type =~ /keys(\.in)+$/)
+ {
+ $gettext_type="keys";
+ }
+
+ # bucket types
+
+ elsif ($type =~ /$xml_regex$/)
+ {
+ $gettext_type="xml";
+ }
+ elsif ($type =~ /$ini_regex$/)
+ {
+ $gettext_type="ini";
+ }
+ elsif ($type =~ /$buildin_regex$/)
+ {
+ $gettext_type="buildin";
+ }
+ else
+ {
+ $gettext_type="unknown";
+ }
+
+ return "gettext\/$gettext_type";
+}
+
+sub TextFile_DetermineEncoding ($)
+{
+ my $gettext_code="ASCII"; # All files are ASCII by default
+ my $filetype=`file $_ | cut -d ' ' -f 2`;
+
+ if ($? eq "0")
+ {
+ if ($filetype =~ /^(ISO|UTF)/)
+ {
+ chomp ($gettext_code = $filetype);
+ }
+ elsif ($filetype =~ /^XML/)
+ {
+ $gettext_code="UTF-8"; # We asume that .glade and other .xml files are UTF-8
+ }
+ }
+
+ return $gettext_code;
+}
+
+sub isNotValidMissing
+{
+ my ($file) = @_;
+
+ return if $file =~ /^\{arch\}\/.*$/;
+ return if $file =~ /^$varhash{"PACKAGE"}-$varhash{"VERSION"}\/.*$/;
+}
+
+sub FindLeftoutFiles
+{
+ my (@buf_i18n_plain,
+ @buf_i18n_xml,
+ @buf_i18n_xml_unmarked,
+ @buf_i18n_ini,
+ @buf_potfiles,
+ @buf_potfiles_ignore,
+ @buf_allfiles,
+ @buf_allfiles_sorted,
+ @buf_potfiles_sorted
+ );
+
+ ## Search and find all translatable files
+ find sub {
+ push @buf_i18n_plain, "$File::Find::name" if /\.($buildin_gettext_support)$/;
+ push @buf_i18n_xml, "$File::Find::name" if /\.($xml_support)$/;
+ push @buf_i18n_ini, "$File::Find::name" if /\.($ini_support)$/;
+ push @buf_i18n_xml_unmarked, "$File::Find::name" if /\.(schemas(\.in)+)$/;
+ }, "..";
+
+
+ open POTFILES, $POTFILES_in or die "$PROGRAM: there's no POTFILES.in!\n";
+ @buf_potfiles = grep !/^(#|\s*$)/, <POTFILES>;
+ close POTFILES;
+
+ foreach (@buf_potfiles) {
+ s/^\[.*]\s*//;
+ }
+
+ print "Searching for missing translatable files...\n" if $VERBOSE;
+
+ ## Check if we should ignore some found files, when
+ ## comparing with POTFILES.in
+ foreach my $ignore ("POTFILES.skip", "POTFILES.ignore")
+ {
+ (-s $ignore) or next;
+
+ if ("$ignore" eq "POTFILES.ignore")
+ {
+ print "The usage of POTFILES.ignore is deprecated. Please consider moving the\n".
+ "content of this file to POTFILES.skip.\n";
+ }
+
+ print "Found $ignore: Ignoring files...\n" if $VERBOSE;
+ open FILE, "<$ignore" or die "ERROR: Failed to open $ignore!\n";
+
+ while (<FILE>)
+ {
+ push @buf_potfiles_ignore, $_ unless /^(#|\s*$)/;
+ }
+ close FILE;
+
+ @buf_potfiles = (@buf_potfiles_ignore, @buf_potfiles);
+ }
+
+ foreach my $file (@buf_i18n_plain)
+ {
+ my $in_comment = 0;
+ my $in_macro = 0;
+
+ open FILE, "<$file";
+ while (<FILE>)
+ {
+ # Handle continued multi-line comment.
+ if ($in_comment)
+ {
+ next unless s-.*\*/--;
+ $in_comment = 0;
+ }
+
+ # Handle continued macro.
+ if ($in_macro)
+ {
+ $in_macro = 0 unless /\\$/;
+ next;
+ }
+
+ # Handle start of macro (or any preprocessor directive).
+ if (/^\s*\#/)
+ {
+ $in_macro = 1 if /^([^\\]|\\.)*\\$/;
+ next;
+ }
+
+ # Handle comments and quoted text.
+ while (m-(/\*|//|\'|\")-) # \' and \" keep emacs perl mode happy
+ {
+ my $match = $1;
+ if ($match eq "/*")
+ {
+ if (!s-/\*.*?\*/--)
+ {
+ s-/\*.*--;
+ $in_comment = 1;
+ }
+ }
+ elsif ($match eq "//")
+ {
+ s-//.*--;
+ }
+ else # ' or "
+ {
+ if (!s-$match([^\\]|\\.)*?$match-QUOTEDTEXT-)
+ {
+ warn "mismatched quotes at line $. in $file\n";
+ s-$match.*--;
+ }
+ }
+ }
+
+ if (/\.GetString ?\(QUOTEDTEXT/)
+ {
+ if (defined isNotValidMissing (unpack("x3 A*", $file))) {
+ ## Remove the first 3 chars and add newline
+ push @buf_allfiles, unpack("x3 A*", $file) . "\n";
+ }
+ last;
+ }
+
+ if (/_\(QUOTEDTEXT/)
+ {
+ if (defined isNotValidMissing (unpack("x3 A*", $file))) {
+ ## Remove the first 3 chars and add newline
+ push @buf_allfiles, unpack("x3 A*", $file) . "\n";
+ }
+ last;
+ }
+ }
+ close FILE;
+ }
+
+ foreach my $file (@buf_i18n_xml)
+ {
+ open FILE, "<$file";
+
+ while (<FILE>)
+ {
+ # FIXME: share the pattern matching code with intltool-extract
+ if (/\s_(.*)=\"/ || /<_[^>]+>/ || /translatable=\"yes\"/)
+ {
+ if (defined isNotValidMissing (unpack("x3 A*", $file))) {
+ push @buf_allfiles, unpack("x3 A*", $file) . "\n";
+ }
+ last;
+ }
+ }
+ close FILE;
+ }
+
+ foreach my $file (@buf_i18n_ini)
+ {
+ open FILE, "<$file";
+ while (<FILE>)
+ {
+ if (/_(.*)=/)
+ {
+ if (defined isNotValidMissing (unpack("x3 A*", $file))) {
+ push @buf_allfiles, unpack("x3 A*", $file) . "\n";
+ }
+ last;
+ }
+ }
+ close FILE;
+ }
+
+ foreach my $file (@buf_i18n_xml_unmarked)
+ {
+ if (defined isNotValidMissing (unpack("x3 A*", $file))) {
+ push @buf_allfiles, unpack("x3 A*", $file) . "\n";
+ }
+ }
+
+
+ @buf_allfiles_sorted = sort (@buf_allfiles);
+ @buf_potfiles_sorted = sort (@buf_potfiles);
+
+ my %in2;
+ foreach (@buf_potfiles_sorted)
+ {
+ $in2{$_} = 1;
+ }
+
+ my @result;
+
+ foreach (@buf_allfiles_sorted)
+ {
+ if (!exists($in2{$_}))
+ {
+ push @result, $_
+ }
+ }
+
+ my @buf_potfiles_notexist;
+
+ foreach (@buf_potfiles_sorted)
+ {
+ chomp (my $dummy = $_);
+ if ("$dummy" ne "" and ! -f "../$dummy")
+ {
+ push @buf_potfiles_notexist, $_;
+ }
+ }
+
+ ## Save file with information about the files missing
+ ## if any, and give information about this procedure.
+ if (@result + @buf_potfiles_notexist > 0)
+ {
+ if (@result)
+ {
+ print "\n" if $VERBOSE;
+ unlink "missing";
+ open OUT, ">missing";
+ print OUT @result;
+ close OUT;
+ warn "\e[1mThe following files contain translations and are currently not in use. Please\e[0m\n".
+ "\e[1mconsider adding these to the POTFILES.in file, located in the po/ directory.\e[0m\n\n";
+ print STDERR @result, "\n";
+ warn "If some of these files are left out on purpose then please add them to\n".
+ "POTFILES.skip instead of POTFILES.in. A file \e[1m'missing'\e[0m containing this list\n".
+ "of left out files has been written in the current directory.\n";
+ }
+ if (@buf_potfiles_notexist)
+ {
+ unlink "notexist";
+ open OUT, ">notexist";
+ print OUT @buf_potfiles_notexist;
+ close OUT;
+ warn "\n" if ($VERBOSE or @result);
+ warn "\e[1mThe following files do not exist anymore:\e[0m\n\n";
+ warn @buf_potfiles_notexist, "\n";
+ warn "Please remove them from POTFILES.in or POTFILES.skip. A file \e[1m'notexist'\e[0m\n".
+ "containing this list of absent files has been written in the current directory.\n";
+ }
+ }
+
+ ## If there is nothing to complain about, notify the user
+ else {
+ print "\nAll files containing translations are present in POTFILES.in.\n" if $VERBOSE;
+ }
+}
+
+sub Console_WriteError_InvalidOption
+{
+ ## Handle invalid arguments
+ print STDERR "Try `${PROGRAM} --help' for more information.\n";
+ exit 1;
+}
+
+sub GenerateHeaders
+{
+ my $EXTRACT = "@INTLTOOL_EXTRACT@";
+ chomp $EXTRACT;
+
+ $EXTRACT = $ENV{"INTLTOOL_EXTRACT"} if $ENV{"INTLTOOL_EXTRACT"};
+
+ ## Generate the .h header files, so we can allow glade and
+ ## xml translation support
+ if (! -x "$EXTRACT")
+ {
+ print STDERR "\n *** The intltool-extract script wasn't found!"
+ ."\n *** Without it, intltool-update can not generate files.\n";
+ exit;
+ }
+ else
+ {
+ open (FILE, $POTFILES_in) or die "$PROGRAM: POTFILES.in not found.\n";
+
+ while (<FILE>)
+ {
+ chomp;
+ next if /^\[\s*encoding/;
+
+ ## Find xml files in POTFILES.in and generate the
+ ## files with help from the extract script
+
+ my $gettext_type= &POFile_DetermineType ($1);
+
+ if (/\.($xml_support|$ini_support)$/ || /^\[/)
+ {
+ s/^\[[^\[].*]\s*//;
+
+ my $filename = "../$_";
+
+ if ($VERBOSE)
+ {
+ system ($EXTRACT, "--update", "--srcdir=$SRCDIR",
+ "--type=$gettext_type", $filename);
+ }
+ else
+ {
+ system ($EXTRACT, "--update", "--type=$gettext_type",
+ "--srcdir=$SRCDIR", "--quiet", $filename);
+ }
+ }
+ }
+ close FILE;
+ }
+}
+
+#
+# Generate .pot file from POTFILES.in
+#
+sub GeneratePOTemplate
+{
+ my $XGETTEXT = $ENV{"XGETTEXT"} || "/opt/local/bin/xgettext";
+ my $XGETTEXT_ARGS = $ENV{"XGETTEXT_ARGS"} || '';
+ chomp $XGETTEXT;
+
+ if (! -x $XGETTEXT)
+ {
+ print STDERR " *** xgettext is not found on this system!\n".
+ " *** Without it, intltool-update can not extract strings.\n";
+ exit;
+ }
+
+ print "Building $MODULE.pot...\n" if $VERBOSE;
+
+ open INFILE, $POTFILES_in;
+ unlink "POTFILES.in.temp";
+ open OUTFILE, ">POTFILES.in.temp" or die("Cannot open POTFILES.in.temp for writing");
+
+ my $gettext_support_nonascii = 0;
+
+ # checks for GNU gettext >= 0.12
+ my $dummy = `$XGETTEXT --version --from-code=UTF-8 >/dev/null 2>/dev/null`;
+ if ($? == 0)
+ {
+ $gettext_support_nonascii = 1;
+ }
+ else
+ {
+ # urge everybody to upgrade gettext
+ print STDERR "WARNING: This version of gettext does not support extracting non-ASCII\n".
+ " strings. That means you should install a version of gettext\n".
+ " that supports non-ASCII strings (such as GNU gettext >= 0.12),\n".
+ " or have to let non-ASCII strings untranslated. (If there is any)\n";
+ }
+
+ my $encoding = "ASCII";
+ my $forced_gettext_code;
+ my @temp_headers;
+ my $encoding_problem_is_reported = 0;
+
+ while (<INFILE>)
+ {
+ next if (/^#/ or /^\s*$/);
+
+ chomp;
+
+ my $gettext_code;
+
+ if (/^\[\s*encoding:\s*(.*)\s*\]/)
+ {
+ $forced_gettext_code=$1;
+ }
+ elsif (/\.($xml_support|$ini_support)$/ || /^\[/)
+ {
+ s/^\[.*]\s*//;
+ print OUTFILE "../$_.h\n";
+ push @temp_headers, "../$_.h";
+ $gettext_code = &TextFile_DetermineEncoding ("../$_.h") if ($gettext_support_nonascii and not defined $forced_gettext_code);
+ }
+ else
+ {
+ if ($SRCDIR eq ".") {
+ print OUTFILE "../$_\n";
+ } else {
+ print OUTFILE "$SRCDIR/../$_\n";
+ }
+ $gettext_code = &TextFile_DetermineEncoding ("../$_") if ($gettext_support_nonascii and not defined $forced_gettext_code);
+ }
+
+ next if (! $gettext_support_nonascii);
+
+ if (defined $forced_gettext_code)
+ {
+ $encoding=$forced_gettext_code;
+ }
+ elsif (defined $gettext_code and "$encoding" ne "$gettext_code")
+ {
+ if ($encoding eq "ASCII")
+ {
+ $encoding=$gettext_code;
+ }
+ elsif ($gettext_code ne "ASCII")
+ {
+ # Only report once because the message is quite long
+ if (! $encoding_problem_is_reported)
+ {
+ print STDERR "WARNING: You should use the same file encoding for all your project files,\n".
+ " but $PROGRAM thinks that most of the source files are in\n".
+ " $encoding encoding, while \"$_\" is (likely) in\n".
+ " $gettext_code encoding. If you are sure that all translatable strings\n".
+ " are in same encoding (say UTF-8), please \e[1m*prepend*\e[0m the following\n".
+ " line to POTFILES.in:\n\n".
+ " [encoding: UTF-8]\n\n".
+ " and make sure that configure.in/ac checks for $PACKAGE >= 0.27 .\n".
+ "(such warning message will only be reported once.)\n";
+ $encoding_problem_is_reported = 1;
+ }
+ }
+ }
+ }
+
+ close OUTFILE;
+ close INFILE;
+
+ unlink "$MODULE.pot";
+ my @xgettext_argument=("$XGETTEXT",
+ "--add-comments",
+ "--directory\=\.",
+ "--output\=$MODULE\.pot",
+ "--files-from\=\.\/POTFILES\.in\.temp");
+ my $XGETTEXT_KEYWORDS = &FindPOTKeywords;
+ push @xgettext_argument, $XGETTEXT_KEYWORDS;
+ push @xgettext_argument, "--from-code\=$encoding" if ($gettext_support_nonascii);
+ push @xgettext_argument, $XGETTEXT_ARGS if $XGETTEXT_ARGS;
+ my $xgettext_command = join ' ', @xgettext_argument;
+
+ # intercept xgettext error message
+ print "Running $xgettext_command\n" if $VERBOSE;
+ my $xgettext_error_msg = `$xgettext_command 2>\&1`;
+ my $command_failed = $?;
+
+ unlink "POTFILES.in.temp";
+
+ print "Removing generated header (.h) files..." if $VERBOSE;
+ unlink foreach (@temp_headers);
+ print "done.\n" if $VERBOSE;
+
+ if (! $command_failed)
+ {
+ if (! -e "$MODULE.pot")
+ {
+ print "None of the files in POTFILES.in contain strings marked for translation.\n" if $VERBOSE;
+ }
+ else
+ {
+ print "Wrote $MODULE.pot\n" if $VERBOSE;
+ }
+ }
+ else
+ {
+ if ($xgettext_error_msg =~ /--from-code/)
+ {
+ # replace non-ASCII error message with a more useful one.
+ print STDERR "ERROR: xgettext failed to generate PO template file because there is non-ASCII\n".
+ " string marked for translation. Please make sure that all strings marked\n".
+ " for translation are in uniform encoding (say UTF-8), then \e[1m*prepend*\e[0m the\n".
+ " following line to POTFILES.in and rerun $PROGRAM:\n\n".
+ " [encoding: UTF-8]\n\n";
+ }
+ else
+ {
+ print STDERR "$xgettext_error_msg";
+ if (-e "$MODULE.pot")
+ {
+ # is this possible?
+ print STDERR "ERROR: xgettext failed but still managed to generate PO template file.\n".
+ " Please consult error message above if there is any.\n";
+ }
+ else
+ {
+ print STDERR "ERROR: xgettext failed to generate PO template file. Please consult\n".
+ " error message above if there is any.\n";
+ }
+ }
+ exit (1);
+ }
+}
+
+sub POFile_Update
+{
+ -f "$MODULE.pot" or die "$PROGRAM: $MODULE.pot does not exist.\n";
+
+ my $MSGMERGE = $ENV{"MSGMERGE"} || "/opt/local/bin/msgmerge";
+ my ($lang, $outfile) = @_;
+
+ print "Merging $SRCDIR/$lang.po with $MODULE.pot..." if $VERBOSE;
+
+ my $infile = "$SRCDIR/$lang.po";
+ $outfile = "$SRCDIR/$lang.po" if ($outfile eq "");
+
+ # I think msgmerge won't overwrite old file if merge is not successful
+ system ("$MSGMERGE", "-o", $outfile, $infile, "$MODULE.pot");
+}
+
+sub Console_WriteError_NotExisting
+{
+ my ($file) = @_;
+
+ ## Report error if supplied language file is non-existing
+ print STDERR "$PROGRAM: $file does not exist!\n";
+ print STDERR "Try '$PROGRAM --help' for more information.\n";
+ exit;
+}
+
+sub GatherPOFiles
+{
+ my @po_files = glob ("./*.po");
+
+ @languages = map (&POFile_GetLanguage, @po_files);
+
+ foreach my $lang (@languages)
+ {
+ $po_files_by_lang{$lang} = shift (@po_files);
+ }
+}
+
+sub POFile_GetLanguage ($)
+{
+ s/^(.*\/)?(.+)\.po$/$2/;
+ return $_;
+}
+
+sub Console_Write_TranslationStatus
+{
+ my ($lang, $output_file) = @_;
+ my $MSGFMT = $ENV{"MSGFMT"} || "/opt/local/bin/msgfmt";
+
+ $output_file = "$SRCDIR/$lang.po" if ($output_file eq "");
+
+ system ("$MSGFMT", "-o", "/dev/null", "--statistics", $output_file);
+}
+
+sub Console_Write_CoverageReport
+{
+ my $MSGFMT = $ENV{"MSGFMT"} || "/opt/local/bin/msgfmt";
+
+ &GatherPOFiles;
+
+ foreach my $lang (@languages)
+ {
+ print "$lang: ";
+ &POFile_Update ($lang, "");
+ }
+
+ print "\n\n * Current translation support in $MODULE \n\n";
+
+ foreach my $lang (@languages)
+ {
+ print "$lang: ";
+ system ("$MSGFMT", "-o", "/dev/null", "--statistics", "$SRCDIR/$lang.po");
+ }
+}
+
+sub SubstituteVariable
+{
+ my ($str) = @_;
+
+ # always need to rewind file whenever it has been accessed
+ seek (CONF, 0, 0);
+
+ # cache each variable. varhash is global to we can add
+ # variables elsewhere.
+ while (<CONF>)
+ {
+ if (/^(\w+)=(.*)$/)
+ {
+ ($varhash{$1} = $2) =~ s/^["'](.*)["']$/$1/;
+ }
+ }
+
+ if ($str =~ /^(.*)\${?([A-Z_]+)}?(.*)$/)
+ {
+ my $rest = $3;
+ my $untouched = $1;
+ my $sub = $varhash{$2};
+
+ return SubstituteVariable ("$untouched$sub$rest");
+ }
+
+ # We're using Perl backticks ` and "echo -n" here in order to
+ # expand any shell escapes (such as backticks themselves) in every variable
+ return echo_n ($str);
+}
+
+sub CONF_Handle_Open
+{
+ my $base_dirname = getcwd();
+ $base_dirname =~ s at .*/@@;
+
+ my ($conf_in, $src_dir);
+
+ if ($base_dirname =~ /^po(-.+)?$/)
+ {
+ if (-f "Makevars")
+ {
+ my $makefile_source;
+
+ local (*IN);
+ open (IN, "<Makevars") || die "can't open Makevars: $!";
+
+ while (<IN>)
+ {
+ if (/^top_builddir[ \t]*=/)
+ {
+ $src_dir = $_;
+ $src_dir =~ s/^top_builddir[ \t]*=[ \t]*([^ \t\n\r]*)/$1/;
+
+ chomp $src_dir;
+ if (-f "$src_dir" . "/configure.ac") {
+ $conf_in = "$src_dir" . "/configure.ac" . "\n";
+ } else {
+ $conf_in = "$src_dir" . "/configure.in" . "\n";
+ }
+ last;
+ }
+ }
+ close IN;
+
+ $conf_in || die "Cannot find top_builddir in Makevars.";
+ }
+ elsif (-f "../configure.ac")
+ {
+ $conf_in = "../configure.ac";
+ }
+ elsif (-f "../configure.in")
+ {
+ $conf_in = "../configure.in";
+ }
+ else
+ {
+ my $makefile_source;
+
+ local (*IN);
+ open (IN, "<Makefile") || return;
+
+ while (<IN>)
+ {
+ if (/^top_srcdir[ \t]*=/)
+ {
+ $src_dir = $_;
+ $src_dir =~ s/^top_srcdir[ \t]*=[ \t]*([^ \t\n\r]*)/$1/;
+
+ chomp $src_dir;
+ $conf_in = "$src_dir" . "/configure.in" . "\n";
+
+ last;
+ }
+ }
+ close IN;
+
+ $conf_in || die "Cannot find top_srcdir in Makefile.";
+ }
+
+ open (CONF, "<$conf_in");
+ }
+ else
+ {
+ print STDERR "$PROGRAM: Unable to proceed.\n" .
+ "Make sure to run this script inside the po directory.\n";
+ exit;
+ }
+}
+
+sub FindPackageName
+{
+ my $version;
+ my $domain = &FindMakevarsDomain;
+ my $name = $domain || "untitled";
+
+ &CONF_Handle_Open;
+
+ my $conf_source; {
+ local (*IN);
+ open (IN, "<&CONF") || return $name;
+ seek (IN, 0, 0);
+ local $/; # slurp mode
+ $conf_source = <IN>;
+ close IN;
+ }
+
+ # priority for getting package name:
+ # 1. GETTEXT_PACKAGE
+ # 2. first argument of AC_INIT (with >= 2 arguments)
+ # 3. first argument of AM_INIT_AUTOMAKE (with >= 2 argument)
+
+ # /^AM_INIT_AUTOMAKE\([\s\[]*([^,\)\s\]]+)/m
+ # the \s makes this not work, why?
+ if ($conf_source =~ /^AM_INIT_AUTOMAKE\(([^,\)]+),([^,\)]+)/m)
+ {
+ ($name, $version) = ($1, $2);
+ $name =~ s/[\[\]\s]//g;
+ $version =~ s/[\[\]\s]//g;
+ $varhash{"AC_PACKAGE_NAME"} = $name;
+ $varhash{"PACKAGE"} = $name;
+ $varhash{"AC_PACKAGE_VERSION"} = $version;
+ $varhash{"VERSION"} = $version;
+ }
+
+ if ($conf_source =~ /^AC_INIT\(([^,\)]+),([^,\)]+)/m)
+ {
+ ($name, $version) = ($1, $2);
+ $name =~ s/[\[\]\s]//g;
+ $version =~ s/[\[\]\s]//g;
+ $varhash{"AC_PACKAGE_NAME"} = $name;
+ $varhash{"PACKAGE"} = $name;
+ $varhash{"AC_PACKAGE_VERSION"} = $version;
+ $varhash{"VERSION"} = $version;
+ }
+
+ # \s makes this not work, why?
+ $name = $1 if $conf_source =~ /^GETTEXT_PACKAGE=\[?([^\n\]]+)/m;
+
+ # prepend '$' to auto* internal variables, usually they are
+ # used in configure.in/ac without the '$'
+ $name =~ s/AC_/\$AC_/g;
+ $name =~ s/\$\$/\$/g;
+
+ $name = $domain if $domain;
+
+ $name = SubstituteVariable ($name);
+ $name =~ s/^["'](.*)["']$/$1/;
+
+ return $name if $name;
+}
+
+
+sub FindPOTKeywords
+{
+
+ my $keywords = "--keyword\=\_ --keyword\=N\_ --keyword\=U\_ --keyword\=Q\_";
+ my $varname = "XGETTEXT_OPTIONS";
+ my $make_source; {
+ local (*IN);
+ open (IN, "<Makevars") || (open(IN, "<Makefile.in.in") && ($varname = "XGETTEXT_KEYWORDS")) || return $keywords;
+ seek (IN, 0, 0);
+ local $/; # slurp mode
+ $make_source = <IN>;
+ close IN;
+ }
+
+ $keywords = $1 if $make_source =~ /^$varname[ ]*=\[?([^\n\]]+)/m;
+
+ return $keywords;
+}
+
+sub FindMakevarsDomain
+{
+
+ my $domain = "";
+ my $makevars_source; {
+ local (*IN);
+ open (IN, "<Makevars") || return $domain;
+ seek (IN, 0, 0);
+ local $/; # slurp mode
+ $makevars_source = <IN>;
+ close IN;
+ }
+
+ $domain = $1 if $makevars_source =~ /^DOMAIN[ ]*=\[?([^\n\]\$]+)/m;
+ $domain =~ s/^\s+//;
+ $domain =~ s/\s+$//;
+
+ return $domain;
+}
Added: desktop/trunk/thunar/branches/upstream/current/ltmain.sh
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/ltmain.sh 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/ltmain.sh 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,6422 @@
+# ltmain.sh - Provide generalized library-building support services.
+# NOTE: Changing this file will not affect anything until you rerun configure.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004
+# Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 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 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+basename="s,^.*/,,g"
+
+# 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 $basename`
+modename="$progname"
+
+# Global variables:
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION=1.5.6
+TIMESTAMP=" (1.1220.2.95 2004/04/11 05:50:42)"
+
+
+# Check that we have a working $echo.
+if test "X$1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X$1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+ # Yippee, $echo works!
+ :
+else
+ # Restart under the correct shell, and then maybe $echo will work.
+ exec $SHELL "$progpath" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<EOF
+$*
+EOF
+ exit $EXIT_SUCCESS
+fi
+
+default_mode=
+help="Try \`$progname --help' for more information."
+magic="%%%MAGIC variable%%%"
+mkdir="mkdir"
+mv="mv -f"
+rm="rm -f"
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed="${SED}"' -e 1s/^X//'
+sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
+# test EBCDIC or ASCII
+case `echo A|tr A '\301'` in
+ A) # EBCDIC based system
+ SP2NL="tr '\100' '\n'"
+ NL2SP="tr '\r\n' '\100\100'"
+ ;;
+ *) # Assume ASCII based system
+ SP2NL="tr '\040' '\012'"
+ NL2SP="tr '\015\012' '\040\040'"
+ ;;
+esac
+
+# NLS nuisances.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+# We save the old values to restore during execute mode.
+if test "${LC_ALL+set}" = set; then
+ save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
+fi
+if test "${LANG+set}" = set; then
+ save_LANG="$LANG"; LANG=C; export LANG
+fi
+
+# Make sure IFS has a sensible default
+: ${IFS="
+"}
+
+if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+ $echo "$modename: not configured to build any kind of library" 1>&2
+ $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
+ exit $EXIT_FAILURE
+fi
+
+# Global variables.
+mode=$default_mode
+nonopt=
+prev=
+prevopt=
+run=
+show="$echo"
+show_help=
+execute_dlfiles=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+
+#####################################
+# Shell function definitions:
+# This seems to be the best place for them
+
+# 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.
+func_win32_libid () {
+ 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
+ if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
+ $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
+ win32_nmres=`eval $NM -f posix -A $1 | \
+ sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'`
+ if test "X$win32_nmres" = "Ximport" ; then
+ win32_libid_type="x86 archive import"
+ else
+ win32_libid_type="x86 archive static"
+ fi
+ 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_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 () {
+ if test -n "$available_tags" && test -z "$tagname"; then
+ CC_quoted=
+ for arg in $CC; do
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ CC_quoted="$CC_quoted $arg"
+ done
+ 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 "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;;
+ # 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.
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ CC_quoted="$CC_quoted $arg"
+ done
+ case "$@ " in
+ " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*)
+ # 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
+ $echo "$modename: unable to infer tagged configuration"
+ $echo "$modename: specify a tag with \`--tag'" 1>&2
+ exit $EXIT_FAILURE
+# else
+# $echo "$modename: using $tagname tagged configuration"
+ fi
+ ;;
+ esac
+ fi
+}
+# End of Shell function definitions
+#####################################
+
+# Darwin sucks
+eval std_shrext=\"$shrext_cmds\"
+
+# Parse our command line options once, thoroughly.
+while test "$#" -gt 0
+do
+ arg="$1"
+ shift
+
+ case $arg in
+ -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
+ *) optarg= ;;
+ esac
+
+ # If the previous option needs an argument, assign it.
+ if test -n "$prev"; then
+ case $prev in
+ execute_dlfiles)
+ execute_dlfiles="$execute_dlfiles $arg"
+ ;;
+ tag)
+ tagname="$arg"
+ preserve_args="${preserve_args}=$arg"
+
+ # Check whether tagname contains only valid characters
+ case $tagname in
+ *[!-_A-Za-z0-9,/]*)
+ $echo "$progname: invalid tag name: $tagname" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ case $tagname in
+ CC)
+ # Don't test for the "default" C tag, as we know, it's there, but
+ # not specially marked.
+ ;;
+ *)
+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then
+ taglist="$taglist $tagname"
+ # Evaluate the configuration.
+ eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`"
+ else
+ $echo "$progname: ignoring unknown tag $tagname" 1>&2
+ fi
+ ;;
+ esac
+ ;;
+ *)
+ eval "$prev=\$arg"
+ ;;
+ esac
+
+ prev=
+ prevopt=
+ continue
+ fi
+
+ # Have we seen a non-optional argument yet?
+ case $arg in
+ --help)
+ show_help=yes
+ ;;
+
+ --version)
+ $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
+ $echo
+ $echo "Copyright (C) 2003 Free Software Foundation, Inc."
+ $echo "This is free software; see the source for copying conditions. There is NO"
+ $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+ exit $EXIT_SUCCESS
+ ;;
+
+ --config)
+ ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath
+ # Now print the configurations for the tags.
+ for tagname in $taglist; do
+ ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
+ done
+ exit $EXIT_SUCCESS
+ ;;
+
+ --debug)
+ $echo "$progname: enabling shell trace mode"
+ set -x
+ preserve_args="$preserve_args $arg"
+ ;;
+
+ --dry-run | -n)
+ run=:
+ ;;
+
+ --features)
+ $echo "host: $host"
+ if test "$build_libtool_libs" = yes; then
+ $echo "enable shared libraries"
+ else
+ $echo "disable shared libraries"
+ fi
+ if test "$build_old_libs" = yes; then
+ $echo "enable static libraries"
+ else
+ $echo "disable static libraries"
+ fi
+ exit $EXIT_SUCCESS
+ ;;
+
+ --finish) mode="finish" ;;
+
+ --mode) prevopt="--mode" prev=mode ;;
+ --mode=*) mode="$optarg" ;;
+
+ --preserve-dup-deps) duplicate_deps="yes" ;;
+
+ --quiet | --silent)
+ show=:
+ preserve_args="$preserve_args $arg"
+ ;;
+
+ --tag) prevopt="--tag" prev=tag ;;
+ --tag=*)
+ set tag "$optarg" ${1+"$@"}
+ shift
+ prev=tag
+ preserve_args="$preserve_args --tag"
+ ;;
+
+ -dlopen)
+ prevopt="-dlopen"
+ prev=execute_dlfiles
+ ;;
+
+ -*)
+ $echo "$modename: unrecognized option \`$arg'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+
+ *)
+ nonopt="$arg"
+ break
+ ;;
+ esac
+done
+
+if test -n "$prevopt"; then
+ $echo "$modename: option \`$prevopt' requires an argument" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+fi
+
+# 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=
+
+if test -z "$show_help"; then
+
+ # Infer the operation mode.
+ if test -z "$mode"; then
+ $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
+ $echo "*** Future versions of Libtool will require -mode=MODE be specified." 1>&2
+ case $nonopt in
+ *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
+ mode=link
+ for arg
+ do
+ case $arg in
+ -c)
+ mode=compile
+ break
+ ;;
+ esac
+ done
+ ;;
+ *db | *dbx | *strace | *truss)
+ mode=execute
+ ;;
+ *install*|cp|mv)
+ mode=install
+ ;;
+ *rm)
+ mode=uninstall
+ ;;
+ *)
+ # If we have no mode, but dlfiles were specified, then do execute mode.
+ test -n "$execute_dlfiles" && mode=execute
+
+ # Just use the default operation mode.
+ if test -z "$mode"; then
+ if test -n "$nonopt"; then
+ $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
+ else
+ $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
+ fi
+ fi
+ ;;
+ esac
+ fi
+
+ # Only execute mode is allowed to have -dlopen flags.
+ if test -n "$execute_dlfiles" && test "$mode" != execute; then
+ $echo "$modename: unrecognized option \`-dlopen'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Change the help message to a mode-specific one.
+ generic_help="$help"
+ help="Try \`$modename --help --mode=$mode' for more information."
+
+ # These modes are in order of execution frequency so that they run quickly.
+ case $mode in
+ # libtool compile mode
+ compile)
+ modename="$modename: compile"
+ # 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=
+
+ 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)
+ if test -n "$libobj" ; then
+ $echo "$modename: you cannot specify \`-o' more than once" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ arg_mode=target
+ continue
+ ;;
+
+ -static | -prefer-pic | -prefer-non-pic)
+ later="$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,*)
+ args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
+ lastarg=
+ save_ifs="$IFS"; IFS=','
+ for arg in $args; do
+ IFS="$save_ifs"
+
+ # Double-quote args containing other shell metacharacters.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, so we specify it separately.
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ lastarg="$lastarg $arg"
+ done
+ IFS="$save_ifs"
+ lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
+
+ # Add the arguments to base_compile.
+ base_compile="$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.
+ lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
+
+ case $lastarg in
+ # Double-quote args containing other shell metacharacters.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, so we specify it separately.
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ lastarg="\"$lastarg\""
+ ;;
+ esac
+
+ base_compile="$base_compile $lastarg"
+ done # for arg
+
+ case $arg_mode in
+ arg)
+ $echo "$modename: you must specify an argument for -Xcompile"
+ exit $EXIT_FAILURE
+ ;;
+ target)
+ $echo "$modename: you must specify a target with \`-o'" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ *)
+ # Get the name of the library object.
+ [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
+ ;;
+ esac
+
+ # Recognize several different file suffixes.
+ # If the user specifies -o file.o, it is replaced with file.lo
+ xform='[cCFSifmso]'
+ case $libobj in
+ *.ada) xform=ada ;;
+ *.adb) xform=adb ;;
+ *.ads) xform=ads ;;
+ *.asm) xform=asm ;;
+ *.c++) xform=c++ ;;
+ *.cc) xform=cc ;;
+ *.ii) xform=ii ;;
+ *.class) xform=class ;;
+ *.cpp) xform=cpp ;;
+ *.cxx) xform=cxx ;;
+ *.f90) xform=f90 ;;
+ *.for) xform=for ;;
+ *.java) xform=java ;;
+ esac
+
+ libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
+
+ case $libobj in
+ *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
+ *)
+ $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ func_infer_tag $base_compile
+
+ for arg in $later; do
+ case $arg in
+ -static)
+ build_old_libs=yes
+ continue
+ ;;
+
+ -prefer-pic)
+ pic_mode=yes
+ continue
+ ;;
+
+ -prefer-non-pic)
+ pic_mode=no
+ continue
+ ;;
+ esac
+ done
+
+ objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+ xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$obj"; then
+ xdir=
+ else
+ xdir=$xdir/
+ fi
+ lobj=${xdir}$objdir/$objname
+
+ if test -z "$base_compile"; then
+ $echo "$modename: you must specify a compilation command" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Delete any leftover library objects.
+ if test "$build_old_libs" = yes; then
+ removelist="$obj $lobj $libobj ${libobj}T"
+ else
+ removelist="$lobj $libobj ${libobj}T"
+ fi
+
+ $run $rm $removelist
+ trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+
+ # On Cygwin there's no "real" PIC flag so we must build both object types
+ case $host_os in
+ cygwin* | mingw* | pw32* | os2*)
+ pic_mode=default
+ ;;
+ esac
+ if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; 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 "$compiler_c_o" = no; then
+ output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
+ lockfile="$output_obj.lock"
+ removelist="$removelist $output_obj $lockfile"
+ trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+ 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 "$need_locks" = yes; then
+ until $run ln "$progpath" "$lockfile" 2>/dev/null; do
+ $show "Waiting for $lockfile to be removed"
+ sleep 2
+ done
+ elif test "$need_locks" = warn; 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."
+
+ $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+ $echo $srcfile > "$lockfile"
+ fi
+
+ if test -n "$fix_srcfile_path"; then
+ eval srcfile=\"$fix_srcfile_path\"
+ fi
+
+ $run $rm "$libobj" "${libobj}T"
+
+ # Create a libtool object file (analogous to a ".la" file),
+ # but don't create it if we're doing a dry run.
+ test -z "$run" && cat > ${libobj}T <<EOF
+# $libobj - a libtool object file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+EOF
+
+ # Only build a PIC object if we are building libtool libraries.
+ if test "$build_libtool_libs" = yes; then
+ # Without this assignment, base_compile gets emptied.
+ fbsd_hideous_sh_bug=$base_compile
+
+ if test "$pic_mode" != no; then
+ command="$base_compile $srcfile $pic_flag"
+ else
+ # Don't build PIC code
+ command="$base_compile $srcfile"
+ fi
+
+ if test ! -d "${xdir}$objdir"; then
+ $show "$mkdir ${xdir}$objdir"
+ $run $mkdir ${xdir}$objdir
+ status=$?
+ if test "$status" -ne 0 && test ! -d "${xdir}$objdir"; then
+ exit $status
+ fi
+ fi
+
+ if test -z "$output_obj"; then
+ # Place PIC objects in $objdir
+ command="$command -o $lobj"
+ fi
+
+ $run $rm "$lobj" "$output_obj"
+
+ $show "$command"
+ if $run eval "$command"; then :
+ else
+ test -n "$output_obj" && $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ if test "$need_locks" = warn &&
+ 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."
+
+ $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
+ $show "$mv $output_obj $lobj"
+ if $run $mv $output_obj $lobj; then :
+ else
+ error=$?
+ $run $rm $removelist
+ exit $error
+ fi
+ fi
+
+ # Append the name of the PIC object to the libtool object file.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object='$objdir/$objname'
+
+EOF
+
+ # Allow error messages only from the first compilation.
+ if test "$suppress_opt" = yes; then
+ suppress_output=' >/dev/null 2>&1'
+ fi
+ else
+ # No PIC object so indicate it doesn't exist in the libtool
+ # object file.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object=none
+
+EOF
+ fi
+
+ # Only build a position-dependent object if we build old libraries.
+ if test "$build_old_libs" = yes; then
+ if test "$pic_mode" != yes; then
+ # Don't build PIC code
+ command="$base_compile $srcfile"
+ else
+ command="$base_compile $srcfile $pic_flag"
+ fi
+ if test "$compiler_c_o" = yes; then
+ command="$command -o $obj"
+ fi
+
+ # Suppress compiler output if we already did a PIC compilation.
+ command="$command$suppress_output"
+ $run $rm "$obj" "$output_obj"
+ $show "$command"
+ if $run eval "$command"; then :
+ else
+ $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ if test "$need_locks" = warn &&
+ 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."
+
+ $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
+ $show "$mv $output_obj $obj"
+ if $run $mv $output_obj $obj; then :
+ else
+ error=$?
+ $run $rm $removelist
+ exit $error
+ fi
+ fi
+
+ # Append the name of the non-PIC object the libtool object file.
+ # Only append if the libtool object file exists.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object='$objname'
+
+EOF
+ else
+ # Append the name of the non-PIC object the libtool object file.
+ # Only append if the libtool object file exists.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object=none
+
+EOF
+ fi
+
+ $run $mv "${libobj}T" "${libobj}"
+
+ # Unlock the critical section if it was locked
+ if test "$need_locks" != no; then
+ $run $rm "$lockfile"
+ fi
+
+ exit $EXIT_SUCCESS
+ ;;
+
+ # libtool link mode
+ link | relink)
+ modename="$modename: link"
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ # It is impossible to link a dll without this setting, and
+ # we shouldn't force the makefile maintainer to figure out
+ # which 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 which 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=
+
+ avoid_version=no
+ dlfiles=
+ dlprefiles=
+ dlself=no
+ export_dynamic=no
+ export_symbols=
+ export_symbols_regex=
+ generated=
+ libobjs=
+ ltlibs=
+ module=no
+ no_install=no
+ objs=
+ non_pic_objects=
+ precious_files_regex=
+ prefer_static_libs=no
+ preload=no
+ prev=
+ prevarg=
+ release=
+ rpath=
+ xrpath=
+ perm_rpath=
+ temp_rpath=
+ thread_safe=no
+ vinfo=
+ vinfo_number=no
+
+ func_infer_tag $base_compile
+
+ # We need to know -static, to get the right output filenames.
+ for arg
+ do
+ case $arg in
+ -all-static | -static)
+ if test "X$arg" = "X-all-static"; then
+ if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+ $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
+ fi
+ if test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ else
+ if test -z "$pic_flag" && test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ fi
+ build_libtool_libs=no
+ build_old_libs=yes
+ prefer_static_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
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
+ ;;
+ *) qarg=$arg ;;
+ esac
+ libtool_args="$libtool_args $qarg"
+
+ # If the previous option needs an argument, assign it.
+ if test -n "$prev"; then
+ case $prev in
+ output)
+ compile_command="$compile_command @OUTPUT@"
+ finalize_command="$finalize_command @OUTPUT@"
+ ;;
+ esac
+
+ case $prev in
+ dlfiles|dlprefiles)
+ if test "$preload" = no; then
+ # Add the symbol object into the linking commands.
+ compile_command="$compile_command @SYMFILE@"
+ finalize_command="$finalize_command @SYMFILE@"
+ preload=yes
+ fi
+ case $arg in
+ *.la | *.lo) ;; # We handle these cases below.
+ force)
+ if test "$dlself" = no; then
+ dlself=needless
+ export_dynamic=yes
+ fi
+ prev=
+ continue
+ ;;
+ self)
+ if test "$prev" = dlprefiles; then
+ dlself=yes
+ elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+ dlself=yes
+ else
+ dlself=needless
+ export_dynamic=yes
+ fi
+ prev=
+ continue
+ ;;
+ *)
+ if test "$prev" = dlfiles; then
+ dlfiles="$dlfiles $arg"
+ else
+ dlprefiles="$dlprefiles $arg"
+ fi
+ prev=
+ continue
+ ;;
+ esac
+ ;;
+ expsyms)
+ export_symbols="$arg"
+ if test ! -f "$arg"; then
+ $echo "$modename: symbol file \`$arg' does not exist"
+ exit $EXIT_FAILURE
+ fi
+ prev=
+ continue
+ ;;
+ expsyms_regex)
+ export_symbols_regex="$arg"
+ prev=
+ continue
+ ;;
+ inst_prefix)
+ inst_prefix_dir="$arg"
+ prev=
+ continue
+ ;;
+ precious_regex)
+ precious_files_regex="$arg"
+ prev=
+ continue
+ ;;
+ release)
+ release="-$arg"
+ prev=
+ continue
+ ;;
+ objectlist)
+ if test -f "$arg"; then
+ save_arg=$arg
+ moreargs=
+ for fil in `cat $save_arg`
+ do
+# moreargs="$moreargs $fil"
+ arg=$fil
+ # A libtool-controlled object.
+
+ # Check to see that this really is a libtool object.
+ if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ pic_object=
+ non_pic_object=
+
+ # Read the .lo file
+ # If there is no directory component, then add one.
+ case $arg in
+ */* | *\\*) . $arg ;;
+ *) . ./$arg ;;
+ esac
+
+ if test -z "$pic_object" || \
+ test -z "$non_pic_object" ||
+ test "$pic_object" = none && \
+ test "$non_pic_object" = none; then
+ $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Extract subdirectory from the argument.
+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$arg"; then
+ xdir=
+ else
+ xdir="$xdir/"
+ fi
+
+ if test "$pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ pic_object="$xdir$pic_object"
+
+ if test "$prev" = dlfiles; then
+ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+ dlfiles="$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 "$prev" = dlprefiles; then
+ # Preload the old-style object.
+ dlprefiles="$dlprefiles $pic_object"
+ prev=
+ fi
+
+ # A PIC object.
+ libobjs="$libobjs $pic_object"
+ arg="$pic_object"
+ fi
+
+ # Non-PIC object.
+ if test "$non_pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ non_pic_object="$xdir$non_pic_object"
+
+ # A standard non-PIC object
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ if test -z "$pic_object" || test "$pic_object" = none ; then
+ arg="$non_pic_object"
+ fi
+ fi
+ else
+ # Only an error if not doing a dry-run.
+ if test -z "$run"; then
+ $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+ exit $EXIT_FAILURE
+ else
+ # Dry-run case.
+
+ # Extract subdirectory from the argument.
+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$arg"; then
+ xdir=
+ else
+ xdir="$xdir/"
+ fi
+
+ pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+ non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+ libobjs="$libobjs $pic_object"
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ fi
+ fi
+ done
+ else
+ $echo "$modename: link input file \`$save_arg' does not exist"
+ exit $EXIT_FAILURE
+ fi
+ arg=$save_arg
+ prev=
+ continue
+ ;;
+ rpath | xrpath)
+ # We need an absolute path.
+ case $arg in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ $echo "$modename: only absolute run-paths are allowed" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+ if test "$prev" = rpath; then
+ case "$rpath " in
+ *" $arg "*) ;;
+ *) rpath="$rpath $arg" ;;
+ esac
+ else
+ case "$xrpath " in
+ *" $arg "*) ;;
+ *) xrpath="$xrpath $arg" ;;
+ esac
+ fi
+ prev=
+ continue
+ ;;
+ xcompiler)
+ compiler_flags="$compiler_flags $qarg"
+ prev=
+ compile_command="$compile_command $qarg"
+ finalize_command="$finalize_command $qarg"
+ continue
+ ;;
+ xlinker)
+ linker_flags="$linker_flags $qarg"
+ compiler_flags="$compiler_flags $wl$qarg"
+ prev=
+ compile_command="$compile_command $wl$qarg"
+ finalize_command="$finalize_command $wl$qarg"
+ continue
+ ;;
+ xcclinker)
+ linker_flags="$linker_flags $qarg"
+ compiler_flags="$compiler_flags $qarg"
+ prev=
+ compile_command="$compile_command $qarg"
+ finalize_command="$finalize_command $qarg"
+ continue
+ ;;
+ shrext)
+ shrext_cmds="$arg"
+ prev=
+ 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
+ compile_command="$compile_command $link_static_flag"
+ finalize_command="$finalize_command $link_static_flag"
+ fi
+ continue
+ ;;
+
+ -allow-undefined)
+ # FIXME: remove this flag sometime in the future.
+ $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
+ continue
+ ;;
+
+ -avoid-version)
+ avoid_version=yes
+ 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
+ $echo "$modename: more than one -exported-symbols argument is not allowed"
+ exit $EXIT_FAILURE
+ fi
+ if test "X$arg" = "X-export-symbols"; then
+ prev=expsyms
+ else
+ prev=expsyms_regex
+ fi
+ 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*)
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ ;;
+ esac
+ continue
+ ;;
+
+ -L*)
+ dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ absdir=`cd "$dir" && pwd`
+ if test -z "$absdir"; then
+ $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ dir="$absdir"
+ ;;
+ esac
+ case "$deplibs " in
+ *" -L$dir "*) ;;
+ *)
+ deplibs="$deplibs -L$dir"
+ lib_search_path="$lib_search_path $dir"
+ ;;
+ esac
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ case :$dllsearchpath: in
+ *":$dir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$dir";;
+ esac
+ ;;
+ esac
+ continue
+ ;;
+
+ -l*)
+ if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+ case $host in
+ *-*-cygwin* | *-*-pw32* | *-*-beos*)
+ # These systems don't actually have a C or math library (as such)
+ continue
+ ;;
+ *-*-mingw* | *-*-os2*)
+ # These systems don't actually have a C library (as such)
+ test "X$arg" = "X-lc" && continue
+ ;;
+ *-*-openbsd* | *-*-freebsd*)
+ # Do not include libc due to us having libc/libc_r.
+ test "X$arg" = "X-lc" && continue
+ ;;
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # Rhapsody C and math libraries are in the System framework
+ deplibs="$deplibs -framework System"
+ continue
+ esac
+ elif test "X$arg" = "X-lc_r"; then
+ case $host in
+ *-*-openbsd* | *-*-freebsd*)
+ # Do not include libc_r directly, use -pthread flag.
+ continue
+ ;;
+ esac
+ fi
+ deplibs="$deplibs $arg"
+ continue
+ ;;
+
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+ deplibs="$deplibs $arg"
+ continue
+ ;;
+
+ -module)
+ module=yes
+ continue
+ ;;
+
+ # gcc -m* arguments should be passed to the linker via $compiler_flags
+ # in order to pass architecture information to the linker
+ # (e.g. 32 vs 64-bit). This may also be accomplished via -Wl,-mfoo
+ # but this is not reliable with gcc because gcc may use -mfoo to
+ # select a different linker, different libraries, etc, while
+ # -Wl,-mfoo simply passes -mfoo to the linker.
+ -m*)
+ # Unknown arguments in both finalize_command and compile_command need
+ # to be aesthetically quoted because they are evaled later.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ if test "$with_gcc" = "yes" ; then
+ compiler_flags="$compiler_flags $arg"
+ fi
+ continue
+ ;;
+
+ -shrext)
+ prev=shrext
+ continue
+ ;;
+
+ -no-fast-install)
+ fast_install=no
+ continue
+ ;;
+
+ -no-install)
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ # The PATH hackery in wrapper scripts is required on Windows
+ # in order for the loader to find any dlls it needs.
+ $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
+ $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
+ fast_install=no
+ ;;
+ *) no_install=yes ;;
+ esac
+ continue
+ ;;
+
+ -no-undefined)
+ allow_undefined=no
+ continue
+ ;;
+
+ -objectlist)
+ prev=objectlist
+ continue
+ ;;
+
+ -o) prev=output ;;
+
+ -precious-files-regex)
+ prev=precious_regex
+ continue
+ ;;
+
+ -release)
+ prev=release
+ continue
+ ;;
+
+ -rpath)
+ prev=rpath
+ continue
+ ;;
+
+ -R)
+ prev=xrpath
+ continue
+ ;;
+
+ -R*)
+ dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ $echo "$modename: only absolute run-paths are allowed" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+ case "$xrpath " in
+ *" $dir "*) ;;
+ *) xrpath="$xrpath $dir" ;;
+ esac
+ continue
+ ;;
+
+ -static)
+ # 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
+ ;;
+
+ -Wc,*)
+ args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
+ arg=
+ save_ifs="$IFS"; IFS=','
+ for flag in $args; do
+ IFS="$save_ifs"
+ case $flag in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ flag="\"$flag\""
+ ;;
+ esac
+ arg="$arg $wl$flag"
+ compiler_flags="$compiler_flags $flag"
+ done
+ IFS="$save_ifs"
+ arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+ ;;
+
+ -Wl,*)
+ args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
+ arg=
+ save_ifs="$IFS"; IFS=','
+ for flag in $args; do
+ IFS="$save_ifs"
+ case $flag in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ flag="\"$flag\""
+ ;;
+ esac
+ arg="$arg $wl$flag"
+ compiler_flags="$compiler_flags $wl$flag"
+ linker_flags="$linker_flags $flag"
+ done
+ IFS="$save_ifs"
+ arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+ ;;
+
+ -Xcompiler)
+ prev=xcompiler
+ continue
+ ;;
+
+ -Xlinker)
+ prev=xlinker
+ continue
+ ;;
+
+ -XCClinker)
+ prev=xcclinker
+ continue
+ ;;
+
+ # Some other compiler flag.
+ -* | +*)
+ # Unknown arguments in both finalize_command and compile_command need
+ # to be aesthetically quoted because they are evaled later.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ ;;
+
+ *.$objext)
+ # A standard object.
+ objs="$objs $arg"
+ ;;
+
+ *.lo)
+ # A libtool-controlled object.
+
+ # Check to see that this really is a libtool object.
+ if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ pic_object=
+ non_pic_object=
+
+ # Read the .lo file
+ # If there is no directory component, then add one.
+ case $arg in
+ */* | *\\*) . $arg ;;
+ *) . ./$arg ;;
+ esac
+
+ if test -z "$pic_object" || \
+ test -z "$non_pic_object" ||
+ test "$pic_object" = none && \
+ test "$non_pic_object" = none; then
+ $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Extract subdirectory from the argument.
+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$arg"; then
+ xdir=
+ else
+ xdir="$xdir/"
+ fi
+
+ if test "$pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ pic_object="$xdir$pic_object"
+
+ if test "$prev" = dlfiles; then
+ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+ dlfiles="$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 "$prev" = dlprefiles; then
+ # Preload the old-style object.
+ dlprefiles="$dlprefiles $pic_object"
+ prev=
+ fi
+
+ # A PIC object.
+ libobjs="$libobjs $pic_object"
+ arg="$pic_object"
+ fi
+
+ # Non-PIC object.
+ if test "$non_pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ non_pic_object="$xdir$non_pic_object"
+
+ # A standard non-PIC object
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ if test -z "$pic_object" || test "$pic_object" = none ; then
+ arg="$non_pic_object"
+ fi
+ fi
+ else
+ # Only an error if not doing a dry-run.
+ if test -z "$run"; then
+ $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+ exit $EXIT_FAILURE
+ else
+ # Dry-run case.
+
+ # Extract subdirectory from the argument.
+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$arg"; then
+ xdir=
+ else
+ xdir="$xdir/"
+ fi
+
+ pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+ non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+ libobjs="$libobjs $pic_object"
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ fi
+ fi
+ ;;
+
+ *.$libext)
+ # An archive.
+ deplibs="$deplibs $arg"
+ old_deplibs="$old_deplibs $arg"
+ continue
+ ;;
+
+ *.la)
+ # A libtool-controlled library.
+
+ if test "$prev" = dlfiles; then
+ # This library was specified with -dlopen.
+ dlfiles="$dlfiles $arg"
+ prev=
+ elif test "$prev" = dlprefiles; then
+ # The library was specified with -dlpreopen.
+ dlprefiles="$dlprefiles $arg"
+ prev=
+ else
+ deplibs="$deplibs $arg"
+ 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.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ ;;
+ esac # arg
+
+ # Now actually substitute the argument into the commands.
+ if test -n "$arg"; then
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ fi
+ done # argument parsing loop
+
+ if test -n "$prev"; then
+ $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+ eval arg=\"$export_dynamic_flag_spec\"
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ fi
+
+ oldlibs=
+ # calculate the name of the file, without its directory
+ outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
+ libobjs_save="$libobjs"
+
+ if test -n "$shlibpath_var"; then
+ # get the directories listed in $shlibpath_var
+ eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'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\"
+
+ output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$output_objdir" = "X$output"; then
+ output_objdir="$objdir"
+ else
+ output_objdir="$output_objdir/$objdir"
+ fi
+ # Create the object directory.
+ if test ! -d "$output_objdir"; then
+ $show "$mkdir $output_objdir"
+ $run $mkdir $output_objdir
+ status=$?
+ if test "$status" -ne 0 && test ! -d "$output_objdir"; then
+ exit $status
+ fi
+ fi
+
+ # Determine the type of output
+ case $output in
+ "")
+ $echo "$modename: you must specify an output file" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ *.$libext) linkmode=oldlib ;;
+ *.lo | *.$objext) linkmode=obj ;;
+ *.la) linkmode=lib ;;
+ *) linkmode=prog ;; # Anything else should be a program.
+ esac
+
+ case $host in
+ *cygwin* | *mingw* | *pw32*)
+ # don't eliminate duplications in $postdeps and $predeps
+ duplicate_compiler_generated_deps=yes
+ ;;
+ *)
+ duplicate_compiler_generated_deps=$duplicate_deps
+ ;;
+ 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 test "X$duplicate_deps" = "Xyes" ; then
+ case "$libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ libs="$libs $deplib"
+ done
+
+ if test "$linkmode" = lib; 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 test "X$duplicate_compiler_generated_deps" = "Xyes" ; then
+ for pre_post_dep in $predeps $postdeps; do
+ case "$pre_post_deps " in
+ *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
+ esac
+ pre_post_deps="$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 link"
+ for file in $dlfiles $dlprefiles; do
+ case $file in
+ *.la) ;;
+ *)
+ $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+ done
+ ;;
+ prog)
+ compile_deplibs=
+ finalize_deplibs=
+ alldeplibs=no
+ newdlfiles=
+ newdlprefiles=
+ passes="conv scan dlopen dlpreopen link"
+ ;;
+ *) passes="conv"
+ ;;
+ esac
+ for pass in $passes; do
+ if test "$linkmode,$pass" = "lib,link" ||
+ test "$linkmode,$pass" = "prog,scan"; then
+ libs="$deplibs"
+ deplibs=
+ fi
+ if test "$linkmode" = prog; then
+ case $pass in
+ dlopen) libs="$dlfiles" ;;
+ dlpreopen) libs="$dlprefiles" ;;
+ link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+ esac
+ fi
+ if test "$pass" = dlopen; then
+ # Collect dlpreopened libraries
+ save_deplibs="$deplibs"
+ deplibs=
+ fi
+ for deplib in $libs; do
+ lib=
+ found=no
+ case $deplib in
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ fi
+ continue
+ ;;
+ -l*)
+ if test "$linkmode" != lib && test "$linkmode" != prog; then
+ $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
+ continue
+ fi
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ continue
+ fi
+ name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
+ for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; 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 "$search_ext" = ".la"; then
+ found=yes
+ else
+ found=no
+ fi
+ break 2
+ fi
+ done
+ done
+ if test "$found" != yes; then
+ # deplib doesn't seem to be a libtool library
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+ fi
+ continue
+ else # 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 "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $deplib "*)
+ if (${SED} -e '2q' $lib |
+ grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ library_names=
+ old_library=
+ case $lib in
+ */* | *\\*) . $lib ;;
+ *) . ./$lib ;;
+ esac
+ for l in $old_library $library_names; do
+ ll="$l"
+ done
+ if test "X$ll" = "X$old_library" ; then # only static version available
+ found=no
+ ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$ladir" = "X$lib" && ladir="."
+ lib=$ladir/$old_library
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+ fi
+ continue
+ fi
+ fi
+ ;;
+ *) ;;
+ esac
+ fi
+ fi
+ ;; # -l
+ -L*)
+ case $linkmode in
+ lib)
+ deplibs="$deplib $deplibs"
+ test "$pass" = conv && continue
+ newdependency_libs="$deplib $newdependency_libs"
+ newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+ ;;
+ prog)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ continue
+ fi
+ if test "$pass" = scan; then
+ deplibs="$deplib $deplibs"
+ else
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ fi
+ newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+ ;;
+ *)
+ $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
+ ;;
+ esac # linkmode
+ continue
+ ;; # -L
+ -R*)
+ if test "$pass" = link; then
+ dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
+ # Make sure the xrpath contains only unique directories.
+ case "$xrpath " in
+ *" $dir "*) ;;
+ *) xrpath="$xrpath $dir" ;;
+ esac
+ fi
+ deplibs="$deplib $deplibs"
+ continue
+ ;;
+ *.la) lib="$deplib" ;;
+ *.$libext)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ continue
+ fi
+ case $linkmode in
+ lib)
+ if test "$deplibs_check_method" != pass_all; then
+ $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 used here."
+ else
+ $echo
+ $echo "*** Warning: Linking the shared library $output against the"
+ $echo "*** static library $deplib is not portable!"
+ deplibs="$deplib $deplibs"
+ fi
+ continue
+ ;;
+ prog)
+ if test "$pass" != link; then
+ deplibs="$deplib $deplibs"
+ else
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ fi
+ continue
+ ;;
+ esac # linkmode
+ ;; # *.$libext
+ *.lo | *.$objext)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ elif test "$linkmode" = prog; then
+ if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+ # If there is no dlopen support or we're linking statically,
+ # we need to preload.
+ newdlprefiles="$newdlprefiles $deplib"
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ newdlfiles="$newdlfiles $deplib"
+ fi
+ fi
+ continue
+ ;;
+ %DEPLIBS%)
+ alldeplibs=yes
+ continue
+ ;;
+ esac # case $deplib
+ if test "$found" = yes || test -f "$lib"; then :
+ else
+ $echo "$modename: cannot find the library \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Check to see that this really is a libtool archive.
+ if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+ else
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$ladir" = "X$lib" && ladir="."
+
+ dlname=
+ dlopen=
+ dlpreopen=
+ libdir=
+ library_names=
+ old_library=
+ # If the library was installed with an old release of libtool,
+ # it will not redefine variables installed, or shouldnotlink
+ installed=yes
+ shouldnotlink=no
+
+ # Read the .la file
+ case $lib in
+ */* | *\\*) . $lib ;;
+ *) . ./$lib ;;
+ esac
+
+ if test "$linkmode,$pass" = "lib,link" ||
+ test "$linkmode,$pass" = "prog,scan" ||
+ { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+ test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
+ test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
+ fi
+
+ if test "$pass" = conv; then
+ # Only check for convenience libraries
+ deplibs="$lib $deplibs"
+ if test -z "$libdir"; then
+ if test -z "$old_library"; then
+ $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ # It is a libtool convenience library, so add in its objects.
+ convenience="$convenience $ladir/$objdir/$old_library"
+ old_convenience="$old_convenience $ladir/$objdir/$old_library"
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ deplibs="$deplib $deplibs"
+ if test "X$duplicate_deps" = "Xyes" ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ tmp_libs="$tmp_libs $deplib"
+ done
+ elif test "$linkmode" != prog && test "$linkmode" != lib; then
+ $echo "$modename: \`$lib' is not a convenience library" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ continue
+ fi # $pass = conv
+
+
+ # Get the name of the library we link against.
+ linklib=
+ for l in $old_library $library_names; do
+ linklib="$l"
+ done
+ if test -z "$linklib"; then
+ $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # This library was specified with -dlopen.
+ if test "$pass" = dlopen; then
+ if test -z "$libdir"; then
+ $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ if test -z "$dlname" ||
+ test "$dlopen_support" != yes ||
+ test "$build_libtool_libs" = no; 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.
+ dlprefiles="$dlprefiles $lib $dependency_libs"
+ else
+ newdlfiles="$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
+ $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
+ $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
+ abs_ladir="$ladir"
+ fi
+ ;;
+ esac
+ laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+
+ # Find the relevant object directory and library name.
+ if test "X$installed" = Xyes; then
+ if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+ $echo "$modename: warning: library \`$lib' was moved." 1>&2
+ dir="$ladir"
+ absdir="$abs_ladir"
+ libdir="$abs_ladir"
+ else
+ dir="$libdir"
+ absdir="$libdir"
+ fi
+ else
+ dir="$ladir/$objdir"
+ absdir="$abs_ladir/$objdir"
+ # Remove this search path later
+ notinst_path="$notinst_path $abs_ladir"
+ fi # $installed = yes
+ name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+
+ # This library was specified with -dlpreopen.
+ if test "$pass" = dlpreopen; then
+ if test -z "$libdir"; then
+ $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ # Prefer using a static library (so that no silly _DYNAMIC symbols
+ # are required to link).
+ if test -n "$old_library"; then
+ newdlprefiles="$newdlprefiles $dir/$old_library"
+ # Otherwise, use the dlname, so that lt_dlopen finds it.
+ elif test -n "$dlname"; then
+ newdlprefiles="$newdlprefiles $dir/$dlname"
+ else
+ newdlprefiles="$newdlprefiles $dir/$linklib"
+ fi
+ fi # $pass = dlpreopen
+
+ if test -z "$libdir"; then
+ # Link the convenience library
+ if test "$linkmode" = lib; then
+ deplibs="$dir/$old_library $deplibs"
+ elif test "$linkmode,$pass" = "prog,link"; 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 "$linkmode" = prog && test "$pass" != link; then
+ newlib_search_path="$newlib_search_path $ladir"
+ deplibs="$lib $deplibs"
+
+ linkalldeplibs=no
+ if test "$link_all_deplibs" != no || test -z "$library_names" ||
+ test "$build_libtool_libs" = no; then
+ linkalldeplibs=yes
+ fi
+
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ case $deplib in
+ -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
+ esac
+ # Need to link against all dependency_libs?
+ if test "$linkalldeplibs" = yes; then
+ deplibs="$deplib $deplibs"
+ else
+ # Need to hardcode shared library paths
+ # or/and link against static libraries
+ newdependency_libs="$deplib $newdependency_libs"
+ fi
+ if test "X$duplicate_deps" = "Xyes" ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ tmp_libs="$tmp_libs $deplib"
+ done # for deplib
+ continue
+ fi # $linkmode = prog...
+
+ if test "$linkmode,$pass" = "prog,link"; then
+ if test -n "$library_names" &&
+ { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+ # We need to hardcode the library path
+ if test -n "$shlibpath_var"; then
+ # Make sure the rpath contains only unique directories.
+ case "$temp_rpath " in
+ *" $dir "*) ;;
+ *" $absdir "*) ;;
+ *) temp_rpath="$temp_rpath $dir" ;;
+ 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 "*) ;;
+ *) compile_rpath="$compile_rpath $absdir"
+ esac
+ ;;
+ esac
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir"
+ esac
+ ;;
+ esac
+ fi # $linkmode,$pass = prog,link...
+
+ if test "$alldeplibs" = yes &&
+ { test "$deplibs_check_method" = pass_all ||
+ { test "$build_libtool_libs" = yes &&
+ 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
+ if test -n "$library_names" &&
+ { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+ if test "$installed" = no; then
+ notinst_deplibs="$notinst_deplibs $lib"
+ need_relink=yes
+ fi
+ # This is a shared library
+
+ # Warn about portability, can't link against -module's on
+ # some systems (darwin)
+ if test "$shouldnotlink" = yes && test "$pass" = link ; then
+ $echo
+ if test "$linkmode" = prog; 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 "$linkmode" = lib &&
+ test "$hardcode_into_libs" = yes; 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 "*) ;;
+ *) compile_rpath="$compile_rpath $absdir"
+ esac
+ ;;
+ esac
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir"
+ esac
+ ;;
+ esac
+ fi
+
+ if test -n "$old_archive_from_expsyms_cmds"; then
+ # figure out the soname
+ set dummy $library_names
+ realname="$2"
+ shift; 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*)
+ major=`expr $current - $age`
+ versuffix="-$major"
+ ;;
+ esac
+ eval soname=\"$soname_spec\"
+ else
+ soname="$realname"
+ fi
+
+ # Make a new name for the extract_expsyms_cmds to use
+ soroot="$soname"
+ soname=`$echo $soroot | ${SED} -e 's/^.*\///'`
+ newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
+
+ # If the library has no export list, then create one now
+ if test -f "$output_objdir/$soname-def"; then :
+ else
+ $show "extracting exported symbol list from \`$soname'"
+ save_ifs="$IFS"; IFS='~'
+ cmds=$extract_expsyms_cmds
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ fi
+
+ # Create $newlib
+ if test -f "$output_objdir/$newlib"; then :; else
+ $show "generating import library for \`$soname'"
+ save_ifs="$IFS"; IFS='~'
+ cmds=$old_archive_from_expsyms_cmds
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ 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 "$linkmode" = prog || test "$mode" != relink; then
+ add_shlibpath=
+ add_dir=
+ add=
+ lib_linked=yes
+ case $hardcode_action in
+ immediate | unsupported)
+ if test "$hardcode_direct" = no; then
+ add="$dir/$linklib"
+ case $host in
+ *-*-sco3.2v5* ) add_dir="-L$dir" ;;
+ *-*-darwin* )
+ # if the lib is a module then we can not link against
+ # it, someone is ignoring the new warnings I added
+ if /usr/bin/file -L $add 2> /dev/null | $EGREP "bundle" >/dev/null ; 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
+ fi
+ esac
+ elif test "$hardcode_minus_L" = no; then
+ case $host in
+ *-*-sunos*) add_shlibpath="$dir" ;;
+ esac
+ add_dir="-L$dir"
+ add="-l$name"
+ elif test "$hardcode_shlibpath_var" = no; then
+ add_shlibpath="$dir"
+ add="-l$name"
+ else
+ lib_linked=no
+ fi
+ ;;
+ relink)
+ if test "$hardcode_direct" = yes; then
+ add="$dir/$linklib"
+ elif test "$hardcode_minus_L" = yes; then
+ add_dir="-L$dir"
+ # Try looking first in the location we're being installed to.
+ if test -n "$inst_prefix_dir"; then
+ case "$libdir" in
+ [\\/]*)
+ add_dir="$add_dir -L$inst_prefix_dir$libdir"
+ ;;
+ esac
+ fi
+ add="-l$name"
+ elif test "$hardcode_shlibpath_var" = yes; then
+ add_shlibpath="$dir"
+ add="-l$name"
+ else
+ lib_linked=no
+ fi
+ ;;
+ *) lib_linked=no ;;
+ esac
+
+ if test "$lib_linked" != yes; then
+ $echo "$modename: configuration error: unsupported hardcode properties"
+ exit $EXIT_FAILURE
+ fi
+
+ if test -n "$add_shlibpath"; then
+ case :$compile_shlibpath: in
+ *":$add_shlibpath:"*) ;;
+ *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
+ esac
+ fi
+ if test "$linkmode" = prog; 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 "$hardcode_direct" != yes && \
+ test "$hardcode_minus_L" != yes && \
+ test "$hardcode_shlibpath_var" = yes; then
+ case :$finalize_shlibpath: in
+ *":$libdir:"*) ;;
+ *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+ esac
+ fi
+ fi
+ fi
+
+ if test "$linkmode" = prog || test "$mode" = relink; then
+ add_shlibpath=
+ add_dir=
+ add=
+ # Finalize command for both is simple: just hardcode it.
+ if test "$hardcode_direct" = yes; then
+ add="$libdir/$linklib"
+ elif test "$hardcode_minus_L" = yes; then
+ add_dir="-L$libdir"
+ add="-l$name"
+ elif test "$hardcode_shlibpath_var" = yes; then
+ case :$finalize_shlibpath: in
+ *":$libdir:"*) ;;
+ *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+ esac
+ add="-l$name"
+ elif test "$hardcode_automatic" = yes; 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
+ [\\/]*)
+ add_dir="$add_dir -L$inst_prefix_dir$libdir"
+ ;;
+ esac
+ fi
+ add="-l$name"
+ fi
+
+ if test "$linkmode" = prog; 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 "$linkmode" = prog; 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 "$hardcode_direct" != unsupported; 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 "$build_libtool_libs" = yes; then
+ # Not a shared library
+ if test "$deplibs_check_method" != pass_all; 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 can not 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 "$module" = yes; 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 "$build_old_libs" = no; then
+ build_libtool_libs=module
+ build_old_libs=yes
+ else
+ build_libtool_libs=no
+ fi
+ fi
+ else
+ convenience="$convenience $dir/$old_library"
+ old_convenience="$old_convenience $dir/$old_library"
+ deplibs="$dir/$old_library $deplibs"
+ link_static=yes
+ fi
+ fi # link shared/static library?
+
+ if test "$linkmode" = lib; then
+ if test -n "$dependency_libs" &&
+ { test "$hardcode_into_libs" != yes ||
+ test "$build_old_libs" = yes ||
+ test "$link_static" = yes; }; then
+ # Extract -R from dependency_libs
+ temp_deplibs=
+ for libdir in $dependency_libs; do
+ case $libdir in
+ -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
+ case " $xrpath " in
+ *" $temp_xrpath "*) ;;
+ *) xrpath="$xrpath $temp_xrpath";;
+ esac;;
+ *) temp_deplibs="$temp_deplibs $libdir";;
+ esac
+ done
+ dependency_libs="$temp_deplibs"
+ fi
+
+ newlib_search_path="$newlib_search_path $absdir"
+ # Link against this library
+ test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+ # ... and its dependency_libs
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ newdependency_libs="$deplib $newdependency_libs"
+ if test "X$duplicate_deps" = "Xyes" ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ tmp_libs="$tmp_libs $deplib"
+ done
+
+ if test "$link_all_deplibs" != no; then
+ # Add the search paths of all dependency libraries
+ for deplib in $dependency_libs; do
+ case $deplib in
+ -L*) path="$deplib" ;;
+ *.la)
+ dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$dir" = "X$deplib" && dir="."
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+ *)
+ absdir=`cd "$dir" && pwd`
+ if test -z "$absdir"; then
+ $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
+ absdir="$dir"
+ fi
+ ;;
+ esac
+ if grep "^installed=no" $deplib > /dev/null; then
+ path="$absdir/$objdir"
+ else
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ if test "$absdir" != "$libdir"; then
+ $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
+ fi
+ path="$absdir"
+ fi
+ depdepl=
+ case $host in
+ *-*-darwin*)
+ # we do not want to link against static libs,
+ # but need to link against shared
+ 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 "$path/$depdepl" ; then
+ depdepl="$path/$depdepl"
+ fi
+ # do not add paths which are already there
+ case " $newlib_search_path " in
+ *" $path "*) ;;
+ *) newlib_search_path="$newlib_search_path $path";;
+ esac
+ fi
+ path=""
+ ;;
+ *)
+ path="-L$path"
+ ;;
+ esac
+ ;;
+ -l*)
+ case $host in
+ *-*-darwin*)
+ # Again, we only want to link against shared libraries
+ eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"`
+ for tmp in $newlib_search_path ; do
+ if test -f "$tmp/lib$tmp_libs.dylib" ; then
+ eval depdepl="$tmp/lib$tmp_libs.dylib"
+ break
+ fi
+ done
+ path=""
+ ;;
+ *) continue ;;
+ esac
+ ;;
+ *) continue ;;
+ esac
+ case " $deplibs " in
+ *" $depdepl "*) ;;
+ *) deplibs="$depdepl $deplibs" ;;
+ esac
+ case " $deplibs " in
+ *" $path "*) ;;
+ *) deplibs="$deplibs $path" ;;
+ esac
+ done
+ fi # link_all_deplibs != no
+ fi # linkmode = lib
+ done # for deplib in $libs
+ dependency_libs="$newdependency_libs"
+ if test "$pass" = dlpreopen; then
+ # Link the dlpreopened libraries before other libraries
+ for deplib in $save_deplibs; do
+ deplibs="$deplib $deplibs"
+ done
+ fi
+ if test "$pass" != dlopen; then
+ if test "$pass" != conv; then
+ # 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 "*) ;;
+ *) lib_search_path="$lib_search_path $dir" ;;
+ esac
+ done
+ newlib_search_path=
+ fi
+
+ if test "$linkmode,$pass" != "prog,link"; then
+ vars="deplibs"
+ else
+ vars="compile_deplibs finalize_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 "*) ;;
+ *) tmp_libs="$tmp_libs $deplib" ;;
+ esac
+ ;;
+ *) tmp_libs="$tmp_libs $deplib" ;;
+ esac
+ done
+ eval $var=\"$tmp_libs\"
+ done # for var
+ fi
+ # 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
+ tmp_libs="$tmp_libs $i"
+ fi
+ done
+ dependency_libs=$tmp_libs
+ done # for pass
+ if test "$linkmode" = prog; then
+ dlfiles="$newdlfiles"
+ dlprefiles="$newdlprefiles"
+ fi
+
+ case $linkmode in
+ oldlib)
+ if test -n "$deplibs"; then
+ $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
+ fi
+
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$rpath"; then
+ $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$xrpath"; then
+ $echo "$modename: warning: \`-R' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$vinfo"; then
+ $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$release"; then
+ $echo "$modename: warning: \`-release' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+ $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
+ fi
+
+ # Now set the variables for building old libraries.
+ build_libtool_libs=no
+ oldlibs="$output"
+ objs="$objs$old_deplibs"
+ ;;
+
+ lib)
+ # Make sure we only generate libraries of the form `libNAME.la'.
+ case $outputname in
+ lib*)
+ name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+ eval shared_ext=\"$shrext_cmds\"
+ eval libname=\"$libname_spec\"
+ ;;
+ *)
+ if test "$module" = no; then
+ $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ if test "$need_lib_prefix" != no; then
+ # Add the "lib" prefix for modules if required
+ name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+ eval shared_ext=\"$shrext_cmds\"
+ eval libname=\"$libname_spec\"
+ else
+ libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+ fi
+ ;;
+ esac
+
+ if test -n "$objs"; then
+ if test "$deplibs_check_method" != pass_all; then
+ $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
+ exit $EXIT_FAILURE
+ else
+ $echo
+ $echo "*** Warning: Linking the shared library $output against the non-libtool"
+ $echo "*** objects $objs is not portable!"
+ libobjs="$libobjs $objs"
+ fi
+ fi
+
+ if test "$dlself" != no; then
+ $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
+ fi
+
+ set dummy $rpath
+ if test "$#" -gt 2; then
+ $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
+ fi
+ install_libdir="$2"
+
+ oldlibs=
+ if test -z "$rpath"; then
+ if test "$build_libtool_libs" = yes; 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
+
+ if test -n "$vinfo"; then
+ $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2
+ fi
+
+ if test -n "$release"; then
+ $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
+ fi
+ else
+
+ # Parse the version information argument.
+ save_ifs="$IFS"; IFS=':'
+ set dummy $vinfo 0 0 0
+ IFS="$save_ifs"
+
+ if test -n "$8"; then
+ $echo "$modename: too many parameters to \`-version-info'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # 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="$2"
+ number_minor="$3"
+ number_revision="$4"
+ #
+ # 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
+ # which has an extra 1 added just for fun
+ #
+ case $version_type in
+ darwin|linux|osf|windows)
+ current=`expr $number_major + $number_minor`
+ age="$number_minor"
+ revision="$number_revision"
+ ;;
+ freebsd-aout|freebsd-elf|sunos)
+ current="$number_major"
+ revision="$number_minor"
+ age="0"
+ ;;
+ irix|nonstopux)
+ current=`expr $number_major + $number_minor - 1`
+ age="$number_minor"
+ revision="$number_minor"
+ ;;
+ esac
+ ;;
+ no)
+ current="$2"
+ revision="$3"
+ age="$4"
+ ;;
+ esac
+
+ # Check that each of the things are valid numbers.
+ case $current in
+ [0-9]*) ;;
+ *)
+ $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ case $revision in
+ [0-9]*) ;;
+ *)
+ $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ case $age in
+ [0-9]*) ;;
+ *)
+ $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ if test "$age" -gt "$current"; then
+ $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ 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
+ major=.`expr $current - $age`
+ versuffix="$major.$age.$revision"
+ # Darwin ld doesn't like 0 for these options...
+ minor_current=`expr $current + 1`
+ verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+ ;;
+
+ freebsd-aout)
+ major=".$current"
+ versuffix=".$current.$revision";
+ ;;
+
+ freebsd-elf)
+ major=".$current"
+ versuffix=".$current";
+ ;;
+
+ irix | nonstopux)
+ major=`expr $current - $age + 1`
+
+ 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 "$loop" -ne 0; do
+ iface=`expr $revision - $loop`
+ loop=`expr $loop - 1`
+ verstring="$verstring_prefix$major.$iface:$verstring"
+ done
+
+ # Before this point, $major must not contain `.'.
+ major=.$major
+ versuffix="$major.$revision"
+ ;;
+
+ linux)
+ major=.`expr $current - $age`
+ versuffix="$major.$age.$revision"
+ ;;
+
+ osf)
+ major=.`expr $current - $age`
+ versuffix=".$current.$age.$revision"
+ verstring="$current.$age.$revision"
+
+ # Add in all the interfaces that we are compatible with.
+ loop=$age
+ while test "$loop" -ne 0; do
+ iface=`expr $current - $loop`
+ loop=`expr $loop - 1`
+ verstring="$verstring:${iface}.0"
+ done
+
+ # Make executables depend on our current version.
+ verstring="$verstring:${current}.0"
+ ;;
+
+ sunos)
+ major=".$current"
+ versuffix=".$current.$revision"
+ ;;
+
+ windows)
+ # Use '-' rather than '.', since we only want one
+ # extension on DOS 8.3 filesystems.
+ major=`expr $current - $age`
+ versuffix="-$major"
+ ;;
+
+ *)
+ $echo "$modename: unknown library version type \`$version_type'" 1>&2
+ $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ 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 "$need_version" = no; then
+ versuffix=
+ else
+ versuffix=".0.0"
+ fi
+ fi
+
+ # Remove version info from name if versioning should be avoided
+ if test "$avoid_version" = yes && test "$need_version" = no; then
+ major=
+ versuffix=
+ verstring=""
+ fi
+
+ # Check to see if the archive will have undefined symbols.
+ if test "$allow_undefined" = yes; then
+ if test "$allow_undefined_flag" = unsupported; then
+ $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
+ build_libtool_libs=no
+ build_old_libs=yes
+ fi
+ else
+ # Don't allow undefined symbols.
+ allow_undefined_flag="$no_undefined_flag"
+ fi
+ fi
+
+ if test "$mode" != relink; 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)
+ ;;
+ $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
+ if test "X$precious_files_regex" != "X"; then
+ if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
+ then
+ continue
+ fi
+ fi
+ removelist="$removelist $p"
+ ;;
+ *) ;;
+ esac
+ done
+ if test -n "$removelist"; then
+ $show "${rm}r $removelist"
+ $run ${rm}r $removelist
+ fi
+ fi
+
+ # Now set the variables for building old libraries.
+ if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+ oldlibs="$oldlibs $output_objdir/$libname.$libext"
+
+ # Transform .lo files to .o files.
+ oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
+ fi
+
+ # Eliminate all temporary directories.
+ for path in $notinst_path; do
+ lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'`
+ deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'`
+ dependency_libs=`$echo "$dependency_libs " | ${SED} -e '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
+ temp_xrpath="$temp_xrpath -R$libdir"
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir" ;;
+ esac
+ done
+ if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; 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 "*) ;;
+ *) dlfiles="$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 "*) ;;
+ *) dlprefiles="$dlprefiles $lib" ;;
+ esac
+ done
+
+ if test "$build_libtool_libs" = yes; then
+ if test -n "$rpath"; then
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
+ # these systems don't actually have a c library (as such)!
+ ;;
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # Rhapsody C library is in the System framework
+ deplibs="$deplibs -framework System"
+ ;;
+ *-*-netbsd*)
+ # Don't link with libc until the a.out ld.so is fixed.
+ ;;
+ *-*-openbsd* | *-*-freebsd*)
+ # Do not include libc due to us having libc/libc_r.
+ test "X$arg" = "X-lc" && continue
+ ;;
+ *)
+ # Add libc to deplibs on all other systems if necessary.
+ if test "$build_libtool_need_lc" = "yes"; then
+ deplibs="$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.
+ $rm conftest.c
+ cat > conftest.c <<EOF
+ int main() { return 0; }
+EOF
+ $rm conftest
+ $LTCC -o conftest conftest.c $deplibs
+ if test "$?" -eq 0 ; then
+ ldd_output=`ldd conftest`
+ for i in $deplibs; do
+ name="`expr $i : '-l\(.*\)'`"
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" -ne "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+ newdeplibs="$newdeplibs $i"
+ i=""
+ ;;
+ esac
+ fi
+ if test -n "$i" ; then
+ libname=`eval \\$echo \"$libname_spec\"`
+ deplib_matches=`eval \\$echo \"$library_names_spec\"`
+ set dummy $deplib_matches
+ deplib_match=$2
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+ newdeplibs="$newdeplibs $i"
+ else
+ droppeddeps=yes
+ $echo
+ $echo "*** Warning: dynamic linker does not accept needed library $i."
+ $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 I believe you do not have"
+ $echo "*** because a test_compile did reveal that the linker did not use it for"
+ $echo "*** its dynamic dependency list that programs get resolved with at runtime."
+ fi
+ fi
+ else
+ newdeplibs="$newdeplibs $i"
+ fi
+ done
+ else
+ # Error occurred in the first compile. Let's try to salvage
+ # the situation: Compile a separate program for each library.
+ for i in $deplibs; do
+ name="`expr $i : '-l\(.*\)'`"
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" != "0"; then
+ $rm conftest
+ $LTCC -o conftest conftest.c $i
+ # Did it work?
+ if test "$?" -eq 0 ; then
+ ldd_output=`ldd conftest`
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+ newdeplibs="$newdeplibs $i"
+ i=""
+ ;;
+ esac
+ fi
+ if test -n "$i" ; then
+ libname=`eval \\$echo \"$libname_spec\"`
+ deplib_matches=`eval \\$echo \"$library_names_spec\"`
+ set dummy $deplib_matches
+ deplib_match=$2
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+ newdeplibs="$newdeplibs $i"
+ else
+ droppeddeps=yes
+ $echo
+ $echo "*** Warning: dynamic linker does not accept needed library $i."
+ $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 a test_compile did reveal that the linker did not use this one"
+ $echo "*** as a dynamic dependency that programs can get resolved with at runtime."
+ fi
+ fi
+ else
+ droppeddeps=yes
+ $echo
+ $echo "*** Warning! Library $i is needed by this library but I was not able to"
+ $echo "*** make it link in! You will probably need to install it or some"
+ $echo "*** library that it depends on before this library will be fully"
+ $echo "*** functional. Installing it before continuing would be even better."
+ fi
+ else
+ newdeplibs="$newdeplibs $i"
+ fi
+ done
+ fi
+ ;;
+ file_magic*)
+ set dummy $deplibs_check_method
+ file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+ for a_deplib in $deplibs; do
+ name="`expr $a_deplib : '-l\(.*\)'`"
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" != "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+ newdeplibs="$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
+ # 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 "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
+ esac
+ done
+ if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
+ | ${SED} 10q \
+ | $EGREP "$file_magic_regex" > /dev/null; then
+ newdeplibs="$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
+ else
+ # Add a -L argument.
+ newdeplibs="$newdeplibs $a_deplib"
+ fi
+ done # Gone through all deplibs.
+ ;;
+ match_pattern*)
+ set dummy $deplibs_check_method
+ match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+ for a_deplib in $deplibs; do
+ name="`expr $a_deplib : '-l\(.*\)'`"
+ # If $name is empty we are operating on a -L argument.
+ if test -n "$name" && test "$name" != "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+ newdeplibs="$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
+ newdeplibs="$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
+ else
+ # Add a -L argument.
+ newdeplibs="$newdeplibs $a_deplib"
+ fi
+ done # Gone through all deplibs.
+ ;;
+ none | unknown | *)
+ newdeplibs=""
+ tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
+ -e 's/ -[LR][^ ]*//g'`
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ for i in $predeps $postdeps ; do
+ # can't use Xsed below, because $i might contain '/'
+ tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"`
+ done
+ fi
+ if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \
+ | grep . >/dev/null; then
+ $echo
+ if test "X$deplibs_check_method" = "Xnone"; 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
+ fi
+ ;;
+ 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 is the System framework
+ newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
+ ;;
+ esac
+
+ if test "$droppeddeps" = yes; then
+ if test "$module" = yes; 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 "$build_old_libs" = no; 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 "$allow_undefined" = no; 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 "$build_old_libs" = no; 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
+
+ # 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 "$build_libtool_libs" = yes; then
+ if test "$hardcode_into_libs" = yes; then
+ # Hardcode the library paths
+ hardcode_libdirs=
+ dep_rpath=
+ rpath="$finalize_rpath"
+ test "$mode" != relink && rpath="$compile_rpath$rpath"
+ for libdir in $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"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ dep_rpath="$dep_rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) perm_rpath="$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"
+ if test -n "$hardcode_libdir_flag_spec_ld"; then
+ eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
+ else
+ eval dep_rpath=\"$hardcode_libdir_flag_spec\"
+ fi
+ fi
+ if test -n "$runpath_var" && test -n "$perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $perm_rpath; do
+ rpath="$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 "$mode" != relink && 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
+ realname="$2"
+ shift; 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"
+ for link
+ do
+ linknames="$linknames $link"
+ done
+
+ # Use standard objects if they are pic
+ test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+ if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+ $show "generating symbol list for \`$libname.la'"
+ export_symbols="$output_objdir/$libname.exp"
+ $run $rm $export_symbols
+ cmds=$export_symbols_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ if len=`expr "X$cmd" : ".*"` &&
+ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ skipped_export=false
+ else
+ # The command line is too long to execute in one step.
+ $show "using reloadable object file for export list..."
+ skipped_export=:
+ fi
+ done
+ IFS="$save_ifs"
+ if test -n "$export_symbols_regex"; then
+ $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
+ $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+ $show "$mv \"${export_symbols}T\" \"$export_symbols\""
+ $run eval '$mv "${export_symbols}T" "$export_symbols"'
+ fi
+ fi
+ fi
+
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
+ fi
+
+ tmp_deplibs=
+ for test_deplib in $deplibs; do
+ case " $convenience " in
+ *" $test_deplib "*) ;;
+ *)
+ tmp_deplibs="$tmp_deplibs $test_deplib"
+ ;;
+ esac
+ done
+ deplibs="$tmp_deplibs"
+
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec"; then
+ save_libobjs=$libobjs
+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+ else
+ gentop="$output_objdir/${outputname}x"
+ $show "${rm}r $gentop"
+ $run ${rm}r "$gentop"
+ $show "$mkdir $gentop"
+ $run $mkdir "$gentop"
+ status=$?
+ if test "$status" -ne 0 && test ! -d "$gentop"; then
+ exit $status
+ fi
+ generated="$generated $gentop"
+
+ for xlib in $convenience; do
+ # Extract the objects.
+ case $xlib in
+ [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+ *) xabs=`pwd`"/$xlib" ;;
+ esac
+ xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+ xdir="$gentop/$xlib"
+
+ $show "${rm}r $xdir"
+ $run ${rm}r "$xdir"
+ $show "$mkdir $xdir"
+ $run $mkdir "$xdir"
+ status=$?
+ if test "$status" -ne 0 && test ! -d "$xdir"; then
+ exit $status
+ fi
+ # We will extract separately just the conflicting names and we will no
+ # longer touch any unique names. It is faster to leave these extract
+ # automatically by $AR in one run.
+ $show "(cd $xdir && $AR x $xabs)"
+ $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+ if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then
+ :
+ else
+ $echo "$modename: warning: object name conflicts; renaming object files" 1>&2
+ $echo "$modename: warning: to ensure that they will not overwrite" 1>&2
+ $AR t "$xabs" | sort | uniq -cd | while read -r count name
+ do
+ i=1
+ while test "$i" -le "$count"
+ do
+ # Put our $i before any first dot (extension)
+ # Never overwrite any file
+ name_to="$name"
+ while test "X$name_to" = "X$name" || test -f "$xdir/$name_to"
+ do
+ name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"`
+ done
+ $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')"
+ $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $?
+ i=`expr $i + 1`
+ done
+ done
+ fi
+
+ libobjs="$libobjs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+ done
+ fi
+ fi
+
+ if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+ eval flag=\"$thread_safe_flag_spec\"
+ linker_flags="$linker_flags $flag"
+ fi
+
+ # Make a backup of the uninstalled library when relinking
+ if test "$mode" = relink; then
+ $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
+ fi
+
+ # Do each of the archive commands.
+ if test "$module" = yes && 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 "X$skipped_export" != "X:" && len=`expr "X$test_cmds" : ".*"` &&
+ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ :
+ else
+ # The command line is too long to link in one step, link piecewise.
+ $echo "creating reloadable object files..."
+
+ # 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
+
+ # Clear the reloadable object creation command queue and
+ # initialize k to one.
+ test_cmds=
+ concat_cmds=
+ objlist=
+ delfiles=
+ last_robj=
+ k=1
+ output=$output_objdir/$save_output-${k}.$objext
+ # Loop over the list of objects to be linked.
+ for obj in $save_libobjs
+ do
+ eval test_cmds=\"$reload_cmds $objlist $last_robj\"
+ if test "X$objlist" = X ||
+ { len=`expr "X$test_cmds" : ".*"` &&
+ test "$len" -le "$max_cmd_len"; }; then
+ objlist="$objlist $obj"
+ else
+ # The command $test_cmds is almost too long, add a
+ # command to the queue.
+ if test "$k" -eq 1 ; then
+ # The first file doesn't have a previous command to add.
+ eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
+ else
+ # All subsequent reloadable object files will link in
+ # the last one created.
+ eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
+ fi
+ last_robj=$output_objdir/$save_output-${k}.$objext
+ k=`expr $k + 1`
+ output=$output_objdir/$save_output-${k}.$objext
+ objlist=$obj
+ len=1
+ 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~
+ eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
+
+ if ${skipped_export-false}; then
+ $show "generating symbol list for \`$libname.la'"
+ export_symbols="$output_objdir/$libname.exp"
+ $run $rm $export_symbols
+ libobjs=$output
+ # Append the command to create the export file.
+ eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
+ fi
+
+ # Set up a command to remove the reloadale object files
+ # after they are used.
+ i=0
+ while test "$i" -lt "$k"
+ do
+ i=`expr $i + 1`
+ delfiles="$delfiles $output_objdir/$save_output-${i}.$objext"
+ done
+
+ $echo "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"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+
+ 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\"
+ fi
+ # Expand the library linking commands again to reset the
+ # value of $libobjs for piecewise linking.
+
+ # Do each of the archive commands.
+ if test "$module" = yes && 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
+
+ # Append the command to remove the reloadable object files
+ # to the just-reset $cmds.
+ eval cmds=\"\$cmds~\$rm $delfiles\"
+ fi
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+
+ # Restore the uninstalled library and exit
+ if test "$mode" = relink; then
+ $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
+ exit $EXIT_SUCCESS
+ fi
+
+ # Create links to the real library.
+ for linkname in $linknames; do
+ if test "$realname" != "$linkname"; then
+ $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
+ $run 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 "$module" = yes || test "$export_dynamic" = yes; then
+ # On all known operating systems, these are identical.
+ dlname="$soname"
+ fi
+ fi
+ ;;
+
+ obj)
+ if test -n "$deplibs"; then
+ $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
+ fi
+
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
+ fi
+
+ if test -n "$rpath"; then
+ $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
+ fi
+
+ if test -n "$xrpath"; then
+ $echo "$modename: warning: \`-R' is ignored for objects" 1>&2
+ fi
+
+ if test -n "$vinfo"; then
+ $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
+ fi
+
+ if test -n "$release"; then
+ $echo "$modename: warning: \`-release' is ignored for objects" 1>&2
+ fi
+
+ case $output in
+ *.lo)
+ if test -n "$objs$old_deplibs"; then
+ $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ libobj="$output"
+ obj=`$echo "X$output" | $Xsed -e "$lo2o"`
+ ;;
+ *)
+ libobj=
+ obj="$output"
+ ;;
+ esac
+
+ # Delete the old objects.
+ $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=
+ # reload_cmds runs $LD directly, so let us get rid of
+ # -Wl from whole_archive_flag_spec
+ wl=
+
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec"; then
+ eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
+ else
+ gentop="$output_objdir/${obj}x"
+ $show "${rm}r $gentop"
+ $run ${rm}r "$gentop"
+ $show "$mkdir $gentop"
+ $run $mkdir "$gentop"
+ status=$?
+ if test "$status" -ne 0 && test ! -d "$gentop"; then
+ exit $status
+ fi
+ generated="$generated $gentop"
+
+ for xlib in $convenience; do
+ # Extract the objects.
+ case $xlib in
+ [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+ *) xabs=`pwd`"/$xlib" ;;
+ esac
+ xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+ xdir="$gentop/$xlib"
+
+ $show "${rm}r $xdir"
+ $run ${rm}r "$xdir"
+ $show "$mkdir $xdir"
+ $run $mkdir "$xdir"
+ status=$?
+ if test "$status" -ne 0 && test ! -d "$xdir"; then
+ exit $status
+ fi
+ # We will extract separately just the conflicting names and we will no
+ # longer touch any unique names. It is faster to leave these extract
+ # automatically by $AR in one run.
+ $show "(cd $xdir && $AR x $xabs)"
+ $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+ if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then
+ :
+ else
+ $echo "$modename: warning: object name conflicts; renaming object files" 1>&2
+ $echo "$modename: warning: to ensure that they will not overwrite" 1>&2
+ $AR t "$xabs" | sort | uniq -cd | while read -r count name
+ do
+ i=1
+ while test "$i" -le "$count"
+ do
+ # Put our $i before any first dot (extension)
+ # Never overwrite any file
+ name_to="$name"
+ while test "X$name_to" = "X$name" || test -f "$xdir/$name_to"
+ do
+ name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"`
+ done
+ $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')"
+ $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $?
+ i=`expr $i + 1`
+ done
+ done
+ fi
+
+ reload_conv_objs="$reload_objs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+ done
+ fi
+ fi
+
+ # Create the old-style object.
+ reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+ output="$obj"
+ cmds=$reload_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+
+ # Exit if we aren't doing a library object file.
+ if test -z "$libobj"; then
+ if test -n "$gentop"; then
+ $show "${rm}r $gentop"
+ $run ${rm}r $gentop
+ fi
+
+ exit $EXIT_SUCCESS
+ fi
+
+ if test "$build_libtool_libs" != yes; then
+ if test -n "$gentop"; then
+ $show "${rm}r $gentop"
+ $run ${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"
+ # $run eval "echo timestamp > $libobj" || exit $?
+ exit $EXIT_SUCCESS
+ fi
+
+ if test -n "$pic_flag" || test "$pic_mode" != default; then
+ # Only do commands if we really have different PIC objects.
+ reload_objs="$libobjs $reload_conv_objs"
+ output="$libobj"
+ cmds=$reload_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ fi
+
+ if test -n "$gentop"; then
+ $show "${rm}r $gentop"
+ $run ${rm}r $gentop
+ fi
+
+ exit $EXIT_SUCCESS
+ ;;
+
+ prog)
+ case $host in
+ *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
+ esac
+ if test -n "$vinfo"; then
+ $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
+ fi
+
+ if test -n "$release"; then
+ $echo "$modename: warning: \`-release' is ignored for programs" 1>&2
+ fi
+
+ if test "$preload" = yes; then
+ if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
+ test "$dlopen_self_static" = unknown; then
+ $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
+ fi
+ fi
+
+ case $host in
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # On Rhapsody replace the C library is the System framework
+ compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+ finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+ ;;
+ esac
+
+ case $host in
+ *darwin*)
+ # Don't allow lazy linking, it breaks C++ global constructors
+ if test "$tagname" = CXX ; then
+ compile_command="$compile_command ${wl}-bind_at_load"
+ finalize_command="$finalize_command ${wl}-bind_at_load"
+ fi
+ ;;
+ esac
+
+ compile_command="$compile_command $compile_deplibs"
+ finalize_command="$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 "*) ;;
+ *) finalize_rpath="$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"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ rpath="$rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) perm_rpath="$perm_rpath $libdir" ;;
+ esac
+ fi
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ case :$dllsearchpath: in
+ *":$libdir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$libdir";;
+ 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"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ rpath="$rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$finalize_perm_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_perm_rpath="$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 "$build_old_libs" = yes; then
+ # Transform all the library objects into standard objects.
+ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ fi
+
+ dlsyms=
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ if test -n "$NM" && test -n "$global_symbol_pipe"; then
+ dlsyms="${outputname}S.c"
+ else
+ $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
+ fi
+ fi
+
+ if test -n "$dlsyms"; then
+ case $dlsyms in
+ "") ;;
+ *.c)
+ # Discover the nlist of each of the dlfiles.
+ nlist="$output_objdir/${outputname}.nm"
+
+ $show "$rm $nlist ${nlist}S ${nlist}T"
+ $run $rm "$nlist" "${nlist}S" "${nlist}T"
+
+ # Parse the name list into a source file.
+ $show "creating $output_objdir/$dlsyms"
+
+ test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
+/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
+/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+/* Prevent the only kind of declaration conflicts we can make. */
+#define lt_preloaded_symbols some_other_symbol
+
+/* External symbol declarations for the compiler. */\
+"
+
+ if test "$dlself" = yes; then
+ $show "generating symbol list for \`$output'"
+
+ test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
+
+ # Add our own program objects to the symbol list.
+ progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ for arg in $progfiles; do
+ $show "extracting global C symbols from \`$arg'"
+ $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+ done
+
+ if test -n "$exclude_expsyms"; then
+ $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+ $run eval '$mv "$nlist"T "$nlist"'
+ fi
+
+ if test -n "$export_symbols_regex"; then
+ $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+ $run eval '$mv "$nlist"T "$nlist"'
+ fi
+
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+ export_symbols="$output_objdir/$output.exp"
+ $run $rm $export_symbols
+ $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+ else
+ $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"'
+ $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T'
+ $run eval 'mv "$nlist"T "$nlist"'
+ fi
+ fi
+
+ for arg in $dlprefiles; do
+ $show "extracting global C symbols from \`$arg'"
+ name=`$echo "$arg" | ${SED} -e 's%^.*/%%'`
+ $run eval '$echo ": $name " >> "$nlist"'
+ $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+ done
+
+ if test -z "$run"; then
+ # 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 >/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/$dlsyms"'
+ else
+ $echo '/* NONE */' >> "$output_objdir/$dlsyms"
+ fi
+
+ $echo >> "$output_objdir/$dlsyms" "\
+
+#undef lt_preloaded_symbols
+
+#if defined (__STDC__) && __STDC__
+# define lt_ptr void *
+#else
+# define lt_ptr char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+ const char *name;
+ lt_ptr address;
+}
+lt_preloaded_symbols[] =
+{\
+"
+
+ eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
+
+ $echo >> "$output_objdir/$dlsyms" "\
+ {0, (lt_ptr) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+ return lt_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+ fi
+
+ pic_flag_for_symtable=
+ 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*)
+ case "$compile_command " in
+ *" -static "*) ;;
+ *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
+ esac;;
+ *-*-hpux*)
+ case "$compile_command " in
+ *" -static "*) ;;
+ *) pic_flag_for_symtable=" $pic_flag";;
+ esac
+ esac
+
+ # Now compile the dynamic symbol file.
+ $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
+ $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
+
+ # Clean up the generated files.
+ $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
+ $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
+
+ # Transform the symbol file into the correct name.
+ compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ ;;
+ *)
+ $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ 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 "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
+ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
+ fi
+
+ if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+ # Replace the output file specification.
+ compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+ link_command="$compile_command$compile_rpath"
+
+ # We have no uninstalled library dependencies, so finalize right now.
+ $show "$link_command"
+ $run eval "$link_command"
+ status=$?
+
+ # Delete the generated files.
+ if test -n "$dlsyms"; then
+ $show "$rm $output_objdir/${outputname}S.${objext}"
+ $run $rm "$output_objdir/${outputname}S.${objext}"
+ fi
+
+ exit $status
+ fi
+
+ if test -n "$shlibpath_var"; then
+ # We should set the shlibpath_var
+ rpath=
+ for dir in $temp_rpath; do
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*)
+ # Absolute path.
+ rpath="$rpath$dir:"
+ ;;
+ *)
+ # Relative path: add a thisdir entry.
+ rpath="$rpath\$thisdir/$dir:"
+ ;;
+ esac
+ done
+ temp_rpath="$rpath"
+ fi
+
+ 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
+ rpath="$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
+ rpath="$rpath$dir:"
+ done
+ finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+ fi
+ fi
+
+ if test "$no_install" = yes; 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 "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+ # Delete the old output file.
+ $run $rm $output
+ # Link the executable and exit
+ $show "$link_command"
+ $run eval "$link_command" || exit $?
+ exit $EXIT_SUCCESS
+ fi
+
+ if test "$hardcode_action" = relink; then
+ # Fast installation is not supported
+ link_command="$compile_var$compile_command$compile_rpath"
+ relink_command="$finalize_var$finalize_command$finalize_rpath"
+
+ $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
+ $echo "$modename: \`$output' will be relinked during installation" 1>&2
+ else
+ if test "$fast_install" != no; then
+ link_command="$finalize_var$compile_command$finalize_rpath"
+ if test "$fast_install" = yes; then
+ relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
+ else
+ # fast_install is set to needless
+ relink_command=
+ fi
+ else
+ link_command="$compile_var$compile_command$compile_rpath"
+ relink_command="$finalize_var$finalize_command$finalize_rpath"
+ fi
+ fi
+
+ # Replace the output file specification.
+ link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+ # Delete the old output files.
+ $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+ $show "$link_command"
+ $run eval "$link_command" || exit $?
+
+ # Now create the wrapper script.
+ $show "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}\" || 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
+ var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+ relink_command="$var=\"$var_value\"; export $var; $relink_command"
+ fi
+ done
+ relink_command="(cd `pwd`; $relink_command)"
+ relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+ fi
+
+ # Quote $echo for shipping.
+ if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then
+ case $progpath in
+ [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
+ *) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
+ esac
+ qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
+ else
+ qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
+ fi
+
+ # Only actually do things if our run command is non-null.
+ if test -z "$run"; then
+ # win32 will think the script is a binary if it has
+ # a .exe suffix, so we strip it off here.
+ case $output in
+ *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;;
+ esac
+ # test for cygwin because mv fails w/o .exe extensions
+ case $host in
+ *cygwin*)
+ exeext=.exe
+ outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;;
+ *) exeext= ;;
+ esac
+ case $host in
+ *cygwin* | *mingw* )
+ cwrappersource=`$echo ${objdir}/lt-${output}.c`
+ cwrapper=`$echo ${output}.exe`
+ $rm $cwrappersource $cwrapper
+ trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+
+ cat > $cwrappersource <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+ Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+
+ The $output program cannot be directly executed until all the libtool
+ libraries that it depends on are installed.
+
+ This wrapper executable should never be moved out of the build directory.
+ If it is, it will not operate correctly.
+
+ Currently, it simply execs the wrapper *script* "/bin/sh $output",
+ but could eventually absorb all of the scripts functionality and
+ exec $objdir/$outputname directly.
+*/
+EOF
+ cat >> $cwrappersource<<"EOF"
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+
+#if defined(PATH_MAX)
+# define LT_PATHMAX PATH_MAX
+#elif defined(MAXPATHLEN)
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
+
+#ifndef DIR_SEPARATOR
+#define DIR_SEPARATOR '/'
+#endif
+
+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
+ defined (__OS2__)
+#define HAVE_DOS_BASED_FILE_SYSTEM
+#ifndef DIR_SEPARATOR_2
+#define DIR_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 */
+
+#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+ if (stale) { free ((void *) stale); stale = 0; } \
+} while (0)
+
+const char *program_name = NULL;
+
+void * xmalloc (size_t num);
+char * xstrdup (const char *string);
+char * basename (const char *name);
+char * fnqualify(const char *path);
+char * strendzap(char *str, const char *pat);
+void lt_fatal (const char *message, ...);
+
+int
+main (int argc, char *argv[])
+{
+ char **newargz;
+ int i;
+
+ program_name = (char *) xstrdup ((char *) basename (argv[0]));
+ newargz = XMALLOC(char *, argc+2);
+EOF
+
+ cat >> $cwrappersource <<EOF
+ newargz[0] = "$SHELL";
+EOF
+
+ cat >> $cwrappersource <<"EOF"
+ newargz[1] = fnqualify(argv[0]);
+ /* we know the script has the same name, without the .exe */
+ /* so make sure newargz[1] doesn't end in .exe */
+ strendzap(newargz[1],".exe");
+ for (i = 1; i < argc; i++)
+ newargz[i+1] = xstrdup(argv[i]);
+ newargz[argc+1] = NULL;
+EOF
+
+ cat >> $cwrappersource <<EOF
+ execv("$SHELL",newargz);
+EOF
+
+ cat >> $cwrappersource <<"EOF"
+}
+
+void *
+xmalloc (size_t num)
+{
+ void * p = (void *) malloc (num);
+ if (!p)
+ lt_fatal ("Memory exhausted");
+
+ return p;
+}
+
+char *
+xstrdup (const char *string)
+{
+ return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
+;
+}
+
+char *
+basename (const char *name)
+{
+ const char *base;
+
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ /* Skip over the disk name in MSDOS pathnames. */
+ if (isalpha (name[0]) && name[1] == ':')
+ name += 2;
+#endif
+
+ for (base = name; *name; name++)
+ if (IS_DIR_SEPARATOR (*name))
+ base = name + 1;
+ return (char *) base;
+}
+
+char *
+fnqualify(const char *path)
+{
+ size_t size;
+ char *p;
+ char tmp[LT_PATHMAX + 1];
+
+ assert(path != NULL);
+
+ /* Is it qualified already? */
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ if (isalpha (path[0]) && path[1] == ':')
+ return xstrdup (path);
+#endif
+ if (IS_DIR_SEPARATOR (path[0]))
+ return xstrdup (path);
+
+ /* prepend the current directory */
+ /* doesn't handle '~' */
+ if (getcwd (tmp, LT_PATHMAX) == NULL)
+ lt_fatal ("getcwd failed");
+ size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */
+ p = XMALLOC(char, size);
+ sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path);
+ return p;
+}
+
+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 (strcmp(str, pat) == 0)
+ *str = '\0';
+ }
+ return str;
+}
+
+static void
+lt_error_core (int exit_status, const char * mode,
+ const char * message, va_list ap)
+{
+ fprintf (stderr, "%s: %s: ", program_name, mode);
+ vfprintf (stderr, message, ap);
+ fprintf (stderr, ".\n");
+
+ if (exit_status >= 0)
+ exit (exit_status);
+}
+
+void
+lt_fatal (const char *message, ...)
+{
+ va_list ap;
+ va_start (ap, message);
+ lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
+ va_end (ap);
+}
+EOF
+ # we should really use a build-platform specific compiler
+ # here, but OTOH, the wrappers (shell script and this C one)
+ # are only useful if you want to execute the "real" binary.
+ # Since the "real" binary is built for $host, then this
+ # wrapper might as well be built for $host, too.
+ $run $LTCC -s -o $cwrapper $cwrappersource
+ ;;
+ esac
+ $rm $output
+ trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
+
+ $echo > $output "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# 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.
+Xsed='${SED} -e 1s/^X//'
+sed_quote_subst='$sed_quote_subst'
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+ # install mode needs the following variable:
+ 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
+ echo=\"$qecho\"
+ file=\"\$0\"
+ # Make sure echo works.
+ if test \"X\$1\" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+ elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
+ # Yippee, \$echo works!
+ :
+ else
+ # Restart under the correct shell, and then maybe \$echo will work.
+ exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
+ fi
+ fi\
+"
+ $echo >> $output "\
+
+ # Find the directory that this script lives in.
+ thisdir=\`\$echo \"X\$file\" | \$Xsed -e '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 \"X\$file\" | \$Xsed -e '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 \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
+ file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
+ done
+
+ # Try to get the absolute directory name.
+ absdir=\`cd \"\$thisdir\" && pwd\`
+ test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+ if test "$fast_install" = yes; then
+ $echo >> $output "\
+ 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 >> $output "\
+
+ # 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 $EXIT_FAILURE
+ fi
+ fi
+
+ $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+ { $rm \"\$progdir/\$program\";
+ $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+ $rm \"\$progdir/\$file\"
+ fi"
+ else
+ $echo >> $output "\
+ program='$outputname'
+ progdir=\"\$thisdir/$objdir\"
+"
+ fi
+
+ $echo >> $output "\
+
+ if test -f \"\$progdir/\$program\"; then"
+
+ # Export our shlibpath_var if we have one.
+ if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+ $echo >> $output "\
+ # 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 \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
+
+ export $shlibpath_var
+"
+ fi
+
+ # fixup the dll searchpath if we need to.
+ if test -n "$dllsearchpath"; then
+ $echo >> $output "\
+ # Add the dll search path components to the executable PATH
+ PATH=$dllsearchpath:\$PATH
+"
+ fi
+
+ $echo >> $output "\
+ if test \"\$libtool_execute_magic\" != \"$magic\"; then
+ # Run the actual program with our arguments.
+"
+ case $host in
+ # Backslashes separate directories on plain windows
+ *-*-mingw | *-*-os2*)
+ $echo >> $output "\
+ exec \$progdir\\\\\$program \${1+\"\$@\"}
+"
+ ;;
+
+ *)
+ $echo >> $output "\
+ exec \$progdir/\$program \${1+\"\$@\"}
+"
+ ;;
+ esac
+ $echo >> $output "\
+ \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
+ exit $EXIT_FAILURE
+ 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 $EXIT_FAILURE
+ fi
+fi\
+"
+ chmod +x $output
+ fi
+ exit $EXIT_SUCCESS
+ ;;
+ esac
+
+ # See if we need to build an old-fashioned archive.
+ for oldlib in $oldlibs; do
+
+ if test "$build_libtool_libs" = convenience; then
+ oldobjs="$libobjs_save"
+ addlibs="$convenience"
+ build_libtool_libs=no
+ else
+ if test "$build_libtool_libs" = module; then
+ oldobjs="$libobjs_save"
+ build_libtool_libs=no
+ else
+ oldobjs="$old_deplibs $non_pic_objects"
+ fi
+ addlibs="$old_convenience"
+ fi
+
+ if test -n "$addlibs"; then
+ gentop="$output_objdir/${outputname}x"
+ $show "${rm}r $gentop"
+ $run ${rm}r "$gentop"
+ $show "$mkdir $gentop"
+ $run $mkdir "$gentop"
+ status=$?
+ if test "$status" -ne 0 && test ! -d "$gentop"; then
+ exit $status
+ fi
+ generated="$generated $gentop"
+
+ # Add in members from convenience archives.
+ for xlib in $addlibs; do
+ # Extract the objects.
+ case $xlib in
+ [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+ *) xabs=`pwd`"/$xlib" ;;
+ esac
+ xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+ xdir="$gentop/$xlib"
+
+ $show "${rm}r $xdir"
+ $run ${rm}r "$xdir"
+ $show "$mkdir $xdir"
+ $run $mkdir "$xdir"
+ status=$?
+ if test "$status" -ne 0 && test ! -d "$xdir"; then
+ exit $status
+ fi
+ # We will extract separately just the conflicting names and we will no
+ # longer touch any unique names. It is faster to leave these extract
+ # automatically by $AR in one run.
+ $show "(cd $xdir && $AR x $xabs)"
+ $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+ if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then
+ :
+ else
+ $echo "$modename: warning: object name conflicts; renaming object files" 1>&2
+ $echo "$modename: warning: to ensure that they will not overwrite" 1>&2
+ $AR t "$xabs" | sort | uniq -cd | while read -r count name
+ do
+ i=1
+ while test "$i" -le "$count"
+ do
+ # Put our $i before any first dot (extension)
+ # Never overwrite any file
+ name_to="$name"
+ while test "X$name_to" = "X$name" || test -f "$xdir/$name_to"
+ do
+ name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"`
+ done
+ $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')"
+ $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $?
+ i=`expr $i + 1`
+ done
+ done
+ fi
+
+ oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP`
+ done
+ fi
+
+ # Do each command in the archive commands.
+ if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+ cmds=$old_archive_from_new_cmds
+ else
+ eval cmds=\"$old_archive_cmds\"
+
+ if len=`expr "X$cmds" : ".*"` &&
+ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ cmds=$old_archive_cmds
+ else
+ # the command line is too long to link in one step, link in parts
+ $echo "using piecewise archive linking..."
+ save_RANLIB=$RANLIB
+ RANLIB=:
+ objlist=
+ concat_cmds=
+ save_oldobjs=$oldobjs
+ # GNU ar 2.10+ was changed to match POSIX; thus no paths are
+ # encoded into archives. This makes 'ar r' malfunction in
+ # this piecewise linking case whenever conflicting object
+ # names appear in distinct ar calls; check, warn and compensate.
+ if (for obj in $save_oldobjs
+ do
+ $echo "X$obj" | $Xsed -e 's%^.*/%%'
+ done | sort | sort -uc >/dev/null 2>&1); then
+ :
+ else
+ $echo "$modename: warning: object name conflicts; overriding AR_FLAGS to 'cq'" 1>&2
+ $echo "$modename: warning: to ensure that POSIX-compatible ar will work" 1>&2
+ AR_FLAGS=cq
+ fi
+ # Is there a better way of finding the last object in the list?
+ for obj in $save_oldobjs
+ do
+ last_oldobj=$obj
+ done
+ for obj in $save_oldobjs
+ do
+ oldobjs="$objlist $obj"
+ objlist="$objlist $obj"
+ eval test_cmds=\"$old_archive_cmds\"
+ if len=`expr "X$test_cmds" : ".*"` &&
+ test "$len" -le "$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=
+ fi
+ done
+ RANLIB=$save_RANLIB
+ oldobjs=$objlist
+ if test "X$oldobjs" = "X" ; then
+ eval cmds=\"\$concat_cmds\"
+ else
+ eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
+ fi
+ fi
+ fi
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ eval cmd=\"$cmd\"
+ IFS="$save_ifs"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ done
+
+ if test -n "$generated"; then
+ $show "${rm}r$generated"
+ $run ${rm}r$generated
+ fi
+
+ # Now create the libtool archive.
+ case $output in
+ *.la)
+ old_library=
+ test "$build_old_libs" = yes && old_library="$libname.$libext"
+ $show "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}\" || 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
+ var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+ relink_command="$var=\"$var_value\"; 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 "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+ if test "$hardcode_automatic" = yes ; then
+ relink_command=
+ fi
+
+
+ # Only create the output if not a dry run.
+ if test -z "$run"; then
+ for installed in no yes; do
+ if test "$installed" = yes; 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)
+ name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ newdependency_libs="$newdependency_libs $libdir/$name"
+ ;;
+ *) newdependency_libs="$newdependency_libs $deplib" ;;
+ esac
+ done
+ dependency_libs="$newdependency_libs"
+ newdlfiles=
+ for lib in $dlfiles; do
+ name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ newdlfiles="$newdlfiles $libdir/$name"
+ done
+ dlfiles="$newdlfiles"
+ newdlprefiles=
+ for lib in $dlprefiles; do
+ name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ newdlprefiles="$newdlprefiles $libdir/$name"
+ done
+ dlprefiles="$newdlprefiles"
+ else
+ newdlfiles=
+ for lib in $dlfiles; do
+ case $lib in
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+ newdlfiles="$newdlfiles $abs"
+ done
+ dlfiles="$newdlfiles"
+ newdlprefiles=
+ for lib in $dlprefiles; do
+ case $lib in
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+ newdlprefiles="$newdlprefiles $abs"
+ done
+ dlprefiles="$newdlprefiles"
+ fi
+ $rm $output
+ # place dlname in correct position for cygwin
+ tdlname=$dlname
+ case $host,$output,$installed,$module,$dlname in
+ *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+ esac
+ $echo > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# 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'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_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 "$installed" = no && test "$need_relink" = yes; then
+ $echo >> $output "\
+relink_command=\"$relink_command\""
+ fi
+ done
+ fi
+
+ # Do a symbolic link so that the libtool archive can be found in
+ # LD_LIBRARY_PATH before the program is installed.
+ $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
+ $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
+ ;;
+ esac
+ exit $EXIT_SUCCESS
+ ;;
+
+ # libtool install mode
+ install)
+ modename="$modename: install"
+
+ # There may be an optional sh(1) argument at the beginning of
+ # install_prog (especially on Windows NT).
+ if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+ # Allow the use of GNU shtool's install command.
+ $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then
+ # Aesthetically quote it.
+ arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
+ arg="\"$arg\""
+ ;;
+ esac
+ install_prog="$arg "
+ arg="$1"
+ shift
+ else
+ install_prog=
+ arg="$nonopt"
+ fi
+
+ # The real first argument should be the name of the installation program.
+ # Aesthetically quote it.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
+ arg="\"$arg\""
+ ;;
+ esac
+ install_prog="$install_prog$arg"
+
+ # We need to accept at least all the BSD install flags.
+ dest=
+ files=
+ opts=
+ prev=
+ install_type=
+ isdir=no
+ stripme=
+ for arg
+ do
+ if test -n "$dest"; then
+ files="$files $dest"
+ dest="$arg"
+ continue
+ fi
+
+ case $arg in
+ -d) isdir=yes ;;
+ -f) prev="-f" ;;
+ -g) prev="-g" ;;
+ -m) prev="-m" ;;
+ -o) prev="-o" ;;
+ -s)
+ stripme=" -s"
+ continue
+ ;;
+ -*) ;;
+
+ *)
+ # If the previous option needed an argument, then skip it.
+ if test -n "$prev"; then
+ prev=
+ else
+ dest="$arg"
+ continue
+ fi
+ ;;
+ esac
+
+ # Aesthetically quote the argument.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
+ arg="\"$arg\""
+ ;;
+ esac
+ install_prog="$install_prog $arg"
+ done
+
+ if test -z "$install_prog"; then
+ $echo "$modename: you must specify an install program" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ if test -n "$prev"; then
+ $echo "$modename: the \`$prev' option requires an argument" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ if test -z "$files"; then
+ if test -z "$dest"; then
+ $echo "$modename: no file or destination specified" 1>&2
+ else
+ $echo "$modename: you must specify a destination" 1>&2
+ fi
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Strip any trailing slash from the destination.
+ dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
+
+ # Check to see that the destination is a directory.
+ test -d "$dest" && isdir=yes
+ if test "$isdir" = yes; then
+ destdir="$dest"
+ destname=
+ else
+ destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$destdir" = "X$dest" && destdir=.
+ destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
+
+ # Not a directory, so check to see that there is only one file specified.
+ set dummy $files
+ if test "$#" -gt 2; then
+ $echo "$modename: \`$dest' is not a directory" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ fi
+ case $destdir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ for file in $files; do
+ case $file in
+ *.lo) ;;
+ *)
+ $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ 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.
+ staticlibs="$staticlibs $file"
+ ;;
+
+ *.la)
+ # Check to see that this really is a libtool archive.
+ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+ else
+ $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ library_names=
+ old_library=
+ relink_command=
+ # If there is no directory component, then add one.
+ case $file in
+ */* | *\\*) . $file ;;
+ *) . ./$file ;;
+ esac
+
+ # Add the libdir to current_libdirs if it is the destination.
+ if test "X$destdir" = "X$libdir"; then
+ case "$current_libdirs " in
+ *" $libdir "*) ;;
+ *) current_libdirs="$current_libdirs $libdir" ;;
+ esac
+ else
+ # Note the libdir as a future libdir.
+ case "$future_libdirs " in
+ *" $libdir "*) ;;
+ *) future_libdirs="$future_libdirs $libdir" ;;
+ esac
+ fi
+
+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
+ test "X$dir" = "X$file/" && dir=
+ dir="$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 "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.
+ if test "$inst_prefix_dir" = "$destdir"; then
+ $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ 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
+
+ $echo "$modename: warning: relinking \`$file'" 1>&2
+ $show "$relink_command"
+ if $run eval "$relink_command"; then :
+ else
+ $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ fi
+
+ # See the names of the shared library.
+ set dummy $library_names
+ if test -n "$2"; then
+ realname="$2"
+ shift
+ shift
+
+ srcname="$realname"
+ test -n "$relink_command" && srcname="$realname"T
+
+ # Install the shared library and build the symlinks.
+ $show "$install_prog $dir/$srcname $destdir/$realname"
+ $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
+ if test -n "$stripme" && test -n "$striplib"; then
+ $show "$striplib $destdir/$realname"
+ $run eval "$striplib $destdir/$realname" || exit $?
+ fi
+
+ if test "$#" -gt 0; then
+ # Delete the old symlinks, and create new ones.
+ for linkname
+ do
+ if test "$linkname" != "$realname"; then
+ $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+ $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+ fi
+ done
+ fi
+
+ # Do each command in the postinstall commands.
+ lib="$destdir/$realname"
+ cmds=$postinstall_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ fi
+
+ # Install the pseudo-library for information purposes.
+ name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ instname="$dir/$name"i
+ $show "$install_prog $instname $destdir/$name"
+ $run eval "$install_prog $instname $destdir/$name" || exit $?
+
+ # Maybe install the static library, too.
+ test -n "$old_library" && staticlibs="$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
+ destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ destfile="$destdir/$destfile"
+ fi
+
+ # Deduce the name of the destination old-style object file.
+ case $destfile in
+ *.lo)
+ staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
+ ;;
+ *.$objext)
+ staticdest="$destfile"
+ destfile=
+ ;;
+ *)
+ $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ # Install the libtool object if requested.
+ if test -n "$destfile"; then
+ $show "$install_prog $file $destfile"
+ $run eval "$install_prog $file $destfile" || exit $?
+ fi
+
+ # Install the old object if enabled.
+ if test "$build_old_libs" = yes; then
+ # Deduce the name of the old-style object file.
+ staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
+
+ $show "$install_prog $staticobj $staticdest"
+ $run 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
+ destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ 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
+ file=`$echo $file|${SED} 's,.exe$,,'`
+ stripped_ext=".exe"
+ fi
+ ;;
+ esac
+
+ # Do a test to see if this is really a libtool program.
+ case $host in
+ *cygwin*|*mingw*)
+ wrapper=`$echo $file | ${SED} -e 's,.exe$,,'`
+ ;;
+ *)
+ wrapper=$file
+ ;;
+ esac
+ if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
+ notinst_deplibs=
+ relink_command=
+
+ # To insure that "foo" is sourced, and not "foo.exe",
+ # finese the cygwin/MSYS system by explicitly sourcing "foo."
+ # which disallows the automatic-append-.exe behavior.
+ case $build in
+ *cygwin* | *mingw*) wrapperdot=${wrapper}. ;;
+ *) wrapperdot=${wrapper} ;;
+ esac
+ # If there is no directory component, then add one.
+ case $file in
+ */* | *\\*) . ${wrapperdot} ;;
+ *) . ./${wrapperdot} ;;
+ esac
+
+ # Check the variables that should have been set.
+ if test -z "$notinst_deplibs"; then
+ $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ finalize=yes
+ for lib in $notinst_deplibs; do
+ # Check to see that each library is installed.
+ libdir=
+ if test -f "$lib"; then
+ # If there is no directory component, then add one.
+ case $lib in
+ */* | *\\*) . $lib ;;
+ *) . ./$lib ;;
+ esac
+ fi
+ libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
+ if test -n "$libdir" && test ! -f "$libfile"; then
+ $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
+ finalize=no
+ fi
+ done
+
+ relink_command=
+ # To insure that "foo" is sourced, and not "foo.exe",
+ # finese the cygwin/MSYS system by explicitly sourcing "foo."
+ # which disallows the automatic-append-.exe behavior.
+ case $build in
+ *cygwin* | *mingw*) wrapperdot=${wrapper}. ;;
+ *) wrapperdot=${wrapper} ;;
+ esac
+ # If there is no directory component, then add one.
+ case $file in
+ */* | *\\*) . ${wrapperdot} ;;
+ *) . ./${wrapperdot} ;;
+ esac
+
+ outputname=
+ if test "$fast_install" = no && test -n "$relink_command"; then
+ if test "$finalize" = yes && test -z "$run"; then
+ tmpdir="/tmp"
+ test -n "$TMPDIR" && tmpdir="$TMPDIR"
+ tmpdir="$tmpdir/libtool-$$"
+ save_umask=`umask`
+ umask 0077
+ if $mkdir "$tmpdir"; then
+ umask $save_umask
+ else
+ umask $save_umask
+ $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
+ continue
+ fi
+ file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
+ outputname="$tmpdir/$file"
+ # Replace the output file specification.
+ relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+
+ $show "$relink_command"
+ if $run eval "$relink_command"; then :
+ else
+ $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+ ${rm}r "$tmpdir"
+ continue
+ fi
+ file="$outputname"
+ else
+ $echo "$modename: warning: cannot relink \`$file'" 1>&2
+ fi
+ else
+ # Install the binary that we compiled earlier.
+ file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
+ fi
+ fi
+
+ # remove .exe since cygwin /usr/bin/install will append another
+ # one anyways
+ case $install_prog,$host in
+ */usr/bin/install*,*cygwin*)
+ case $file:$destfile in
+ *.exe:*.exe)
+ # this is ok
+ ;;
+ *.exe:*)
+ destfile=$destfile.exe
+ ;;
+ *:*.exe)
+ destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'`
+ ;;
+ esac
+ ;;
+ esac
+ $show "$install_prog$stripme $file $destfile"
+ $run eval "$install_prog\$stripme \$file \$destfile" || exit $?
+ test -n "$outputname" && ${rm}r "$tmpdir"
+ ;;
+ esac
+ done
+
+ for file in $staticlibs; do
+ name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+
+ # Set up the ranlib parameters.
+ oldlib="$destdir/$name"
+
+ $show "$install_prog $file $oldlib"
+ $run eval "$install_prog \$file \$oldlib" || exit $?
+
+ if test -n "$stripme" && test -n "$old_striplib"; then
+ $show "$old_striplib $oldlib"
+ $run eval "$old_striplib $oldlib" || exit $?
+ fi
+
+ # Do each command in the postinstall commands.
+ cmds=$old_postinstall_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ done
+
+ if test -n "$future_libdirs"; then
+ $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
+ fi
+
+ if test -n "$current_libdirs"; then
+ # Maybe just do a dry run.
+ test -n "$run" && current_libdirs=" -n$current_libdirs"
+ exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+ else
+ exit $EXIT_SUCCESS
+ fi
+ ;;
+
+ # libtool finish mode
+ finish)
+ modename="$modename: finish"
+ libdirs="$nonopt"
+ admincmds=
+
+ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+ for dir
+ do
+ libdirs="$libdirs $dir"
+ done
+
+ for libdir in $libdirs; do
+ if test -n "$finish_cmds"; then
+ # Do each command in the finish commands.
+ cmds=$finish_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || admincmds="$admincmds
+ $cmd"
+ done
+ IFS="$save_ifs"
+ fi
+ if test -n "$finish_eval"; then
+ # Do the single finish_eval.
+ eval cmds=\"$finish_eval\"
+ $run eval "$cmds" || admincmds="$admincmds
+ $cmds"
+ fi
+ done
+ fi
+
+ # Exit here if they wanted silent mode.
+ test "$show" = : && exit $EXIT_SUCCESS
+
+ $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"
+ $echo "more information, such as the ld(1) and ld.so(8) manual pages."
+ $echo "----------------------------------------------------------------------"
+ exit $EXIT_SUCCESS
+ ;;
+
+ # libtool execute mode
+ execute)
+ modename="$modename: execute"
+
+ # The first argument is the command name.
+ cmd="$nonopt"
+ if test -z "$cmd"; then
+ $echo "$modename: you must specify a COMMAND" 1>&2
+ $echo "$help"
+ exit $EXIT_FAILURE
+ fi
+
+ # Handle -dlopen flags immediately.
+ for file in $execute_dlfiles; do
+ if test ! -f "$file"; then
+ $echo "$modename: \`$file' is not a file" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ dir=
+ case $file in
+ *.la)
+ # Check to see that this really is a libtool archive.
+ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+ else
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Read the libtool library.
+ dlname=
+ library_names=
+
+ # If there is no directory component, then add one.
+ case $file in
+ */* | *\\*) . $file ;;
+ *) . ./$file ;;
+ esac
+
+ # Skip this library if it cannot be dlopened.
+ if test -z "$dlname"; then
+ # Warn if it was a shared library.
+ test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
+ continue
+ fi
+
+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$dir" = "X$file" && dir=.
+
+ if test -f "$dir/$objdir/$dlname"; then
+ dir="$dir/$objdir"
+ else
+ $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ ;;
+
+ *.lo)
+ # Just add the directory containing the .lo file.
+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$dir" = "X$file" && dir=.
+ ;;
+
+ *)
+ $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
+ 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
+ -*) ;;
+ *)
+ # Do a test to see if this is really a libtool program.
+ if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ # If there is no directory component, then add one.
+ case $file in
+ */* | *\\*) . $file ;;
+ *) . ./$file ;;
+ esac
+
+ # Transform arg to wrapped name.
+ file="$progdir/$program"
+ fi
+ ;;
+ esac
+ # Quote arguments (to preserve shell metacharacters).
+ file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
+ args="$args \"$file\""
+ done
+
+ if test -z "$run"; then
+ if test -n "$shlibpath_var"; then
+ # Export the shlibpath_var.
+ eval "export $shlibpath_var"
+ fi
+
+ # Restore saved environment variables
+ if test "${save_LC_ALL+set}" = set; then
+ LC_ALL="$save_LC_ALL"; export LC_ALL
+ fi
+ if test "${save_LANG+set}" = set; then
+ LANG="$save_LANG"; export LANG
+ fi
+
+ # Now prepare to actually exec the command.
+ exec_cmd="\$cmd$args"
+ else
+ # 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
+ fi
+ ;;
+
+ # libtool clean and uninstall mode
+ clean | uninstall)
+ modename="$modename: $mode"
+ rm="$nonopt"
+ files=
+ rmforce=
+ 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) rm="$rm $arg"; rmforce=yes ;;
+ -*) rm="$rm $arg" ;;
+ *) files="$files $arg" ;;
+ esac
+ done
+
+ if test -z "$rm"; then
+ $echo "$modename: you must specify an RM program" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ rmdirs=
+
+ origobjdir="$objdir"
+ for file in $files; do
+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$dir" = "X$file"; then
+ dir=.
+ objdir="$origobjdir"
+ else
+ objdir="$dir/$origobjdir"
+ fi
+ name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ test "$mode" = uninstall && objdir="$dir"
+
+ # Remember objdir for removal later, being careful to avoid duplicates
+ if test "$mode" = clean; then
+ case " $rmdirs " in
+ *" $objdir "*) ;;
+ *) rmdirs="$rmdirs $objdir" ;;
+ 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 test "$rmforce" = yes; then
+ continue
+ fi
+
+ rmfiles="$file"
+
+ case $name in
+ *.la)
+ # Possibly a libtool archive, so verify it.
+ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ . $dir/$name
+
+ # Delete the libtool libraries and symlinks.
+ for n in $library_names; do
+ rmfiles="$rmfiles $objdir/$n"
+ done
+ test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+ test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+
+ if test "$mode" = uninstall; then
+ if test -n "$library_names"; then
+ # Do each command in the postuninstall commands.
+ cmds=$postuninstall_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd"
+ if test "$?" -ne 0 && test "$rmforce" != yes; then
+ exit_status=1
+ fi
+ done
+ IFS="$save_ifs"
+ fi
+
+ if test -n "$old_library"; then
+ # Do each command in the old_postuninstall commands.
+ cmds=$old_postuninstall_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd"
+ if test "$?" -ne 0 && test "$rmforce" != yes; then
+ exit_status=1
+ fi
+ done
+ IFS="$save_ifs"
+ fi
+ # FIXME: should reinstall the best remaining shared library.
+ fi
+ fi
+ ;;
+
+ *.lo)
+ # Possibly a libtool object, so verify it.
+ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+
+ # Read the .lo file
+ . $dir/$name
+
+ # Add PIC object to the list of files to remove.
+ if test -n "$pic_object" \
+ && test "$pic_object" != none; then
+ rmfiles="$rmfiles $dir/$pic_object"
+ fi
+
+ # Add non-PIC object to the list of files to remove.
+ if test -n "$non_pic_object" \
+ && test "$non_pic_object" != none; then
+ rmfiles="$rmfiles $dir/$non_pic_object"
+ fi
+ fi
+ ;;
+
+ *)
+ if test "$mode" = clean ; then
+ noexename=$name
+ case $file in
+ *.exe)
+ file=`$echo $file|${SED} 's,.exe$,,'`
+ noexename=`$echo $name|${SED} 's,.exe$,,'`
+ # $file with .exe has already been added to rmfiles,
+ # add $file without .exe
+ rmfiles="$rmfiles $file"
+ ;;
+ esac
+ # Do a test to see if this is a libtool program.
+ if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ relink_command=
+ . $dir/$noexename
+
+ # note $name still contains .exe if it was in $file originally
+ # as does the version of $file that was added into $rmfiles
+ rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+ if test "$fast_install" = yes && test -n "$relink_command"; then
+ rmfiles="$rmfiles $objdir/lt-$name"
+ fi
+ if test "X$noexename" != "X$name" ; then
+ rmfiles="$rmfiles $objdir/lt-${noexename}.c"
+ fi
+ fi
+ fi
+ ;;
+ esac
+ $show "$rm $rmfiles"
+ $run $rm $rmfiles || exit_status=1
+ done
+ objdir="$origobjdir"
+
+ # Try to remove the ${objdir}s in the directories where we deleted files
+ for dir in $rmdirs; do
+ if test -d "$dir"; then
+ $show "rmdir $dir"
+ $run rmdir $dir >/dev/null 2>&1
+ fi
+ done
+
+ exit $exit_status
+ ;;
+
+ "")
+ $echo "$modename: you must specify a MODE" 1>&2
+ $echo "$generic_help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ if test -z "$exec_cmd"; then
+ $echo "$modename: invalid operation mode \`$mode'" 1>&2
+ $echo "$generic_help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+fi # test -z "$show_help"
+
+if test -n "$exec_cmd"; then
+ eval exec $exec_cmd
+ exit $EXIT_FAILURE
+fi
+
+# We need to display help for each of the modes.
+case $mode in
+"") $echo \
+"Usage: $modename [OPTION]... [MODE-ARG]...
+
+Provide generalized library-building support services.
+
+ --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
+ --finish same as \`--mode=finish'
+ --help display this help message and exit
+ --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS]
+ --quiet same as \`--silent'
+ --silent don't print informational messages
+ --tag=TAG use configuration variables from tag TAG
+ --version print version information
+
+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. Try \`$modename --help --mode=MODE' for
+a more detailed description of MODE.
+
+Report bugs to <bug-libtool at gnu.org>."
+ exit $EXIT_SUCCESS
+ ;;
+
+clean)
+ $echo \
+"Usage: $modename [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: $modename [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
+ -prefer-pic try to building PIC objects only
+ -prefer-non-pic try to building non-PIC objects only
+ -static always build a \`.o' file suitable for static linking
+
+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: $modename [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: $modename [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: $modename [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 rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+ ;;
+
+link)
+ $echo \
+"Usage: $modename [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
+ -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
+ -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
+ -static do not do any dynamic linking of libtool libraries
+ -version-info CURRENT[:REVISION[:AGE]]
+ specify library version info [each variable defaults to 0]
+
+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: $modename [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."
+ ;;
+
+*)
+ $echo "$modename: invalid operation mode \`$mode'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+esac
+
+$echo
+$echo "Try \`$modename --help' for more information about other modes."
+
+exit $EXIT_SUCCESS
+
+# The TAGs below are defined such that we never get into a situation
+# in which 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:
Added: desktop/trunk/thunar/branches/upstream/current/missing
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/missing 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/missing 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,353 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+
+scriptversion=2004-09-07.08
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004
+# Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# 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
+
+run=:
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+ configure_ac=configure.ac
+else
+ configure_ac=configure.in
+fi
+
+msg="missing on your system"
+
+case "$1" in
+--run)
+ # Try to run requested program, and just exit if it succeeds.
+ run=
+ shift
+ "$@" && exit 0
+ # Exit code 63 means version mismatch. This often happens
+ # when the user try to use an ancient version of a tool on
+ # a file that requires a minimum version. In this case we
+ # we should proceed has if the program had been absent, or
+ # if --run hadn't been passed.
+ if test $? = 63; then
+ run=:
+ msg="probably too old"
+ fi
+ ;;
+
+ -h|--h|--he|--hel|--help)
+ echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+ -h, --help display this help and exit
+ -v, --version output version information and exit
+ --run try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+ aclocal touch file \`aclocal.m4'
+ autoconf touch file \`configure'
+ autoheader touch file \`config.h.in'
+ automake touch all \`Makefile.in' files
+ bison create \`y.tab.[ch]', if possible, from existing .[ch]
+ flex create \`lex.yy.c', if possible, from existing .c
+ help2man touch the output file
+ lex create \`lex.yy.c', if possible, from existing .c
+ makeinfo touch the output file
+ tar try tar, gnutar, gtar, then tar without non-portable flags
+ yacc create \`y.tab.[ch]', if possible, from existing .[ch]
+
+Send bug reports to <bug-automake at gnu.org>."
+ exit 0
+ ;;
+
+ -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+ echo "missing $scriptversion (GNU Automake)"
+ exit 0
+ ;;
+
+ -*)
+ echo 1>&2 "$0: Unknown \`$1' option"
+ echo 1>&2 "Try \`$0 --help' for more information"
+ exit 1
+ ;;
+
+esac
+
+# Now exit if we have it, but it failed. Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program).
+case "$1" in
+ lex|yacc)
+ # Not GNU programs, they don't have --version.
+ ;;
+
+ tar)
+ if test -n "$run"; then
+ echo 1>&2 "ERROR: \`tar' requires --run"
+ exit 1
+ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+ exit 1
+ fi
+ ;;
+
+ *)
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+ # We have it, but it failed.
+ exit 1
+ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+ # Could not run --version or --help. This is probably someone
+ # running `$TOOL --version' or `$TOOL --help' to check whether
+ # $TOOL exists and not knowing $TOOL uses missing.
+ exit 1
+ fi
+ ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case "$1" in
+ aclocal*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`acinclude.m4' or \`${configure_ac}'. You might want
+ to install the \`Automake' and \`Perl' packages. Grab them from
+ any GNU archive site."
+ touch aclocal.m4
+ ;;
+
+ autoconf)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`${configure_ac}'. You might want to install the
+ \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
+ archive site."
+ touch configure
+ ;;
+
+ autoheader)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`acconfig.h' or \`${configure_ac}'. You might want
+ to install the \`Autoconf' and \`GNU m4' packages. Grab them
+ from any GNU archive site."
+ files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+ test -z "$files" && files="config.h"
+ touch_files=
+ for f in $files; do
+ case "$f" in
+ *:*) touch_files="$touch_files "`echo "$f" |
+ sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+ *) touch_files="$touch_files $f.in";;
+ esac
+ done
+ touch $touch_files
+ ;;
+
+ automake*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+ You might want to install the \`Automake' and \`Perl' packages.
+ Grab them from any GNU archive site."
+ find . -type f -name Makefile.am -print |
+ sed 's/\.am$/.in/' |
+ while read f; do touch "$f"; done
+ ;;
+
+ autom4te)
+ echo 1>&2 "\
+WARNING: \`$1' is needed, but is $msg.
+ You might have modified some files without having the
+ proper tools for further handling them.
+ You can get \`$1' as part of \`Autoconf' from any GNU
+ archive site."
+
+ file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
+ test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
+ if test -f "$file"; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+ echo "#! /bin/sh"
+ echo "# Created by GNU Automake missing as a replacement of"
+ echo "# $ $@"
+ echo "exit 0"
+ chmod +x $file
+ exit 1
+ fi
+ ;;
+
+ bison|yacc)
+ echo 1>&2 "\
+WARNING: \`$1' $msg. You should only need it if
+ you modified a \`.y' file. You may need the \`Bison' package
+ in order for those modifications to take effect. You can get
+ \`Bison' from any GNU archive site."
+ rm -f y.tab.c y.tab.h
+ if [ $# -ne 1 ]; then
+ eval LASTARG="\${$#}"
+ case "$LASTARG" in
+ *.y)
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+ if [ -f "$SRCFILE" ]; then
+ cp "$SRCFILE" y.tab.c
+ fi
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+ if [ -f "$SRCFILE" ]; then
+ cp "$SRCFILE" y.tab.h
+ fi
+ ;;
+ esac
+ fi
+ if [ ! -f y.tab.h ]; then
+ echo >y.tab.h
+ fi
+ if [ ! -f y.tab.c ]; then
+ echo 'main() { return 0; }' >y.tab.c
+ fi
+ ;;
+
+ lex|flex)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a \`.l' file. You may need the \`Flex' package
+ in order for those modifications to take effect. You can get
+ \`Flex' from any GNU archive site."
+ rm -f lex.yy.c
+ if [ $# -ne 1 ]; then
+ eval LASTARG="\${$#}"
+ case "$LASTARG" in
+ *.l)
+ SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+ if [ -f "$SRCFILE" ]; then
+ cp "$SRCFILE" lex.yy.c
+ fi
+ ;;
+ esac
+ fi
+ if [ ! -f lex.yy.c ]; then
+ echo 'main() { return 0; }' >lex.yy.c
+ fi
+ ;;
+
+ help2man)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a dependency of a manual page. You may need the
+ \`Help2man' package in order for those modifications to take
+ effect. You can get \`Help2man' from any GNU archive site."
+
+ file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+ if test -z "$file"; then
+ file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
+ fi
+ if [ -f "$file" ]; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+ echo ".ab help2man is required to generate this page"
+ exit 1
+ fi
+ ;;
+
+ makeinfo)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a \`.texi' or \`.texinfo' file, or any other file
+ indirectly affecting the aspect of the manual. The spurious
+ call might also be the consequence of using a buggy \`make' (AIX,
+ DU, IRIX). You might want to install the \`Texinfo' package or
+ the \`GNU make' package. Grab either from any GNU archive site."
+ file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+ if test -z "$file"; then
+ file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+ file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
+ fi
+ touch $file
+ ;;
+
+ tar)
+ shift
+
+ # We have already tried tar in the generic part.
+ # Look for gnutar/gtar before invocation to avoid ugly error
+ # messages.
+ if (gnutar --version > /dev/null 2>&1); then
+ gnutar "$@" && exit 0
+ fi
+ if (gtar --version > /dev/null 2>&1); then
+ gtar "$@" && exit 0
+ fi
+ firstarg="$1"
+ if shift; then
+ case "$firstarg" in
+ *o*)
+ firstarg=`echo "$firstarg" | sed s/o//`
+ tar "$firstarg" "$@" && exit 0
+ ;;
+ esac
+ case "$firstarg" in
+ *h*)
+ firstarg=`echo "$firstarg" | sed s/h//`
+ tar "$firstarg" "$@" && exit 0
+ ;;
+ esac
+ fi
+
+ echo 1>&2 "\
+WARNING: I can't seem to be able to run \`tar' with the given arguments.
+ You may want to install GNU tar or Free paxutils, or check the
+ command line arguments."
+ exit 1
+ ;;
+
+ *)
+ echo 1>&2 "\
+WARNING: \`$1' is needed, and is $msg.
+ You might have modified some files without having the
+ proper tools for further handling them. Check the \`README' file,
+ it often tells you about the needed prerequisites for installing
+ this package. You may also peek at any GNU archive site, in case
+ some other package would contain this missing \`$1' program."
+ exit 1
+ ;;
+esac
+
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
Property changes on: desktop/trunk/thunar/branches/upstream/current/missing
___________________________________________________________________
Name: svn:executable
+
Added: desktop/trunk/thunar/branches/upstream/current/mkinstalldirs
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/mkinstalldirs 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/mkinstalldirs 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,111 @@
+#! /bin/sh
+# mkinstalldirs --- make directory hierarchy
+# Author: Noah Friedman <friedman at prep.ai.mit.edu>
+# Created: 1993-05-16
+# Public domain
+
+errstatus=0
+dirmode=""
+
+usage="\
+Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
+
+# process command line arguments
+while test $# -gt 0 ; do
+ case $1 in
+ -h | --help | --h*) # -h for help
+ echo "$usage" 1>&2
+ exit 0
+ ;;
+ -m) # -m PERM arg
+ shift
+ test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
+ dirmode=$1
+ shift
+ ;;
+ --) # stop option processing
+ shift
+ break
+ ;;
+ -*) # unknown option
+ echo "$usage" 1>&2
+ exit 1
+ ;;
+ *) # first non-opt arg
+ break
+ ;;
+ esac
+done
+
+for file
+do
+ if test -d "$file"; then
+ shift
+ else
+ break
+ fi
+done
+
+case $# in
+ 0) exit 0 ;;
+esac
+
+case $dirmode in
+ '')
+ if mkdir -p -- . 2>/dev/null; then
+ echo "mkdir -p -- $*"
+ exec mkdir -p -- "$@"
+ fi
+ ;;
+ *)
+ if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
+ echo "mkdir -m $dirmode -p -- $*"
+ exec mkdir -m "$dirmode" -p -- "$@"
+ fi
+ ;;
+esac
+
+for file
+do
+ set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
+ shift
+
+ pathcomp=
+ for d
+ do
+ pathcomp="$pathcomp$d"
+ case $pathcomp in
+ -*) pathcomp=./$pathcomp ;;
+ esac
+
+ if test ! -d "$pathcomp"; then
+ echo "mkdir $pathcomp"
+
+ mkdir "$pathcomp" || lasterr=$?
+
+ if test ! -d "$pathcomp"; then
+ errstatus=$lasterr
+ else
+ if test ! -z "$dirmode"; then
+ echo "chmod $dirmode $pathcomp"
+ lasterr=""
+ chmod "$dirmode" "$pathcomp" || lasterr=$?
+
+ if test ! -z "$lasterr"; then
+ errstatus=$lasterr
+ fi
+ fi
+ fi
+ fi
+
+ pathcomp="$pathcomp/"
+ done
+done
+
+exit $errstatus
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# End:
+# mkinstalldirs ends here
Property changes on: desktop/trunk/thunar/branches/upstream/current/mkinstalldirs
___________________________________________________________________
Name: svn:executable
+
Added: desktop/trunk/thunar/branches/upstream/current/pixmaps/Makefile.am
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/pixmaps/Makefile.am 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/pixmaps/Makefile.am 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,10 @@
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+
+pixmapsdir = $(datadir)/pixmaps/Thunar
+pixmaps_DATA = \
+ Thunar-about-logo.png
+
+EXTRA_DIST = \
+ $(pixmaps_DATA)
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
Added: desktop/trunk/thunar/branches/upstream/current/pixmaps/Makefile.in
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/pixmaps/Makefile.in 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/pixmaps/Makefile.in 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,462 @@
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004 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.
+
+ at SET_MAKE@
+
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+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@
+target_triplet = @target@
+subdir = pixmaps
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+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 = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(pixmapsdir)"
+pixmapsDATA_INSTALL = $(INSTALL_DATA)
+DATA = $(pixmaps_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CAIRO_REQUIRED_VERSION = @CAIRO_REQUIRED_VERSION@
+CAIRO_VERSION = @CAIRO_VERSION@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@
+ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@
+EXEEXT = @EXEEXT@
+EXO_CFLAGS = @EXO_CFLAGS@
+EXO_LIBS = @EXO_LIBS@
+EXO_REQUIRED_VERSION = @EXO_REQUIRED_VERSION@
+EXO_VERSION = @EXO_VERSION@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GCONF_CFLAGS = @GCONF_CFLAGS@
+GCONF_LIBS = @GCONF_LIBS@
+GCONF_REQUIRED_VERSION = @GCONF_REQUIRED_VERSION@
+GCONF_VERSION = @GCONF_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_REQUIRED_VERSION = @GLIB_REQUIRED_VERSION@
+GLIB_VERSION = @GLIB_VERSION@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTHREAD_REQUIRED_VERSION = @GTHREAD_REQUIRED_VERSION@
+GTHREAD_VERSION = @GTHREAD_VERSION@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+GTK_LIBS = @GTK_LIBS@
+GTK_REQUIRED_VERSION = @GTK_REQUIRED_VERSION@
+GTK_VERSION = @GTK_VERSION@
+HAVE_CAIRO_FALSE = @HAVE_CAIRO_FALSE@
+HAVE_CAIRO_TRUE = @HAVE_CAIRO_TRUE@
+HAVE_GCONF_FALSE = @HAVE_GCONF_FALSE@
+HAVE_GCONF_TRUE = @HAVE_GCONF_TRUE@
+HAVE_GNUC_VISIBILITY_FALSE = @HAVE_GNUC_VISIBILITY_FALSE@
+HAVE_GNUC_VISIBILITY_TRUE = @HAVE_GNUC_VISIBILITY_TRUE@
+HAVE_LIBSTARTUP_NOTIFICATION_FALSE = @HAVE_LIBSTARTUP_NOTIFICATION_FALSE@
+HAVE_LIBSTARTUP_NOTIFICATION_TRUE = @HAVE_LIBSTARTUP_NOTIFICATION_TRUE@
+HTML_DIR = @HTML_DIR@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LIBFAM_CFLAGS = @LIBFAM_CFLAGS@
+LIBFAM_LIBS = @LIBFAM_LIBS@
+LIBFAM_REQUIRED_VERSION = @LIBFAM_REQUIRED_VERSION@
+LIBFAM_VERSION = @LIBFAM_VERSION@
+LIBJPEG_CFLAGS = @LIBJPEG_CFLAGS@
+LIBJPEG_LIBS = @LIBJPEG_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
+LIBPNG_LIBS = @LIBPNG_LIBS@
+LIBPNG_REQUIRED_VERSION = @LIBPNG_REQUIRED_VERSION@
+LIBPNG_VERSION = @LIBPNG_VERSION@
+LIBS = @LIBS@
+LIBSTARTUP_NOTIFICATION_CFLAGS = @LIBSTARTUP_NOTIFICATION_CFLAGS@
+LIBSTARTUP_NOTIFICATION_LIBS = @LIBSTARTUP_NOTIFICATION_LIBS@
+LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION = @LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION@
+LIBSTARTUP_NOTIFICATION_VERSION = @LIBSTARTUP_NOTIFICATION_VERSION@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_CFLAGS = @PLATFORM_CFLAGS@
+PLATFORM_CPPFLAGS = @PLATFORM_CPPFLAGS@
+PLATFORM_LDFLAGS = @PLATFORM_LDFLAGS@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TDB_U32_TYPE = @TDB_U32_TYPE@
+THUNAR_VERINFO = @THUNAR_VERINFO@
+THUNAR_VERSION_API = @THUNAR_VERSION_API@
+THUNAR_VERSION_MAJOR = @THUNAR_VERSION_MAJOR@
+THUNAR_VERSION_MICRO = @THUNAR_VERSION_MICRO@
+THUNAR_VERSION_MINOR = @THUNAR_VERSION_MINOR@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_ARGS = @XGETTEXT_ARGS@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+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@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+pixmapsdir = $(datadir)/pixmaps/Thunar
+pixmaps_DATA = \
+ Thunar-about-logo.png
+
+EXTRA_DIST = \
+ $(pixmaps_DATA)
+
+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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu pixmaps/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu pixmaps/Makefile
+.PRECIOUS: 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
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+install-pixmapsDATA: $(pixmaps_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(pixmapsdir)" || $(mkdir_p) "$(DESTDIR)$(pixmapsdir)"
+ @list='$(pixmaps_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(pixmapsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pixmapsdir)/$$f'"; \
+ $(pixmapsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pixmapsdir)/$$f"; \
+ done
+
+uninstall-pixmapsDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pixmaps_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(pixmapsdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(pixmapsdir)/$$f"; \
+ done
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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 $(DATA)
+installdirs:
+ for dir in "$(DESTDIR)$(pixmapsdir)"; 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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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 distclean-libtool
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-pixmapsDATA
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+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-info-am uninstall-pixmapsDATA
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ distclean distclean-generic distclean-libtool distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-exec install-exec-am \
+ install-info install-info-am install-man install-pixmapsDATA \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ uninstall uninstall-am uninstall-info-am uninstall-pixmapsDATA
+
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
+# 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:
Added: desktop/trunk/thunar/branches/upstream/current/pixmaps/Thunar-about-logo.png
===================================================================
(Binary files differ)
Property changes on: desktop/trunk/thunar/branches/upstream/current/pixmaps/Thunar-about-logo.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: desktop/trunk/thunar/branches/upstream/current/po/ChangeLog
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/po/ChangeLog 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/po/ChangeLog 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,105 @@
+2005-10-30 Daichi Kawahata <daichi at xfce.org>
+
+ * Thunar.pot: Added again, because it requires for translators
+ who are grabbing PO files from `trunk-po' module, without POT
+ file, it's hard to create initial PO file from command line
+ (e.g. msginit) or with GUI tools (e.g. KBabel, poEdit).
+
+2005-10-16 Daichi Kawahata <daichi at xfce.org>
+
+ * de.po, el.po, es.po, hu.po, ja.po: Updated.
+
+2005-10-14 Daichi Kawahata <daichi at xfce.org>
+
+ * POTFILES.in: Added missing files.
+ * de.po, el.po, es.po, hu.po, ja.po: Updated with the latest source.
+
+2005-10-10 Daichi Kawahata <daichi at xfce.org>
+
+ * ja.po: Updated Japanese translations.
+
+2005-10-06 Daichi Kawahata <daichi at xfce.org>
+
+ * es.po: Fixed an error.
+ * ja.po: Updated Japanese translations.
+
+2005-10-03 Benedikt Meurer <benny at xfce.org>
+
+ * es.po: Add Spanish translations, thanks to Pablo Hernandez-M.
+ Saiz <homeless3d at gmail.com>.
+
+2005-09-30 Stavros Giannouris <stavrosg2002 at freemail.gr>
+
+ * el.po: Updated Greek translations.
+
+2005-09-27 Benedikt Meurer <benny at xfce.org>
+
+ * de.po: Add initial, incomplete translations.
+ * el.po, hu.po, ja.po: Update translations.
+
+2005-09-24 Daichi Kawahata <daichi at xfce.org>
+
+ * ja.po: Updated Japanese translations.
+ * ChangeLog: Style change so that Emacs also can color this file
+ correctly.
+
+2005-09-22 Benedikt Meurer <benny at xfce.org>
+
+ * de.po, el.po, hu.po, ja.po: Update po files.
+
+2005-09-15 Daichi Kawahata <daichi at xfce.org>
+
+ * ja.po: Corrected a typo. etc.
+
+2005-09-14 Daichi Kawahata <daichi at xfce.org>
+
+ * ja.po: Updated Japanese translations.
+
+2005-09-11 Benedikt Meurer <benny at xfce.org>
+
+ * POTFILES.in: Add thunarx/thunarx-property-page.c here.
+
+2005-08-28 Benedikt Meurer <benny at xfce.org>
+
+ * POTFILES.in: Remove thunar-vfs-mime.{c,h}.
+ * de.po, el.po, hu.po, ja.po: Update .po files.
+
+2005-08-23 Daichi Kawahata <daichi at xfce.org>
+
+ * ja.po: Updated Japanese translations.
+
+2005-08-18 Daichi Kawahata <daichi at xfce.org>
+
+ * ja.po: Updated Japanese translations.
+
+2005-08-11 Benedikt Meurer <benny at xfce.org>
+
+ * POTFILES.in: Add missing source files here, and remove obsolete
+ files. Add desktop file for Thunar.
+
+2005-08-07 Benedikt Meurer <benny at xfce.org>
+
+ * ja.po: Add initial Japanese translations, thanks to Daichi
+ Kawahata <daichi at xfce.org>. This fixes #1004.
+
+2005-08-05 Stavros Giannouris <stavrosg2002 at freemail.gr>
+
+ * el.po: Added a mostly complete Greek translation for Thunar.
+
+2005-08-04 Stavros Giannouris <stavrosg2002 at freemail.gr>
+
+ * el.po: Added el.po for Thunar.
+
+2005-08-04 Stavros Giannouris <stavrosg2002 at freemail.gr>
+
+ * de.po, hu.po: First test commit.
+
+2005-08-03 Benedikt Meurer <benny at xfce.org>
+
+ * hu.po: Add Hungarian translations, thanks to Szervac Attila
+ <sas at 321.hu>.
+
+2005-08-03 Benedikt Meurer <benny at xfce.org>
+
+ * ChangeLog, POTFILES.in, de.po: Add i18n support.
+
Added: desktop/trunk/thunar/branches/upstream/current/po/Makefile.in.in
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/po/Makefile.in.in 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/po/Makefile.in.in 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,257 @@
+# Makefile for program source directory in GNU NLS utilities package.
+# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper at gnu.ai.mit.edu>
+#
+# This file file be copied and used freely without restrictions. It can
+# be used in projects which are not available under the GNU Public License
+# but which still want to provide support for the GNU gettext functionality.
+# Please note that the actual code is *not* freely available.
+#
+# - Modified by Owen Taylor <otaylor at redhat.com> to use GETTEXT_PACKAGE
+# instead of PACKAGE and to look for po2tbl in ./ not in intl/
+#
+# - Modified by jacob berkman <jacob at ximian.com> to install
+# Makefile.in.in and po2tbl.sed.in for use with glib-gettextize
+
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+PACKAGE = @PACKAGE@
+VERSION = @VERSION@
+
+SHELL = /bin/sh
+ at SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+top_builddir = ..
+VPATH = @srcdir@
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+datadir = @datadir@
+libdir = @libdir@
+localedir = $(libdir)/locale
+gnulocaledir = $(datadir)/locale
+gettextsrcdir = $(datadir)/glib-2.0/gettext/po
+subdir = po
+install_sh = @install_sh@
+mkdir_p = @mkdir_p@
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+
+CC = @CC@
+GENCAT = @GENCAT@
+GMSGFMT = @GMSGFMT@
+MSGFMT = @MSGFMT@
+XGETTEXT_ARGS = @XGETTEXT_ARGS@
+XGETTEXT = @XGETTEXT@ $(XGETTEXT_ARGS)
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+MSGMERGE = XGETTEXT_ARGS="$(XGETTEXT_ARGS)" INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --dist
+GENPOT = XGETTEXT_ARGS="$(XGETTEXT_ARGS)" INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --pot
+
+DEFS = @DEFS@
+CFLAGS = @CFLAGS@
+CPPFLAGS = @CPPFLAGS@
+
+INCLUDES = -I.. -I$(top_srcdir)/intl
+
+COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
+
+SOURCES =
+POFILES = @POFILES@
+GMOFILES = @GMOFILES@
+DISTFILES = ChangeLog Makefile.in.in POTFILES.in \
+$(POFILES) $(GMOFILES) $(SOURCES)
+
+POTFILES = \
+
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+INSTOBJEXT = @INSTOBJEXT@
+
+.SUFFIXES:
+.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat
+
+.c.o:
+ $(COMPILE) $<
+
+.po.pox:
+ $(MAKE) $(GETTEXT_PACKAGE).pot
+ $(MSGMERGE) $< $(top_builddir)/po/$(GETTEXT_PACKAGE).pot -o $*pox
+
+.po.mo:
+ $(MSGFMT) -o $@ $<
+
+.po.gmo:
+ file=`echo $* | sed 's,.*/,,'`.gmo \
+ && rm -f $$file && $(GMSGFMT) -o $$file $<
+
+.po.cat:
+ sed -f ../intl/po2msg.sed < $< > $*.msg \
+ && rm -f $@ && $(GENCAT) $@ $*.msg
+
+
+all: all- at USE_NLS@
+
+all-yes: $(CATALOGS)
+all-no:
+
+$(GETTEXT_PACKAGE).pot: $(POTFILES)
+ $(GENPOT)
+
+install: install-exec install-data
+install-exec:
+install-data: install-data- at USE_NLS@
+install-data-no: all
+install-data-yes: all
+ if test -n "$(MKINSTALLDIRS)"; then \
+ $(MKINSTALLDIRS) $(DESTDIR)$(datadir); \
+ else \
+ $(SHELL) $(top_srcdir)/mkinstalldirs $(DESTDIR)$(datadir); \
+ fi
+ @catalogs='$(CATALOGS)'; \
+ for cat in $$catalogs; do \
+ cat=`basename $$cat`; \
+ case "$$cat" in \
+ *.gmo) destdir=$(gnulocaledir);; \
+ *) destdir=$(localedir);; \
+ esac; \
+ lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
+ dir=$(DESTDIR)$$destdir/$$lang/LC_MESSAGES; \
+ if test -n "$(MKINSTALLDIRS)"; then \
+ $(MKINSTALLDIRS) $$dir; \
+ else \
+ $(SHELL) $(top_srcdir)/mkinstalldirs $$dir; \
+ fi; \
+ if test -r $$cat; then \
+ $(INSTALL_DATA) $$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
+ echo "installing $$cat as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \
+ else \
+ $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
+ echo "installing $(srcdir)/$$cat as" \
+ "$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \
+ fi; \
+ if test -r $$cat.m; then \
+ $(INSTALL_DATA) $$cat.m $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
+ echo "installing $$cat.m as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m"; \
+ else \
+ if test -r $(srcdir)/$$cat.m ; then \
+ $(INSTALL_DATA) $(srcdir)/$$cat.m \
+ $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
+ echo "installing $(srcdir)/$$cat as" \
+ "$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m"; \
+ else \
+ true; \
+ fi; \
+ fi; \
+ done
+ if test "$(PACKAGE)" = "glib"; then \
+ if test -n "$(MKINSTALLDIRS)"; then \
+ $(MKINSTALLDIRS) $(DESTDIR)$(gettextsrcdir); \
+ else \
+ $(SHELL) $(top_srcdir)/mkinstalldirs $(DESTDIR)$(gettextsrcdir); \
+ fi; \
+ $(INSTALL_DATA) $(srcdir)/Makefile.in.in \
+ $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
+ else \
+ : ; \
+ fi
+
+# Define this as empty until I found a useful application.
+installcheck:
+
+uninstall:
+ catalogs='$(CATALOGS)'; \
+ for cat in $$catalogs; do \
+ cat=`basename $$cat`; \
+ lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
+ rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
+ rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
+ rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
+ rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
+ done
+ if test "$(PACKAGE)" = "glib"; then \
+ rm -f $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
+ fi
+
+check: all
+
+dvi info tags TAGS ID:
+
+mostlyclean:
+ rm -f core core.* *.pox $(GETTEXT_PACKAGE).pot *.old.po cat-id-tbl.tmp
+ rm -fr *.o
+ rm -f .intltool-merge-cache
+
+clean: mostlyclean
+
+distclean: clean
+ rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m
+
+maintainer-clean: distclean
+ @echo "This command is intended for maintainers to use;"
+ @echo "it deletes files that may require special tools to rebuild."
+ rm -f $(GMOFILES)
+
+distdir = ../$(GETTEXT_PACKAGE)-$(VERSION)/$(subdir)
+dist distdir: $(DISTFILES) $(GETTEXT_PACKAGE).pot
+ dists="$(DISTFILES)"; \
+ for file in $$dists; do \
+ ln $(srcdir)/$$file $(distdir) 2> /dev/null \
+ || cp -p $(srcdir)/$$file $(distdir); \
+ done
+
+update-po: Makefile
+ $(MAKE) $(GETTEXT_PACKAGE).pot
+ tmpdir=`pwd`; \
+ catalogs='$(CATALOGS)'; \
+ for cat in $$catalogs; do \
+ cat=`basename $$cat`; \
+ lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
+ echo "$$lang:"; \
+ result="`$(MSGMERGE) -o $$tmpdir/$$lang.new.po $$lang`"; \
+ if $$result; then \
+ if cmp $(srcdir)/$$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+ rm -f $$tmpdir/$$lang.new.po; \
+ else \
+ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+ :; \
+ else \
+ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+ rm -f $$tmpdir/$$lang.new.po; \
+ exit 1; \
+ fi; \
+ fi; \
+ else \
+ echo "msgmerge for $$cat failed!"; \
+ rm -f $$tmpdir/$$lang.new.po; \
+ fi; \
+ done
+
+# POTFILES is created from POTFILES.in by stripping comments, empty lines
+# and Intltool tags (enclosed in square brackets), and appending a full
+# relative path to them
+POTFILES: POTFILES.in
+ ( if test 'x$(srcdir)' != 'x.'; then \
+ posrcprefix='$(top_srcdir)/'; \
+ else \
+ posrcprefix="../"; \
+ fi; \
+ rm -f $@-t $@ \
+ && (sed -e '/^#/d' \
+ -e "s/^\[.*\] +//" \
+ -e '/^[ ]*$$/d' \
+ -e "s at .*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \
+ | sed -e '$$s/\\$$//') > $@-t \
+ && chmod a-w $@-t \
+ && mv $@-t $@ )
+
+Makefile: Makefile.in.in ../config.status POTFILES
+ cd .. \
+ && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \
+ $(SHELL) ./config.status
+
+# Tell versions [3.59,3.63) of GNU make not to export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
Added: desktop/trunk/thunar/branches/upstream/current/po/POTFILES.in
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/po/POTFILES.in 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/po/POTFILES.in 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,75 @@
+thunar-vfs/thunar-vfs-config.c
+thunar-vfs/thunar-vfs-exec.c
+thunar-vfs/thunar-vfs-info.c
+thunar-vfs/thunar-vfs-interactive-job.c
+thunar-vfs/thunar-vfs-job.c
+thunar-vfs/thunar-vfs-link-job.c
+thunar-vfs/thunar-vfs-listdir-job.c
+thunar-vfs/thunar-vfs-mime-application.c
+thunar-vfs/thunar-vfs-mime-cache.c
+thunar-vfs/thunar-vfs-mime-database.c
+thunar-vfs/thunar-vfs-mime-info.c
+thunar-vfs/thunar-vfs-mime-legacy.c
+thunar-vfs/thunar-vfs-mime-parser.c
+thunar-vfs/thunar-vfs-mime-provider.c
+thunar-vfs/thunar-vfs-mime-sniffer.c
+thunar-vfs/thunar-vfs-mkdir-job.c
+thunar-vfs/thunar-vfs-monitor.c
+thunar-vfs/thunar-vfs-path.c
+thunar-vfs/thunar-vfs-scandir.c
+thunar-vfs/thunar-vfs-thumb-jpeg.c
+thunar-vfs/thunar-vfs-thumb.c
+thunar-vfs/thunar-vfs-transfer-job.c
+thunar-vfs/thunar-vfs-unlink-job.c
+thunar-vfs/thunar-vfs-user.c
+thunar-vfs/thunar-vfs-util.c
+thunar-vfs/thunar-vfs-volume-bsd.c
+thunar-vfs/thunar-vfs-volume-sysv.c
+thunar-vfs/thunar-vfs-xfer.c
+thunar-vfs/thunar-vfs.c
+
+thunar/main.c
+thunar/thunar-application.c
+thunar/thunar-chooser-dialog.c
+thunar/thunar-chooser-model.c
+thunar/thunar-clipboard-manager.c
+thunar/thunar-create-dialog.c
+thunar/thunar-details-view.c
+thunar/thunar-dialogs.c
+thunar/thunar-dnd.c
+thunar/thunar-emblem-chooser.c
+thunar/thunar-extension-manager.c
+thunar/thunar-favourites-model.c
+thunar/thunar-favourites-pane.c
+thunar/thunar-favourites-view.c
+thunar/thunar-file.c
+thunar/thunar-folder.c
+thunar/thunar-gdk-pixbuf-extensions.c
+thunar/thunar-gtk-extensions.c
+thunar/thunar-icon-factory.c
+thunar/thunar-icon-renderer.c
+thunar/thunar-icon-view.c
+thunar/thunar-launcher.c
+thunar/thunar-list-model.c
+thunar/thunar-location-bar.c
+thunar/thunar-location-buttons.c
+thunar/thunar-location-dialog.c
+thunar/thunar-location-entry.c
+thunar/thunar-metafile.c
+thunar/thunar-navigator.c
+thunar/thunar-open-with-action.c
+thunar/thunar-path-entry.c
+thunar/thunar-preferences.c
+thunar/thunar-progress-dialog.c
+thunar/thunar-properties-dialog.c
+thunar/thunar-side-pane.c
+thunar/thunar-standard-view.c
+thunar/thunar-statusbar.c
+thunar/thunar-text-renderer.c
+thunar/thunar-thumbnail-generator.c
+thunar/thunar-view.c
+thunar/thunar-window.c
+
+thunarx/thunarx-property-page.c
+
+Thunar.desktop.in
Added: desktop/trunk/thunar/branches/upstream/current/po/de.gmo
===================================================================
(Binary files differ)
Property changes on: desktop/trunk/thunar/branches/upstream/current/po/de.gmo
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: desktop/trunk/thunar/branches/upstream/current/po/de.po
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/po/de.po 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/po/de.po 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,1341 @@
+# German translations for Thunar.
+# Copyright (C) 2004-2005 Benedikt Meurer.
+# This file is distributed under the same license as the Thunar package.
+# Benedikt Meurer <benny at xfce.org>, 2005
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Thunar 0.1.2svn\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-11-14 15:38+0100\n"
+"PO-Revision-Date: 2005-10-06 22:03+0900\n"
+"Last-Translator: Benedikt Meurer <benny at xfce.org>\n"
+"Language-Team: German <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../thunar-vfs/thunar-vfs-info.c:261
+msgid "No Exec field specified"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-info.c:269
+msgid "Unable to parse file"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-info.c:359
+msgid "Invalid file name"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-info.c:381
+msgid "Invalid desktop file"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-info.c:615
+#, c-format
+msgid "Failed to stat file `%s': %s"
+msgstr ""
+
+#. ask the user whether we should remove the target first
+#. ask the user whether to overwrite
+#: ../thunar-vfs/thunar-vfs-link-job.c:176
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:685
+#, c-format
+msgid ""
+"%s.\n"
+"\n"
+"Do you want to overwrite it?"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-link-job.c:200
+#, c-format
+msgid "Failed to remove `%s': %s"
+msgstr ""
+
+#. ask the user whether to skip this file (used for cancellation only)
+#. ask the user whether to skip
+#: ../thunar-vfs/thunar-vfs-link-job.c:212
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:705
+#, c-format
+msgid ""
+"%s.\n"
+"\n"
+"Do you want to skip it?"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-mime-database.c:1625
+#, c-format
+msgid "Failed to load application from file %s"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-mime-info.c:228
+#, c-format
+msgid "%s document"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-mkdir-job.c:165
+#, c-format
+msgid "Unable to create directory `%s': %s"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-path.c:657
+msgid "Path too long to fit into buffer"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-path.c:761
+msgid "URI too long to fit into buffer"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-thumb.c:144 ../thunar/thunar-details-view.c:150
+msgid "Size"
+msgstr "GröÃe"
+
+#: ../thunar-vfs/thunar-vfs-thumb.c:145
+msgid "The desired thumbnail size"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:233
+msgid "Collecting files..."
+msgstr ""
+
+#. display info message
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:295
+#, fuzzy
+msgid "Deleting directories..."
+msgstr "Detailierte Verzeichnisansicht"
+
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:315
+#, c-format
+msgid "Unable to remove directory `%s': %s"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:593
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:639
+#, c-format
+msgid "Unable to remove `%s': %s"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:831
+msgid "Cannot transfer the root directory"
+msgstr ""
+
+#. tell the user that we're preparing the unlink job
+#: ../thunar-vfs/thunar-vfs-unlink-job.c:161
+msgid "Preparing..."
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-unlink-job.c:234
+#, c-format
+msgid ""
+"Unable to remove %s.\n"
+"\n"
+"Do you want to skip it?"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:157
+#, c-format
+msgid "copy of %s"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:158 ../thunar/thunar-list-model.c:658
+#: ../thunar/thunar-properties-dialog.c:588
+#, c-format
+msgid "link to %s"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:161
+#, c-format
+msgid "another copy of %s"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:162
+#, c-format
+msgid "another link to %s"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:165
+#, c-format
+msgid "third copy of %s"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:166
+#, c-format
+msgid "third link to %s"
+msgstr ""
+
+#. if we had no match on the NAMES, try the "%uth copy of %s" pattern
+#: ../thunar-vfs/thunar-vfs-xfer.c:205 ../thunar-vfs/thunar-vfs-xfer.c:221
+#, c-format
+msgid "%uth copy of %s"
+msgid_plural "%uth copy of %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:223
+#, c-format
+msgid "%uth link to %s"
+msgid_plural "%uth link to %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. setup the error return
+#: ../thunar-vfs/thunar-vfs-xfer.c:263
+#, c-format
+msgid "Failed to create directory `%s'"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:286
+#, c-format
+msgid "Failed to create named fifo `%s'"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:318
+#, c-format
+msgid "Failed to open `%s' for reading"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:330
+#, c-format
+msgid "Failed to open `%s' for writing"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:345
+#, c-format
+msgid "Failed to read data from `%s'"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:357
+#, c-format
+msgid "Failed to write data to `%s'"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:371
+#, c-format
+msgid "Failed to remove `%s'"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:415
+#, c-format
+msgid "Failed to read link target from `%s'"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:423
+#, c-format
+msgid "Failed to create symbolic link `%s'"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:431
+#, c-format
+msgid "Failed to change mode of `%s'"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:465 ../thunar-vfs/thunar-vfs-xfer.c:525
+#, c-format
+msgid "Failed to determine file info for `%s'"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:494
+#, c-format
+msgid "Failed to copy special file `%s'"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:536
+#, c-format
+msgid "Failed to create symbolic `%s'"
+msgstr ""
+
+#. setup application name
+#: ../thunar/main.c:47 ../thunar/thunar-window.c:347
+msgid "Thunar"
+msgstr "Thunar"
+
+#. display an error message to the user
+#: ../thunar/thunar-application.c:190
+msgid "Failed to launch operation"
+msgstr ""
+
+#: ../thunar/thunar-application.c:411
+msgid "Copying files..."
+msgstr ""
+
+#: ../thunar/thunar-application.c:445
+msgid "Creating symbolic links..."
+msgstr ""
+
+#: ../thunar/thunar-application.c:480
+msgid "Moving files..."
+msgstr ""
+
+#: ../thunar/thunar-application.c:515
+msgid "Deleting files..."
+msgstr ""
+
+#: ../thunar/thunar-application.c:555
+msgid "Creating directories..."
+msgstr ""
+
+#: ../thunar/thunar-chooser-dialog.c:137 ../thunar/thunar-emblem-chooser.c:115
+#: ../thunar/thunar-emblem-chooser.c:116 ../thunar/thunar-icon-renderer.c:129
+#: ../thunar/thunar-open-with-action.c:115
+#: ../thunar/thunar-open-with-action.c:116
+#: ../thunar/thunar-properties-dialog.c:142 ../thunar/thunar-statusbar.c:190
+msgid "File"
+msgstr ""
+
+#: ../thunar/thunar-chooser-dialog.c:138
+msgid "The file for which an application should be chosen"
+msgstr ""
+
+#: ../thunar/thunar-chooser-dialog.c:150
+#, fuzzy
+msgid "Open"
+msgstr "Ã_ffnen"
+
+#: ../thunar/thunar-chooser-dialog.c:151
+msgid "Whether the chooser should open the specified file"
+msgstr ""
+
+#. the "Open with" action
+#: ../thunar/thunar-chooser-dialog.c:176 ../thunar/thunar-launcher.c:197
+msgid "Open With"
+msgstr ""
+
+#. create the "Custom command" expand
+#: ../thunar/thunar-chooser-dialog.c:238
+msgid "Use a _custom command:"
+msgstr ""
+
+#. create the "Custom command" button
+#: ../thunar/thunar-chooser-dialog.c:256
+#, fuzzy
+msgid "_Browse"
+msgstr "_SchlieÃen"
+
+#. display an error to the user
+#: ../thunar/thunar-chooser-dialog.c:429
+#, fuzzy, c-format
+msgid "Failed to add new application `%s'"
+msgstr "Andere Anwendung..."
+
+#. display an error to the user
+#: ../thunar/thunar-chooser-dialog.c:451
+#, c-format
+msgid "Failed to set default application for `%s'"
+msgstr ""
+
+#. display an error to the user
+#: ../thunar/thunar-chooser-dialog.c:464
+#, c-format
+msgid "Failed to execute `%s'"
+msgstr ""
+
+#. update the header label
+#: ../thunar/thunar-chooser-dialog.c:580
+#, c-format
+msgid "Open <i>%s</i> and other files of type \"%s\" with:"
+msgstr ""
+
+#: ../thunar/thunar-chooser-dialog.c:602
+#, fuzzy
+msgid "Select an Application"
+msgstr "Andere Anwendung..."
+
+#: ../thunar/thunar-chooser-dialog.c:612
+msgid "All Files"
+msgstr ""
+
+#: ../thunar/thunar-chooser-dialog.c:617
+msgid "Executable Files"
+msgstr ""
+
+#: ../thunar/thunar-chooser-dialog.c:632
+msgid "Perl Scripts"
+msgstr ""
+
+#: ../thunar/thunar-chooser-dialog.c:638
+msgid "Python Scripts"
+msgstr ""
+
+#: ../thunar/thunar-chooser-dialog.c:644
+msgid "Ruby Scripts"
+msgstr ""
+
+#: ../thunar/thunar-chooser-dialog.c:650
+msgid "Shell Scripts"
+msgstr ""
+
+#: ../thunar/thunar-chooser-model.c:116 ../thunar/thunar-folder.c:134
+#: ../thunar/thunar-standard-view.c:357 ../thunar/thunar-statusbar.c:204
+#: ../thunar/thunar-statusbar.c:746 ../thunar/thunar-view.c:82
+msgid "Loading"
+msgstr ""
+
+#: ../thunar/thunar-chooser-model.c:117
+msgid "Whether the model is currently being loaded"
+msgstr ""
+
+#: ../thunar/thunar-chooser-model.c:129
+msgid "Mime info"
+msgstr ""
+
+#: ../thunar/thunar-chooser-model.c:130
+msgid "The mime info for the model"
+msgstr ""
+
+#: ../thunar/thunar-chooser-model.c:306
+msgid "None available"
+msgstr ""
+
+#. append the "Recommended Applications:" category
+#: ../thunar/thunar-chooser-model.c:350
+msgid "Recommended Applications:"
+msgstr ""
+
+#. append the "Other Applications:" category
+#: ../thunar/thunar-chooser-model.c:353
+#, fuzzy
+msgid "Other Applications:"
+msgstr "Andere Anwendung..."
+
+#: ../thunar/thunar-clipboard-manager.c:149
+msgid "Can paste"
+msgstr ""
+
+#: ../thunar/thunar-clipboard-manager.c:150
+msgid "Whether the clipboard content can be pasted"
+msgstr ""
+
+#. tell the user that we cannot paste
+#: ../thunar/thunar-clipboard-manager.c:333
+msgid "There is nothing on the clipboard to paste"
+msgstr ""
+
+#: ../thunar/thunar-create-dialog.c:100 ../thunar/thunar-create-dialog.c:101
+#, fuzzy
+msgid "Filename"
+msgstr "Dateimanager"
+
+#: ../thunar/thunar-create-dialog.c:113 ../thunar/thunar-create-dialog.c:114
+msgid "Mime Info"
+msgstr ""
+
+#: ../thunar/thunar-create-dialog.c:148
+msgid "Enter the new name:"
+msgstr ""
+
+#: ../thunar/thunar-details-view.c:131
+msgid "Name"
+msgstr "Name"
+
+#: ../thunar/thunar-details-view.c:165
+msgid "Permissions"
+msgstr "Berechtigungen"
+
+#: ../thunar/thunar-details-view.c:180
+msgid "Type"
+msgstr "Typ"
+
+#: ../thunar/thunar-details-view.c:192
+msgid "Date modified"
+msgstr "Letzte Ãnderung"
+
+#: ../thunar/thunar-details-view.c:221
+msgid "Details view"
+msgstr "Detailansicht"
+
+#: ../thunar/thunar-details-view.c:222
+msgid "Detailed directory listing"
+msgstr "Detailierte Verzeichnisansicht"
+
+#: ../thunar/thunar-dialogs.c:74 ../thunar/thunar-dialogs.c:78
+#, c-format
+msgid "%s."
+msgstr ""
+
+#: ../thunar/thunar-dnd.c:62
+msgid "_Copy here"
+msgstr ""
+
+#: ../thunar/thunar-dnd.c:62
+msgid "_Move here"
+msgstr ""
+
+#: ../thunar/thunar-dnd.c:62
+msgid "_Link here"
+msgstr ""
+
+#. display an error to the user
+#. display an error message to the user
+#: ../thunar/thunar-dnd.c:190 ../thunar/thunar-launcher.c:314
+#, c-format
+msgid "Unable to execute file `%s'"
+msgstr ""
+
+#: ../thunar/thunar-extension-manager.c:158
+msgid "Resident"
+msgstr ""
+
+#: ../thunar/thunar-extension-manager.c:159
+msgid "Ensures that an extension will never be unloaded."
+msgstr ""
+
+#. append the remove menu item
+#: ../thunar/thunar-favourites-view.c:292
+msgid "_Remove Favourite"
+msgstr ""
+
+#. append the rename menu item
+#: ../thunar/thunar-favourites-view.c:307
+msgid "Re_name Favourite"
+msgstr ""
+
+#: ../thunar/thunar-favourites-view.c:627
+#, c-format
+msgid "The path '%s' does not refer to a directory"
+msgstr ""
+
+#. display an error message to the user
+#: ../thunar/thunar-favourites-view.c:646
+msgid "Failed to add new favourite"
+msgstr ""
+
+#: ../thunar/thunar-file.c:681
+msgid "The root folder has no parent"
+msgstr ""
+
+#: ../thunar/thunar-file.c:873
+msgid "Filesystem"
+msgstr "Dateisystem"
+
+#: ../thunar/thunar-file.c:897
+msgid "Home"
+msgstr ""
+
+#: ../thunar/thunar-folder.c:135
+msgid "Whether the contents of the folder are currently being loaded"
+msgstr ""
+
+#: ../thunar/thunar-icon-factory.c:163
+msgid "Icon theme"
+msgstr ""
+
+#: ../thunar/thunar-icon-factory.c:164
+msgid "The icon theme used by the icon factory"
+msgstr ""
+
+#: ../thunar/thunar-icon-renderer.c:116
+msgid "Drop file"
+msgstr ""
+
+#: ../thunar/thunar-icon-renderer.c:117
+msgid "The file which should be rendered in as drop acceptor"
+msgstr ""
+
+#: ../thunar/thunar-icon-renderer.c:130
+msgid "The file whose icon to render"
+msgstr ""
+
+#: ../thunar/thunar-icon-renderer.c:145 ../thunar/thunar-icon-renderer.c:146
+#: ../thunar/thunar-text-renderer.c:172 ../thunar/thunar-text-renderer.c:173
+msgid "Follow state"
+msgstr ""
+
+#: ../thunar/thunar-icon-renderer.c:158 ../thunar/thunar-path-entry.c:179
+msgid "Icon size"
+msgstr ""
+
+#: ../thunar/thunar-icon-renderer.c:159
+msgid "The icon size in pixels"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:111
+msgid "Arran_ge Items"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:116
+msgid "Sort By _Name"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:116
+msgid "Keep items sorted by their name in rows"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:117
+msgid "Sort By _Size"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:117
+msgid "Keep items sorted by their size in rows"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:118
+msgid "Sort By _Type"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:118
+msgid "Keep items sorted by their type in rows"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:119
+msgid "Sort By Modification _Date"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:119
+msgid "Keep items sorted by their modification date in rows"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:124
+msgid "_Ascending"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:124
+msgid "Sort items in ascending order"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:125
+msgid "_Descending"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:125
+msgid "Sort items in descending order"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:226
+msgid "Icon view"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:227
+msgid "Icon based directory listing"
+msgstr ""
+
+#: ../thunar/thunar-launcher.c:134 ../thunar/thunar-launcher.c:135
+msgid "Action group"
+msgstr ""
+
+#: ../thunar/thunar-launcher.c:147 ../thunar/thunar-launcher.c:148
+msgid "Selected files"
+msgstr ""
+
+#: ../thunar/thunar-launcher.c:160 ../thunar/thunar-launcher.c:161
+msgid "Widget"
+msgstr ""
+
+#. the "Open" action
+#: ../thunar/thunar-launcher.c:189 ../thunar/thunar-launcher.c:521
+#: ../thunar/thunar-launcher.c:539
+msgid "_Open"
+msgstr "Ã_ffnen"
+
+#: ../thunar/thunar-launcher.c:189
+msgid "Open the selected items"
+msgstr ""
+
+#. the "Open in New Window" action
+#: ../thunar/thunar-launcher.c:193
+msgid "Open in New Window"
+msgstr ""
+
+#: ../thunar/thunar-launcher.c:193
+msgid "Open the selected directories in new Thunar windows"
+msgstr ""
+
+#: ../thunar/thunar-launcher.c:347
+#, c-format
+msgid "Unable to open \"%s\"."
+msgstr ""
+
+#: ../thunar/thunar-launcher.c:352
+#, c-format
+msgid "Unable to open %d file."
+msgid_plural "Unable to open %d files."
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar/thunar-launcher.c:458
+msgid "Are you sure you want to open all folders?"
+msgstr ""
+
+#: ../thunar/thunar-launcher.c:460
+#, c-format
+msgid "This will open %d separate window."
+msgid_plural "This will open %d separate windows."
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar/thunar-launcher.c:519
+#, c-format
+msgid "Open in %d New Window"
+msgid_plural "Open in %d New Windows"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar/thunar-launcher.c:537
+msgid "_Execute"
+msgstr ""
+
+#: ../thunar/thunar-list-model.c:258
+msgid "Folder"
+msgstr ""
+
+#: ../thunar/thunar-list-model.c:259
+msgid "The stores folder"
+msgstr ""
+
+#: ../thunar/thunar-list-model.c:271
+msgid "Folders first"
+msgstr ""
+
+#: ../thunar/thunar-list-model.c:272
+msgid "Folders first in sorting"
+msgstr ""
+
+#: ../thunar/thunar-list-model.c:284
+msgid "Number of files"
+msgstr ""
+
+#: ../thunar/thunar-list-model.c:285
+msgid "Number of visible files"
+msgstr ""
+
+#: ../thunar/thunar-list-model.c:297 ../thunar/thunar-view.c:111
+#: ../thunar/thunar-window.c:218
+msgid "Show hidden"
+msgstr ""
+
+#: ../thunar/thunar-list-model.c:298 ../thunar/thunar-view.c:112
+#: ../thunar/thunar-window.c:219
+msgid "Whether to display hidden files"
+msgstr ""
+
+#: ../thunar/thunar-list-model.c:656 ../thunar/thunar-properties-dialog.c:586
+msgid "broken link"
+msgstr ""
+
+#: ../thunar/thunar-list-model.c:1924
+#, c-format
+msgid "%d item, Free space: %s"
+msgid_plural "%d items, Free space: %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar/thunar-list-model.c:1929
+#, c-format
+msgid "%d item"
+msgid_plural "%d items"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar/thunar-list-model.c:1945
+#, c-format
+msgid "\"%s\" broken link"
+msgstr ""
+
+#: ../thunar/thunar-list-model.c:1949
+#, c-format
+msgid "\"%s\" (%s) link to %s"
+msgstr ""
+
+#: ../thunar/thunar-list-model.c:1954
+#, c-format
+msgid "\"%s\" (%s) %s"
+msgstr ""
+
+#: ../thunar/thunar-list-model.c:1971 ../thunar/thunar-list-model.c:1976
+#, c-format
+msgid "%d item selected"
+msgid_plural "%d items selected (%s)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar/thunar-location-buttons.c:214
+msgid "Spacing"
+msgstr ""
+
+#: ../thunar/thunar-location-buttons.c:215
+msgid "The amount of space between the path buttons"
+msgstr ""
+
+#: ../thunar/thunar-location-dialog.c:85
+msgid "Open Location"
+msgstr ""
+
+#: ../thunar/thunar-location-dialog.c:99
+msgid "_Location:"
+msgstr ""
+
+#: ../thunar/thunar-navigator.c:137 ../thunar/thunar-window.c:205
+msgid "Current directory"
+msgstr ""
+
+#: ../thunar/thunar-navigator.c:138
+msgid "The directory currently displayed by the navigator"
+msgstr ""
+
+#: ../thunar/thunar-open-with-action.c:320
+#, c-format
+msgid "%s (default)"
+msgstr "%s (Standard)"
+
+#. add our custom children
+#: ../thunar/thunar-open-with-action.c:371
+msgid "Other Application..."
+msgstr "Andere Anwendung..."
+
+#: ../thunar/thunar-path-entry.c:167
+msgid "Current file"
+msgstr ""
+
+#: ../thunar/thunar-path-entry.c:168
+msgid "The currently displayed file"
+msgstr ""
+
+#: ../thunar/thunar-path-entry.c:180
+msgid "The icon size for the path entry"
+msgstr ""
+
+#: ../thunar/thunar-preferences.c:178
+#, c-format
+msgid "Failed to create the Thunar configuration directory in %s"
+msgstr ""
+
+#: ../thunar/thunar-preferences.c:186
+#, c-format
+msgid "Failed to open preferences database in %s: %s"
+msgstr ""
+
+#: ../thunar/thunar-progress-dialog.c:129
+msgid "Job"
+msgstr ""
+
+#: ../thunar/thunar-progress-dialog.c:130
+msgid "The job whose progress to display"
+msgstr ""
+
+#: ../thunar/thunar-progress-dialog.c:273
+msgid "Question"
+msgstr "Frage"
+
+#: ../thunar/thunar-progress-dialog.c:299
+msgid "_Yes"
+msgstr "_Ja"
+
+#: ../thunar/thunar-progress-dialog.c:303
+msgid "Yes to _all"
+msgstr "Ja zu _allen"
+
+#: ../thunar/thunar-progress-dialog.c:307
+msgid "_No"
+msgstr "_Nein"
+
+#: ../thunar/thunar-progress-dialog.c:311
+msgid "_Cancel"
+msgstr "_Abbrechen"
+
+#: ../thunar/thunar-progress-dialog.c:437
+#, c-format
+msgid "(%lu hour remaining)"
+msgid_plural "(%lu hours remaining)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar/thunar-progress-dialog.c:442
+#, c-format
+msgid "(%lu minute remaining)"
+msgid_plural "(%lu minutes remaining)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar/thunar-progress-dialog.c:447
+#, c-format
+msgid "(%lu second remaining)"
+msgid_plural "(%lu seconds remaining)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar/thunar-properties-dialog.c:143
+msgid "The file displayed by the dialog"
+msgstr ""
+
+#: ../thunar/thunar-properties-dialog.c:180
+msgid "General"
+msgstr "Allgemein"
+
+#: ../thunar/thunar-properties-dialog.c:197
+msgid "Name:"
+msgstr "Name:"
+
+#.
+#. Second box (kind)
+#.
+#: ../thunar/thunar-properties-dialog.c:222
+msgid "Kind:"
+msgstr ""
+
+#.
+#. Third box (modified, accessed)
+#.
+#: ../thunar/thunar-properties-dialog.c:247
+msgid "Modified:"
+msgstr ""
+
+#: ../thunar/thunar-properties-dialog.c:260
+msgid "Accessed:"
+msgstr ""
+
+#.
+#. Fourth box (volume, size)
+#.
+#: ../thunar/thunar-properties-dialog.c:284
+msgid "Volume:"
+msgstr ""
+
+#: ../thunar/thunar-properties-dialog.c:307
+msgid "Size:"
+msgstr "GröÃe:"
+
+#.
+#. Emblem chooser
+#.
+#: ../thunar/thunar-properties-dialog.c:331
+msgid "Emblems"
+msgstr ""
+
+#: ../thunar/thunar-properties-dialog.c:563
+#, c-format
+msgid "%s Info"
+msgstr ""
+
+#: ../thunar/thunar-properties-dialog.c:644
+#, c-format
+msgid "%s (%u Bytes)"
+msgstr "%s (%u Byte)"
+
+#. display an error message
+#: ../thunar/thunar-properties-dialog.c:690
+#: ../thunar/thunar-standard-view.c:2135
+#, c-format
+msgid "Failed to rename `%s'"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:245
+msgid "File Context Menu"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:246
+msgid "Folder Context Menu"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:247
+msgid "Create _Folder..."
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:247
+msgid "Create an empty folder within the current folder"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:248
+msgid "_Properties"
+msgstr "_Eigenschaften"
+
+#: ../thunar/thunar-standard-view.c:248
+msgid "View the properties of the selected file"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:249
+#, fuzzy
+msgid "_Copy Files"
+msgstr "_Datei"
+
+#: ../thunar/thunar-standard-view.c:249
+msgid "Copy the selected files"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:250
+#, fuzzy
+msgid "Cu_t Files"
+msgstr "_Datei"
+
+#: ../thunar/thunar-standard-view.c:250
+msgid "Cut the selected files"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:251
+msgid "_Paste Files"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:252
+msgid "_Delete Files"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:252
+msgid "Delete the selected files"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:253
+msgid "Paste Files into Folder"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:253
+msgid "Paste files into the selected folder"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:254
+msgid "Select _all Files"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:254
+msgid "Select all files in this window"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:255
+msgid "Select by _Pattern"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:255
+msgid "Select all files that match a certain pattern"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:256 ../thunar/thunar-standard-view.c:2414
+msgid "Du_plicate File"
+msgid_plural "Du_plicate Files"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar/thunar-standard-view.c:256
+msgid "Duplicate each selected file"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:257 ../thunar/thunar-standard-view.c:2420
+msgid "Ma_ke Link"
+msgid_plural "Ma_ke Links"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar/thunar-standard-view.c:257
+msgid "Create a symbolic link for each selected file"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:258
+msgid "_Rename"
+msgstr "_Umbennen"
+
+#: ../thunar/thunar-standard-view.c:258
+msgid "Rename the selected file"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:358 ../thunar/thunar-view.c:83
+msgid "Whether the view is currently being loaded"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:853
+msgid "Loading folder contents..."
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:1305
+msgid "New Folder"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:1308
+msgid "New Folder..."
+msgstr ""
+
+#. display an error message
+#: ../thunar/thunar-standard-view.c:1322
+#, c-format
+msgid "Cannot convert filename `%s' to the local encoding"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:1468
+#, c-format
+msgid ""
+"Are you sure that you want to\n"
+"permanently delete \"%s\"?"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:1474
+#, c-format
+msgid ""
+"Are you sure that you want to permanently\n"
+"delete the selected file?"
+msgid_plural ""
+"Are you sure that you want to permanently\n"
+"delete the %u selected files?"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar/thunar-standard-view.c:1489
+msgid "If you delete a file, it is permanently lost."
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:1561
+msgid "Select by Pattern"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:1576
+msgid "Pattern:"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:2087
+#, fuzzy, c-format
+msgid "Failed to open directory `%s'"
+msgstr "Detailierte Verzeichnisansicht"
+
+#: ../thunar/thunar-standard-view.c:2387
+#, fuzzy
+msgid "_Copy File"
+msgid_plural "_Copy Files"
+msgstr[0] "_Datei"
+msgstr[1] "_Datei"
+
+#: ../thunar/thunar-standard-view.c:2393
+#, fuzzy
+msgid "Cu_t File"
+msgid_plural "Cu_t Files"
+msgstr[0] "_Datei"
+msgstr[1] "_Datei"
+
+#: ../thunar/thunar-standard-view.c:2402
+msgid "_Delete File"
+msgid_plural "_Delete Files"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar/thunar-statusbar.c:191
+msgid "The file whose icon to display"
+msgstr ""
+
+#: ../thunar/thunar-statusbar.c:205 ../thunar/thunar-statusbar.c:747
+msgid "Whether to display a loading animation"
+msgstr ""
+
+#: ../thunar/thunar-statusbar.c:760 ../thunar/thunar-view.c:98
+msgid "Statusbar text"
+msgstr ""
+
+#: ../thunar/thunar-statusbar.c:761
+msgid "The main text to be displayed in the statusbar"
+msgstr ""
+
+#: ../thunar/thunar-text-renderer.c:185
+msgid "Text"
+msgstr ""
+
+#: ../thunar/thunar-text-renderer.c:186
+msgid "The text to render"
+msgstr ""
+
+#: ../thunar/thunar-text-renderer.c:200
+msgid "Wrap mode"
+msgstr ""
+
+#: ../thunar/thunar-text-renderer.c:201
+msgid "The wrap mode"
+msgstr ""
+
+#: ../thunar/thunar-text-renderer.c:216
+msgid "Wrap width"
+msgstr ""
+
+#: ../thunar/thunar-text-renderer.c:217
+msgid "The wrap width"
+msgstr ""
+
+#: ../thunar/thunar-view.c:99
+msgid "Text to be displayed in the statusbar associated with this view"
+msgstr ""
+
+#: ../thunar/thunar-view.c:125 ../thunar/thunar-window.c:233
+msgid "UI manager"
+msgstr ""
+
+#: ../thunar/thunar-view.c:126
+msgid "UI manager of the surrounding window"
+msgstr ""
+
+#: ../thunar/thunar-window.c:149
+msgid "_File"
+msgstr "_Datei"
+
+#: ../thunar/thunar-window.c:150
+msgid "Open New _Window"
+msgstr "_Neues Fenster öffnen"
+
+#: ../thunar/thunar-window.c:150
+msgid "Open a new Thunar window for the displayed location"
+msgstr ""
+
+#: ../thunar/thunar-window.c:151
+msgid "Close _All Windows"
+msgstr ""
+
+#: ../thunar/thunar-window.c:151
+msgid "Close all Thunar windows"
+msgstr "Alle Thunar Fenster schlieÃen"
+
+#: ../thunar/thunar-window.c:152
+msgid "_Close"
+msgstr "_SchlieÃen"
+
+#: ../thunar/thunar-window.c:152
+msgid "Close this window"
+msgstr "Dieses Fenster schlieÃen"
+
+#: ../thunar/thunar-window.c:153
+msgid "_Edit"
+msgstr "_Bearbeiten"
+
+#: ../thunar/thunar-window.c:154
+msgid "_View"
+msgstr "_Anzeige"
+
+#: ../thunar/thunar-window.c:155
+msgid "_Location Bar"
+msgstr ""
+
+#: ../thunar/thunar-window.c:156
+msgid "_Side Pane"
+msgstr ""
+
+#: ../thunar/thunar-window.c:157
+msgid "_Go"
+msgstr "_Gehe"
+
+#: ../thunar/thunar-window.c:158
+msgid "Open _Parent"
+msgstr ""
+
+#: ../thunar/thunar-window.c:158
+msgid "Open the parent folder"
+msgstr ""
+
+#: ../thunar/thunar-window.c:159
+msgid "_Home"
+msgstr ""
+
+#: ../thunar/thunar-window.c:159
+msgid "Open the home folder"
+msgstr ""
+
+#: ../thunar/thunar-window.c:160
+msgid "Open _Location..."
+msgstr ""
+
+#: ../thunar/thunar-window.c:160
+msgid "Specify a location to open"
+msgstr ""
+
+#: ../thunar/thunar-window.c:161
+msgid "_Help"
+msgstr "_Hilfe"
+
+#: ../thunar/thunar-window.c:163 ../thunar/thunar-window.c:165
+msgid "_About"
+msgstr "Ã_ber"
+
+#: ../thunar/thunar-window.c:163 ../thunar/thunar-window.c:165
+msgid "Display information about Thunar"
+msgstr ""
+
+#: ../thunar/thunar-window.c:171
+msgid "Show _Hidden Files"
+msgstr ""
+
+#: ../thunar/thunar-window.c:171
+msgid "Toggles the display of hidden files in the current window"
+msgstr ""
+
+#: ../thunar/thunar-window.c:206
+msgid "The directory currently displayed within this window"
+msgstr ""
+
+#: ../thunar/thunar-window.c:234
+msgid "The UI manager used within this window"
+msgstr ""
+
+#.
+#. * add the side pane options
+#.
+#: ../thunar/thunar-window.c:289
+msgid "_Favourites"
+msgstr "Favouriten"
+
+#: ../thunar/thunar-window.c:295 ../thunar/thunar-window.c:316
+msgid "_Hidden"
+msgstr ""
+
+#.
+#. * add the location bar options
+#.
+#: ../thunar/thunar-window.c:304
+msgid "_Button Style"
+msgstr ""
+
+#: ../thunar/thunar-window.c:310
+msgid "_Traditional Style"
+msgstr ""
+
+#.
+#. * add view options
+#.
+#: ../thunar/thunar-window.c:325
+msgid "View as _Icons"
+msgstr ""
+
+#: ../thunar/thunar-window.c:331
+msgid "View as _Detailed List"
+msgstr ""
+
+#. display an error to the user
+#: ../thunar/thunar-window.c:738
+msgid "Failed to open home directory"
+msgstr ""
+
+#: ../thunar/thunar-window.c:815
+msgid ""
+"Thunar is a fast and easy to use file manager\n"
+"for the Xfce Desktop Environment."
+msgstr ""
+
+#: ../thunar/thunar-window.c:820
+msgid "translator-credits"
+msgstr ""
+
+#: ../thunarx/thunarx-property-page.c:104
+msgid "Label"
+msgstr ""
+
+#: ../thunarx/thunarx-property-page.c:105
+msgid "Text of the page's label"
+msgstr ""
+
+#: ../thunarx/thunarx-property-page.c:117
+msgid "Label widget"
+msgstr ""
+
+#: ../thunarx/thunarx-property-page.c:118
+msgid "A widget to display in place of the usual page label"
+msgstr ""
+
+#: ../Thunar.desktop.in.h:1
+msgid "Browse the filesystem with the file manager"
+msgstr ""
+
+#: ../Thunar.desktop.in.h:2
+msgid "File Manager"
+msgstr "Dateimanager"
+
+#: ../Thunar.desktop.in.h:3
+msgid "Thunar File Manager"
+msgstr "Thunar Dateimanager"
+
+#~ msgid "Computer"
+#~ msgstr "Computer"
+
+#~ msgid "Trash"
+#~ msgstr "Papierkorb"
+
+#~ msgid "_Empty Trash Bin"
+#~ msgstr "Papierkorb _leeren"
+
+#~ msgid "Delete all items in the Trash"
+#~ msgstr "Alle im Papierkorb befindlichen Dateien löschen"
Added: desktop/trunk/thunar/branches/upstream/current/po/el.gmo
===================================================================
(Binary files differ)
Property changes on: desktop/trunk/thunar/branches/upstream/current/po/el.gmo
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: desktop/trunk/thunar/branches/upstream/current/po/el.po
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/po/el.po 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/po/el.po 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,1453 @@
+# Translation of Thunar to Greek
+# Copyright (C) 2004-2005 Benedikt Meurer.
+# This file is distributed under the same license as the Thunar package.
+# Stavros Giannouris <stavrosg2002 at freemail.gr>, 2005
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Thunar 0.1.2svn\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-11-14 15:38+0100\n"
+"PO-Revision-Date: 2005-10-06 22:03+0900\n"
+"Last-Translator: Stavros Giannouris <stavrosg2002 at freemail.gr>\n"
+"Language-Team: Greek <nls at tux.hellug.gr>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Greek\n"
+"X-Poedit-Country: GREECE\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../thunar-vfs/thunar-vfs-info.c:261
+msgid "No Exec field specified"
+msgstr "Îεν ÎÏει οÏιÏÏεί Ïο Ïεδίο Exec"
+
+#: ../thunar-vfs/thunar-vfs-info.c:269
+msgid "Unable to parse file"
+msgstr "ÎδÏ
ναμία ανάγνÏÏÎ·Ï ÏοÏ
αÏÏείοÏ
"
+
+#: ../thunar-vfs/thunar-vfs-info.c:359
+msgid "Invalid file name"
+msgstr "Îη ÎγκÏ
Ïο Ïνομα αÏÏείοÏ
"
+
+#: ../thunar-vfs/thunar-vfs-info.c:381
+#, fuzzy
+msgid "Invalid desktop file"
+msgstr "Îη ÎγκÏ
Ïο Ïνομα αÏÏείοÏ
"
+
+#: ../thunar-vfs/thunar-vfs-info.c:615
+#, fuzzy, c-format
+msgid "Failed to stat file `%s': %s"
+msgstr "ÎÏοÏÏ
Ïία μεÏονομαÏÎ¯Î±Ï ÏοÏ
%s."
+
+#. ask the user whether we should remove the target first
+#. ask the user whether to overwrite
+#: ../thunar-vfs/thunar-vfs-link-job.c:176
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:685
+#, fuzzy, c-format
+msgid ""
+"%s.\n"
+"\n"
+"Do you want to overwrite it?"
+msgstr ""
+"Το %s Ï
ÏάÏÏει ήδη.\n"
+"\n"
+"ÎÎλεÏε να ανÏικαÏαÏÏαθεί;"
+
+#: ../thunar-vfs/thunar-vfs-link-job.c:200
+#, fuzzy, c-format
+msgid "Failed to remove `%s': %s"
+msgstr "ÎÏοÏÏ
Ïία μεÏονομαÏÎ¯Î±Ï ÏοÏ
%s."
+
+#. ask the user whether to skip this file (used for cancellation only)
+#. ask the user whether to skip
+#: ../thunar-vfs/thunar-vfs-link-job.c:212
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:705
+#, fuzzy, c-format
+msgid ""
+"%s.\n"
+"\n"
+"Do you want to skip it?"
+msgstr ""
+"\n"
+"\n"
+"ÎÎλεÏε να Ïο ÏÏοÏÏεÏάÏεÏε;"
+
+#: ../thunar-vfs/thunar-vfs-mime-database.c:1625
+#, c-format
+msgid "Failed to load application from file %s"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-mime-info.c:228
+#, c-format
+msgid "%s document"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-mkdir-job.c:165
+#, fuzzy, c-format
+msgid "Unable to create directory `%s': %s"
+msgstr "ÎδÏ
ναμία δημιοÏ
ÏÎ³Î¯Î±Ï ÏοÏ
καÏαλÏγοÏ
%s."
+
+#: ../thunar-vfs/thunar-vfs-path.c:657
+msgid "Path too long to fit into buffer"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-path.c:761
+msgid "URI too long to fit into buffer"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-thumb.c:144 ../thunar/thunar-details-view.c:150
+msgid "Size"
+msgstr "ÎÎγεθοÏ"
+
+#: ../thunar-vfs/thunar-vfs-thumb.c:145
+msgid "The desired thumbnail size"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:233
+msgid "Collecting files..."
+msgstr "ΣÏ
λλογή αÏÏείÏν..."
+
+#. display info message
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:295
+#, fuzzy
+msgid "Deleting directories..."
+msgstr "ÎιαγÏαÏή αÏÏείÏν..."
+
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:315
+#, fuzzy, c-format
+msgid "Unable to remove directory `%s': %s"
+msgstr "ÎδÏ
ναμία δημιοÏ
ÏÎ³Î¯Î±Ï ÏοÏ
καÏαλÏγοÏ
%s."
+
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:593
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:639
+#, fuzzy, c-format
+msgid "Unable to remove `%s': %s"
+msgstr "ÎδÏναÏη η αÏαίÏεÏη ÏοÏ
%s."
+
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:831
+msgid "Cannot transfer the root directory"
+msgstr ""
+
+#. tell the user that we're preparing the unlink job
+#: ../thunar-vfs/thunar-vfs-unlink-job.c:161
+msgid "Preparing..."
+msgstr "Î ÏοεÏοιμαÏία..."
+
+#: ../thunar-vfs/thunar-vfs-unlink-job.c:234
+#, c-format
+msgid ""
+"Unable to remove %s.\n"
+"\n"
+"Do you want to skip it?"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:157
+#, c-format
+msgid "copy of %s"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:158 ../thunar/thunar-list-model.c:658
+#: ../thunar/thunar-properties-dialog.c:588
+#, c-format
+msgid "link to %s"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:161
+#, c-format
+msgid "another copy of %s"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:162
+#, c-format
+msgid "another link to %s"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:165
+#, c-format
+msgid "third copy of %s"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:166
+#, c-format
+msgid "third link to %s"
+msgstr ""
+
+#. if we had no match on the NAMES, try the "%uth copy of %s" pattern
+#: ../thunar-vfs/thunar-vfs-xfer.c:205 ../thunar-vfs/thunar-vfs-xfer.c:221
+#, c-format
+msgid "%uth copy of %s"
+msgid_plural "%uth copy of %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:223
+#, c-format
+msgid "%uth link to %s"
+msgid_plural "%uth link to %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. setup the error return
+#: ../thunar-vfs/thunar-vfs-xfer.c:263
+#, fuzzy, c-format
+msgid "Failed to create directory `%s'"
+msgstr "ÎδÏ
ναμία δημιοÏ
ÏÎ³Î¯Î±Ï ÏοÏ
καÏαλÏγοÏ
%s."
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:286
+#, fuzzy, c-format
+msgid "Failed to create named fifo `%s'"
+msgstr "ÎÏοÏÏ
Ïία μεÏονομαÏÎ¯Î±Ï ÏοÏ
%s."
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:318
+#, c-format
+msgid "Failed to open `%s' for reading"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:330
+#, c-format
+msgid "Failed to open `%s' for writing"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:345
+#, fuzzy, c-format
+msgid "Failed to read data from `%s'"
+msgstr "ÎÏοÏÏ
Ïία μεÏονομαÏÎ¯Î±Ï ÏοÏ
%s."
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:357
+#, fuzzy, c-format
+msgid "Failed to write data to `%s'"
+msgstr "ÎÏοÏÏ
Ïία μεÏονομαÏÎ¯Î±Ï ÏοÏ
%s."
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:371
+#, fuzzy, c-format
+msgid "Failed to remove `%s'"
+msgstr "ÎÏοÏÏ
Ïία μεÏονομαÏÎ¯Î±Ï ÏοÏ
%s."
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:415
+#, fuzzy, c-format
+msgid "Failed to read link target from `%s'"
+msgstr "ÎÏοÏÏ
Ïία ανάγνÏÏÎ·Ï ÏÏ
Î¼Î²Î¿Î»Î¹ÎºÎ¿Ï Î´ÎµÏÎ¼Î¿Ï %s."
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:423
+#, fuzzy, c-format
+msgid "Failed to create symbolic link `%s'"
+msgstr "Îεν είναι δÏ
ναÏή η δημιοÏ
Ïγία ÏÏ
Î¼Î²Î¿Î»Î¹ÎºÎ¿Ï Î´ÎµÏÎ¼Î¿Ï %s."
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:431
+#, fuzzy, c-format
+msgid "Failed to change mode of `%s'"
+msgstr "ÎÏοÏÏ
Ïία μεÏονομαÏÎ¯Î±Ï ÏοÏ
%s."
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:465 ../thunar-vfs/thunar-vfs-xfer.c:525
+#, c-format
+msgid "Failed to determine file info for `%s'"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:494
+#, fuzzy, c-format
+msgid "Failed to copy special file `%s'"
+msgstr "ÎδÏ
ναμία ανÏιγÏαÏÎ®Ï Î±ÏÏείοÏ
%s."
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:536
+#, fuzzy, c-format
+msgid "Failed to create symbolic `%s'"
+msgstr "Îεν είναι δÏ
ναÏή η δημιοÏ
Ïγία ÏÏ
Î¼Î²Î¿Î»Î¹ÎºÎ¿Ï Î´ÎµÏÎ¼Î¿Ï %s."
+
+#. setup application name
+#: ../thunar/main.c:47 ../thunar/thunar-window.c:347
+msgid "Thunar"
+msgstr "Thunar"
+
+#. display an error message to the user
+#: ../thunar/thunar-application.c:190
+#, fuzzy
+msgid "Failed to launch operation"
+msgstr "ÎÏοÏÏ
Ïία μεÏονομαÏÎ¯Î±Ï ÏοÏ
%s."
+
+#: ../thunar/thunar-application.c:411
+msgid "Copying files..."
+msgstr "ÎνÏιγÏαÏή αÏÏείÏν..."
+
+#: ../thunar/thunar-application.c:445
+msgid "Creating symbolic links..."
+msgstr ""
+
+#: ../thunar/thunar-application.c:480
+msgid "Moving files..."
+msgstr "ÎεÏακίνηÏη αÏÏείÏν..."
+
+#: ../thunar/thunar-application.c:515
+msgid "Deleting files..."
+msgstr "ÎιαγÏαÏή αÏÏείÏν..."
+
+#: ../thunar/thunar-application.c:555
+#, fuzzy
+msgid "Creating directories..."
+msgstr "ΤÏÎÏον καÏάλογοÏ"
+
+#: ../thunar/thunar-chooser-dialog.c:137 ../thunar/thunar-emblem-chooser.c:115
+#: ../thunar/thunar-emblem-chooser.c:116 ../thunar/thunar-icon-renderer.c:129
+#: ../thunar/thunar-open-with-action.c:115
+#: ../thunar/thunar-open-with-action.c:116
+#: ../thunar/thunar-properties-dialog.c:142 ../thunar/thunar-statusbar.c:190
+msgid "File"
+msgstr "ÎÏÏείο"
+
+#: ../thunar/thunar-chooser-dialog.c:138
+msgid "The file for which an application should be chosen"
+msgstr ""
+
+#: ../thunar/thunar-chooser-dialog.c:150
+msgid "Open"
+msgstr "Îνοιγμα"
+
+#: ../thunar/thunar-chooser-dialog.c:151
+msgid "Whether the chooser should open the specified file"
+msgstr ""
+
+#. the "Open with" action
+#: ../thunar/thunar-chooser-dialog.c:176 ../thunar/thunar-launcher.c:197
+msgid "Open With"
+msgstr "Îνοιγμα Îε"
+
+#. create the "Custom command" expand
+#: ../thunar/thunar-chooser-dialog.c:238
+msgid "Use a _custom command:"
+msgstr ""
+
+#. create the "Custom command" button
+#: ../thunar/thunar-chooser-dialog.c:256
+#, fuzzy
+msgid "_Browse"
+msgstr "_ÎλείÏιμο"
+
+#. display an error to the user
+#: ../thunar/thunar-chooser-dialog.c:429
+#, fuzzy, c-format
+msgid "Failed to add new application `%s'"
+msgstr "ÎÏοÏÏ
Ïία μεÏονομαÏÎ¯Î±Ï ÏοÏ
%s."
+
+#. display an error to the user
+#: ../thunar/thunar-chooser-dialog.c:451
+#, fuzzy, c-format
+msgid "Failed to set default application for `%s'"
+msgstr "ÎÏοÏÏ
Ïία μεÏονομαÏÎ¯Î±Ï ÏοÏ
%s."
+
+#. display an error to the user
+#: ../thunar/thunar-chooser-dialog.c:464
+#, fuzzy, c-format
+msgid "Failed to execute `%s'"
+msgstr "ÎÏοÏÏ
Ïία μεÏονομαÏÎ¯Î±Ï ÏοÏ
%s."
+
+#. update the header label
+#: ../thunar/thunar-chooser-dialog.c:580
+#, c-format
+msgid "Open <i>%s</i> and other files of type \"%s\" with:"
+msgstr ""
+
+#: ../thunar/thunar-chooser-dialog.c:602
+#, fuzzy
+msgid "Select an Application"
+msgstr "Îνοιγμα _ΤοÏοθεÏίαÏ..."
+
+#: ../thunar/thunar-chooser-dialog.c:612
+#, fuzzy
+msgid "All Files"
+msgstr "ÎÏÏεία"
+
+#: ../thunar/thunar-chooser-dialog.c:617
+#, fuzzy
+msgid "Executable Files"
+msgstr "ÎÏιλογή Ï_λÏν ÏÏν αÏÏείÏν"
+
+#: ../thunar/thunar-chooser-dialog.c:632
+msgid "Perl Scripts"
+msgstr ""
+
+#: ../thunar/thunar-chooser-dialog.c:638
+msgid "Python Scripts"
+msgstr ""
+
+#: ../thunar/thunar-chooser-dialog.c:644
+msgid "Ruby Scripts"
+msgstr ""
+
+#: ../thunar/thunar-chooser-dialog.c:650
+msgid "Shell Scripts"
+msgstr ""
+
+#: ../thunar/thunar-chooser-model.c:116 ../thunar/thunar-folder.c:134
+#: ../thunar/thunar-standard-view.c:357 ../thunar/thunar-statusbar.c:204
+#: ../thunar/thunar-statusbar.c:746 ../thunar/thunar-view.c:82
+msgid "Loading"
+msgstr "ΦÏÏÏÏÏη"
+
+#: ../thunar/thunar-chooser-model.c:117
+#, fuzzy
+msgid "Whether the model is currently being loaded"
+msgstr "Îάν μÏοÏοÏν να εÏικολληθοÏν Ïα ÏεÏιεÏÏμενα ÏοÏ
ÏÏÏÏειÏοÏ
"
+
+#: ../thunar/thunar-chooser-model.c:129
+msgid "Mime info"
+msgstr ""
+
+#: ../thunar/thunar-chooser-model.c:130
+msgid "The mime info for the model"
+msgstr ""
+
+#: ../thunar/thunar-chooser-model.c:306
+msgid "None available"
+msgstr ""
+
+#. append the "Recommended Applications:" category
+#: ../thunar/thunar-chooser-model.c:350
+msgid "Recommended Applications:"
+msgstr ""
+
+#. append the "Other Applications:" category
+#: ../thunar/thunar-chooser-model.c:353
+#, fuzzy
+msgid "Other Applications:"
+msgstr "Îνοιγμα _ΤοÏοθεÏίαÏ..."
+
+#: ../thunar/thunar-clipboard-manager.c:149
+msgid "Can paste"
+msgstr "ÎÏ
ναÏÏÏηÏα εÏικÏλληÏηÏ"
+
+#: ../thunar/thunar-clipboard-manager.c:150
+msgid "Whether the clipboard content can be pasted"
+msgstr "Îάν μÏοÏοÏν να εÏικολληθοÏν Ïα ÏεÏιεÏÏμενα ÏοÏ
ÏÏÏÏειÏοÏ
"
+
+#. tell the user that we cannot paste
+#: ../thunar/thunar-clipboard-manager.c:333
+msgid "There is nothing on the clipboard to paste"
+msgstr "Îεν Ï
ÏάÏÏει ÏίÏοÏα ÏÏο ÏÏÏÏειÏο για να εÏικολληθεί."
+
+#: ../thunar/thunar-create-dialog.c:100 ../thunar/thunar-create-dialog.c:101
+#, fuzzy
+msgid "Filename"
+msgstr "ÎιαÏειÏιÏÏÎ®Ï ÎÏÏείÏν"
+
+#: ../thunar/thunar-create-dialog.c:113 ../thunar/thunar-create-dialog.c:114
+#, fuzzy
+msgid "Mime Info"
+msgstr "%s ΠληÏοÏοÏίεÏ"
+
+#: ../thunar/thunar-create-dialog.c:148
+msgid "Enter the new name:"
+msgstr ""
+
+#: ../thunar/thunar-details-view.c:131
+msgid "Name"
+msgstr "Îνομα"
+
+#: ../thunar/thunar-details-view.c:165
+msgid "Permissions"
+msgstr "ÎικαιÏμαÏα"
+
+#: ../thunar/thunar-details-view.c:180
+msgid "Type"
+msgstr "ΤÏÏοÏ"
+
+#: ../thunar/thunar-details-view.c:192
+msgid "Date modified"
+msgstr "ÎμεÏομηνία ΤÏοÏοÏοίηÏηÏ"
+
+#: ../thunar/thunar-details-view.c:221
+msgid "Details view"
+msgstr "Î Ïοβολή λεÏÏομεÏιÏν"
+
+#: ../thunar/thunar-details-view.c:222
+msgid "Detailed directory listing"
+msgstr "ÎεÏÏομεÏÎ®Ï Î±ÏεικÏνιÏη καÏαλÏγÏν"
+
+#: ../thunar/thunar-dialogs.c:74 ../thunar/thunar-dialogs.c:78
+#, c-format
+msgid "%s."
+msgstr ""
+
+#: ../thunar/thunar-dnd.c:62
+#, fuzzy
+msgid "_Copy here"
+msgstr "_ÎνÏιγÏαÏή ÎÏÏείοÏ
"
+
+#: ../thunar/thunar-dnd.c:62
+msgid "_Move here"
+msgstr ""
+
+#: ../thunar/thunar-dnd.c:62
+msgid "_Link here"
+msgstr ""
+
+#. display an error to the user
+#. display an error message to the user
+#: ../thunar/thunar-dnd.c:190 ../thunar/thunar-launcher.c:314
+#, fuzzy, c-format
+msgid "Unable to execute file `%s'"
+msgstr "ÎδÏ
ναμία εκÏÎλεÏÎ·Ï ÏοÏ
αÏÏείοÏ
\"%s\"."
+
+#: ../thunar/thunar-extension-manager.c:158
+msgid "Resident"
+msgstr ""
+
+#: ../thunar/thunar-extension-manager.c:159
+msgid "Ensures that an extension will never be unloaded."
+msgstr ""
+
+#. append the remove menu item
+#: ../thunar/thunar-favourites-view.c:292
+msgid "_Remove Favourite"
+msgstr "_ÎÏομάκÏÏ
νÏη ÎγαÏημÎνοÏ
"
+
+#. append the rename menu item
+#: ../thunar/thunar-favourites-view.c:307
+msgid "Re_name Favourite"
+msgstr "ÎεÏο_νομαÏία ÎγαÏημÎνοÏ
"
+
+#: ../thunar/thunar-favourites-view.c:627
+#, c-format
+msgid "The path '%s' does not refer to a directory"
+msgstr ""
+
+#. display an error message to the user
+#: ../thunar/thunar-favourites-view.c:646
+#, fuzzy
+msgid "Failed to add new favourite"
+msgstr "ÎδÏ
ναμία ÏÏοÏÎ¸Î®ÎºÎ·Ï Î±Î³Î±ÏημÎνοÏ
"
+
+#: ../thunar/thunar-file.c:681
+msgid "The root folder has no parent"
+msgstr ""
+
+#: ../thunar/thunar-file.c:873
+msgid "Filesystem"
+msgstr "ΣÏÏÏημα αÏÏείÏν"
+
+#: ../thunar/thunar-file.c:897
+msgid "Home"
+msgstr "ÎÏÏικÏÏ ÎαÏάλογοÏ"
+
+#: ../thunar/thunar-folder.c:135
+msgid "Whether the contents of the folder are currently being loaded"
+msgstr ""
+
+#: ../thunar/thunar-icon-factory.c:163
+msgid "Icon theme"
+msgstr "ÎÎμα εικονιδίÏν"
+
+#: ../thunar/thunar-icon-factory.c:164
+msgid "The icon theme used by the icon factory"
+msgstr "Το θÎμα εικονιδίÏν ÏοÏ
ÏÏηÏιμοÏοιείÏαι αÏÏ Ïο icon factory"
+
+#: ../thunar/thunar-icon-renderer.c:116
+#, fuzzy
+msgid "Drop file"
+msgstr "ÎÏοÏÏολή ÎÏÏείοÏ
"
+
+#: ../thunar/thunar-icon-renderer.c:117
+msgid "The file which should be rendered in as drop acceptor"
+msgstr ""
+
+#: ../thunar/thunar-icon-renderer.c:130
+msgid "The file whose icon to render"
+msgstr "Το αÏÏείο ÏοÏ
οÏοίοÏ
Ïο εικονίδιο να ÏÏοβληθει"
+
+#: ../thunar/thunar-icon-renderer.c:145 ../thunar/thunar-icon-renderer.c:146
+#: ../thunar/thunar-text-renderer.c:172 ../thunar/thunar-text-renderer.c:173
+msgid "Follow state"
+msgstr "ΠαÏακολοÏθηÏη καÏάÏÏαÏηÏ"
+
+#: ../thunar/thunar-icon-renderer.c:158 ../thunar/thunar-path-entry.c:179
+msgid "Icon size"
+msgstr "ÎÎÎ³ÎµÎ¸Î¿Ï ÎµÎ¹ÎºÎ¿Î½Î¹Î´Î¯Î¿Ï
"
+
+#: ../thunar/thunar-icon-renderer.c:159
+msgid "The icon size in pixels"
+msgstr "Το μÎÎ³ÎµÎ¸Î¿Ï ÎµÎ¹ÎºÎ¿Î½Î¹Î´Î¯Î¿Ï
Ïε pixels"
+
+#: ../thunar/thunar-icon-view.c:111
+msgid "Arran_ge Items"
+msgstr "ΣÏοί_ÏιÏη ÎνÏικειμÎνÏν"
+
+#: ../thunar/thunar-icon-view.c:116
+msgid "Sort By _Name"
+msgstr "ΤαξινÏμηÏη καÏά Î_νομα"
+
+#: ../thunar/thunar-icon-view.c:116
+msgid "Keep items sorted by their name in rows"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:117
+msgid "Sort By _Size"
+msgstr "ΤαξινÏμηÏη καÏά _ÎÎγεθοÏ"
+
+#: ../thunar/thunar-icon-view.c:117
+msgid "Keep items sorted by their size in rows"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:118
+msgid "Sort By _Type"
+msgstr "ΤαξινÏμηÏη λίÏÏÎ±Ï ÎºÎ±Ïά _ΤÏÏο"
+
+#: ../thunar/thunar-icon-view.c:118
+msgid "Keep items sorted by their type in rows"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:119
+msgid "Sort By Modification _Date"
+msgstr "ΤαξινÏμηÏη καÏά ΧÏονολογία _ΤÏοÏοÏοίηÏηÏ"
+
+#: ../thunar/thunar-icon-view.c:119
+msgid "Keep items sorted by their modification date in rows"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:124
+msgid "_Ascending"
+msgstr "_ÎÏξοÏ
Ïα"
+
+#: ../thunar/thunar-icon-view.c:124
+msgid "Sort items in ascending order"
+msgstr "ΤαξινÏμηÏη ανÏικειμÎνÏν με αÏξοÏ
Ïα ÏειÏά"
+
+#: ../thunar/thunar-icon-view.c:125
+msgid "_Descending"
+msgstr "_ΦθίνοÏ
Ïα"
+
+#: ../thunar/thunar-icon-view.c:125
+msgid "Sort items in descending order"
+msgstr "ΤαξινÏμηÏη καÏÏελÏν με ÏθίνοÏ
Ïα ÏειÏά"
+
+#: ../thunar/thunar-icon-view.c:226
+msgid "Icon view"
+msgstr "Î Ïοβολή ÎικονιδίÏν"
+
+#: ../thunar/thunar-icon-view.c:227
+msgid "Icon based directory listing"
+msgstr ""
+
+#: ../thunar/thunar-launcher.c:134 ../thunar/thunar-launcher.c:135
+msgid "Action group"
+msgstr "Îμάδα ενÎÏγειαÏ"
+
+#: ../thunar/thunar-launcher.c:147 ../thunar/thunar-launcher.c:148
+msgid "Selected files"
+msgstr "ÎÏιλεγμÎνα αÏÏεία"
+
+#: ../thunar/thunar-launcher.c:160 ../thunar/thunar-launcher.c:161
+msgid "Widget"
+msgstr "ÎαÏαÏÎÏι"
+
+#. the "Open" action
+#: ../thunar/thunar-launcher.c:189 ../thunar/thunar-launcher.c:521
+#: ../thunar/thunar-launcher.c:539
+msgid "_Open"
+msgstr "_Îνοιγμα"
+
+#: ../thunar/thunar-launcher.c:189
+msgid "Open the selected items"
+msgstr "ÎκÏÎλεÏη ÏÏν εÏιλεγμÎνÏν ανÏικειμÎνÏν"
+
+#. the "Open in New Window" action
+#: ../thunar/thunar-launcher.c:193
+msgid "Open in New Window"
+msgstr "Îνοιγμα Ïε ÎÎο ΠαÏάθÏ
Ïο"
+
+#: ../thunar/thunar-launcher.c:193
+msgid "Open the selected directories in new Thunar windows"
+msgstr "Îνοιγμα ÏÏν εÏιλεγμÎνÏν καÏαλÏγÏν Ïε νÎα ÏαÏάθÏ
Ïα ÏοÏ
Thunar"
+
+#: ../thunar/thunar-launcher.c:347
+#, c-format
+msgid "Unable to open \"%s\"."
+msgstr "ÎδÏ
ναμία ανοίγμαÏÎ¿Ï ÏοÏ
αÏÏείοÏ
\"%s\"."
+
+#: ../thunar/thunar-launcher.c:352
+#, c-format
+msgid "Unable to open %d file."
+msgid_plural "Unable to open %d files."
+msgstr[0] "ÎδÏναÏο Ïο άνοιγμα %d αÏÏείοÏ
."
+msgstr[1] "ÎδÏναÏο Ïο άνοιγμα %d αÏÏείÏν."
+
+#: ../thunar/thunar-launcher.c:458
+msgid "Are you sure you want to open all folders?"
+msgstr "ÎίÏαÏÏε βÎβαιοι ÏÏι θÎλεÏε να ανοίξεÏε ÏλοÏ
Ï ÏοÏ
Ï ÏακÎλοÏ
Ï;"
+
+#: ../thunar/thunar-launcher.c:460
+#, c-format
+msgid "This will open %d separate window."
+msgid_plural "This will open %d separate windows."
+msgstr[0] "ÎÏ
ÏÏ Î¸Î± ανοίξει %d διαÏοÏεÏÎ¹ÎºÏ ÏαÏάθÏ
Ïο."
+msgstr[1] "ÎÏ
ÏÏ Î¸Î± ανοίξει %d διαÏοÏεÏικά ÏαÏάθÏ
Ïα."
+
+#: ../thunar/thunar-launcher.c:519
+#, c-format
+msgid "Open in %d New Window"
+msgid_plural "Open in %d New Windows"
+msgstr[0] "Îνοιγμα Ïε %d ÎÎο ΠαÏάθÏ
Ïο"
+msgstr[1] "Îνοιγμα Ïε %d ÎÎα ΠαÏάθÏ
Ïα"
+
+#: ../thunar/thunar-launcher.c:537
+#, fuzzy
+msgid "_Execute"
+msgstr "ÎκÏÎλεÏη"
+
+#: ../thunar/thunar-list-model.c:258
+msgid "Folder"
+msgstr "ΦάκελοÏ"
+
+#: ../thunar/thunar-list-model.c:259
+#, fuzzy
+msgid "The stores folder"
+msgstr "ΦακÎÎ»Î¿Ï Î ÏοοÏιÏμοÏ:"
+
+#: ../thunar/thunar-list-model.c:271
+msgid "Folders first"
+msgstr "Î ÏÏÏα οι Ïάκελοι"
+
+#: ../thunar/thunar-list-model.c:272
+msgid "Folders first in sorting"
+msgstr "ÎμÏάνιÏη ÏÏÏÏα ÏÏν ÏακÎλÏν καÏά Ïην ÏαξινÏμηÏη"
+
+#: ../thunar/thunar-list-model.c:284
+msgid "Number of files"
+msgstr "ÎÏιθμÏÏ ÎÏÏείÏν"
+
+#: ../thunar/thunar-list-model.c:285
+msgid "Number of visible files"
+msgstr "ÎÏιθμÏÏ Î¿ÏαÏÏν αÏÏείÏν"
+
+#: ../thunar/thunar-list-model.c:297 ../thunar/thunar-view.c:111
+#: ../thunar/thunar-window.c:218
+msgid "Show hidden"
+msgstr "Î Ïοβολή κÏÏ
ÏÏν"
+
+#: ../thunar/thunar-list-model.c:298 ../thunar/thunar-view.c:112
+#: ../thunar/thunar-window.c:219
+msgid "Whether to display hidden files"
+msgstr "Îν θα ÏÏοβάλλονÏαι Ïα κÏÏ
Ïά αÏÏεία"
+
+#: ../thunar/thunar-list-model.c:656 ../thunar/thunar-properties-dialog.c:586
+msgid "broken link"
+msgstr ""
+
+#: ../thunar/thunar-list-model.c:1924
+#, c-format
+msgid "%d item, Free space: %s"
+msgid_plural "%d items, Free space: %s"
+msgstr[0] "%d ανÏικείμενο, ÎλεÏθεÏÎ¿Ï ÏÏÏοÏ: %s"
+msgstr[1] "%d ανÏικείμενα, ÎλεÏθεÏÎ¿Ï ÏÏÏοÏ: %s"
+
+#: ../thunar/thunar-list-model.c:1929
+#, c-format
+msgid "%d item"
+msgid_plural "%d items"
+msgstr[0] "%d ανÏικείμενο"
+msgstr[1] "%d ανÏικείμενα"
+
+#: ../thunar/thunar-list-model.c:1945
+#, c-format
+msgid "\"%s\" broken link"
+msgstr ""
+
+#: ../thunar/thunar-list-model.c:1949
+#, fuzzy, c-format
+msgid "\"%s\" (%s) link to %s"
+msgstr "\"%s\" (%s) %s"
+
+#: ../thunar/thunar-list-model.c:1954
+#, c-format
+msgid "\"%s\" (%s) %s"
+msgstr "\"%s\" (%s) %s"
+
+#: ../thunar/thunar-list-model.c:1971 ../thunar/thunar-list-model.c:1976
+#, c-format
+msgid "%d item selected"
+msgid_plural "%d items selected (%s)"
+msgstr[0] "%d εÏιλεγμÎνο ανÏικείμενο"
+msgstr[1] "%d εÏιλεγμÎνα ανÏικείμενα (%s)"
+
+#: ../thunar/thunar-location-buttons.c:214
+msgid "Spacing"
+msgstr "ÎιάÏÏιÏο"
+
+#: ../thunar/thunar-location-buttons.c:215
+msgid "The amount of space between the path buttons"
+msgstr "Το μÎÎ³ÎµÎ¸Î¿Ï ÏοÏ
διαÏÏήμαÏÎ¿Ï Î¼ÎµÏÎ±Î¾Ï ÎºÎ¿Ï
μÏιÏν διαδÏομήÏ"
+
+#: ../thunar/thunar-location-dialog.c:85
+msgid "Open Location"
+msgstr "Îνοιγμα ΤοÏοθεÏίαÏ"
+
+#: ../thunar/thunar-location-dialog.c:99
+msgid "_Location:"
+msgstr "_ΤοÏοθεÏία:"
+
+#: ../thunar/thunar-navigator.c:137 ../thunar/thunar-window.c:205
+msgid "Current directory"
+msgstr "ΤÏÎÏον καÏάλογοÏ"
+
+#: ../thunar/thunar-navigator.c:138
+msgid "The directory currently displayed by the navigator"
+msgstr ""
+
+#: ../thunar/thunar-open-with-action.c:320
+#, c-format
+msgid "%s (default)"
+msgstr "%s (ÏÏοεÏιλογή)"
+
+#. add our custom children
+#: ../thunar/thunar-open-with-action.c:371
+#, fuzzy
+msgid "Other Application..."
+msgstr "Îνοιγμα _ΤοÏοθεÏίαÏ..."
+
+#: ../thunar/thunar-path-entry.c:167
+msgid "Current file"
+msgstr "ΤÏÎÏον αÏÏείο"
+
+#: ../thunar/thunar-path-entry.c:168
+msgid "The currently displayed file"
+msgstr "Το αÏÏείο ÏοÏ
εμÏανίζεÏαι ÏÏÏα"
+
+#: ../thunar/thunar-path-entry.c:180
+msgid "The icon size for the path entry"
+msgstr "ÎÎÎ³ÎµÎ¸Î¿Ï ÎµÎ¹ÎºÎ¿Î½Î¹Î´Î¯Î¿Ï
για Ïη διαδÏομή"
+
+#: ../thunar/thunar-preferences.c:178
+#, fuzzy, c-format
+msgid "Failed to create the Thunar configuration directory in %s"
+msgstr "ÎδÏ
ναμία δημιοÏ
ÏÎ³Î¯Î±Ï ÏοÏ
καÏαλÏγοÏ
%s."
+
+#: ../thunar/thunar-preferences.c:186
+#, fuzzy, c-format
+msgid "Failed to open preferences database in %s: %s"
+msgstr "ÎÏοÏÏ
Ïία μεÏονομαÏÎ¯Î±Ï ÏοÏ
%s."
+
+#: ../thunar/thunar-progress-dialog.c:129
+msgid "Job"
+msgstr "ÎÏγαÏία"
+
+#: ../thunar/thunar-progress-dialog.c:130
+msgid "The job whose progress to display"
+msgstr "Î Î¿Î¹Î±Ï ÎµÏγαÏÎ¯Î±Ï Î· ÏÏÏÎ¿Î´Î¿Ï Î¸Î± ÏαÏοÏ
ÏιαÏÏεί"
+
+#: ../thunar/thunar-progress-dialog.c:273
+msgid "Question"
+msgstr "ÎÏÏÏηÏη"
+
+#: ../thunar/thunar-progress-dialog.c:299
+msgid "_Yes"
+msgstr "_Îαι"
+
+#: ../thunar/thunar-progress-dialog.c:303
+msgid "Yes to _all"
+msgstr "Îαι Ïε Ï_λα"
+
+#: ../thunar/thunar-progress-dialog.c:307
+msgid "_No"
+msgstr "_ÎÏι"
+
+#: ../thunar/thunar-progress-dialog.c:311
+msgid "_Cancel"
+msgstr "_ÎκÏÏÏÏη"
+
+#: ../thunar/thunar-progress-dialog.c:437
+#, c-format
+msgid "(%lu hour remaining)"
+msgid_plural "(%lu hours remaining)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar/thunar-progress-dialog.c:442
+#, c-format
+msgid "(%lu minute remaining)"
+msgid_plural "(%lu minutes remaining)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar/thunar-progress-dialog.c:447
+#, c-format
+msgid "(%lu second remaining)"
+msgid_plural "(%lu seconds remaining)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar/thunar-properties-dialog.c:143
+#, fuzzy
+msgid "The file displayed by the dialog"
+msgstr "Î ÏίÏÎ»Î¿Ï ÏοÏ
διαλÏγοÏ
εÏÎ¹Î»Î¿Î³Î®Ï Î±ÏÏείοÏ
."
+
+#: ../thunar/thunar-properties-dialog.c:180
+msgid "General"
+msgstr "ÎενικÎÏ"
+
+#: ../thunar/thunar-properties-dialog.c:197
+msgid "Name:"
+msgstr "Îνομα:"
+
+#.
+#. Second box (kind)
+#.
+#: ../thunar/thunar-properties-dialog.c:222
+msgid "Kind:"
+msgstr "ÎίδοÏ:"
+
+#.
+#. Third box (modified, accessed)
+#.
+#: ../thunar/thunar-properties-dialog.c:247
+msgid "Modified:"
+msgstr "ΤÏοÏοÏοιήθηκε:"
+
+#: ../thunar/thunar-properties-dialog.c:260
+msgid "Accessed:"
+msgstr "Î ÏοÏÏελάÏÏηκε:"
+
+#.
+#. Fourth box (volume, size)
+#.
+#: ../thunar/thunar-properties-dialog.c:284
+msgid "Volume:"
+msgstr "ΤÏμοÏ:"
+
+#: ../thunar/thunar-properties-dialog.c:307
+msgid "Size:"
+msgstr "ÎÎγεθοÏ:"
+
+#.
+#. Emblem chooser
+#.
+#: ../thunar/thunar-properties-dialog.c:331
+msgid "Emblems"
+msgstr ""
+
+#: ../thunar/thunar-properties-dialog.c:563
+#, c-format
+msgid "%s Info"
+msgstr "%s ΠληÏοÏοÏίεÏ"
+
+#: ../thunar/thunar-properties-dialog.c:644
+#, c-format
+msgid "%s (%u Bytes)"
+msgstr "%s (%u Bytes)"
+
+#. display an error message
+#: ../thunar/thunar-properties-dialog.c:690
+#: ../thunar/thunar-standard-view.c:2135
+#, fuzzy, c-format
+msgid "Failed to rename `%s'"
+msgstr "ÎÏοÏÏ
Ïία μεÏονομαÏÎ¯Î±Ï ÏοÏ
%s."
+
+#: ../thunar/thunar-standard-view.c:245
+#, fuzzy
+msgid "File Context Menu"
+msgstr "X-Chat: ÎÎµÎ½Î¿Ï Î§ÏήÏÏη"
+
+#: ../thunar/thunar-standard-view.c:246
+#, fuzzy
+msgid "Folder Context Menu"
+msgstr "X-Chat: ÎÎµÎ½Î¿Ï Î§ÏήÏÏη"
+
+#: ../thunar/thunar-standard-view.c:247
+msgid "Create _Folder..."
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:247
+msgid "Create an empty folder within the current folder"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:248
+msgid "_Properties"
+msgstr "_ÎδιÏÏηÏεÏ"
+
+#: ../thunar/thunar-standard-view.c:248
+#, fuzzy
+msgid "View the properties of the selected file"
+msgstr "Î Ïοβολή ÏÏν ιδιοÏήÏÏν ÏοÏ
εÏιλεγμÎνοÏ
ανÏικειμÎνοÏ
"
+
+#: ../thunar/thunar-standard-view.c:249
+#, fuzzy
+msgid "_Copy Files"
+msgstr "_ÎνÏιγÏαÏή ÎÏÏείÏν"
+
+#: ../thunar/thunar-standard-view.c:249
+#, fuzzy
+msgid "Copy the selected files"
+msgstr "ÎκÏÎλεÏη ÏÏν εÏιλεγμÎνÏν ανÏικειμÎνÏν"
+
+#: ../thunar/thunar-standard-view.c:250
+#, fuzzy
+msgid "Cu_t Files"
+msgstr "ÎÏοκοÏή _ÎÏÏείÏν"
+
+#: ../thunar/thunar-standard-view.c:250
+#, fuzzy
+msgid "Cut the selected files"
+msgstr "ÎκÏÎλεÏη ÏÏν εÏιλεγμÎνÏν ανÏικειμÎνÏν"
+
+#: ../thunar/thunar-standard-view.c:251
+#, fuzzy
+msgid "_Paste Files"
+msgstr "_ÎÏικÏλληÏη ÎÏÏείÏν"
+
+#: ../thunar/thunar-standard-view.c:252
+#, fuzzy
+msgid "_Delete Files"
+msgstr "ÎÏιλεγμÎνα αÏÏεία"
+
+#: ../thunar/thunar-standard-view.c:252
+#, fuzzy
+msgid "Delete the selected files"
+msgstr "ÎκÏÎλεÏη ÏÏν εÏιλεγμÎνÏν ανÏικειμÎνÏν"
+
+#: ../thunar/thunar-standard-view.c:253
+#, fuzzy
+msgid "Paste Files into Folder"
+msgstr "_ÎÏικÏλληÏη ÎÏÏείÏν ÏÏο Ïάκελο"
+
+#: ../thunar/thunar-standard-view.c:253
+msgid "Paste files into the selected folder"
+msgstr "ÎÏικÏλληÏη αÏÏείÏν ÏÏον εÏιλεγμÎνο Ïάκελο"
+
+#: ../thunar/thunar-standard-view.c:254
+#, fuzzy
+msgid "Select _all Files"
+msgstr "ÎÏιλογή Ï_λÏν ÏÏν αÏÏείÏν"
+
+#: ../thunar/thunar-standard-view.c:254
+msgid "Select all files in this window"
+msgstr "ÎÏιλογή ÏλÏν ÏÏν αÏÏείÏν Ïε αÏ
ÏÏ Ïο ÏαÏάθÏ
Ïο"
+
+#: ../thunar/thunar-standard-view.c:255
+#, fuzzy
+msgid "Select by _Pattern"
+msgstr "ÎÏιλογή βάÏει _μοÏίβοÏ
"
+
+#: ../thunar/thunar-standard-view.c:255
+msgid "Select all files that match a certain pattern"
+msgstr "ÎÏιλογή ÏλÏν ÏÏν αÏÏείÏν ÏοÏ
ÏαιÏιάζοÏ
ν Ïε Îνα μοÏίβο"
+
+#: ../thunar/thunar-standard-view.c:256 ../thunar/thunar-standard-view.c:2414
+msgid "Du_plicate File"
+msgid_plural "Du_plicate Files"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar/thunar-standard-view.c:256
+#, fuzzy
+msgid "Duplicate each selected file"
+msgstr "ÎκÏÎλεÏη ÏÏν εÏιλεγμÎνÏν ανÏικειμÎνÏν"
+
+#: ../thunar/thunar-standard-view.c:257 ../thunar/thunar-standard-view.c:2420
+msgid "Ma_ke Link"
+msgid_plural "Ma_ke Links"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar/thunar-standard-view.c:257
+msgid "Create a symbolic link for each selected file"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:258
+msgid "_Rename"
+msgstr "_ÎεÏονομαÏία"
+
+#: ../thunar/thunar-standard-view.c:258
+#, fuzzy
+msgid "Rename the selected file"
+msgstr "ÎεÏονομαÏία εÏιλεγμÎνοÏ
ανÏικειμÎνοÏ
"
+
+#: ../thunar/thunar-standard-view.c:358 ../thunar/thunar-view.c:83
+msgid "Whether the view is currently being loaded"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:853
+msgid "Loading folder contents..."
+msgstr "ΦÏÏÏÏμα ÏεÏιεÏομÎνÏν ÏακÎλοÏ
..."
+
+#: ../thunar/thunar-standard-view.c:1305
+#, fuzzy
+msgid "New Folder"
+msgstr "ΦάκελοÏ"
+
+#: ../thunar/thunar-standard-view.c:1308
+#, fuzzy
+msgid "New Folder..."
+msgstr "ΦάκελοÏ"
+
+#. display an error message
+#: ../thunar/thunar-standard-view.c:1322
+#, c-format
+msgid "Cannot convert filename `%s' to the local encoding"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:1468
+#, fuzzy, c-format
+msgid ""
+"Are you sure that you want to\n"
+"permanently delete \"%s\"?"
+msgstr ""
+"ÎίÏÏε βÎβαιοÏ/η ÏÏι θÎλεÏε να διαγÏάÏεÏε Ïλα Ïα αÏÏεία αÏÏ Ïα αÏοÏÏίμμαÏα;"
+
+#: ../thunar/thunar-standard-view.c:1474
+#, fuzzy, c-format
+msgid ""
+"Are you sure that you want to permanently\n"
+"delete the selected file?"
+msgid_plural ""
+"Are you sure that you want to permanently\n"
+"delete the %u selected files?"
+msgstr[0] ""
+"ÎίÏÏε βÎβαιοÏ/η ÏÏι θÎλεÏε να διαγÏάÏεÏε Ïλα Ïα αÏÏεία αÏÏ Ïα αÏοÏÏίμμαÏα;"
+msgstr[1] ""
+"ÎίÏÏε βÎβαιοÏ/η ÏÏι θÎλεÏε να διαγÏάÏεÏε Ïλα Ïα αÏÏεία αÏÏ Ïα αÏοÏÏίμμαÏα;"
+
+#: ../thunar/thunar-standard-view.c:1489
+msgid "If you delete a file, it is permanently lost."
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:1561
+#, fuzzy
+msgid "Select by Pattern"
+msgstr "ÎÏιλογή βάÏει μοÏίβοÏ
"
+
+#: ../thunar/thunar-standard-view.c:1576
+msgid "Pattern:"
+msgstr "ÎοÏίβο:"
+
+#: ../thunar/thunar-standard-view.c:2087
+#, fuzzy, c-format
+msgid "Failed to open directory `%s'"
+msgstr "ÎδÏ
ναμία ανοίγμαÏÎ¿Ï ÎºÎ±ÏαλÏγοÏ
%s."
+
+#: ../thunar/thunar-standard-view.c:2387
+#, fuzzy
+msgid "_Copy File"
+msgid_plural "_Copy Files"
+msgstr[0] "_ÎνÏιγÏαÏή ÎÏÏείοÏ
"
+msgstr[1] "_ÎνÏιγÏαÏή ÎÏÏείοÏ
"
+
+#: ../thunar/thunar-standard-view.c:2393
+#, fuzzy
+msgid "Cu_t File"
+msgid_plural "Cu_t Files"
+msgstr[0] "ÎÏοκοÏή _ÎÏÏείÏν"
+msgstr[1] "ÎÏοκοÏή _ÎÏÏείÏν"
+
+#: ../thunar/thunar-standard-view.c:2402
+#, fuzzy
+msgid "_Delete File"
+msgid_plural "_Delete Files"
+msgstr[0] "ÎÏιλεγμÎνα αÏÏεία"
+msgstr[1] "ÎÏιλεγμÎνα αÏÏεία"
+
+#: ../thunar/thunar-statusbar.c:191
+msgid "The file whose icon to display"
+msgstr "Το αÏÏείο ÏοÏ
οÏοίοÏ
Ïο εικονίδιο να ÏÏοβληθει"
+
+#: ../thunar/thunar-statusbar.c:205 ../thunar/thunar-statusbar.c:747
+#, fuzzy
+msgid "Whether to display a loading animation"
+msgstr "Îν θα εμÏανίζει μια \"αÏÏ
νεÏή\" καÏάÏÏαÏη"
+
+#: ../thunar/thunar-statusbar.c:760 ../thunar/thunar-view.c:98
+msgid "Statusbar text"
+msgstr "Îείμενο μÏάÏÎ±Ï ÎºÎ±ÏάÏÏαÏηÏ"
+
+#: ../thunar/thunar-statusbar.c:761
+msgid "The main text to be displayed in the statusbar"
+msgstr "Το κÏ
ÏίÏÏ ÎºÎµÎ¯Î¼ÎµÎ½Î¿ ÏοÏ
θα εμÏανίζεÏαι ÏÏη μÏάÏα καÏάÏÏαÏηÏ"
+
+#: ../thunar/thunar-text-renderer.c:185
+msgid "Text"
+msgstr "Îείμενο"
+
+#: ../thunar/thunar-text-renderer.c:186
+msgid "The text to render"
+msgstr "Îείμενο ÏÏÎ¿Ï ÎµÎ¼ÏάνιÏη"
+
+#: ../thunar/thunar-text-renderer.c:200
+msgid "Wrap mode"
+msgstr "ÎαÏάÏÏαÏη αναδίÏλÏÏηÏ"
+
+#: ../thunar/thunar-text-renderer.c:201
+msgid "The wrap mode"
+msgstr "ΠκαÏάÏÏαÏη αναδίÏλÏÏηÏ"
+
+#: ../thunar/thunar-text-renderer.c:216
+msgid "Wrap width"
+msgstr "ΠλάÏÎ¿Ï Î±Î½Î±Î´Î¯ÏλÏÏηÏ"
+
+#: ../thunar/thunar-text-renderer.c:217
+msgid "The wrap width"
+msgstr "Το ÏλάÏÎ¿Ï Î±Î½Î±Î´Î¯ÏλÏÏηÏ"
+
+#: ../thunar/thunar-view.c:99
+msgid "Text to be displayed in the statusbar associated with this view"
+msgstr ""
+
+#: ../thunar/thunar-view.c:125 ../thunar/thunar-window.c:233
+msgid "UI manager"
+msgstr "ÎιαÏειÏιÏÏÎ®Ï UI"
+
+#: ../thunar/thunar-view.c:126
+#, fuzzy
+msgid "UI manager of the surrounding window"
+msgstr "ΣÏάλμα ÏÏο διαÏειÏιÏÏή ÏαÏαθÏÏÏν: "
+
+#: ../thunar/thunar-window.c:149
+msgid "_File"
+msgstr "_ÎÏÏείο"
+
+#: ../thunar/thunar-window.c:150
+msgid "Open New _Window"
+msgstr "Îνοιγμα νÎοÏ
_ÏαÏαθÏÏοÏ
"
+
+#: ../thunar/thunar-window.c:150
+msgid "Open a new Thunar window for the displayed location"
+msgstr ""
+"'Îνοιγμα ενÏÏ Î¬Î»Î»Î¿Ï
ÏαÏάθÏ
ÏοÏ
ÏοÏ
Thunar για Ïην ÏÏοβαλλÏμενη ÏοÏοθεÏία"
+
+#: ../thunar/thunar-window.c:151
+msgid "Close _All Windows"
+msgstr "ÎλείÏιμο _ÎλÏν ÏÏν ΠαÏαθÏÏÏν"
+
+#: ../thunar/thunar-window.c:151
+msgid "Close all Thunar windows"
+msgstr "ÎλείÏιμο ÏλÏν ÏÏν ÏαÏαθÏÏÏν ÏοÏ
Thunar"
+
+#: ../thunar/thunar-window.c:152
+msgid "_Close"
+msgstr "_ÎλείÏιμο"
+
+#: ../thunar/thunar-window.c:152
+msgid "Close this window"
+msgstr "ÎλείÏιμο αÏ
ÏÎ¿Ï ÏοÏ
ÏαÏαθÏÏοÏ
"
+
+#: ../thunar/thunar-window.c:153
+msgid "_Edit"
+msgstr "_ÎÏεξεÏγαÏία"
+
+#: ../thunar/thunar-window.c:154
+msgid "_View"
+msgstr "_Î Ïοβολή"
+
+#: ../thunar/thunar-window.c:155
+msgid "_Location Bar"
+msgstr "ÎÏαμμή _ΤοÏοθεÏίαÏ"
+
+#: ../thunar/thunar-window.c:156
+msgid "_Side Pane"
+msgstr "_ΠλεÏ
ÏÎ¹ÎºÏ Î¤Î±Î¼ÏλÏ"
+
+#: ../thunar/thunar-window.c:157
+msgid "_Go"
+msgstr "_ÎεÏάβαÏη"
+
+#: ../thunar/thunar-window.c:158
+msgid "Open _Parent"
+msgstr "Îνοιγμα _ÎονικοÏ"
+
+#: ../thunar/thunar-window.c:158
+msgid "Open the parent folder"
+msgstr "Îνοιγμα ÏοÏ
Î³Î¿Î½Î¹ÎºÎ¿Ï ÏακÎλοÏ
"
+
+#: ../thunar/thunar-window.c:159
+#, fuzzy
+msgid "_Home"
+msgstr "ÎÏÏικÏÏ ÎαÏάλογοÏ"
+
+#: ../thunar/thunar-window.c:159
+#, fuzzy
+msgid "Open the home folder"
+msgstr "Îνοιγμα ÏοÏ
Î³Î¿Î½Î¹ÎºÎ¿Ï ÏακÎλοÏ
"
+
+#: ../thunar/thunar-window.c:160
+msgid "Open _Location..."
+msgstr "Îνοιγμα _ΤοÏοθεÏίαÏ..."
+
+#: ../thunar/thunar-window.c:160
+msgid "Specify a location to open"
+msgstr "ÎαθοÏίÏÏε μια ÏοÏοθεÏία για άνοιγμα"
+
+#: ../thunar/thunar-window.c:161
+msgid "_Help"
+msgstr "_Îοήθεια"
+
+#: ../thunar/thunar-window.c:163 ../thunar/thunar-window.c:165
+msgid "_About"
+msgstr "_ΠεÏί"
+
+#: ../thunar/thunar-window.c:163 ../thunar/thunar-window.c:165
+msgid "Display information about Thunar"
+msgstr "ÎμÏάνιÏη ÏληÏοÏοÏιÏν ÏÏεÏικά με Ïο Thunar"
+
+#: ../thunar/thunar-window.c:171
+#, fuzzy
+msgid "Show _Hidden Files"
+msgstr "ÎμÏάνιÏη _ÎÏÏ
ÏÏν ÎÏÏείÏν"
+
+#: ../thunar/thunar-window.c:171
+msgid "Toggles the display of hidden files in the current window"
+msgstr "ÎναλλάÏÏει Ïην εμÏάνιÏη κÏÏ
ÏÏν αÏÏείÏν ÏÏο ÏÏÎÏον ÏαÏάθÏ
Ïο"
+
+#: ../thunar/thunar-window.c:206
+msgid "The directory currently displayed within this window"
+msgstr ""
+
+#: ../thunar/thunar-window.c:234
+msgid "The UI manager used within this window"
+msgstr ""
+
+#.
+#. * add the side pane options
+#.
+#: ../thunar/thunar-window.c:289
+msgid "_Favourites"
+msgstr "_ÎγαÏημÎνα"
+
+#: ../thunar/thunar-window.c:295 ../thunar/thunar-window.c:316
+msgid "_Hidden"
+msgstr "Î_ÏÏ
ÏÏ"
+
+#.
+#. * add the location bar options
+#.
+#: ../thunar/thunar-window.c:304
+msgid "_Button Style"
+msgstr "_ΣÏÏ
λ κοÏ
μÏιÏν"
+
+#: ../thunar/thunar-window.c:310
+msgid "_Traditional Style"
+msgstr "_ΠαÏαδοÏÎ¹Î±ÎºÏ Î£ÏÏ
λ"
+
+#.
+#. * add view options
+#.
+#: ../thunar/thunar-window.c:325
+msgid "View as _Icons"
+msgstr "Î Ïοβολή Î_ικονιδίÏν"
+
+#: ../thunar/thunar-window.c:331
+msgid "View as _Detailed List"
+msgstr "Î Ïοβολή ÎίÏÏαÏ"
+
+#. display an error to the user
+#: ../thunar/thunar-window.c:738
+#, fuzzy
+msgid "Failed to open home directory"
+msgstr "ÎδÏ
ναμία ανοίγμαÏÎ¿Ï ÎºÎ±ÏαλÏγοÏ
%s."
+
+#: ../thunar/thunar-window.c:815
+msgid ""
+"Thunar is a fast and easy to use file manager\n"
+"for the Xfce Desktop Environment."
+msgstr ""
+
+#: ../thunar/thunar-window.c:820
+msgid "translator-credits"
+msgstr "ΣÏαÏÏÎ¿Ï ÎιαννοÏÏÎ·Ï <stavrosg2002 at freemail.gr>"
+
+#: ../thunarx/thunarx-property-page.c:104
+msgid "Label"
+msgstr "ÎÏικÎÏα"
+
+#: ../thunarx/thunarx-property-page.c:105
+msgid "Text of the page's label"
+msgstr "Îείμενο ÏÎ·Ï ÎµÏικÎÏÎ±Ï ÏÎ·Ï ÏελίδαÏ"
+
+#: ../thunarx/thunarx-property-page.c:117
+#, fuzzy
+msgid "Label widget"
+msgstr "ÎÏαÏÎ¹ÎºÏ ÏÏ
ÏÏαÏÎ¹ÎºÏ ÎµÏικÎÏαÏ"
+
+#: ../thunarx/thunarx-property-page.c:118
+#, fuzzy
+msgid "A widget to display in place of the usual page label"
+msgstr ""
+"Îνα γÏαÏÎ¹ÎºÏ ÏÏ
ÏÏαÏÎ¹ÎºÏ ÏοÏ
θα εμÏανίζεÏαι ÏÏην θÎÏη ÏÎ·Ï ÏÏ
νήθοÏ
Ï ÎµÏικÎÏÎ±Ï "
+"expander"
+
+#: ../Thunar.desktop.in.h:1
+msgid "Browse the filesystem with the file manager"
+msgstr "ΠεÏιήγηÏη ÏοÏ
ÏÏ
ÏÏήμαÏÎ¿Ï Î±ÏÏείÏν με Ïον διαÏειÏιÏÏή αÏÏείÏν"
+
+#: ../Thunar.desktop.in.h:2
+msgid "File Manager"
+msgstr "ÎιαÏειÏιÏÏÎ®Ï ÎÏÏείÏν"
+
+#: ../Thunar.desktop.in.h:3
+msgid "Thunar File Manager"
+msgstr "ÎιαÏειÏιÏÏÎ®Ï ÎÏÏείÏν Thunar"
+
+#~ msgid "Unable to open file %s."
+#~ msgstr "ÎδÏναÏο Ïο άνοιγμα αÏÏείοÏ
%s."
+
+#~ msgid "Files"
+#~ msgstr "ÎÏÏεία"
+
+#~ msgid "The list of files stored within this trash"
+#~ msgstr "ΠλίÏÏα με Ïα αÏÏεία ÏοÏ
βÏίÏκονÏαι Ïε αÏ
ÏÏ Ïον κάδο"
+
+#~ msgid "Empty"
+#~ msgstr "Îδειο"
+
+#~ msgid "Whether all trashes are empty"
+#~ msgstr "Îάν είναι άδειοι Ïλοι οι κάδοι"
+
+#~ msgid "The URI '%s' is invalid"
+#~ msgstr "Το URI '%s' δεν είναι ÎγκÏ
Ïο"
+
+#~ msgid "The trash file URI '%s' may not include a '#'"
+#~ msgstr "Το URI ÏοÏ
αÏÏείοÏ
κάδοÏ
'%s' μÏοÏεί να μην ÏεÏιÎÏει Îνα '#'"
+
+#~ msgid "Only local directories can be listed"
+#~ msgstr "Î Ïοβολή μÏνο ÏοÏικÏν καÏαλÏγÏν"
+
+#~ msgid "Computer"
+#~ msgstr "Î¥ÏολογιÏÏήÏ"
+
+#~ msgid "Model"
+#~ msgstr "ÎονÏÎλο"
+
+#~ msgid "The model to display"
+#~ msgstr "Ποιο μονÏÎλο θα αÏεικονιÏÏεί"
+
+#~ msgid "File column"
+#~ msgstr "ΣÏήλη αÏÏείοÏ
"
+
+#~ msgid "The column which contains the file"
+#~ msgstr "Î ÏÏήλη ÏοÏ
ÏεÏιÎÏει Ïο αÏÏείο"
+
+#~ msgid "Position column"
+#~ msgstr "ΣÏήλη ÏοÏοθÎÏηÏηÏ"
+
+#~ msgid "The column which contains the position"
+#~ msgstr "Î ÏÏήλη ÏοÏ
ÏεÏιÎÏει Ïη θÎÏη"
+
+#~ msgid "Unable to rename file"
+#~ msgstr "ÎδÏ
ναμία μεÏονομαÏÎ¯Î±Ï ÏοÏ
αÏÏείοÏ
"
+
+#~ msgid "unknown"
+#~ msgstr "άγνÏÏÏο"
+
+#~ msgid "\"%s\" %s"
+#~ msgstr "\"%s\" %s"
+
+#~ msgid "Trash"
+#~ msgstr "ÎÏοÏÏίμμαÏα"
+
+#~ msgid "_Empty Trash Bin"
+#~ msgstr "_ÎδειαÏμα ÎÏοÏÏιμμάÏÏν"
+
+#~ msgid "Delete all items in the Trash"
+#~ msgstr "ÎιαγÏαÏή ÏλÏν ÏÏν ανÏικειμÎνÏν αÏÏ Ïα ÎÏοÏÏίμμαÏα"
+
+#~ msgid "This will delete %d file currently located in the trash bin."
+#~ msgid_plural "This will delete %d files currently located in the trash bin."
+#~ msgstr[0] "ÎÏ
ÏÏ Î¸Î± διαγÏάÏει %d αÏÏείο ÏοÏ
βÏίÏκεÏαι ÏÏÏα ÏÏα αÏοÏÏίμμαÏα."
+#~ msgstr[1] "ÎÏ
ÏÏ Î¸Î± διαγÏάÏει %d αÏÏεία ÏοÏ
βÏίÏκονÏαι ÏÏÏα ÏÏα αÏοÏÏίμμαÏα."
+
+#~ msgid "Other..."
+#~ msgstr "Îλλο..."
Added: desktop/trunk/thunar/branches/upstream/current/po/es.gmo
===================================================================
(Binary files differ)
Property changes on: desktop/trunk/thunar/branches/upstream/current/po/es.gmo
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: desktop/trunk/thunar/branches/upstream/current/po/es.po
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/po/es.po 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/po/es.po 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,1436 @@
+# Spanish translations for Thunar.
+# Copyright (C) 2004-2005 Benedikt Meurer.
+# This file is distributed under the same license as the Thunar package.
+# Pablo Hernández-M. Saiz <homeless3d at gmail.com>, 2005
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Thunar 0.1.2svn\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-11-14 15:38+0100\n"
+"PO-Revision-Date: 2005-10-14 23:57+0900\n"
+"Last-Translator: Pablo Hernández-M. Saiz <homeless3d at gmail.com>\n"
+"Language-Team: Spanish <es at li.org>\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"
+
+#: ../thunar-vfs/thunar-vfs-info.c:261
+msgid "No Exec field specified"
+msgstr "Campo de ejecución no especificado"
+
+#: ../thunar-vfs/thunar-vfs-info.c:269
+msgid "Unable to parse file"
+msgstr "Imposible interpretar archivo"
+
+#: ../thunar-vfs/thunar-vfs-info.c:359
+msgid "Invalid file name"
+msgstr "Nombre de archivo inválido"
+
+#: ../thunar-vfs/thunar-vfs-info.c:381
+msgid "Invalid desktop file"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-info.c:615
+#, fuzzy, c-format
+msgid "Failed to stat file `%s': %s"
+msgstr "Imposible renombrar %s."
+
+#. ask the user whether we should remove the target first
+#. ask the user whether to overwrite
+#: ../thunar-vfs/thunar-vfs-link-job.c:176
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:685
+#, fuzzy, c-format
+msgid ""
+"%s.\n"
+"\n"
+"Do you want to overwrite it?"
+msgstr ""
+"%s ya existe.\n"
+"\n"
+"¿Desea sobreescribirlo?"
+
+#: ../thunar-vfs/thunar-vfs-link-job.c:200
+#, fuzzy, c-format
+msgid "Failed to remove `%s': %s"
+msgstr "Imposible renombrar %s."
+
+#. ask the user whether to skip this file (used for cancellation only)
+#. ask the user whether to skip
+#: ../thunar-vfs/thunar-vfs-link-job.c:212
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:705
+#, fuzzy, c-format
+msgid ""
+"%s.\n"
+"\n"
+"Do you want to skip it?"
+msgstr ""
+"\n"
+"\n"
+"¿Quiere dejarlo como está?"
+
+#: ../thunar-vfs/thunar-vfs-mime-database.c:1625
+#, c-format
+msgid "Failed to load application from file %s"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-mime-info.c:228
+#, c-format
+msgid "%s document"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-mkdir-job.c:165
+#, fuzzy, c-format
+msgid "Unable to create directory `%s': %s"
+msgstr "Imposible crear el directorio %s."
+
+#: ../thunar-vfs/thunar-vfs-path.c:657
+msgid "Path too long to fit into buffer"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-path.c:761
+msgid "URI too long to fit into buffer"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-thumb.c:144 ../thunar/thunar-details-view.c:150
+msgid "Size"
+msgstr "Tamaño"
+
+#: ../thunar-vfs/thunar-vfs-thumb.c:145
+msgid "The desired thumbnail size"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:233
+msgid "Collecting files..."
+msgstr ""
+
+#. display info message
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:295
+#, fuzzy
+msgid "Deleting directories..."
+msgstr "Borrando archivos..."
+
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:315
+#, fuzzy, c-format
+msgid "Unable to remove directory `%s': %s"
+msgstr "Imposible crear el directorio %s."
+
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:593
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:639
+#, fuzzy, c-format
+msgid "Unable to remove `%s': %s"
+msgstr "Imposible eliminar %s."
+
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:831
+msgid "Cannot transfer the root directory"
+msgstr ""
+
+#. tell the user that we're preparing the unlink job
+#: ../thunar-vfs/thunar-vfs-unlink-job.c:161
+msgid "Preparing..."
+msgstr "Preparando..."
+
+#: ../thunar-vfs/thunar-vfs-unlink-job.c:234
+#, c-format
+msgid ""
+"Unable to remove %s.\n"
+"\n"
+"Do you want to skip it?"
+msgstr ""
+"No se puede eliminar %s.\n"
+"\n"
+"¿Quiere dejarlo como está?"
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:157
+#, c-format
+msgid "copy of %s"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:158 ../thunar/thunar-list-model.c:658
+#: ../thunar/thunar-properties-dialog.c:588
+#, c-format
+msgid "link to %s"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:161
+#, c-format
+msgid "another copy of %s"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:162
+#, c-format
+msgid "another link to %s"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:165
+#, c-format
+msgid "third copy of %s"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:166
+#, c-format
+msgid "third link to %s"
+msgstr ""
+
+#. if we had no match on the NAMES, try the "%uth copy of %s" pattern
+#: ../thunar-vfs/thunar-vfs-xfer.c:205 ../thunar-vfs/thunar-vfs-xfer.c:221
+#, c-format
+msgid "%uth copy of %s"
+msgid_plural "%uth copy of %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:223
+#, c-format
+msgid "%uth link to %s"
+msgid_plural "%uth link to %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. setup the error return
+#: ../thunar-vfs/thunar-vfs-xfer.c:263
+#, fuzzy, c-format
+msgid "Failed to create directory `%s'"
+msgstr "Imposible crear el directorio %s."
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:286
+#, fuzzy, c-format
+msgid "Failed to create named fifo `%s'"
+msgstr "Imposible renombrar %s."
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:318
+#, c-format
+msgid "Failed to open `%s' for reading"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:330
+#, c-format
+msgid "Failed to open `%s' for writing"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:345
+#, fuzzy, c-format
+msgid "Failed to read data from `%s'"
+msgstr "Imposible renombrar %s."
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:357
+#, fuzzy, c-format
+msgid "Failed to write data to `%s'"
+msgstr "Imposible renombrar %s."
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:371
+#, fuzzy, c-format
+msgid "Failed to remove `%s'"
+msgstr "Imposible renombrar %s."
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:415
+#, fuzzy, c-format
+msgid "Failed to read link target from `%s'"
+msgstr "Imposible seguir el enlace de %s."
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:423
+#, fuzzy, c-format
+msgid "Failed to create symbolic link `%s'"
+msgstr "Imposible crear el enlace de %s."
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:431
+#, fuzzy, c-format
+msgid "Failed to change mode of `%s'"
+msgstr "Imposible renombrar %s."
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:465 ../thunar-vfs/thunar-vfs-xfer.c:525
+#, c-format
+msgid "Failed to determine file info for `%s'"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:494
+#, fuzzy, c-format
+msgid "Failed to copy special file `%s'"
+msgstr "Imposible copiar el archivo %s."
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:536
+#, fuzzy, c-format
+msgid "Failed to create symbolic `%s'"
+msgstr "Imposible crear el enlace de %s."
+
+#. setup application name
+#: ../thunar/main.c:47 ../thunar/thunar-window.c:347
+msgid "Thunar"
+msgstr "Thunar"
+
+#. display an error message to the user
+#: ../thunar/thunar-application.c:190
+#, fuzzy
+msgid "Failed to launch operation"
+msgstr "Imposible renombrar %s."
+
+#: ../thunar/thunar-application.c:411
+msgid "Copying files..."
+msgstr "Copiando archivos..."
+
+#: ../thunar/thunar-application.c:445
+msgid "Creating symbolic links..."
+msgstr ""
+
+#: ../thunar/thunar-application.c:480
+msgid "Moving files..."
+msgstr "Moviendo archivos..."
+
+#: ../thunar/thunar-application.c:515
+msgid "Deleting files..."
+msgstr "Borrando archivos..."
+
+#: ../thunar/thunar-application.c:555
+#, fuzzy
+msgid "Creating directories..."
+msgstr "Directorio actual"
+
+#: ../thunar/thunar-chooser-dialog.c:137 ../thunar/thunar-emblem-chooser.c:115
+#: ../thunar/thunar-emblem-chooser.c:116 ../thunar/thunar-icon-renderer.c:129
+#: ../thunar/thunar-open-with-action.c:115
+#: ../thunar/thunar-open-with-action.c:116
+#: ../thunar/thunar-properties-dialog.c:142 ../thunar/thunar-statusbar.c:190
+msgid "File"
+msgstr "Archivo"
+
+#: ../thunar/thunar-chooser-dialog.c:138
+msgid "The file for which an application should be chosen"
+msgstr ""
+
+#: ../thunar/thunar-chooser-dialog.c:150
+msgid "Open"
+msgstr "Abrir"
+
+#: ../thunar/thunar-chooser-dialog.c:151
+msgid "Whether the chooser should open the specified file"
+msgstr ""
+
+#. the "Open with" action
+#: ../thunar/thunar-chooser-dialog.c:176 ../thunar/thunar-launcher.c:197
+msgid "Open With"
+msgstr "Abrir con"
+
+#. create the "Custom command" expand
+#: ../thunar/thunar-chooser-dialog.c:238
+msgid "Use a _custom command:"
+msgstr ""
+
+#. create the "Custom command" button
+#: ../thunar/thunar-chooser-dialog.c:256
+#, fuzzy
+msgid "_Browse"
+msgstr "_Cerrar"
+
+#. display an error to the user
+#: ../thunar/thunar-chooser-dialog.c:429
+#, fuzzy, c-format
+msgid "Failed to add new application `%s'"
+msgstr "Imposible renombrar %s."
+
+#. display an error to the user
+#: ../thunar/thunar-chooser-dialog.c:451
+#, fuzzy, c-format
+msgid "Failed to set default application for `%s'"
+msgstr "Imposible renombrar %s."
+
+#. display an error to the user
+#: ../thunar/thunar-chooser-dialog.c:464
+#, fuzzy, c-format
+msgid "Failed to execute `%s'"
+msgstr "Imposible renombrar %s."
+
+#. update the header label
+#: ../thunar/thunar-chooser-dialog.c:580
+#, c-format
+msgid "Open <i>%s</i> and other files of type \"%s\" with:"
+msgstr ""
+
+#: ../thunar/thunar-chooser-dialog.c:602
+#, fuzzy
+msgid "Select an Application"
+msgstr "Otra aplicación..."
+
+#: ../thunar/thunar-chooser-dialog.c:612
+#, fuzzy
+msgid "All Files"
+msgstr "Archivos"
+
+#: ../thunar/thunar-chooser-dialog.c:617
+#, fuzzy
+msgid "Executable Files"
+msgstr "Seleccionar _todos los archivos"
+
+#: ../thunar/thunar-chooser-dialog.c:632
+msgid "Perl Scripts"
+msgstr ""
+
+#: ../thunar/thunar-chooser-dialog.c:638
+msgid "Python Scripts"
+msgstr ""
+
+#: ../thunar/thunar-chooser-dialog.c:644
+msgid "Ruby Scripts"
+msgstr ""
+
+#: ../thunar/thunar-chooser-dialog.c:650
+msgid "Shell Scripts"
+msgstr ""
+
+#: ../thunar/thunar-chooser-model.c:116 ../thunar/thunar-folder.c:134
+#: ../thunar/thunar-standard-view.c:357 ../thunar/thunar-statusbar.c:204
+#: ../thunar/thunar-statusbar.c:746 ../thunar/thunar-view.c:82
+msgid "Loading"
+msgstr "Cargando"
+
+#: ../thunar/thunar-chooser-model.c:117
+msgid "Whether the model is currently being loaded"
+msgstr ""
+
+#: ../thunar/thunar-chooser-model.c:129
+msgid "Mime info"
+msgstr ""
+
+#: ../thunar/thunar-chooser-model.c:130
+msgid "The mime info for the model"
+msgstr ""
+
+#: ../thunar/thunar-chooser-model.c:306
+msgid "None available"
+msgstr ""
+
+#. append the "Recommended Applications:" category
+#: ../thunar/thunar-chooser-model.c:350
+msgid "Recommended Applications:"
+msgstr ""
+
+#. append the "Other Applications:" category
+#: ../thunar/thunar-chooser-model.c:353
+#, fuzzy
+msgid "Other Applications:"
+msgstr "Otra aplicación..."
+
+#: ../thunar/thunar-clipboard-manager.c:149
+msgid "Can paste"
+msgstr "Se puede pegar"
+
+#: ../thunar/thunar-clipboard-manager.c:150
+msgid "Whether the clipboard content can be pasted"
+msgstr ""
+
+#. tell the user that we cannot paste
+#: ../thunar/thunar-clipboard-manager.c:333
+msgid "There is nothing on the clipboard to paste"
+msgstr "No hay nada en el portapapeles que pueda ser pegado"
+
+#: ../thunar/thunar-create-dialog.c:100 ../thunar/thunar-create-dialog.c:101
+#, fuzzy
+msgid "Filename"
+msgstr "Gestor de archivos"
+
+#: ../thunar/thunar-create-dialog.c:113 ../thunar/thunar-create-dialog.c:114
+msgid "Mime Info"
+msgstr ""
+
+#: ../thunar/thunar-create-dialog.c:148
+msgid "Enter the new name:"
+msgstr ""
+
+#: ../thunar/thunar-details-view.c:131
+msgid "Name"
+msgstr "Nombre"
+
+#: ../thunar/thunar-details-view.c:165
+msgid "Permissions"
+msgstr "Permisos"
+
+#: ../thunar/thunar-details-view.c:180
+msgid "Type"
+msgstr "Tipo"
+
+#: ../thunar/thunar-details-view.c:192
+msgid "Date modified"
+msgstr "Fecha de modificación"
+
+#: ../thunar/thunar-details-view.c:221
+msgid "Details view"
+msgstr "Vista detallada"
+
+#: ../thunar/thunar-details-view.c:222
+msgid "Detailed directory listing"
+msgstr "Listado detallado del directorio"
+
+#: ../thunar/thunar-dialogs.c:74 ../thunar/thunar-dialogs.c:78
+#, c-format
+msgid "%s."
+msgstr ""
+
+#: ../thunar/thunar-dnd.c:62
+#, fuzzy
+msgid "_Copy here"
+msgstr "_Copiar archivo"
+
+#: ../thunar/thunar-dnd.c:62
+msgid "_Move here"
+msgstr ""
+
+#: ../thunar/thunar-dnd.c:62
+msgid "_Link here"
+msgstr ""
+
+#. display an error to the user
+#. display an error message to the user
+#: ../thunar/thunar-dnd.c:190 ../thunar/thunar-launcher.c:314
+#, fuzzy, c-format
+msgid "Unable to execute file `%s'"
+msgstr "No se puede ejecutar el archivo \"%s\"."
+
+#: ../thunar/thunar-extension-manager.c:158
+msgid "Resident"
+msgstr ""
+
+#: ../thunar/thunar-extension-manager.c:159
+msgid "Ensures that an extension will never be unloaded."
+msgstr ""
+
+#. append the remove menu item
+#: ../thunar/thunar-favourites-view.c:292
+msgid "_Remove Favourite"
+msgstr "_Borrar marcador"
+
+#. append the rename menu item
+#: ../thunar/thunar-favourites-view.c:307
+msgid "Re_name Favourite"
+msgstr "Re_nombrar marcador"
+
+#: ../thunar/thunar-favourites-view.c:627
+#, c-format
+msgid "The path '%s' does not refer to a directory"
+msgstr ""
+
+#. display an error message to the user
+#: ../thunar/thunar-favourites-view.c:646
+#, fuzzy
+msgid "Failed to add new favourite"
+msgstr "No se puede añadir el marcador"
+
+#: ../thunar/thunar-file.c:681
+msgid "The root folder has no parent"
+msgstr ""
+
+#: ../thunar/thunar-file.c:873
+msgid "Filesystem"
+msgstr "RaÃz"
+
+# msgstr "Sistema de archivos"
+#: ../thunar/thunar-file.c:897
+msgid "Home"
+msgstr "Casa"
+
+#: ../thunar/thunar-folder.c:135
+msgid "Whether the contents of the folder are currently being loaded"
+msgstr ""
+
+#: ../thunar/thunar-icon-factory.c:163
+msgid "Icon theme"
+msgstr ""
+
+#: ../thunar/thunar-icon-factory.c:164
+msgid "The icon theme used by the icon factory"
+msgstr ""
+
+#: ../thunar/thunar-icon-renderer.c:116
+msgid "Drop file"
+msgstr ""
+
+#: ../thunar/thunar-icon-renderer.c:117
+msgid "The file which should be rendered in as drop acceptor"
+msgstr ""
+
+#: ../thunar/thunar-icon-renderer.c:130
+msgid "The file whose icon to render"
+msgstr ""
+
+#: ../thunar/thunar-icon-renderer.c:145 ../thunar/thunar-icon-renderer.c:146
+#: ../thunar/thunar-text-renderer.c:172 ../thunar/thunar-text-renderer.c:173
+msgid "Follow state"
+msgstr ""
+
+#: ../thunar/thunar-icon-renderer.c:158 ../thunar/thunar-path-entry.c:179
+msgid "Icon size"
+msgstr "Tamaño de icono"
+
+#: ../thunar/thunar-icon-renderer.c:159
+msgid "The icon size in pixels"
+msgstr "Tamaño del icono en pixels"
+
+#: ../thunar/thunar-icon-view.c:111
+msgid "Arran_ge Items"
+msgstr "Organizar los _elementos"
+
+#: ../thunar/thunar-icon-view.c:116
+msgid "Sort By _Name"
+msgstr "Por _nombre"
+
+#: ../thunar/thunar-icon-view.c:116
+msgid "Keep items sorted by their name in rows"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:117
+msgid "Sort By _Size"
+msgstr "Por ta_maño"
+
+#: ../thunar/thunar-icon-view.c:117
+msgid "Keep items sorted by their size in rows"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:118
+msgid "Sort By _Type"
+msgstr "Por _tipo"
+
+#: ../thunar/thunar-icon-view.c:118
+msgid "Keep items sorted by their type in rows"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:119
+msgid "Sort By Modification _Date"
+msgstr "Por _fecha de modificación"
+
+#: ../thunar/thunar-icon-view.c:119
+msgid "Keep items sorted by their modification date in rows"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:124
+msgid "_Ascending"
+msgstr "_Ascendente"
+
+#: ../thunar/thunar-icon-view.c:124
+msgid "Sort items in ascending order"
+msgstr "Ordenar elementos en orden ascendente"
+
+#: ../thunar/thunar-icon-view.c:125
+msgid "_Descending"
+msgstr "_Descendente"
+
+#: ../thunar/thunar-icon-view.c:125
+msgid "Sort items in descending order"
+msgstr "Ordenar elementos en orden descendente"
+
+#: ../thunar/thunar-icon-view.c:226
+msgid "Icon view"
+msgstr "Vista de iconos"
+
+#: ../thunar/thunar-icon-view.c:227
+msgid "Icon based directory listing"
+msgstr "listado de directorio con iconos"
+
+#: ../thunar/thunar-launcher.c:134 ../thunar/thunar-launcher.c:135
+msgid "Action group"
+msgstr ""
+
+#: ../thunar/thunar-launcher.c:147 ../thunar/thunar-launcher.c:148
+msgid "Selected files"
+msgstr "Archivos seleccionados"
+
+#: ../thunar/thunar-launcher.c:160 ../thunar/thunar-launcher.c:161
+msgid "Widget"
+msgstr ""
+
+#. the "Open" action
+#: ../thunar/thunar-launcher.c:189 ../thunar/thunar-launcher.c:521
+#: ../thunar/thunar-launcher.c:539
+msgid "_Open"
+msgstr "_Abrir"
+
+#: ../thunar/thunar-launcher.c:189
+msgid "Open the selected items"
+msgstr "Abrir el elemento seleccionado"
+
+#. the "Open in New Window" action
+#: ../thunar/thunar-launcher.c:193
+msgid "Open in New Window"
+msgstr "Abrir en una ventana nueva"
+
+#: ../thunar/thunar-launcher.c:193
+msgid "Open the selected directories in new Thunar windows"
+msgstr "Abre el elemento en una ventana de Thunar nueva"
+
+#: ../thunar/thunar-launcher.c:347
+#, c-format
+msgid "Unable to open \"%s\"."
+msgstr "No se puede abrir \"%s\"."
+
+#: ../thunar/thunar-launcher.c:352
+#, c-format
+msgid "Unable to open %d file."
+msgid_plural "Unable to open %d files."
+msgstr[0] "No se puede abrir %d archivo."
+msgstr[1] "No se puede abrir %d archivos."
+
+#: ../thunar/thunar-launcher.c:458
+msgid "Are you sure you want to open all folders?"
+msgstr "¿Seguro que quiere abrir todas las carpetas?"
+
+#: ../thunar/thunar-launcher.c:460
+#, c-format
+msgid "This will open %d separate window."
+msgid_plural "This will open %d separate windows."
+msgstr[0] "Esto abrirá %d ventana diferente."
+msgstr[1] "Esto abrirá %d ventanas diferentes."
+
+#: ../thunar/thunar-launcher.c:519
+#, c-format
+msgid "Open in %d New Window"
+msgid_plural "Open in %d New Windows"
+msgstr[0] "Abrir en %d ventana nueva"
+msgstr[1] "Abrir en %d ventanas nuevas"
+
+#: ../thunar/thunar-launcher.c:537
+#, fuzzy
+msgid "_Execute"
+msgstr "Ejecutar"
+
+#: ../thunar/thunar-list-model.c:258
+msgid "Folder"
+msgstr "Carpeta"
+
+#: ../thunar/thunar-list-model.c:259
+msgid "The stores folder"
+msgstr ""
+
+#: ../thunar/thunar-list-model.c:271
+msgid "Folders first"
+msgstr "Carpetas primero"
+
+#: ../thunar/thunar-list-model.c:272
+msgid "Folders first in sorting"
+msgstr "Ordenado con las carpetas primero"
+
+#: ../thunar/thunar-list-model.c:284
+msgid "Number of files"
+msgstr "Número de archivos"
+
+#: ../thunar/thunar-list-model.c:285
+msgid "Number of visible files"
+msgstr "Número de archivos visibles"
+
+#: ../thunar/thunar-list-model.c:297 ../thunar/thunar-view.c:111
+#: ../thunar/thunar-window.c:218
+msgid "Show hidden"
+msgstr "Mostrar ocultos"
+
+#: ../thunar/thunar-list-model.c:298 ../thunar/thunar-view.c:112
+#: ../thunar/thunar-window.c:219
+msgid "Whether to display hidden files"
+msgstr ""
+
+#: ../thunar/thunar-list-model.c:656 ../thunar/thunar-properties-dialog.c:586
+msgid "broken link"
+msgstr ""
+
+#: ../thunar/thunar-list-model.c:1924
+#, c-format
+msgid "%d item, Free space: %s"
+msgid_plural "%d items, Free space: %s"
+msgstr[0] "%d elemento, espacio libre %s"
+msgstr[1] "%d elementos, espacio libre %s"
+
+#: ../thunar/thunar-list-model.c:1929
+#, c-format
+msgid "%d item"
+msgid_plural "%d items"
+msgstr[0] "%d elemento"
+msgstr[1] "%d elementos"
+
+#: ../thunar/thunar-list-model.c:1945
+#, c-format
+msgid "\"%s\" broken link"
+msgstr ""
+
+#: ../thunar/thunar-list-model.c:1949
+#, fuzzy, c-format
+msgid "\"%s\" (%s) link to %s"
+msgstr "\"%s\" (%s) %s"
+
+#: ../thunar/thunar-list-model.c:1954
+#, c-format
+msgid "\"%s\" (%s) %s"
+msgstr "\"%s\" (%s) %s"
+
+#: ../thunar/thunar-list-model.c:1971 ../thunar/thunar-list-model.c:1976
+#, c-format
+msgid "%d item selected"
+msgid_plural "%d items selected (%s)"
+msgstr[0] "%d elemento seleccionado"
+msgstr[1] "%d elementos seleccionados (%s)"
+
+#: ../thunar/thunar-location-buttons.c:214
+msgid "Spacing"
+msgstr "Espaciado"
+
+#: ../thunar/thunar-location-buttons.c:215
+msgid "The amount of space between the path buttons"
+msgstr "Espacio entre los botones del path"
+
+#: ../thunar/thunar-location-dialog.c:85
+msgid "Open Location"
+msgstr "Abrir dirección..."
+
+#: ../thunar/thunar-location-dialog.c:99
+msgid "_Location:"
+msgstr "_Dirección"
+
+#: ../thunar/thunar-navigator.c:137 ../thunar/thunar-window.c:205
+msgid "Current directory"
+msgstr "Directorio actual"
+
+#: ../thunar/thunar-navigator.c:138
+msgid "The directory currently displayed by the navigator"
+msgstr ""
+
+#: ../thunar/thunar-open-with-action.c:320
+#, c-format
+msgid "%s (default)"
+msgstr "%s (Por defecto)"
+
+#. add our custom children
+#: ../thunar/thunar-open-with-action.c:371
+msgid "Other Application..."
+msgstr "Otra aplicación..."
+
+#: ../thunar/thunar-path-entry.c:167
+msgid "Current file"
+msgstr "Archivo actual"
+
+#: ../thunar/thunar-path-entry.c:168
+msgid "The currently displayed file"
+msgstr ""
+
+#: ../thunar/thunar-path-entry.c:180
+msgid "The icon size for the path entry"
+msgstr ""
+
+#: ../thunar/thunar-preferences.c:178
+#, fuzzy, c-format
+msgid "Failed to create the Thunar configuration directory in %s"
+msgstr "Imposible crear el directorio %s."
+
+#: ../thunar/thunar-preferences.c:186
+#, fuzzy, c-format
+msgid "Failed to open preferences database in %s: %s"
+msgstr "Imposible renombrar %s."
+
+#: ../thunar/thunar-progress-dialog.c:129
+msgid "Job"
+msgstr "Trabajo"
+
+#: ../thunar/thunar-progress-dialog.c:130
+msgid "The job whose progress to display"
+msgstr ""
+
+#: ../thunar/thunar-progress-dialog.c:273
+msgid "Question"
+msgstr ""
+
+#: ../thunar/thunar-progress-dialog.c:299
+msgid "_Yes"
+msgstr "_Si"
+
+#: ../thunar/thunar-progress-dialog.c:303
+msgid "Yes to _all"
+msgstr "Si a_todo"
+
+#: ../thunar/thunar-progress-dialog.c:307
+msgid "_No"
+msgstr "_No"
+
+#: ../thunar/thunar-progress-dialog.c:311
+msgid "_Cancel"
+msgstr "_Cancelar"
+
+#: ../thunar/thunar-progress-dialog.c:437
+#, c-format
+msgid "(%lu hour remaining)"
+msgid_plural "(%lu hours remaining)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar/thunar-progress-dialog.c:442
+#, c-format
+msgid "(%lu minute remaining)"
+msgid_plural "(%lu minutes remaining)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar/thunar-progress-dialog.c:447
+#, c-format
+msgid "(%lu second remaining)"
+msgid_plural "(%lu seconds remaining)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar/thunar-properties-dialog.c:143
+msgid "The file displayed by the dialog"
+msgstr ""
+
+#: ../thunar/thunar-properties-dialog.c:180
+msgid "General"
+msgstr "General"
+
+#: ../thunar/thunar-properties-dialog.c:197
+msgid "Name:"
+msgstr "Nombre:"
+
+#.
+#. Second box (kind)
+#.
+#: ../thunar/thunar-properties-dialog.c:222
+msgid "Kind:"
+msgstr "Tipo:"
+
+#.
+#. Third box (modified, accessed)
+#.
+#: ../thunar/thunar-properties-dialog.c:247
+msgid "Modified:"
+msgstr "Modificado:"
+
+#: ../thunar/thunar-properties-dialog.c:260
+msgid "Accessed:"
+msgstr "Accedido:"
+
+#.
+#. Fourth box (volume, size)
+#.
+#: ../thunar/thunar-properties-dialog.c:284
+msgid "Volume:"
+msgstr "Volumen:"
+
+#: ../thunar/thunar-properties-dialog.c:307
+msgid "Size:"
+msgstr "Tamaño:"
+
+#.
+#. Emblem chooser
+#.
+#: ../thunar/thunar-properties-dialog.c:331
+msgid "Emblems"
+msgstr ""
+
+#: ../thunar/thunar-properties-dialog.c:563
+#, c-format
+msgid "%s Info"
+msgstr ""
+
+#: ../thunar/thunar-properties-dialog.c:644
+#, c-format
+msgid "%s (%u Bytes)"
+msgstr "%s (%u Bytes)"
+
+#. display an error message
+#: ../thunar/thunar-properties-dialog.c:690
+#: ../thunar/thunar-standard-view.c:2135
+#, fuzzy, c-format
+msgid "Failed to rename `%s'"
+msgstr "Imposible renombrar %s."
+
+#: ../thunar/thunar-standard-view.c:245
+msgid "File Context Menu"
+msgstr "Menú contextual de archivo"
+
+#: ../thunar/thunar-standard-view.c:246
+msgid "Folder Context Menu"
+msgstr "Menú contextual de carpeta"
+
+#: ../thunar/thunar-standard-view.c:247
+msgid "Create _Folder..."
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:247
+msgid "Create an empty folder within the current folder"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:248
+msgid "_Properties"
+msgstr "_Propiedades"
+
+#: ../thunar/thunar-standard-view.c:248
+#, fuzzy
+msgid "View the properties of the selected file"
+msgstr "Ver las propiedades del elemento seleccionado"
+
+#: ../thunar/thunar-standard-view.c:249
+#, fuzzy
+msgid "_Copy Files"
+msgstr "_Copiar archivos"
+
+#: ../thunar/thunar-standard-view.c:249
+#, fuzzy
+msgid "Copy the selected files"
+msgstr "Abrir el elemento seleccionado"
+
+#: ../thunar/thunar-standard-view.c:250
+#, fuzzy
+msgid "Cu_t Files"
+msgstr "Cor_tar archivos"
+
+#: ../thunar/thunar-standard-view.c:250
+#, fuzzy
+msgid "Cut the selected files"
+msgstr "Abrir el elemento seleccionado"
+
+#: ../thunar/thunar-standard-view.c:251
+#, fuzzy
+msgid "_Paste Files"
+msgstr "_Pegar archivos"
+
+#: ../thunar/thunar-standard-view.c:252
+#, fuzzy
+msgid "_Delete Files"
+msgstr "Archivos seleccionados"
+
+#: ../thunar/thunar-standard-view.c:252
+#, fuzzy
+msgid "Delete the selected files"
+msgstr "Abrir el elemento seleccionado"
+
+#: ../thunar/thunar-standard-view.c:253
+#, fuzzy
+msgid "Paste Files into Folder"
+msgstr "Pegar archivos en la carpeta"
+
+#: ../thunar/thunar-standard-view.c:253
+msgid "Paste files into the selected folder"
+msgstr "Pegar archivos en la carpeta seleccionada"
+
+#: ../thunar/thunar-standard-view.c:254
+#, fuzzy
+msgid "Select _all Files"
+msgstr "Seleccionar _todos los archivos"
+
+#: ../thunar/thunar-standard-view.c:254
+msgid "Select all files in this window"
+msgstr "Seleccionar todos los archivos en esta ventana"
+
+#: ../thunar/thunar-standard-view.c:255
+#, fuzzy
+msgid "Select by _Pattern"
+msgstr "Seleccionar por _patrón"
+
+#: ../thunar/thunar-standard-view.c:255
+msgid "Select all files that match a certain pattern"
+msgstr "Selecciona todos los archivos que coinciden con un patrón"
+
+#: ../thunar/thunar-standard-view.c:256 ../thunar/thunar-standard-view.c:2414
+msgid "Du_plicate File"
+msgid_plural "Du_plicate Files"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar/thunar-standard-view.c:256
+#, fuzzy
+msgid "Duplicate each selected file"
+msgstr "Abrir el elemento seleccionado"
+
+#: ../thunar/thunar-standard-view.c:257 ../thunar/thunar-standard-view.c:2420
+msgid "Ma_ke Link"
+msgid_plural "Ma_ke Links"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar/thunar-standard-view.c:257
+msgid "Create a symbolic link for each selected file"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:258
+msgid "_Rename"
+msgstr "_Renombrar..."
+
+#: ../thunar/thunar-standard-view.c:258
+#, fuzzy
+msgid "Rename the selected file"
+msgstr "Renombra el elemento seleccionado"
+
+#: ../thunar/thunar-standard-view.c:358 ../thunar/thunar-view.c:83
+msgid "Whether the view is currently being loaded"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:853
+msgid "Loading folder contents..."
+msgstr "Cargando el contenido de la carpeta..."
+
+#: ../thunar/thunar-standard-view.c:1305
+#, fuzzy
+msgid "New Folder"
+msgstr "Carpeta"
+
+#: ../thunar/thunar-standard-view.c:1308
+#, fuzzy
+msgid "New Folder..."
+msgstr "Carpeta"
+
+#. display an error message
+#: ../thunar/thunar-standard-view.c:1322
+#, c-format
+msgid "Cannot convert filename `%s' to the local encoding"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:1468
+#, fuzzy, c-format
+msgid ""
+"Are you sure that you want to\n"
+"permanently delete \"%s\"?"
+msgstr "¿Esta seguro de que desea borrar todos los elementos de la papelera?"
+
+#: ../thunar/thunar-standard-view.c:1474
+#, fuzzy, c-format
+msgid ""
+"Are you sure that you want to permanently\n"
+"delete the selected file?"
+msgid_plural ""
+"Are you sure that you want to permanently\n"
+"delete the %u selected files?"
+msgstr[0] ""
+"¿Esta seguro de que desea borrar todos los elementos de la papelera?"
+msgstr[1] ""
+"¿Esta seguro de que desea borrar todos los elementos de la papelera?"
+
+#: ../thunar/thunar-standard-view.c:1489
+msgid "If you delete a file, it is permanently lost."
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:1561
+#, fuzzy
+msgid "Select by Pattern"
+msgstr "Patrón de selección"
+
+#: ../thunar/thunar-standard-view.c:1576
+msgid "Pattern:"
+msgstr "Patrón:"
+
+#: ../thunar/thunar-standard-view.c:2087
+#, fuzzy, c-format
+msgid "Failed to open directory `%s'"
+msgstr "Imposible abrir el directorio %s."
+
+#: ../thunar/thunar-standard-view.c:2387
+#, fuzzy
+msgid "_Copy File"
+msgid_plural "_Copy Files"
+msgstr[0] "_Copiar archivo"
+msgstr[1] "_Copiar archivos"
+
+#: ../thunar/thunar-standard-view.c:2393
+#, fuzzy
+msgid "Cu_t File"
+msgid_plural "Cu_t Files"
+msgstr[0] "Cor_tar archivo"
+msgstr[1] "Cor_tar archivos"
+
+#: ../thunar/thunar-standard-view.c:2402
+#, fuzzy
+msgid "_Delete File"
+msgid_plural "_Delete Files"
+msgstr[0] "Archivos seleccionados"
+msgstr[1] "Archivos seleccionados"
+
+#: ../thunar/thunar-statusbar.c:191
+msgid "The file whose icon to display"
+msgstr ""
+
+#: ../thunar/thunar-statusbar.c:205 ../thunar/thunar-statusbar.c:747
+msgid "Whether to display a loading animation"
+msgstr ""
+
+#: ../thunar/thunar-statusbar.c:760 ../thunar/thunar-view.c:98
+msgid "Statusbar text"
+msgstr "Texto de la barra de estado"
+
+#: ../thunar/thunar-statusbar.c:761
+msgid "The main text to be displayed in the statusbar"
+msgstr ""
+
+#: ../thunar/thunar-text-renderer.c:185
+msgid "Text"
+msgstr "Texto"
+
+#: ../thunar/thunar-text-renderer.c:186
+msgid "The text to render"
+msgstr ""
+
+#: ../thunar/thunar-text-renderer.c:200
+msgid "Wrap mode"
+msgstr ""
+
+#: ../thunar/thunar-text-renderer.c:201
+msgid "The wrap mode"
+msgstr ""
+
+#: ../thunar/thunar-text-renderer.c:216
+msgid "Wrap width"
+msgstr ""
+
+#: ../thunar/thunar-text-renderer.c:217
+msgid "The wrap width"
+msgstr ""
+
+#: ../thunar/thunar-view.c:99
+msgid "Text to be displayed in the statusbar associated with this view"
+msgstr ""
+
+#: ../thunar/thunar-view.c:125 ../thunar/thunar-window.c:233
+msgid "UI manager"
+msgstr ""
+
+#: ../thunar/thunar-view.c:126
+msgid "UI manager of the surrounding window"
+msgstr ""
+
+#: ../thunar/thunar-window.c:149
+msgid "_File"
+msgstr "_Archivo"
+
+#: ../thunar/thunar-window.c:150
+msgid "Open New _Window"
+msgstr "Nueva _ventana"
+
+#: ../thunar/thunar-window.c:150
+msgid "Open a new Thunar window for the displayed location"
+msgstr ""
+
+#: ../thunar/thunar-window.c:151
+msgid "Close _All Windows"
+msgstr "Cerrar _todas las ventanas"
+
+#: ../thunar/thunar-window.c:151
+msgid "Close all Thunar windows"
+msgstr "Cerrar todas las ventanas de Thunar"
+
+#: ../thunar/thunar-window.c:152
+msgid "_Close"
+msgstr "_Cerrar"
+
+#: ../thunar/thunar-window.c:152
+msgid "Close this window"
+msgstr "Cerrar esta ventana"
+
+#: ../thunar/thunar-window.c:153
+msgid "_Edit"
+msgstr "_Editar"
+
+#: ../thunar/thunar-window.c:154
+msgid "_View"
+msgstr "_Ver"
+
+#: ../thunar/thunar-window.c:155
+msgid "_Location Bar"
+msgstr "Barra de _dirección"
+
+#: ../thunar/thunar-window.c:156
+msgid "_Side Pane"
+msgstr "Panel _lateral"
+
+#: ../thunar/thunar-window.c:157
+msgid "_Go"
+msgstr "_Ir a"
+
+#: ../thunar/thunar-window.c:158
+msgid "Open _Parent"
+msgstr "Abrir _antecesor"
+
+#: ../thunar/thunar-window.c:158
+msgid "Open the parent folder"
+msgstr "Abre la carpeta anterior"
+
+# msgstr "Sistema de archivos"
+#: ../thunar/thunar-window.c:159
+#, fuzzy
+msgid "_Home"
+msgstr "Casa"
+
+#: ../thunar/thunar-window.c:159
+#, fuzzy
+msgid "Open the home folder"
+msgstr "Abre la carpeta anterior"
+
+#: ../thunar/thunar-window.c:160
+msgid "Open _Location..."
+msgstr "Abrir _dirección..."
+
+#: ../thunar/thunar-window.c:160
+msgid "Specify a location to open"
+msgstr "Especificar una dirección para abrir"
+
+#: ../thunar/thunar-window.c:161
+msgid "_Help"
+msgstr "A_yuda"
+
+#: ../thunar/thunar-window.c:163 ../thunar/thunar-window.c:165
+msgid "_About"
+msgstr "_Acerca de"
+
+#: ../thunar/thunar-window.c:163 ../thunar/thunar-window.c:165
+msgid "Display information about Thunar"
+msgstr "Muestra información acerca de Thunar"
+
+#: ../thunar/thunar-window.c:171
+#, fuzzy
+msgid "Show _Hidden Files"
+msgstr "Mostrar los archivos _ocultos"
+
+#: ../thunar/thunar-window.c:171
+msgid "Toggles the display of hidden files in the current window"
+msgstr ""
+
+#: ../thunar/thunar-window.c:206
+msgid "The directory currently displayed within this window"
+msgstr ""
+
+#: ../thunar/thunar-window.c:234
+msgid "The UI manager used within this window"
+msgstr ""
+
+#.
+#. * add the side pane options
+#.
+#: ../thunar/thunar-window.c:289
+msgid "_Favourites"
+msgstr "_Marcadores"
+
+#: ../thunar/thunar-window.c:295 ../thunar/thunar-window.c:316
+msgid "_Hidden"
+msgstr "_Oculto/a"
+
+#.
+#. * add the location bar options
+#.
+#: ../thunar/thunar-window.c:304
+msgid "_Button Style"
+msgstr "Estilo _botón"
+
+#: ../thunar/thunar-window.c:310
+msgid "_Traditional Style"
+msgstr "Estilo _tradicional"
+
+#.
+#. * add view options
+#.
+#: ../thunar/thunar-window.c:325
+msgid "View as _Icons"
+msgstr "Ver como _Iconos"
+
+#: ../thunar/thunar-window.c:331
+msgid "View as _Detailed List"
+msgstr "Ver como _Lista"
+
+#. display an error to the user
+#: ../thunar/thunar-window.c:738
+#, fuzzy
+msgid "Failed to open home directory"
+msgstr "Imposible abrir el directorio %s."
+
+#: ../thunar/thunar-window.c:815
+msgid ""
+"Thunar is a fast and easy to use file manager\n"
+"for the Xfce Desktop Environment."
+msgstr ""
+"Thunar es un gestor de archivos rápido\n"
+"y fácil de usar para el escritorio Xfce"
+
+#: ../thunar/thunar-window.c:820
+msgid "translator-credits"
+msgstr ""
+
+#: ../thunarx/thunarx-property-page.c:104
+msgid "Label"
+msgstr "Etiqueta"
+
+#: ../thunarx/thunarx-property-page.c:105
+msgid "Text of the page's label"
+msgstr ""
+
+#: ../thunarx/thunarx-property-page.c:117
+msgid "Label widget"
+msgstr ""
+
+#: ../thunarx/thunarx-property-page.c:118
+msgid "A widget to display in place of the usual page label"
+msgstr ""
+
+#: ../Thunar.desktop.in.h:1
+msgid "Browse the filesystem with the file manager"
+msgstr "Explorar el sistema de archivos con el navegador"
+
+#: ../Thunar.desktop.in.h:2
+msgid "File Manager"
+msgstr "Gestor de archivos"
+
+#: ../Thunar.desktop.in.h:3
+msgid "Thunar File Manager"
+msgstr "Gestor de archivos Thunar"
+
+#~ msgid ""
+#~ "Unable to query information about\n"
+#~ "the file %s."
+#~ msgstr ""
+#~ "No se puede obtener información sobre\n"
+#~ "el archivo %s."
+
+#~ msgid "Unable to open file %s."
+#~ msgstr "Imposible abrir el archivo %s."
+
+#~ msgid "Files"
+#~ msgstr "Archivos"
+
+#~ msgid "Empty"
+#~ msgstr "Vacio"
+
+#~ msgid "The URI '%s' uses an unsupported scheme"
+#~ msgstr "La URI '%s' usa un scheme no soportado"
+
+#~ msgid "Only local directories can be listed"
+#~ msgstr "Solo los directorios locales pueden ser mostrados"
+
+#~ msgid "Computer"
+#~ msgstr "Equipo"
+
+#~ msgid "Model"
+#~ msgstr "Modelo"
+
+#~ msgid "The model to display"
+#~ msgstr "Modelo a mostrar"
+
+#~ msgid "File column"
+#~ msgstr "Columna de archivo"
+
+#~ msgid "The column which contains the file"
+#~ msgstr "La columna que contiene el archivo"
+
+#~ msgid "Position column"
+#~ msgstr "Columna de la posición"
+
+#~ msgid "The column which contains the position"
+#~ msgstr "La columna que contiene la posición"
+
+#~ msgid "Unable to rename file"
+#~ msgstr "No se puede renombrar el archivo"
+
+#~ msgid "unknown"
+#~ msgstr "Desconocido"
+
+#~ msgid "\"%s\" %s"
+#~ msgstr "\"%s\" %s"
+
+#~ msgid "Trash"
+#~ msgstr "Papelera"
+
+#~ msgid "_Empty Trash Bin"
+#~ msgstr "Vaciar la papelera de reciclaje"
+
+#~ msgid "Delete all items in the Trash"
+#~ msgstr "Borrar todos los elementos de la papelera"
+
+#~ msgid "This will delete %d file currently located in the trash bin."
+#~ msgid_plural "This will delete %d files currently located in the trash bin."
+#~ msgstr[0] "Esto borrará %d archivo de la papelera de reciclaje."
+#~ msgstr[1] "Esto borrará %d archivos de la papelera de reciclaje."
Added: desktop/trunk/thunar/branches/upstream/current/po/hu.gmo
===================================================================
(Binary files differ)
Property changes on: desktop/trunk/thunar/branches/upstream/current/po/hu.gmo
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: desktop/trunk/thunar/branches/upstream/current/po/hu.po
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/po/hu.po 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/po/hu.po 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,1460 @@
+# Hungarian translations for Thunar.
+# Copyright (C) 2004-2005 Benedikt Meurer.
+# This file is distributed under the same license as the Thunar package.
+# SZERVÃC Attila <sas at 321.hu>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Thunar 0.1.2svn\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-11-14 15:38+0100\n"
+"PO-Revision-Date: 2005-10-06 22:02+0900\n"
+"Last-Translator: SZERVÃC Attila <sas at 321.hu>\n"
+"Language-Team: Hungarian <translation-team-hu at lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../thunar-vfs/thunar-vfs-info.c:261
+msgid "No Exec field specified"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-info.c:269
+#, fuzzy
+msgid "Unable to parse file"
+msgstr "Nem nyitható meg e fájl: %s"
+
+#: ../thunar-vfs/thunar-vfs-info.c:359
+msgid "Invalid file name"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-info.c:381
+msgid "Invalid desktop file"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-info.c:615
+#, fuzzy, c-format
+msgid "Failed to stat file `%s': %s"
+msgstr "Nem törölhetÅ: %s"
+
+#. ask the user whether we should remove the target first
+#. ask the user whether to overwrite
+#: ../thunar-vfs/thunar-vfs-link-job.c:176
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:685
+#, fuzzy, c-format
+msgid ""
+"%s.\n"
+"\n"
+"Do you want to overwrite it?"
+msgstr ""
+"%s már létezik.\n"
+"\n"
+"FelülÃrod?"
+
+#: ../thunar-vfs/thunar-vfs-link-job.c:200
+#, fuzzy, c-format
+msgid "Failed to remove `%s': %s"
+msgstr "Nem törölhetÅ: %s"
+
+#. ask the user whether to skip this file (used for cancellation only)
+#. ask the user whether to skip
+#: ../thunar-vfs/thunar-vfs-link-job.c:212
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:705
+#, fuzzy, c-format
+msgid ""
+"%s.\n"
+"\n"
+"Do you want to skip it?"
+msgstr ""
+"\n"
+"\n"
+"Kihagyod?"
+
+#: ../thunar-vfs/thunar-vfs-mime-database.c:1625
+#, c-format
+msgid "Failed to load application from file %s"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-mime-info.c:228
+#, c-format
+msgid "%s document"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-mkdir-job.c:165
+#, fuzzy, c-format
+msgid "Unable to create directory `%s': %s"
+msgstr "Nem hozható létre ez a könyvtár: %s"
+
+#: ../thunar-vfs/thunar-vfs-path.c:657
+msgid "Path too long to fit into buffer"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-path.c:761
+msgid "URI too long to fit into buffer"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-thumb.c:144 ../thunar/thunar-details-view.c:150
+msgid "Size"
+msgstr "Méret"
+
+#: ../thunar-vfs/thunar-vfs-thumb.c:145
+msgid "The desired thumbnail size"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:233
+msgid "Collecting files..."
+msgstr "Fájlok gyűjtése..."
+
+#. display info message
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:295
+#, fuzzy
+msgid "Deleting directories..."
+msgstr "Fájlok gyűjtése..."
+
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:315
+#, fuzzy, c-format
+msgid "Unable to remove directory `%s': %s"
+msgstr "Nem hozható létre ez a könyvtár: %s"
+
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:593
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:639
+#, fuzzy, c-format
+msgid "Unable to remove `%s': %s"
+msgstr "Nem törölhetÅ: %s"
+
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:831
+msgid "Cannot transfer the root directory"
+msgstr ""
+
+#. tell the user that we're preparing the unlink job
+#: ../thunar-vfs/thunar-vfs-unlink-job.c:161
+msgid "Preparing..."
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-unlink-job.c:234
+#, c-format
+msgid ""
+"Unable to remove %s.\n"
+"\n"
+"Do you want to skip it?"
+msgstr ""
+"Nem törölhetÅ: %s.\n"
+"\n"
+"Ãtugrod?"
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:157
+#, c-format
+msgid "copy of %s"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:158 ../thunar/thunar-list-model.c:658
+#: ../thunar/thunar-properties-dialog.c:588
+#, c-format
+msgid "link to %s"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:161
+#, c-format
+msgid "another copy of %s"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:162
+#, c-format
+msgid "another link to %s"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:165
+#, c-format
+msgid "third copy of %s"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:166
+#, c-format
+msgid "third link to %s"
+msgstr ""
+
+#. if we had no match on the NAMES, try the "%uth copy of %s" pattern
+#: ../thunar-vfs/thunar-vfs-xfer.c:205 ../thunar-vfs/thunar-vfs-xfer.c:221
+#, c-format
+msgid "%uth copy of %s"
+msgid_plural "%uth copy of %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:223
+#, c-format
+msgid "%uth link to %s"
+msgid_plural "%uth link to %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. setup the error return
+#: ../thunar-vfs/thunar-vfs-xfer.c:263
+#, fuzzy, c-format
+msgid "Failed to create directory `%s'"
+msgstr "Nem hozható létre ez a könyvtár: %s"
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:286
+#, fuzzy, c-format
+msgid "Failed to create named fifo `%s'"
+msgstr "Nem törölhetÅ: %s"
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:318
+#, c-format
+msgid "Failed to open `%s' for reading"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:330
+#, c-format
+msgid "Failed to open `%s' for writing"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:345
+#, fuzzy, c-format
+msgid "Failed to read data from `%s'"
+msgstr "Nem törölhetÅ: %s"
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:357
+#, fuzzy, c-format
+msgid "Failed to write data to `%s'"
+msgstr "Nem törölhetÅ: %s"
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:371
+#, fuzzy, c-format
+msgid "Failed to remove `%s'"
+msgstr "Nem törölhetÅ: %s"
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:415
+#, fuzzy, c-format
+msgid "Failed to read link target from `%s'"
+msgstr "Nem sikerült meghatározni a szülŠURI-t ehhez: %s"
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:423
+#, fuzzy, c-format
+msgid "Failed to create symbolic link `%s'"
+msgstr "Nem hozható létre e szimlink: %s"
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:431
+#, fuzzy, c-format
+msgid "Failed to change mode of `%s'"
+msgstr "Nem törölhetÅ: %s"
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:465 ../thunar-vfs/thunar-vfs-xfer.c:525
+#, fuzzy, c-format
+msgid "Failed to determine file info for `%s'"
+msgstr "Nem sikerült meghatározni a szülŠURI-t ehhez: %s"
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:494
+#, fuzzy, c-format
+msgid "Failed to copy special file `%s'"
+msgstr "Nem lehet másolni a fájlt: %s"
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:536
+#, fuzzy, c-format
+msgid "Failed to create symbolic `%s'"
+msgstr "Nem hozható létre e szimlink: %s"
+
+#. setup application name
+#: ../thunar/main.c:47 ../thunar/thunar-window.c:347
+msgid "Thunar"
+msgstr "Thunar"
+
+#. display an error message to the user
+#: ../thunar/thunar-application.c:190
+#, fuzzy
+msgid "Failed to launch operation"
+msgstr "Nem törölhetÅ: %s"
+
+#: ../thunar/thunar-application.c:411
+msgid "Copying files..."
+msgstr "Fájlok másolása..."
+
+#: ../thunar/thunar-application.c:445
+msgid "Creating symbolic links..."
+msgstr ""
+
+#: ../thunar/thunar-application.c:480
+msgid "Moving files..."
+msgstr "Fájlok mozgatása..."
+
+#: ../thunar/thunar-application.c:515
+#, fuzzy
+msgid "Deleting files..."
+msgstr "Fájlok gyűjtése..."
+
+#: ../thunar/thunar-application.c:555
+#, fuzzy
+msgid "Creating directories..."
+msgstr "Jelenlegi könyvtár"
+
+#: ../thunar/thunar-chooser-dialog.c:137 ../thunar/thunar-emblem-chooser.c:115
+#: ../thunar/thunar-emblem-chooser.c:116 ../thunar/thunar-icon-renderer.c:129
+#: ../thunar/thunar-open-with-action.c:115
+#: ../thunar/thunar-open-with-action.c:116
+#: ../thunar/thunar-properties-dialog.c:142 ../thunar/thunar-statusbar.c:190
+msgid "File"
+msgstr "Fájl"
+
+#: ../thunar/thunar-chooser-dialog.c:138
+msgid "The file for which an application should be chosen"
+msgstr ""
+
+#: ../thunar/thunar-chooser-dialog.c:150
+msgid "Open"
+msgstr ""
+
+#: ../thunar/thunar-chooser-dialog.c:151
+msgid "Whether the chooser should open the specified file"
+msgstr ""
+
+#. the "Open with" action
+#: ../thunar/thunar-chooser-dialog.c:176 ../thunar/thunar-launcher.c:197
+msgid "Open With"
+msgstr ""
+
+#. create the "Custom command" expand
+#: ../thunar/thunar-chooser-dialog.c:238
+msgid "Use a _custom command:"
+msgstr ""
+
+#. create the "Custom command" button
+#: ../thunar/thunar-chooser-dialog.c:256
+#, fuzzy
+msgid "_Browse"
+msgstr "_Bezárás"
+
+#. display an error to the user
+#: ../thunar/thunar-chooser-dialog.c:429
+#, fuzzy, c-format
+msgid "Failed to add new application `%s'"
+msgstr "Nem törölhetÅ: %s"
+
+#. display an error to the user
+#: ../thunar/thunar-chooser-dialog.c:451
+#, fuzzy, c-format
+msgid "Failed to set default application for `%s'"
+msgstr "Nem törölhetÅ: %s"
+
+#. display an error to the user
+#: ../thunar/thunar-chooser-dialog.c:464
+#, fuzzy, c-format
+msgid "Failed to execute `%s'"
+msgstr "Nem törölhetÅ: %s"
+
+#. update the header label
+#: ../thunar/thunar-chooser-dialog.c:580
+#, c-format
+msgid "Open <i>%s</i> and other files of type \"%s\" with:"
+msgstr ""
+
+#: ../thunar/thunar-chooser-dialog.c:602
+#, fuzzy
+msgid "Select an Application"
+msgstr "_Hely megnyitása..."
+
+#: ../thunar/thunar-chooser-dialog.c:612
+#, fuzzy
+msgid "All Files"
+msgstr "Fájlok"
+
+#: ../thunar/thunar-chooser-dialog.c:617
+#, fuzzy
+msgid "Executable Files"
+msgstr "Minden fájl kiválasztása"
+
+#: ../thunar/thunar-chooser-dialog.c:632
+msgid "Perl Scripts"
+msgstr ""
+
+#: ../thunar/thunar-chooser-dialog.c:638
+msgid "Python Scripts"
+msgstr ""
+
+#: ../thunar/thunar-chooser-dialog.c:644
+msgid "Ruby Scripts"
+msgstr ""
+
+#: ../thunar/thunar-chooser-dialog.c:650
+msgid "Shell Scripts"
+msgstr ""
+
+#: ../thunar/thunar-chooser-model.c:116 ../thunar/thunar-folder.c:134
+#: ../thunar/thunar-standard-view.c:357 ../thunar/thunar-statusbar.c:204
+#: ../thunar/thunar-statusbar.c:746 ../thunar/thunar-view.c:82
+msgid "Loading"
+msgstr ""
+
+#: ../thunar/thunar-chooser-model.c:117
+#, fuzzy
+msgid "Whether the model is currently being loaded"
+msgstr "A nézet betöltését adja meg"
+
+#: ../thunar/thunar-chooser-model.c:129
+msgid "Mime info"
+msgstr ""
+
+#: ../thunar/thunar-chooser-model.c:130
+msgid "The mime info for the model"
+msgstr ""
+
+#: ../thunar/thunar-chooser-model.c:306
+msgid "None available"
+msgstr ""
+
+#. append the "Recommended Applications:" category
+#: ../thunar/thunar-chooser-model.c:350
+msgid "Recommended Applications:"
+msgstr ""
+
+#. append the "Other Applications:" category
+#: ../thunar/thunar-chooser-model.c:353
+#, fuzzy
+msgid "Other Applications:"
+msgstr "_Hely megnyitása..."
+
+#: ../thunar/thunar-clipboard-manager.c:149
+msgid "Can paste"
+msgstr "BeilleszthetÅ"
+
+#: ../thunar/thunar-clipboard-manager.c:150
+msgid "Whether the clipboard content can be pasted"
+msgstr "A vágólap tartalma beilleszthetÅ"
+
+#. tell the user that we cannot paste
+#: ../thunar/thunar-clipboard-manager.c:333
+msgid "There is nothing on the clipboard to paste"
+msgstr "Nincs beillesztenivaló a vágólapon"
+
+#: ../thunar/thunar-create-dialog.c:100 ../thunar/thunar-create-dialog.c:101
+#, fuzzy
+msgid "Filename"
+msgstr "FájlkezelÅ"
+
+#: ../thunar/thunar-create-dialog.c:113 ../thunar/thunar-create-dialog.c:114
+#, fuzzy
+msgid "Mime Info"
+msgstr "%s Info"
+
+#: ../thunar/thunar-create-dialog.c:148
+msgid "Enter the new name:"
+msgstr ""
+
+#: ../thunar/thunar-details-view.c:131
+msgid "Name"
+msgstr "Név"
+
+#: ../thunar/thunar-details-view.c:165
+msgid "Permissions"
+msgstr "Jogok"
+
+#: ../thunar/thunar-details-view.c:180
+msgid "Type"
+msgstr "TÃpus"
+
+#: ../thunar/thunar-details-view.c:192
+msgid "Date modified"
+msgstr "MódosÃtás ideje"
+
+#: ../thunar/thunar-details-view.c:221
+msgid "Details view"
+msgstr "Részletes nézet"
+
+#: ../thunar/thunar-details-view.c:222
+msgid "Detailed directory listing"
+msgstr "Részletes könyvtárlista"
+
+#: ../thunar/thunar-dialogs.c:74 ../thunar/thunar-dialogs.c:78
+#, c-format
+msgid "%s."
+msgstr ""
+
+#: ../thunar/thunar-dnd.c:62
+#, fuzzy
+msgid "_Copy here"
+msgstr "Fájl másolás"
+
+#: ../thunar/thunar-dnd.c:62
+msgid "_Move here"
+msgstr ""
+
+#: ../thunar/thunar-dnd.c:62
+msgid "_Link here"
+msgstr ""
+
+#. display an error to the user
+#. display an error message to the user
+#: ../thunar/thunar-dnd.c:190 ../thunar/thunar-launcher.c:314
+#, fuzzy, c-format
+msgid "Unable to execute file `%s'"
+msgstr "Nem lehet másolni a fájlt: %s"
+
+#: ../thunar/thunar-extension-manager.c:158
+msgid "Resident"
+msgstr ""
+
+#: ../thunar/thunar-extension-manager.c:159
+msgid "Ensures that an extension will never be unloaded."
+msgstr ""
+
+#. append the remove menu item
+#: ../thunar/thunar-favourites-view.c:292
+msgid "_Remove Favourite"
+msgstr ""
+
+#. append the rename menu item
+#: ../thunar/thunar-favourites-view.c:307
+msgid "Re_name Favourite"
+msgstr ""
+
+#: ../thunar/thunar-favourites-view.c:627
+#, c-format
+msgid "The path '%s' does not refer to a directory"
+msgstr ""
+
+#. display an error message to the user
+#: ../thunar/thunar-favourites-view.c:646
+#, fuzzy
+msgid "Failed to add new favourite"
+msgstr "Nem törölhetÅ: %s"
+
+#: ../thunar/thunar-file.c:681
+msgid "The root folder has no parent"
+msgstr ""
+
+#: ../thunar/thunar-file.c:873
+msgid "Filesystem"
+msgstr "Fájlrendszer"
+
+#: ../thunar/thunar-file.c:897
+msgid "Home"
+msgstr "Saját könyvtár"
+
+#: ../thunar/thunar-folder.c:135
+msgid "Whether the contents of the folder are currently being loaded"
+msgstr ""
+
+#: ../thunar/thunar-icon-factory.c:163
+msgid "Icon theme"
+msgstr "Ikon téma"
+
+#: ../thunar/thunar-icon-factory.c:164
+msgid "The icon theme used by the icon factory"
+msgstr "Az ikongyár által használt ikontéma"
+
+#: ../thunar/thunar-icon-renderer.c:116
+#, fuzzy
+msgid "Drop file"
+msgstr "Fájl másolás"
+
+#: ../thunar/thunar-icon-renderer.c:117
+msgid "The file which should be rendered in as drop acceptor"
+msgstr ""
+
+#: ../thunar/thunar-icon-renderer.c:130
+msgid "The file whose icon to render"
+msgstr "A kirajzolandó ikon"
+
+#: ../thunar/thunar-icon-renderer.c:145 ../thunar/thunar-icon-renderer.c:146
+#: ../thunar/thunar-text-renderer.c:172 ../thunar/thunar-text-renderer.c:173
+msgid "Follow state"
+msgstr ""
+
+#: ../thunar/thunar-icon-renderer.c:158 ../thunar/thunar-path-entry.c:179
+msgid "Icon size"
+msgstr "Ikon méret"
+
+#: ../thunar/thunar-icon-renderer.c:159
+msgid "The icon size in pixels"
+msgstr "Ikon méret pixelben"
+
+#: ../thunar/thunar-icon-view.c:111
+msgid "Arran_ge Items"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:116
+msgid "Sort By _Name"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:116
+msgid "Keep items sorted by their name in rows"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:117
+msgid "Sort By _Size"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:117
+msgid "Keep items sorted by their size in rows"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:118
+msgid "Sort By _Type"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:118
+msgid "Keep items sorted by their type in rows"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:119
+msgid "Sort By Modification _Date"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:119
+msgid "Keep items sorted by their modification date in rows"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:124
+msgid "_Ascending"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:124
+msgid "Sort items in ascending order"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:125
+msgid "_Descending"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:125
+msgid "Sort items in descending order"
+msgstr ""
+
+#: ../thunar/thunar-icon-view.c:226
+msgid "Icon view"
+msgstr "Ikonnézet"
+
+#: ../thunar/thunar-icon-view.c:227
+msgid "Icon based directory listing"
+msgstr "Ikon alapú könyvtár lista"
+
+#: ../thunar/thunar-launcher.c:134 ../thunar/thunar-launcher.c:135
+msgid "Action group"
+msgstr ""
+
+#: ../thunar/thunar-launcher.c:147 ../thunar/thunar-launcher.c:148
+#, fuzzy
+msgid "Selected files"
+msgstr "Minden fájl kiválasztása"
+
+#: ../thunar/thunar-launcher.c:160 ../thunar/thunar-launcher.c:161
+msgid "Widget"
+msgstr ""
+
+#. the "Open" action
+#: ../thunar/thunar-launcher.c:189 ../thunar/thunar-launcher.c:521
+#: ../thunar/thunar-launcher.c:539
+msgid "_Open"
+msgstr ""
+
+#: ../thunar/thunar-launcher.c:189
+#, fuzzy
+msgid "Open the selected items"
+msgstr "A kijelölt elem tulajdonságai"
+
+#. the "Open in New Window" action
+#: ../thunar/thunar-launcher.c:193
+#, fuzzy
+msgid "Open in New Window"
+msgstr "Ãj _Ablak"
+
+#: ../thunar/thunar-launcher.c:193
+msgid "Open the selected directories in new Thunar windows"
+msgstr ""
+
+#: ../thunar/thunar-launcher.c:347
+#, fuzzy, c-format
+msgid "Unable to open \"%s\"."
+msgstr "Nem nyitható meg e fájl: %s"
+
+#: ../thunar/thunar-launcher.c:352
+#, fuzzy, c-format
+msgid "Unable to open %d file."
+msgid_plural "Unable to open %d files."
+msgstr[0] "Nem nyitható meg e fájl: %s"
+msgstr[1] "Nem nyitható meg e fájl: %s"
+
+#: ../thunar/thunar-launcher.c:458
+msgid "Are you sure you want to open all folders?"
+msgstr ""
+
+#: ../thunar/thunar-launcher.c:460
+#, c-format
+msgid "This will open %d separate window."
+msgid_plural "This will open %d separate windows."
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar/thunar-launcher.c:519
+#, fuzzy, c-format
+msgid "Open in %d New Window"
+msgid_plural "Open in %d New Windows"
+msgstr[0] "Ãj _Ablak"
+msgstr[1] "Ãj _Ablak"
+
+#: ../thunar/thunar-launcher.c:537
+msgid "_Execute"
+msgstr ""
+
+#: ../thunar/thunar-list-model.c:258
+msgid "Folder"
+msgstr "Mappa"
+
+#: ../thunar/thunar-list-model.c:259
+msgid "The stores folder"
+msgstr "A tároló mappák"
+
+#: ../thunar/thunar-list-model.c:271
+msgid "Folders first"
+msgstr "Mappák elÅre"
+
+#: ../thunar/thunar-list-model.c:272
+msgid "Folders first in sorting"
+msgstr "Mappák elÅre rendezéskor"
+
+#: ../thunar/thunar-list-model.c:284
+msgid "Number of files"
+msgstr "Fájlok száma"
+
+#: ../thunar/thunar-list-model.c:285
+msgid "Number of visible files"
+msgstr "Látható fájlok száma"
+
+#: ../thunar/thunar-list-model.c:297 ../thunar/thunar-view.c:111
+#: ../thunar/thunar-window.c:218
+msgid "Show hidden"
+msgstr "Rejtettek mutatása"
+
+#: ../thunar/thunar-list-model.c:298 ../thunar/thunar-view.c:112
+#: ../thunar/thunar-window.c:219
+msgid "Whether to display hidden files"
+msgstr "Mutassuk-e a rejtett fájlokat"
+
+#: ../thunar/thunar-list-model.c:656 ../thunar/thunar-properties-dialog.c:586
+msgid "broken link"
+msgstr ""
+
+#: ../thunar/thunar-list-model.c:1924
+#, fuzzy, c-format
+msgid "%d item, Free space: %s"
+msgid_plural "%d items, Free space: %s"
+msgstr[0] "%d elem, Szabad: %s"
+msgstr[1] "%d elem, Szabad: %s"
+
+#: ../thunar/thunar-list-model.c:1929
+#, fuzzy, c-format
+msgid "%d item"
+msgid_plural "%d items"
+msgstr[0] "%d elem"
+msgstr[1] "%d elem"
+
+#: ../thunar/thunar-list-model.c:1945
+#, c-format
+msgid "\"%s\" broken link"
+msgstr ""
+
+#: ../thunar/thunar-list-model.c:1949
+#, fuzzy, c-format
+msgid "\"%s\" (%s) link to %s"
+msgstr "\"%s\" (%s) %s"
+
+#: ../thunar/thunar-list-model.c:1954
+#, c-format
+msgid "\"%s\" (%s) %s"
+msgstr "\"%s\" (%s) %s"
+
+#: ../thunar/thunar-list-model.c:1971 ../thunar/thunar-list-model.c:1976
+#, fuzzy, c-format
+msgid "%d item selected"
+msgid_plural "%d items selected (%s)"
+msgstr[0] "%d elem kijelölve"
+msgstr[1] "%d elem kijelölve"
+
+#: ../thunar/thunar-location-buttons.c:214
+msgid "Spacing"
+msgstr "Távolság"
+
+#: ../thunar/thunar-location-buttons.c:215
+msgid "The amount of space between the path buttons"
+msgstr "Ãsvénygombok közti táv"
+
+#: ../thunar/thunar-location-dialog.c:85
+msgid "Open Location"
+msgstr "Hely megnyitása"
+
+#: ../thunar/thunar-location-dialog.c:99
+msgid "_Location:"
+msgstr "_Hely:"
+
+#: ../thunar/thunar-navigator.c:137 ../thunar/thunar-window.c:205
+msgid "Current directory"
+msgstr "Jelenlegi könyvtár"
+
+#: ../thunar/thunar-navigator.c:138
+msgid "The directory currently displayed by the navigator"
+msgstr "A most megjelenÃtett könyvtár"
+
+#: ../thunar/thunar-open-with-action.c:320
+#, c-format
+msgid "%s (default)"
+msgstr ""
+
+#. add our custom children
+#: ../thunar/thunar-open-with-action.c:371
+#, fuzzy
+msgid "Other Application..."
+msgstr "_Hely megnyitása..."
+
+#: ../thunar/thunar-path-entry.c:167
+msgid "Current file"
+msgstr "Jelenlegi fájl"
+
+#: ../thunar/thunar-path-entry.c:168
+msgid "The currently displayed file"
+msgstr "A most megjelenÃtett fájl"
+
+#: ../thunar/thunar-path-entry.c:180
+msgid "The icon size for the path entry"
+msgstr "Az ösvényelem ikonmérete"
+
+#: ../thunar/thunar-preferences.c:178
+#, fuzzy, c-format
+msgid "Failed to create the Thunar configuration directory in %s"
+msgstr "Nem hozható létre ez a könyvtár: %s"
+
+#: ../thunar/thunar-preferences.c:186
+#, fuzzy, c-format
+msgid "Failed to open preferences database in %s: %s"
+msgstr "Nem törölhetÅ: %s"
+
+#: ../thunar/thunar-progress-dialog.c:129
+msgid "Job"
+msgstr ""
+
+#: ../thunar/thunar-progress-dialog.c:130
+msgid "The job whose progress to display"
+msgstr ""
+
+#: ../thunar/thunar-progress-dialog.c:273
+msgid "Question"
+msgstr "Kérdés"
+
+#: ../thunar/thunar-progress-dialog.c:299
+msgid "_Yes"
+msgstr "_Igen"
+
+#: ../thunar/thunar-progress-dialog.c:303
+msgid "Yes to _all"
+msgstr "_Mind"
+
+#: ../thunar/thunar-progress-dialog.c:307
+msgid "_No"
+msgstr "_Nem"
+
+#: ../thunar/thunar-progress-dialog.c:311
+msgid "_Cancel"
+msgstr "_Csendet!"
+
+#: ../thunar/thunar-progress-dialog.c:437
+#, c-format
+msgid "(%lu hour remaining)"
+msgid_plural "(%lu hours remaining)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar/thunar-progress-dialog.c:442
+#, c-format
+msgid "(%lu minute remaining)"
+msgid_plural "(%lu minutes remaining)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar/thunar-progress-dialog.c:447
+#, c-format
+msgid "(%lu second remaining)"
+msgid_plural "(%lu seconds remaining)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar/thunar-properties-dialog.c:143
+msgid "The file displayed by the dialog"
+msgstr ""
+
+#: ../thunar/thunar-properties-dialog.c:180
+msgid "General"
+msgstr "Ãltalános"
+
+#: ../thunar/thunar-properties-dialog.c:197
+msgid "Name:"
+msgstr "Név"
+
+#.
+#. Second box (kind)
+#.
+#: ../thunar/thunar-properties-dialog.c:222
+msgid "Kind:"
+msgstr "TÃpus:"
+
+#.
+#. Third box (modified, accessed)
+#.
+#: ../thunar/thunar-properties-dialog.c:247
+msgid "Modified:"
+msgstr "MódosÃtva:"
+
+#: ../thunar/thunar-properties-dialog.c:260
+msgid "Accessed:"
+msgstr "Megnyitva:"
+
+#.
+#. Fourth box (volume, size)
+#.
+#: ../thunar/thunar-properties-dialog.c:284
+msgid "Volume:"
+msgstr "Kötet:"
+
+#: ../thunar/thunar-properties-dialog.c:307
+msgid "Size:"
+msgstr "Méret:"
+
+#.
+#. Emblem chooser
+#.
+#: ../thunar/thunar-properties-dialog.c:331
+msgid "Emblems"
+msgstr ""
+
+#: ../thunar/thunar-properties-dialog.c:563
+#, c-format
+msgid "%s Info"
+msgstr "%s Info"
+
+#: ../thunar/thunar-properties-dialog.c:644
+#, c-format
+msgid "%s (%u Bytes)"
+msgstr "%s (%u bájt)"
+
+#. display an error message
+#: ../thunar/thunar-properties-dialog.c:690
+#: ../thunar/thunar-standard-view.c:2135
+#, fuzzy, c-format
+msgid "Failed to rename `%s'"
+msgstr "Nem törölhetÅ: %s"
+
+#: ../thunar/thunar-standard-view.c:245
+#, fuzzy
+msgid "File Context Menu"
+msgstr "Helyi menü"
+
+#: ../thunar/thunar-standard-view.c:246
+#, fuzzy
+msgid "Folder Context Menu"
+msgstr "Helyi menü"
+
+#: ../thunar/thunar-standard-view.c:247
+msgid "Create _Folder..."
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:247
+msgid "Create an empty folder within the current folder"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:248
+msgid "_Properties"
+msgstr "Tulajdonságok"
+
+#: ../thunar/thunar-standard-view.c:248
+#, fuzzy
+msgid "View the properties of the selected file"
+msgstr "A kijelölt elem tulajdonságai"
+
+#: ../thunar/thunar-standard-view.c:249
+#, fuzzy
+msgid "_Copy Files"
+msgstr "Fájlok másolása"
+
+#: ../thunar/thunar-standard-view.c:249
+#, fuzzy
+msgid "Copy the selected files"
+msgstr "A kijelölt elem tulajdonságai"
+
+#: ../thunar/thunar-standard-view.c:250
+#, fuzzy
+msgid "Cu_t Files"
+msgstr "Fájlok kivágása"
+
+#: ../thunar/thunar-standard-view.c:250
+#, fuzzy
+msgid "Cut the selected files"
+msgstr "A kijelölt elem tulajdonságai"
+
+#: ../thunar/thunar-standard-view.c:251
+#, fuzzy
+msgid "_Paste Files"
+msgstr "Fájlok beillesztése"
+
+#: ../thunar/thunar-standard-view.c:252
+#, fuzzy
+msgid "_Delete Files"
+msgstr "Minden fájl kiválasztása"
+
+#: ../thunar/thunar-standard-view.c:252
+#, fuzzy
+msgid "Delete the selected files"
+msgstr "A kijelölt elem tulajdonságai"
+
+#: ../thunar/thunar-standard-view.c:253
+#, fuzzy
+msgid "Paste Files into Folder"
+msgstr "Fájlok mappába illesztése"
+
+#: ../thunar/thunar-standard-view.c:253
+msgid "Paste files into the selected folder"
+msgstr "Fájlok beillesztése a kijelölt mappába"
+
+#: ../thunar/thunar-standard-view.c:254
+#, fuzzy
+msgid "Select _all Files"
+msgstr "Minden fájl kiválasztása"
+
+#: ../thunar/thunar-standard-view.c:254
+msgid "Select all files in this window"
+msgstr "Minden fájlt kiválaszt ebbÅl az ablakból"
+
+#: ../thunar/thunar-standard-view.c:255
+#, fuzzy
+msgid "Select by _Pattern"
+msgstr "Kijelölés mintával"
+
+#: ../thunar/thunar-standard-view.c:255
+msgid "Select all files that match a certain pattern"
+msgstr "Egy adott mintára illŠvalamennyi fájl kiválasztása"
+
+#: ../thunar/thunar-standard-view.c:256 ../thunar/thunar-standard-view.c:2414
+msgid "Du_plicate File"
+msgid_plural "Du_plicate Files"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar/thunar-standard-view.c:256
+#, fuzzy
+msgid "Duplicate each selected file"
+msgstr "A kijelölt elem tulajdonságai"
+
+#: ../thunar/thunar-standard-view.c:257 ../thunar/thunar-standard-view.c:2420
+msgid "Ma_ke Link"
+msgid_plural "Ma_ke Links"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar/thunar-standard-view.c:257
+msgid "Create a symbolic link for each selected file"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:258
+msgid "_Rename"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:258
+#, fuzzy
+msgid "Rename the selected file"
+msgstr "A kijelölt elem tulajdonságai"
+
+#: ../thunar/thunar-standard-view.c:358 ../thunar/thunar-view.c:83
+msgid "Whether the view is currently being loaded"
+msgstr "A nézet betöltését adja meg"
+
+#: ../thunar/thunar-standard-view.c:853
+msgid "Loading folder contents..."
+msgstr "Mappa beolvasása..."
+
+#: ../thunar/thunar-standard-view.c:1305
+#, fuzzy
+msgid "New Folder"
+msgstr "Mappa"
+
+#: ../thunar/thunar-standard-view.c:1308
+#, fuzzy
+msgid "New Folder..."
+msgstr "Mappa"
+
+#. display an error message
+#: ../thunar/thunar-standard-view.c:1322
+#, c-format
+msgid "Cannot convert filename `%s' to the local encoding"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:1468
+#, c-format
+msgid ""
+"Are you sure that you want to\n"
+"permanently delete \"%s\"?"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:1474
+#, c-format
+msgid ""
+"Are you sure that you want to permanently\n"
+"delete the selected file?"
+msgid_plural ""
+"Are you sure that you want to permanently\n"
+"delete the %u selected files?"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar/thunar-standard-view.c:1489
+msgid "If you delete a file, it is permanently lost."
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:1561
+#, fuzzy
+msgid "Select by Pattern"
+msgstr "Kijelölés mintával"
+
+#: ../thunar/thunar-standard-view.c:1576
+msgid "Pattern:"
+msgstr "Minta:"
+
+#: ../thunar/thunar-standard-view.c:2087
+#, fuzzy, c-format
+msgid "Failed to open directory `%s'"
+msgstr "Nem megnyitható könyvtár: %s"
+
+#: ../thunar/thunar-standard-view.c:2387
+#, fuzzy
+msgid "_Copy File"
+msgid_plural "_Copy Files"
+msgstr[0] "Fájl másolás"
+msgstr[1] "Fájl másolás"
+
+#: ../thunar/thunar-standard-view.c:2393
+#, fuzzy
+msgid "Cu_t File"
+msgid_plural "Cu_t Files"
+msgstr[0] "Fájl kivágás"
+msgstr[1] "Fájl kivágás"
+
+#: ../thunar/thunar-standard-view.c:2402
+#, fuzzy
+msgid "_Delete File"
+msgid_plural "_Delete Files"
+msgstr[0] "Minden fájl kiválasztása"
+msgstr[1] "Minden fájl kiválasztása"
+
+#: ../thunar/thunar-statusbar.c:191
+msgid "The file whose icon to display"
+msgstr ""
+
+#: ../thunar/thunar-statusbar.c:205 ../thunar/thunar-statusbar.c:747
+msgid "Whether to display a loading animation"
+msgstr ""
+
+#: ../thunar/thunar-statusbar.c:760 ../thunar/thunar-view.c:98
+msgid "Statusbar text"
+msgstr "Ãllapotsor szöveg"
+
+#: ../thunar/thunar-statusbar.c:761
+msgid "The main text to be displayed in the statusbar"
+msgstr "Az állapotsor fŠszövege"
+
+#: ../thunar/thunar-text-renderer.c:185
+msgid "Text"
+msgstr "Szöveg"
+
+#: ../thunar/thunar-text-renderer.c:186
+msgid "The text to render"
+msgstr "A kiÃrandó szöveg"
+
+#: ../thunar/thunar-text-renderer.c:200
+msgid "Wrap mode"
+msgstr ""
+
+#: ../thunar/thunar-text-renderer.c:201
+#, fuzzy
+msgid "The wrap mode"
+msgstr "A tároló mappák"
+
+#: ../thunar/thunar-text-renderer.c:216
+msgid "Wrap width"
+msgstr ""
+
+#: ../thunar/thunar-text-renderer.c:217
+msgid "The wrap width"
+msgstr ""
+
+#: ../thunar/thunar-view.c:99
+msgid "Text to be displayed in the statusbar associated with this view"
+msgstr "E nézet állapotsorának szövege"
+
+#: ../thunar/thunar-view.c:125 ../thunar/thunar-window.c:233
+msgid "UI manager"
+msgstr "UI kezelÅ"
+
+#: ../thunar/thunar-view.c:126
+msgid "UI manager of the surrounding window"
+msgstr "Adot ablak felhasználói felület kezelÅje"
+
+#: ../thunar/thunar-window.c:149
+msgid "_File"
+msgstr "_Fájl"
+
+#: ../thunar/thunar-window.c:150
+msgid "Open New _Window"
+msgstr "Ãj _Ablak"
+
+#: ../thunar/thunar-window.c:150
+msgid "Open a new Thunar window for the displayed location"
+msgstr "Ãj Thunar ablak az adott helyhez"
+
+#: ../thunar/thunar-window.c:151
+msgid "Close _All Windows"
+msgstr "_Minden ablak bezárása"
+
+#: ../thunar/thunar-window.c:151
+msgid "Close all Thunar windows"
+msgstr "Bezár minden Thunar ablakot"
+
+#: ../thunar/thunar-window.c:152
+msgid "_Close"
+msgstr "_Bezárás"
+
+#: ../thunar/thunar-window.c:152
+msgid "Close this window"
+msgstr "Bezárja ezt az ablakot"
+
+#: ../thunar/thunar-window.c:153
+msgid "_Edit"
+msgstr "Sz_erkesztés"
+
+#: ../thunar/thunar-window.c:154
+msgid "_View"
+msgstr "_Nézet"
+
+#: ../thunar/thunar-window.c:155
+msgid "_Location Bar"
+msgstr "_CÃmsor"
+
+#: ../thunar/thunar-window.c:156
+msgid "_Side Pane"
+msgstr ""
+
+#: ../thunar/thunar-window.c:157
+msgid "_Go"
+msgstr "_Ugrás"
+
+#: ../thunar/thunar-window.c:158
+msgid "Open _Parent"
+msgstr "_SzülŠmegnyitása"
+
+#: ../thunar/thunar-window.c:158
+msgid "Open the parent folder"
+msgstr "SzülÅmappa megnyitása"
+
+#: ../thunar/thunar-window.c:159
+#, fuzzy
+msgid "_Home"
+msgstr "Saját könyvtár"
+
+#: ../thunar/thunar-window.c:159
+#, fuzzy
+msgid "Open the home folder"
+msgstr "SzülÅmappa megnyitása"
+
+#: ../thunar/thunar-window.c:160
+msgid "Open _Location..."
+msgstr "_Hely megnyitása..."
+
+#: ../thunar/thunar-window.c:160
+msgid "Specify a location to open"
+msgstr "Adott hely megnyitása"
+
+#: ../thunar/thunar-window.c:161
+msgid "_Help"
+msgstr "_Súgó"
+
+#: ../thunar/thunar-window.c:163 ../thunar/thunar-window.c:165
+msgid "_About"
+msgstr "_Névjegy"
+
+#: ../thunar/thunar-window.c:163 ../thunar/thunar-window.c:165
+msgid "Display information about Thunar"
+msgstr "A Thunar adatainak megjelenÃtése"
+
+#: ../thunar/thunar-window.c:171
+#, fuzzy
+msgid "Show _Hidden Files"
+msgstr "Rejtett fájlok mutatása"
+
+#: ../thunar/thunar-window.c:171
+msgid "Toggles the display of hidden files in the current window"
+msgstr "A rejtett fájlok mutatását váltja a jelen ablakban"
+
+#: ../thunar/thunar-window.c:206
+msgid "The directory currently displayed within this window"
+msgstr "Ezen ablakban megjelenÃtett könyvtár"
+
+#: ../thunar/thunar-window.c:234
+msgid "The UI manager used within this window"
+msgstr "Ezen ablakban használt UI kezelÅ"
+
+#.
+#. * add the side pane options
+#.
+#: ../thunar/thunar-window.c:289
+msgid "_Favourites"
+msgstr ""
+
+#: ../thunar/thunar-window.c:295 ../thunar/thunar-window.c:316
+msgid "_Hidden"
+msgstr "_Rejtett"
+
+#.
+#. * add the location bar options
+#.
+#: ../thunar/thunar-window.c:304
+msgid "_Button Style"
+msgstr "_Gomb stÃlus"
+
+#: ../thunar/thunar-window.c:310
+msgid "_Traditional Style"
+msgstr "_Hagyományos stÃlus"
+
+#.
+#. * add view options
+#.
+#: ../thunar/thunar-window.c:325
+msgid "View as _Icons"
+msgstr ""
+
+#: ../thunar/thunar-window.c:331
+msgid "View as _Detailed List"
+msgstr ""
+
+#. display an error to the user
+#: ../thunar/thunar-window.c:738
+#, fuzzy
+msgid "Failed to open home directory"
+msgstr "Nem megnyitható könyvtár: %s"
+
+#: ../thunar/thunar-window.c:815
+msgid ""
+"Thunar is a fast and easy to use file manager\n"
+"for the Xfce Desktop Environment."
+msgstr ""
+
+#: ../thunar/thunar-window.c:820
+msgid "translator-credits"
+msgstr ""
+
+#: ../thunarx/thunarx-property-page.c:104
+msgid "Label"
+msgstr ""
+
+#: ../thunarx/thunarx-property-page.c:105
+msgid "Text of the page's label"
+msgstr ""
+
+#: ../thunarx/thunarx-property-page.c:117
+msgid "Label widget"
+msgstr ""
+
+#: ../thunarx/thunarx-property-page.c:118
+msgid "A widget to display in place of the usual page label"
+msgstr ""
+
+#: ../Thunar.desktop.in.h:1
+msgid "Browse the filesystem with the file manager"
+msgstr ""
+
+#: ../Thunar.desktop.in.h:2
+msgid "File Manager"
+msgstr "FájlkezelÅ"
+
+#: ../Thunar.desktop.in.h:3
+#, fuzzy
+msgid "Thunar File Manager"
+msgstr "FájlkezelÅ"
+
+#~ msgid ""
+#~ "Unable to query information about\n"
+#~ "the file %s."
+#~ msgstr ""
+#~ "Nem lehet lekérni információt errÅl a fájlról:\n"
+#~ "%s."
+
+#~ msgid "Unable to open file %s."
+#~ msgstr "Nem nyitható meg e fájl: %s"
+
+#~ msgid "URI scheme not supported for transfer operations"
+#~ msgstr "URI séma nem támogatott az átviteli műveletekhez"
+
+#~ msgid "Files"
+#~ msgstr "Fájlok"
+
+#~ msgid "The list of files stored within this trash"
+#~ msgstr "E kuka fájljai"
+
+#~ msgid "Empty"
+#~ msgstr "Ãres"
+
+#~ msgid "The URI '%s' is invalid"
+#~ msgstr "Rossz URI: '%s'"
+
+#~ msgid "The trash file URI '%s' may not include a '#'"
+#~ msgstr ""
+#~ "Nem használhatsz olyan kukafájl URI-t ('%s'), mely '#' jelet tartalmaz"
+
+#~ msgid "The URI '%s' uses an unsupported scheme"
+#~ msgstr "A '%s' URI nem támogatott sémát használ"
+
+#~ msgid "Only local directories can be listed"
+#~ msgstr "Csak a helyi könyvtárak listázhatók"
+
+#~ msgid "Computer"
+#~ msgstr "SzámÃtógép"
+
+#~ msgid "Model"
+#~ msgstr "Modell"
+
+#~ msgid "The model to display"
+#~ msgstr "MegjelenÃtendÅ modell"
+
+#~ msgid "File column"
+#~ msgstr "Fájl oszlop"
+
+#~ msgid "The column which contains the file"
+#~ msgstr "A fájlt tartalmazó oszlop"
+
+#~ msgid "Position column"
+#~ msgstr "Helyzet oszlop"
+
+#~ msgid "The column which contains the position"
+#~ msgstr "A helyzetet tartalmazó oszlop"
+
+#, fuzzy
+#~ msgid "Unable to rename file"
+#~ msgstr "Nem nyitható meg e fájl: %s"
+
+#~ msgid "unknown"
+#~ msgstr "ismeretlen"
+
+#~ msgid "\"%s\" %s"
+#~ msgstr "\"%s\" %s"
+
+#~ msgid "Trash"
+#~ msgstr "Kuka"
+
+#, fuzzy
+#~ msgid "Delete all items in the Trash"
+#~ msgstr "Minden fájlt kiválaszt ebbÅl az ablakból"
+
+#~ msgid "\"%s\" (%s)"
+#~ msgstr "\"%s\" (%s)"
+
+#~ msgid "\"%s\""
+#~ msgstr "\"%s\""
+
+#~ msgid "%d items selected (%s)"
+#~ msgstr "%d elem kijelölve (%s)"
+
+#~ msgid "Project leader"
+#~ msgstr "ProjektvezetÅ"
Added: desktop/trunk/thunar/branches/upstream/current/po/ja.gmo
===================================================================
(Binary files differ)
Property changes on: desktop/trunk/thunar/branches/upstream/current/po/ja.gmo
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: desktop/trunk/thunar/branches/upstream/current/po/ja.po
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/po/ja.po 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/po/ja.po 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,1446 @@
+# $Id: ja.po 18844 2005-11-14 14:54:34Z benny $
+#
+# Japanese translations for Thunar package.
+# Copyright (C) 2004-2005 Benedikt Meurer.
+# This file is distributed under the same license as the Thunar package.
+# Daichi Kawahata <daichi at xfce.org>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Thunar 0.1.2svn\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-11-14 15:38+0100\n"
+"PO-Revision-Date: 2005-10-06 21:58+0900\n"
+"Last-Translator: Daichi Kawahata <daichi at xfce.org>\n"
+"Language-Team: Japanese <xfce-users-jp at ml.fdiary.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: ../thunar-vfs/thunar-vfs-info.c:261
+msgid "No Exec field specified"
+msgstr "å®è¡ã³ãã³ããæå®ããã¦ãã¾ãã"
+
+#: ../thunar-vfs/thunar-vfs-info.c:269
+msgid "Unable to parse file"
+msgstr "ãã¡ã¤ã«ã解æã§ãã¾ãã"
+
+#: ../thunar-vfs/thunar-vfs-info.c:359
+msgid "Invalid file name"
+msgstr "ç¡å¹ãªãã¡ã¤ã«åã§ã"
+
+#: ../thunar-vfs/thunar-vfs-info.c:381
+msgid "Invalid desktop file"
+msgstr "ç¡å¹ãªãã¹ã¯ããããã¡ã¤ã«ã§ã"
+
+#: ../thunar-vfs/thunar-vfs-info.c:615
+#, fuzzy, c-format
+msgid "Failed to stat file `%s': %s"
+msgstr "%s ã®ååå¤æ´ã«å¤±æãã¾ããã"
+
+#. ask the user whether we should remove the target first
+#. ask the user whether to overwrite
+#: ../thunar-vfs/thunar-vfs-link-job.c:176
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:685
+#, fuzzy, c-format
+msgid ""
+"%s.\n"
+"\n"
+"Do you want to overwrite it?"
+msgstr ""
+"%s ã¯æ¢ã«åå¨ãã¾ãã\n"
+"\n"
+"ä¸æ¸ããã¾ããï¼"
+
+#: ../thunar-vfs/thunar-vfs-link-job.c:200
+#, fuzzy, c-format
+msgid "Failed to remove `%s': %s"
+msgstr "%s ã®ååå¤æ´ã«å¤±æãã¾ããã"
+
+#. ask the user whether to skip this file (used for cancellation only)
+#. ask the user whether to skip
+#: ../thunar-vfs/thunar-vfs-link-job.c:212
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:705
+#, fuzzy, c-format
+msgid ""
+"%s.\n"
+"\n"
+"Do you want to skip it?"
+msgstr ""
+"\n"
+"\n"
+"ãããé£ã°ãã¾ããï¼"
+
+#: ../thunar-vfs/thunar-vfs-mime-database.c:1625
+#, c-format
+msgid "Failed to load application from file %s"
+msgstr "ãã¡ã¤ã« %s ããã¢ããªã±ã¼ã·ã§ã³ãèªã¿è¾¼ãã®ã«å¤±æãã¾ãã"
+
+#: ../thunar-vfs/thunar-vfs-mime-info.c:228
+#, c-format
+msgid "%s document"
+msgstr "%s ææ¸"
+
+#: ../thunar-vfs/thunar-vfs-mkdir-job.c:165
+#, fuzzy, c-format
+msgid "Unable to create directory `%s': %s"
+msgstr "ãã©ã«ã %s ãä½æã§ãã¾ããã"
+
+#: ../thunar-vfs/thunar-vfs-path.c:657
+msgid "Path too long to fit into buffer"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-path.c:761
+msgid "URI too long to fit into buffer"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-thumb.c:144 ../thunar/thunar-details-view.c:150
+msgid "Size"
+msgstr "ãµã¤ãº"
+
+#: ../thunar-vfs/thunar-vfs-thumb.c:145
+msgid "The desired thumbnail size"
+msgstr "ãæã¿ã®ãµã ãã¤ã«ãµã¤ãºã§ã"
+
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:233
+msgid "Collecting files..."
+msgstr "ãã¡ã¤ã«ãéãã¦ãã¾ã..."
+
+#. display info message
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:295
+#, fuzzy
+msgid "Deleting directories..."
+msgstr "ãã¡ã¤ã«ãåé¤ãã¦ãã¾ã..."
+
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:315
+#, fuzzy, c-format
+msgid "Unable to remove directory `%s': %s"
+msgstr "ãã©ã«ã %s ãä½æã§ãã¾ããã"
+
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:593
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:639
+#, fuzzy, c-format
+msgid "Unable to remove `%s': %s"
+msgstr "%s ãåé¤ã§ãã¾ããã"
+
+#: ../thunar-vfs/thunar-vfs-transfer-job.c:831
+msgid "Cannot transfer the root directory"
+msgstr ""
+
+#. tell the user that we're preparing the unlink job
+#: ../thunar-vfs/thunar-vfs-unlink-job.c:161
+msgid "Preparing..."
+msgstr "æºåãã¦ãã¾ã..."
+
+#: ../thunar-vfs/thunar-vfs-unlink-job.c:234
+#, c-format
+msgid ""
+"Unable to remove %s.\n"
+"\n"
+"Do you want to skip it?"
+msgstr ""
+"%s ãåé¤ã§ãã¾ããã\n"
+"\n"
+"ãããé£ã°ãã¾ããï¼"
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:157
+#, c-format
+msgid "copy of %s"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:158 ../thunar/thunar-list-model.c:658
+#: ../thunar/thunar-properties-dialog.c:588
+#, c-format
+msgid "link to %s"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:161
+#, c-format
+msgid "another copy of %s"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:162
+#, c-format
+msgid "another link to %s"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:165
+#, c-format
+msgid "third copy of %s"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:166
+#, c-format
+msgid "third link to %s"
+msgstr ""
+
+#. if we had no match on the NAMES, try the "%uth copy of %s" pattern
+#: ../thunar-vfs/thunar-vfs-xfer.c:205 ../thunar-vfs/thunar-vfs-xfer.c:221
+#, c-format
+msgid "%uth copy of %s"
+msgid_plural "%uth copy of %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:223
+#, c-format
+msgid "%uth link to %s"
+msgid_plural "%uth link to %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. setup the error return
+#: ../thunar-vfs/thunar-vfs-xfer.c:263
+#, fuzzy, c-format
+msgid "Failed to create directory `%s'"
+msgstr "ãã©ã«ã %s ãä½æã§ãã¾ããã"
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:286
+#, fuzzy, c-format
+msgid "Failed to create named fifo `%s'"
+msgstr "%s ã®ååå¤æ´ã«å¤±æãã¾ããã"
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:318
+#, c-format
+msgid "Failed to open `%s' for reading"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:330
+#, c-format
+msgid "Failed to open `%s' for writing"
+msgstr ""
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:345
+#, fuzzy, c-format
+msgid "Failed to read data from `%s'"
+msgstr "%s ã®ååå¤æ´ã«å¤±æãã¾ããã"
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:357
+#, fuzzy, c-format
+msgid "Failed to write data to `%s'"
+msgstr "%s ã®ååå¤æ´ã«å¤±æãã¾ããã"
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:371
+#, fuzzy, c-format
+msgid "Failed to remove `%s'"
+msgstr "%s ã®ååå¤æ´ã«å¤±æãã¾ããã"
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:415
+#, fuzzy, c-format
+msgid "Failed to read link target from `%s'"
+msgstr "%s ã®ãªã³ã¯å
ãèªã¿è¾¼ãã¾ããã"
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:423
+#, fuzzy, c-format
+msgid "Failed to create symbolic link `%s'"
+msgstr "ãªã³ã¯ %s ãä½æã§ãã¾ããã"
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:431
+#, fuzzy, c-format
+msgid "Failed to change mode of `%s'"
+msgstr "%s ã®ååå¤æ´ã«å¤±æãã¾ããã"
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:465 ../thunar-vfs/thunar-vfs-xfer.c:525
+#, fuzzy, c-format
+msgid "Failed to determine file info for `%s'"
+msgstr "'%s' ã®è¦ª URI ã確å®ããã®ã«å¤±æãã¾ãã"
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:494
+#, fuzzy, c-format
+msgid "Failed to copy special file `%s'"
+msgstr "ãã¡ã¤ã« %s ãã³ãã¼ã§ãã¾ããã"
+
+#: ../thunar-vfs/thunar-vfs-xfer.c:536
+#, fuzzy, c-format
+msgid "Failed to create symbolic `%s'"
+msgstr "ãªã³ã¯ %s ãä½æã§ãã¾ããã"
+
+#. setup application name
+#: ../thunar/main.c:47 ../thunar/thunar-window.c:347
+msgid "Thunar"
+msgstr "Thunar"
+
+#. display an error message to the user
+#: ../thunar/thunar-application.c:190
+#, fuzzy
+msgid "Failed to launch operation"
+msgstr "æ°ããã¢ããªã±ã¼ã·ã§ã³ %s ã追å ããã®ã«å¤±æãã¾ããã"
+
+#: ../thunar/thunar-application.c:411
+msgid "Copying files..."
+msgstr "ãã¡ã¤ã«ãã³ãã¼ãã¦ãã¾ã..."
+
+#: ../thunar/thunar-application.c:445
+msgid "Creating symbolic links..."
+msgstr ""
+
+#: ../thunar/thunar-application.c:480
+msgid "Moving files..."
+msgstr "ãã¡ã¤ã«ã移åãã¦ãã¾ã..."
+
+#: ../thunar/thunar-application.c:515
+msgid "Deleting files..."
+msgstr "ãã¡ã¤ã«ãåé¤ãã¦ãã¾ã..."
+
+#: ../thunar/thunar-application.c:555
+#, fuzzy
+msgid "Creating directories..."
+msgstr "ç¾å¨ã®ãã©ã«ã"
+
+#: ../thunar/thunar-chooser-dialog.c:137 ../thunar/thunar-emblem-chooser.c:115
+#: ../thunar/thunar-emblem-chooser.c:116 ../thunar/thunar-icon-renderer.c:129
+#: ../thunar/thunar-open-with-action.c:115
+#: ../thunar/thunar-open-with-action.c:116
+#: ../thunar/thunar-properties-dialog.c:142 ../thunar/thunar-statusbar.c:190
+msgid "File"
+msgstr "ãã¡ã¤ã«"
+
+#: ../thunar/thunar-chooser-dialog.c:138
+msgid "The file for which an application should be chosen"
+msgstr "ã¢ããªã±ã¼ã·ã§ã³ã«ãã£ã¦éããããã¡ã¤ã«ã§ã"
+
+#: ../thunar/thunar-chooser-dialog.c:150
+msgid "Open"
+msgstr "éã"
+
+#: ../thunar/thunar-chooser-dialog.c:151
+msgid "Whether the chooser should open the specified file"
+msgstr "æå®ãããã¡ã¤ã«ããã§ã¼ãµã¼ã§éããã©ããã表ãã¾ã"
+
+#. the "Open with" action
+#: ../thunar/thunar-chooser-dialog.c:176 ../thunar/thunar-launcher.c:197
+msgid "Open With"
+msgstr "ã¢ããªã§éã"
+
+#. create the "Custom command" expand
+#: ../thunar/thunar-chooser-dialog.c:238
+msgid "Use a _custom command:"
+msgstr "æå®ã³ãã³ãã使ç¨(_C):"
+
+#. create the "Custom command" button
+#: ../thunar/thunar-chooser-dialog.c:256
+msgid "_Browse"
+msgstr "åç
§(_B)"
+
+#. display an error to the user
+#: ../thunar/thunar-chooser-dialog.c:429
+#, fuzzy, c-format
+msgid "Failed to add new application `%s'"
+msgstr "æ°ããã¢ããªã±ã¼ã·ã§ã³ %s ã追å ããã®ã«å¤±æãã¾ããã"
+
+#. display an error to the user
+#: ../thunar/thunar-chooser-dialog.c:451
+#, fuzzy, c-format
+msgid "Failed to set default application for `%s'"
+msgstr "\"%s\" ã®æ¨æºã¢ããªã±ã¼ã·ã§ã³ãã»ããããã®ã«å¤±æãã¾ããã"
+
+#. display an error to the user
+#: ../thunar/thunar-chooser-dialog.c:464
+#, fuzzy, c-format
+msgid "Failed to execute `%s'"
+msgstr "%s ã®å®è¡ã«å¤±æãã¾ããã"
+
+#. update the header label
+#: ../thunar/thunar-chooser-dialog.c:580
+#, c-format
+msgid "Open <i>%s</i> and other files of type \"%s\" with:"
+msgstr "<i>%s</i> ã¨ã¿ã¤ãã \"%s\" ã®ä»ã®ãã¡ã¤ã«ã以ä¸ã®ã¢ããªã§éãã¾ã:"
+
+#: ../thunar/thunar-chooser-dialog.c:602
+msgid "Select an Application"
+msgstr "ã¢ããªã±ã¼ã·ã§ã³ãé¸æãã¦ä¸ãã"
+
+#: ../thunar/thunar-chooser-dialog.c:612
+msgid "All Files"
+msgstr "å
¨ã¦ã®ãã¡ã¤ã«"
+
+#: ../thunar/thunar-chooser-dialog.c:617
+msgid "Executable Files"
+msgstr "å®è¡å¯è½ãã¡ã¤ã«"
+
+#: ../thunar/thunar-chooser-dialog.c:632
+msgid "Perl Scripts"
+msgstr "Perl ã¹ã¯ãªãã"
+
+#: ../thunar/thunar-chooser-dialog.c:638
+msgid "Python Scripts"
+msgstr "Python ã¹ã¯ãªãã"
+
+#: ../thunar/thunar-chooser-dialog.c:644
+msgid "Ruby Scripts"
+msgstr "Ruby ã¹ã¯ãªãã"
+
+#: ../thunar/thunar-chooser-dialog.c:650
+msgid "Shell Scripts"
+msgstr "ã·ã§ã«ã¹ã¯ãªãã"
+
+#: ../thunar/thunar-chooser-model.c:116 ../thunar/thunar-folder.c:134
+#: ../thunar/thunar-standard-view.c:357 ../thunar/thunar-statusbar.c:204
+#: ../thunar/thunar-statusbar.c:746 ../thunar/thunar-view.c:82
+msgid "Loading"
+msgstr "èªã¿è¾¼ã¿"
+
+#: ../thunar/thunar-chooser-model.c:117
+msgid "Whether the model is currently being loaded"
+msgstr "ã¢ãã«ãç¾å¨èªã¿è¾¼ã¾ãã¦ãããã©ããã表ãã¾ã"
+
+#: ../thunar/thunar-chooser-model.c:129
+msgid "Mime info"
+msgstr "MIME æ
å ±"
+
+#: ../thunar/thunar-chooser-model.c:130
+msgid "The mime info for the model"
+msgstr "ã¢ãã«ã® MIME æ
å ±ã§ã"
+
+#: ../thunar/thunar-chooser-model.c:306
+msgid "None available"
+msgstr "å©ç¨ã§ãã¾ãã"
+
+#. append the "Recommended Applications:" category
+#: ../thunar/thunar-chooser-model.c:350
+msgid "Recommended Applications:"
+msgstr "æ¨å¥¨ã¢ããªã±ã¼ã·ã§ã³:"
+
+#. append the "Other Applications:" category
+#: ../thunar/thunar-chooser-model.c:353
+msgid "Other Applications:"
+msgstr "ä»ã®ã¢ããªã±ã¼ã·ã§ã³:"
+
+#: ../thunar/thunar-clipboard-manager.c:149
+msgid "Can paste"
+msgstr "è²¼ãä»ãå¯è½"
+
+#: ../thunar/thunar-clipboard-manager.c:150
+msgid "Whether the clipboard content can be pasted"
+msgstr "ã¯ãªãããã¼ãã®å
容ãè²¼ãä»ãå¯è½ã§ãããã表ãã¾ã"
+
+#. tell the user that we cannot paste
+#: ../thunar/thunar-clipboard-manager.c:333
+msgid "There is nothing on the clipboard to paste"
+msgstr "ã¯ãªãããã¼ãã«è²¼ãä»ãããã®ã¯ããã¾ãã"
+
+#: ../thunar/thunar-create-dialog.c:100 ../thunar/thunar-create-dialog.c:101
+#, fuzzy
+msgid "Filename"
+msgstr "ãã¡ã¤ã«ããã¼ã¸ã£ã¼"
+
+#: ../thunar/thunar-create-dialog.c:113 ../thunar/thunar-create-dialog.c:114
+#, fuzzy
+msgid "Mime Info"
+msgstr "MIME æ
å ±"
+
+#: ../thunar/thunar-create-dialog.c:148
+msgid "Enter the new name:"
+msgstr ""
+
+#: ../thunar/thunar-details-view.c:131
+msgid "Name"
+msgstr "åå"
+
+#: ../thunar/thunar-details-view.c:165
+msgid "Permissions"
+msgstr "許å¯å±æ§"
+
+#: ../thunar/thunar-details-view.c:180
+msgid "Type"
+msgstr "ã¿ã¤ã"
+
+#: ../thunar/thunar-details-view.c:192
+msgid "Date modified"
+msgstr "å¤æ´æ¥"
+
+#: ../thunar/thunar-details-view.c:221
+msgid "Details view"
+msgstr "詳細表示"
+
+#: ../thunar/thunar-details-view.c:222
+msgid "Detailed directory listing"
+msgstr "詳細ãªãã©ã«ãå
容ããªã¹ã表示ãã¾ã"
+
+#: ../thunar/thunar-dialogs.c:74 ../thunar/thunar-dialogs.c:78
+#, c-format
+msgid "%s."
+msgstr ""
+
+#: ../thunar/thunar-dnd.c:62
+msgid "_Copy here"
+msgstr "ããã«ã³ãã¼(_C)"
+
+#: ../thunar/thunar-dnd.c:62
+msgid "_Move here"
+msgstr "ããã«ç§»å(_M)"
+
+#: ../thunar/thunar-dnd.c:62
+msgid "_Link here"
+msgstr "ããã«ãªã³ã¯(_L)"
+
+#. display an error to the user
+#. display an error message to the user
+#: ../thunar/thunar-dnd.c:190 ../thunar/thunar-launcher.c:314
+#, fuzzy, c-format
+msgid "Unable to execute file `%s'"
+msgstr "ãã¡ã¤ã« \"%s\" ãå®è¡ã§ãã¾ããã"
+
+#: ../thunar/thunar-extension-manager.c:158
+msgid "Resident"
+msgstr ""
+
+#: ../thunar/thunar-extension-manager.c:159
+msgid "Ensures that an extension will never be unloaded."
+msgstr ""
+
+#. append the remove menu item
+#: ../thunar/thunar-favourites-view.c:292
+msgid "_Remove Favourite"
+msgstr "ãæ°ã«å
¥ããåé¤(_R)"
+
+#. append the rename menu item
+#: ../thunar/thunar-favourites-view.c:307
+msgid "Re_name Favourite"
+msgstr "ãæ°ã«å
¥ãã®ååãå¤æ´(_N)"
+
+#: ../thunar/thunar-favourites-view.c:627
+#, fuzzy, c-format
+msgid "The path '%s' does not refer to a directory"
+msgstr "URI '%s' ã¯ãã©ã«ããåç
§ãã¦ãã¾ãã"
+
+#. display an error message to the user
+#: ../thunar/thunar-favourites-view.c:646
+#, fuzzy
+msgid "Failed to add new favourite"
+msgstr "ãæ°ã«å
¥ãã追å ã§ãã¾ããã§ãã"
+
+#: ../thunar/thunar-file.c:681
+msgid "The root folder has no parent"
+msgstr ""
+
+#: ../thunar/thunar-file.c:873
+msgid "Filesystem"
+msgstr "ãã¡ã¤ã«ã·ã¹ãã "
+
+#: ../thunar/thunar-file.c:897
+msgid "Home"
+msgstr "ãã¼ã "
+
+#: ../thunar/thunar-folder.c:135
+msgid "Whether the contents of the folder are currently being loaded"
+msgstr "ãã©ã«ãã®å
容ãç¾å¨èªã¿è¾¼ã¾ãã¦ãããã©ããã表ãã¾ã"
+
+#: ../thunar/thunar-icon-factory.c:163
+msgid "Icon theme"
+msgstr "ã¢ã¤ã³ã³ãã¼ã"
+
+#: ../thunar/thunar-icon-factory.c:164
+msgid "The icon theme used by the icon factory"
+msgstr "ã¢ã¤ã³ã³ãã¡ã¯ããªã«ä½¿ç¨ãããã¢ã¤ã³ã³ã®ãã¼ãã§ã"
+
+# FIXME: what's this? 'Dropped file' or 'File dropped'?
+#: ../thunar/thunar-icon-renderer.c:116
+msgid "Drop file"
+msgstr "ãã¡ã¤ã«ããããã"
+
+#: ../thunar/thunar-icon-renderer.c:117
+msgid "The file which should be rendered in as drop acceptor"
+msgstr ""
+
+#: ../thunar/thunar-icon-renderer.c:130
+msgid "The file whose icon to render"
+msgstr "ã¢ã¤ã³ã³ã表示ãããã¡ã¤ã«ã§ã"
+
+# FIXME: what's this?
+#: ../thunar/thunar-icon-renderer.c:145 ../thunar/thunar-icon-renderer.c:146
+#: ../thunar/thunar-text-renderer.c:172 ../thunar/thunar-text-renderer.c:173
+msgid "Follow state"
+msgstr "ç¶æ
ã«å¾ã"
+
+#: ../thunar/thunar-icon-renderer.c:158 ../thunar/thunar-path-entry.c:179
+msgid "Icon size"
+msgstr "ã¢ã¤ã³ã³ã®ãµã¤ãº"
+
+#: ../thunar/thunar-icon-renderer.c:159
+msgid "The icon size in pixels"
+msgstr "ã¢ã¤ã³ã³ã®ãµã¤ãºã§ã (ãã¯ã»ã«åä½)"
+
+#: ../thunar/thunar-icon-view.c:111
+msgid "Arran_ge Items"
+msgstr "ã¢ã¤ãã ãæ´é (_G)"
+
+#: ../thunar/thunar-icon-view.c:116
+msgid "Sort By _Name"
+msgstr "ååã§ä¸¦ã¹æ¿ã(_N)"
+
+#: ../thunar/thunar-icon-view.c:116
+msgid "Keep items sorted by their name in rows"
+msgstr "åè¡ã®ã¢ã¤ãã ãååã§ä¸¦ã¹æ¿ãã¾ã"
+
+#: ../thunar/thunar-icon-view.c:117
+msgid "Sort By _Size"
+msgstr "ãµã¤ãºã§ä¸¦ã¹æ¿ã(_S)"
+
+#: ../thunar/thunar-icon-view.c:117
+msgid "Keep items sorted by their size in rows"
+msgstr "åè¡ã®ã¢ã¤ãã ããµã¤ãºã§ä¸¦ã¹æ¿ãã¾ã"
+
+#: ../thunar/thunar-icon-view.c:118
+msgid "Sort By _Type"
+msgstr "ã¿ã¤ãã§ä¸¦ã¹æ¿ã(_T)"
+
+#: ../thunar/thunar-icon-view.c:118
+msgid "Keep items sorted by their type in rows"
+msgstr "åè¡ã®ã¢ã¤ãã ãã¿ã¤ãã§ä¸¦ã¹æ¿ãã¾ã"
+
+#: ../thunar/thunar-icon-view.c:119
+msgid "Sort By Modification _Date"
+msgstr "å¤æ´æ¥ã§ä¸¦ã¹æ¿ã(_D)"
+
+#: ../thunar/thunar-icon-view.c:119
+msgid "Keep items sorted by their modification date in rows"
+msgstr "åè¡ã®ã¢ã¤ãã ãå¤æ´æ¥ã§ä¸¦ã¹æ¿ãã¾ã"
+
+#: ../thunar/thunar-icon-view.c:124
+msgid "_Ascending"
+msgstr "æé (_A)"
+
+#: ../thunar/thunar-icon-view.c:124
+msgid "Sort items in ascending order"
+msgstr "ã¢ã¤ãã ãæé ã§ä¸¦ã¹æ¿ãã¾ã"
+
+#: ../thunar/thunar-icon-view.c:125
+msgid "_Descending"
+msgstr "éé (_D)"
+
+#: ../thunar/thunar-icon-view.c:125
+msgid "Sort items in descending order"
+msgstr "ã¢ã¤ãã ãéé ã§ä¸¦ã¹æ¿ãã¾ã"
+
+#: ../thunar/thunar-icon-view.c:226
+msgid "Icon view"
+msgstr "ã¢ã¤ã³ã³è¡¨ç¤º"
+
+#: ../thunar/thunar-icon-view.c:227
+msgid "Icon based directory listing"
+msgstr "ã¢ã¤ã³ã³ãåºã«ãã©ã«ãããªã¹ã表示ãã¾ã"
+
+#: ../thunar/thunar-launcher.c:134 ../thunar/thunar-launcher.c:135
+msgid "Action group"
+msgstr "ã¢ã¯ã·ã§ã³ã°ã«ã¼ã"
+
+#: ../thunar/thunar-launcher.c:147 ../thunar/thunar-launcher.c:148
+msgid "Selected files"
+msgstr "é¸æããããã¡ã¤ã«"
+
+#: ../thunar/thunar-launcher.c:160 ../thunar/thunar-launcher.c:161
+msgid "Widget"
+msgstr "ã¦ã£ã¸ãã"
+
+#. the "Open" action
+#: ../thunar/thunar-launcher.c:189 ../thunar/thunar-launcher.c:521
+#: ../thunar/thunar-launcher.c:539
+msgid "_Open"
+msgstr "éã(_O)"
+
+#: ../thunar/thunar-launcher.c:189
+msgid "Open the selected items"
+msgstr "é¸æããã¢ã¤ãã ãéãã¾ã"
+
+#. the "Open in New Window" action
+#: ../thunar/thunar-launcher.c:193
+msgid "Open in New Window"
+msgstr "æ°ããã¦ã£ã³ãã¦ã§éã"
+
+#: ../thunar/thunar-launcher.c:193
+msgid "Open the selected directories in new Thunar windows"
+msgstr "é¸æãããã©ã«ããæ°ãã Thunar ã¦ã£ã³ãã¦ã§éãã¾ã"
+
+#: ../thunar/thunar-launcher.c:347
+#, c-format
+msgid "Unable to open \"%s\"."
+msgstr "\"%s\" ãéãã¾ããã"
+
+#: ../thunar/thunar-launcher.c:352
+#, c-format
+msgid "Unable to open %d file."
+msgid_plural "Unable to open %d files."
+msgstr[0] "%d åã®ãã¡ã¤ã«ãéãã¾ããã"
+
+#: ../thunar/thunar-launcher.c:458
+msgid "Are you sure you want to open all folders?"
+msgstr "å
¨ã¦ã®ãã©ã«ããéãã¦ãããããã§ããï¼"
+
+#: ../thunar/thunar-launcher.c:460
+#, c-format
+msgid "This will open %d separate window."
+msgid_plural "This will open %d separate windows."
+msgstr[0] "%d ã®ã¦ã£ã³ãã¦ãå¥ã
ã«éãã¾ãã"
+
+#: ../thunar/thunar-launcher.c:519
+#, c-format
+msgid "Open in %d New Window"
+msgid_plural "Open in %d New Windows"
+msgstr[0] "%d ã®æ°ããã¦ã£ã³ãã¦ã§éãã¾ãã"
+
+#: ../thunar/thunar-launcher.c:537
+msgid "_Execute"
+msgstr "å®è¡(_E)"
+
+#: ../thunar/thunar-list-model.c:258
+msgid "Folder"
+msgstr "ãã©ã«ã"
+
+#: ../thunar/thunar-list-model.c:259
+msgid "The stores folder"
+msgstr "ä¿ç®¡ãã©ã«ãã§ã"
+
+#: ../thunar/thunar-list-model.c:271
+msgid "Folders first"
+msgstr "ãã©ã«ããå
é ã«ãã"
+
+#: ../thunar/thunar-list-model.c:272
+msgid "Folders first in sorting"
+msgstr "並ã¹æ¿ãã§ãã©ã«ããå
é ã«ãã¾ã"
+
+#: ../thunar/thunar-list-model.c:284
+msgid "Number of files"
+msgstr "ãã¡ã¤ã«ã®æ°"
+
+#: ../thunar/thunar-list-model.c:285
+msgid "Number of visible files"
+msgstr "表示ããããã¡ã¤ã«ã®æ°ã§ã"
+
+#: ../thunar/thunar-list-model.c:297 ../thunar/thunar-view.c:111
+#: ../thunar/thunar-window.c:218
+msgid "Show hidden"
+msgstr "é ããã¡ã¤ã«ã表示"
+
+#: ../thunar/thunar-list-model.c:298 ../thunar/thunar-view.c:112
+#: ../thunar/thunar-window.c:219
+msgid "Whether to display hidden files"
+msgstr "é ããã¡ã¤ã«ã表示ãã¾ã"
+
+#: ../thunar/thunar-list-model.c:656 ../thunar/thunar-properties-dialog.c:586
+msgid "broken link"
+msgstr ""
+
+#: ../thunar/thunar-list-model.c:1924
+#, c-format
+msgid "%d item, Free space: %s"
+msgid_plural "%d items, Free space: %s"
+msgstr[0] "%d åã®ã¢ã¤ãã , 空ãé å: %s"
+
+#: ../thunar/thunar-list-model.c:1929
+#, c-format
+msgid "%d item"
+msgid_plural "%d items"
+msgstr[0] "%d åã®ã¢ã¤ãã "
+
+#: ../thunar/thunar-list-model.c:1945
+#, c-format
+msgid "\"%s\" broken link"
+msgstr ""
+
+#: ../thunar/thunar-list-model.c:1949
+#, fuzzy, c-format
+msgid "\"%s\" (%s) link to %s"
+msgstr "\"%s\" (%s) %s"
+
+#: ../thunar/thunar-list-model.c:1954
+#, c-format
+msgid "\"%s\" (%s) %s"
+msgstr "\"%s\" (%s) %s"
+
+#: ../thunar/thunar-list-model.c:1971 ../thunar/thunar-list-model.c:1976
+#, c-format
+msgid "%d item selected"
+msgid_plural "%d items selected (%s)"
+msgstr[0] "%d åã®ã¢ã¤ãã ãé¸æããã¦ãã¾ã (%s)"
+
+#: ../thunar/thunar-location-buttons.c:214
+msgid "Spacing"
+msgstr "éé"
+
+#: ../thunar/thunar-location-buttons.c:215
+msgid "The amount of space between the path buttons"
+msgstr "ãã¹ã»ãã¿ã³éã®ã¹ãã¼ã¹ã§ã"
+
+#: ../thunar/thunar-location-dialog.c:85
+msgid "Open Location"
+msgstr "å ´æãéãã¾ã"
+
+#: ../thunar/thunar-location-dialog.c:99
+msgid "_Location:"
+msgstr "å ´æ(_L):"
+
+#: ../thunar/thunar-navigator.c:137 ../thunar/thunar-window.c:205
+msgid "Current directory"
+msgstr "ç¾å¨ã®ãã©ã«ã"
+
+#: ../thunar/thunar-navigator.c:138
+msgid "The directory currently displayed by the navigator"
+msgstr "ããã²ã¼ã¿ã«ç¾å¨è¡¨ç¤ºããã¦ãããã©ã«ãã§ã"
+
+#: ../thunar/thunar-open-with-action.c:320
+#, c-format
+msgid "%s (default)"
+msgstr "%s (æ¨æº)"
+
+#. add our custom children
+#: ../thunar/thunar-open-with-action.c:371
+msgid "Other Application..."
+msgstr "ä»ã®ã¢ããªã±ã¼ã·ã§ã³..."
+
+#: ../thunar/thunar-path-entry.c:167
+msgid "Current file"
+msgstr "ç¾å¨ã®ãã¡ã¤ã«"
+
+#: ../thunar/thunar-path-entry.c:168
+msgid "The currently displayed file"
+msgstr "ç¾å¨è¡¨ç¤ºããã¦ãããã¡ã¤ã«ã§ã"
+
+#: ../thunar/thunar-path-entry.c:180
+msgid "The icon size for the path entry"
+msgstr "ãã¹ã»ã¨ã³ããªã¼ã®ã¢ã¤ã³ã³ã»ãµã¤ãºã§ã"
+
+#: ../thunar/thunar-preferences.c:178
+#, fuzzy, c-format
+msgid "Failed to create the Thunar configuration directory in %s"
+msgstr "ãã©ã«ã %s ãä½æã§ãã¾ããã"
+
+#: ../thunar/thunar-preferences.c:186
+#, fuzzy, c-format
+msgid "Failed to open preferences database in %s: %s"
+msgstr "%s ã®ååå¤æ´ã«å¤±æãã¾ããã"
+
+#: ../thunar/thunar-progress-dialog.c:129
+msgid "Job"
+msgstr "ã¸ã§ã"
+
+#: ../thunar/thunar-progress-dialog.c:130
+msgid "The job whose progress to display"
+msgstr "éä¸çµéã表示ããã¸ã§ãã§ã"
+
+#: ../thunar/thunar-progress-dialog.c:273
+msgid "Question"
+msgstr "質å"
+
+#: ../thunar/thunar-progress-dialog.c:299
+msgid "_Yes"
+msgstr "ã¯ã(_Y)"
+
+#: ../thunar/thunar-progress-dialog.c:303
+msgid "Yes to _all"
+msgstr "å
¨ã¦ã«ã¯ã(_A)"
+
+#: ../thunar/thunar-progress-dialog.c:307
+msgid "_No"
+msgstr "ããã(_N)"
+
+#: ../thunar/thunar-progress-dialog.c:311
+msgid "_Cancel"
+msgstr "ãã£ã³ã»ã«(_C)"
+
+#: ../thunar/thunar-progress-dialog.c:437
+#, c-format
+msgid "(%lu hour remaining)"
+msgid_plural "(%lu hours remaining)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar/thunar-progress-dialog.c:442
+#, c-format
+msgid "(%lu minute remaining)"
+msgid_plural "(%lu minutes remaining)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar/thunar-progress-dialog.c:447
+#, c-format
+msgid "(%lu second remaining)"
+msgid_plural "(%lu seconds remaining)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar/thunar-properties-dialog.c:143
+msgid "The file displayed by the dialog"
+msgstr "ãã¤ã¢ãã°ã«è¡¨ç¤ºããã¦ãããã¡ã¤ã«ã§ã"
+
+#: ../thunar/thunar-properties-dialog.c:180
+msgid "General"
+msgstr "ä¸è¬"
+
+#: ../thunar/thunar-properties-dialog.c:197
+msgid "Name:"
+msgstr "åå:"
+
+#.
+#. Second box (kind)
+#.
+#: ../thunar/thunar-properties-dialog.c:222
+msgid "Kind:"
+msgstr "種é¡:"
+
+#.
+#. Third box (modified, accessed)
+#.
+#: ../thunar/thunar-properties-dialog.c:247
+msgid "Modified:"
+msgstr "å¤æ´æé:"
+
+#: ../thunar/thunar-properties-dialog.c:260
+msgid "Accessed:"
+msgstr "ã¢ã¯ã»ã¹æé:"
+
+#.
+#. Fourth box (volume, size)
+#.
+#: ../thunar/thunar-properties-dialog.c:284
+msgid "Volume:"
+msgstr "容é:"
+
+#: ../thunar/thunar-properties-dialog.c:307
+msgid "Size:"
+msgstr "ãµã¤ãº:"
+
+#.
+#. Emblem chooser
+#.
+#: ../thunar/thunar-properties-dialog.c:331
+msgid "Emblems"
+msgstr ""
+
+#: ../thunar/thunar-properties-dialog.c:563
+#, c-format
+msgid "%s Info"
+msgstr "%s ã®æ
å ±"
+
+#: ../thunar/thunar-properties-dialog.c:644
+#, c-format
+msgid "%s (%u Bytes)"
+msgstr "%s (%u ãã¤ã)"
+
+#. display an error message
+#: ../thunar/thunar-properties-dialog.c:690
+#: ../thunar/thunar-standard-view.c:2135
+#, fuzzy, c-format
+msgid "Failed to rename `%s'"
+msgstr "%s ã®ååå¤æ´ã«å¤±æãã¾ããã"
+
+#: ../thunar/thunar-standard-view.c:245
+msgid "File Context Menu"
+msgstr "ãã¡ã¤ã«ã»ã³ã³ããã¹ãã»ã¡ãã¥ã¼"
+
+#: ../thunar/thunar-standard-view.c:246
+msgid "Folder Context Menu"
+msgstr "ãã©ã«ãã»ã³ã³ããã¹ãã»ã¡ãã¥ã¼"
+
+#: ../thunar/thunar-standard-view.c:247
+msgid "Create _Folder..."
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:247
+msgid "Create an empty folder within the current folder"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:248
+msgid "_Properties"
+msgstr "ããããã£(_P)"
+
+#: ../thunar/thunar-standard-view.c:248
+#, fuzzy
+msgid "View the properties of the selected file"
+msgstr "é¸æããã¢ã¤ãã ã®ããããã£ã表示ãã¾ã"
+
+#: ../thunar/thunar-standard-view.c:249
+#, fuzzy
+msgid "_Copy Files"
+msgstr "ã³ãã¼(_C)"
+
+#: ../thunar/thunar-standard-view.c:249
+#, fuzzy
+msgid "Copy the selected files"
+msgstr "é¸æããã¢ã¤ãã ãéãã¾ã"
+
+#: ../thunar/thunar-standard-view.c:250
+#, fuzzy
+msgid "Cu_t Files"
+msgstr "åãåã(_T)"
+
+#: ../thunar/thunar-standard-view.c:250
+#, fuzzy
+msgid "Cut the selected files"
+msgstr "é¸æããã¢ã¤ãã ãéãã¾ã"
+
+#: ../thunar/thunar-standard-view.c:251
+#, fuzzy
+msgid "_Paste Files"
+msgstr "è²¼ãä»ã(_P)"
+
+#: ../thunar/thunar-standard-view.c:252
+#, fuzzy
+msgid "_Delete Files"
+msgstr "é¸æããããã¡ã¤ã«"
+
+#: ../thunar/thunar-standard-view.c:252
+#, fuzzy
+msgid "Delete the selected files"
+msgstr "é¸æããã¢ã¤ãã ãéãã¾ã"
+
+#: ../thunar/thunar-standard-view.c:253
+#, fuzzy
+msgid "Paste Files into Folder"
+msgstr "ãã¡ã¤ã«ããã©ã«ãã«è²¼ãä»ã"
+
+#: ../thunar/thunar-standard-view.c:253
+msgid "Paste files into the selected folder"
+msgstr "é¸æãããã©ã«ãã«ãã¡ã¤ã«ãè²¼ãä»ãã¾ã"
+
+#: ../thunar/thunar-standard-view.c:254
+#, fuzzy
+msgid "Select _all Files"
+msgstr "å
¨ã¦ã®ãã¡ã¤ã«ãé¸æ(_A)"
+
+#: ../thunar/thunar-standard-view.c:254
+msgid "Select all files in this window"
+msgstr "ãã®ã¦ã£ã³ãã¦ã®å
¨ã¦ã®ãã¡ã¤ã«ãé¸æãã¾ã"
+
+#: ../thunar/thunar-standard-view.c:255
+#, fuzzy
+msgid "Select by _Pattern"
+msgstr "ãã¿ã¼ã³ã§é¸æ(_P)"
+
+#: ../thunar/thunar-standard-view.c:255
+msgid "Select all files that match a certain pattern"
+msgstr "ããç¹å®ã®ãã¿ã¼ã³ã«ä¸è´ããå
¨ã¦ã®ãã¡ã¤ã«ãé¸æãã¾ã"
+
+#: ../thunar/thunar-standard-view.c:256 ../thunar/thunar-standard-view.c:2414
+msgid "Du_plicate File"
+msgid_plural "Du_plicate Files"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar/thunar-standard-view.c:256
+#, fuzzy
+msgid "Duplicate each selected file"
+msgstr "é¸æããã¢ã¤ãã ãéãã¾ã"
+
+#: ../thunar/thunar-standard-view.c:257 ../thunar/thunar-standard-view.c:2420
+msgid "Ma_ke Link"
+msgid_plural "Ma_ke Links"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../thunar/thunar-standard-view.c:257
+msgid "Create a symbolic link for each selected file"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:258
+msgid "_Rename"
+msgstr "ååå¤æ´(_R)"
+
+#: ../thunar/thunar-standard-view.c:258
+#, fuzzy
+msgid "Rename the selected file"
+msgstr "é¸æããã¢ã¤ãã ã®ååãå¤æ´ãã¾ã"
+
+#: ../thunar/thunar-standard-view.c:358 ../thunar/thunar-view.c:83
+msgid "Whether the view is currently being loaded"
+msgstr "表示ãã¤ã³ãç¾å¨èªã¿è¾¼ã¾ãã¦ãããã©ããã表ãã¾ã"
+
+#: ../thunar/thunar-standard-view.c:853
+msgid "Loading folder contents..."
+msgstr "ãã©ã«ãã®å
容ãèªã¿è¾¼ãã§ãã¾ã..."
+
+#: ../thunar/thunar-standard-view.c:1305
+#, fuzzy
+msgid "New Folder"
+msgstr "ãã©ã«ã"
+
+#: ../thunar/thunar-standard-view.c:1308
+#, fuzzy
+msgid "New Folder..."
+msgstr "ãã©ã«ã"
+
+#. display an error message
+#: ../thunar/thunar-standard-view.c:1322
+#, c-format
+msgid "Cannot convert filename `%s' to the local encoding"
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:1468
+#, fuzzy, c-format
+msgid ""
+"Are you sure that you want to\n"
+"permanently delete \"%s\"?"
+msgstr "ã´ãç®±ã«ããå
¨ã¦ã®ãã¡ã¤ã«ãåé¤ãã¦ãããããã§ããï¼"
+
+#: ../thunar/thunar-standard-view.c:1474
+#, fuzzy, c-format
+msgid ""
+"Are you sure that you want to permanently\n"
+"delete the selected file?"
+msgid_plural ""
+"Are you sure that you want to permanently\n"
+"delete the %u selected files?"
+msgstr[0] "ã´ãç®±ã«ããå
¨ã¦ã®ãã¡ã¤ã«ãåé¤ãã¦ãããããã§ããï¼"
+
+#: ../thunar/thunar-standard-view.c:1489
+msgid "If you delete a file, it is permanently lost."
+msgstr ""
+
+#: ../thunar/thunar-standard-view.c:1561
+#, fuzzy
+msgid "Select by Pattern"
+msgstr "ãã¿ã¼ã³ã§é¸æ"
+
+#: ../thunar/thunar-standard-view.c:1576
+msgid "Pattern:"
+msgstr "ãã¿ã¼ã³:"
+
+#: ../thunar/thunar-standard-view.c:2087
+#, fuzzy, c-format
+msgid "Failed to open directory `%s'"
+msgstr "ãã©ã«ã %s ãéãã¾ããã"
+
+#: ../thunar/thunar-standard-view.c:2387
+#, fuzzy
+msgid "_Copy File"
+msgid_plural "_Copy Files"
+msgstr[0] "ã³ãã¼(_C)"
+
+#: ../thunar/thunar-standard-view.c:2393
+#, fuzzy
+msgid "Cu_t File"
+msgid_plural "Cu_t Files"
+msgstr[0] "åãåã(_T)"
+
+#: ../thunar/thunar-standard-view.c:2402
+#, fuzzy
+msgid "_Delete File"
+msgid_plural "_Delete Files"
+msgstr[0] "é¸æããããã¡ã¤ã«"
+
+#: ../thunar/thunar-statusbar.c:191
+msgid "The file whose icon to display"
+msgstr "ã¢ã¤ã³ã³ã表示ãããã¡ã¤ã«ã§ã"
+
+#: ../thunar/thunar-statusbar.c:205 ../thunar/thunar-statusbar.c:747
+msgid "Whether to display a loading animation"
+msgstr "èªã¿è¾¼ã¿ã®éã®ã¢ãã¡ã¼ã·ã§ã³ã表示ãããã©ããã表ãã¾ã"
+
+#: ../thunar/thunar-statusbar.c:760 ../thunar/thunar-view.c:98
+msgid "Statusbar text"
+msgstr "ã¹ãã¼ã¿ã¹ãã¼ã®ããã¹ã"
+
+#: ../thunar/thunar-statusbar.c:761
+msgid "The main text to be displayed in the statusbar"
+msgstr "ã¹ãã¼ã¿ã¹ãã¼ã«è¡¨ç¤ºãããã¡ã¤ã³ã»ããã¹ãã§ã"
+
+#: ../thunar/thunar-text-renderer.c:185
+msgid "Text"
+msgstr "ããã¹ã"
+
+#: ../thunar/thunar-text-renderer.c:186
+msgid "The text to render"
+msgstr "表示ããããã¹ãã§ã"
+
+#: ../thunar/thunar-text-renderer.c:200
+msgid "Wrap mode"
+msgstr "æãè¿ãã¢ã¼ã"
+
+#: ../thunar/thunar-text-renderer.c:201
+msgid "The wrap mode"
+msgstr "ããã¹ããæãè¿ãã¾ã"
+
+#: ../thunar/thunar-text-renderer.c:216
+msgid "Wrap width"
+msgstr "æãè¿ãå¹
"
+
+#: ../thunar/thunar-text-renderer.c:217
+msgid "The wrap width"
+msgstr "æãè¿ãå¹
ã§ã"
+
+#: ../thunar/thunar-view.c:99
+msgid "Text to be displayed in the statusbar associated with this view"
+msgstr "ãã®è¡¨ç¤ºã«é¢é£ä»ããããã¹ãã¼ã¿ã¹ãã¼ã§è¡¨ç¤ºãããããã¹ãã§ã"
+
+#: ../thunar/thunar-view.c:125 ../thunar/thunar-window.c:233
+msgid "UI manager"
+msgstr "UI ããã¼ã¸ã£"
+
+#: ../thunar/thunar-view.c:126
+msgid "UI manager of the surrounding window"
+msgstr "ã¦ã£ã³ãã¦ãå²ã UI ããã¼ã¸ã£ã§ã"
+
+#: ../thunar/thunar-window.c:149
+msgid "_File"
+msgstr "ãã¡ã¤ã«(_F)"
+
+#: ../thunar/thunar-window.c:150
+msgid "Open New _Window"
+msgstr "æ°ããã¦ã£ã³ãã¦ãéã(_W)"
+
+#: ../thunar/thunar-window.c:150
+msgid "Open a new Thunar window for the displayed location"
+msgstr "表示ããã¦ããå ´æã® Thunar ã¦ã£ã³ãã¦ãæ°ããéãã¾ã"
+
+#: ../thunar/thunar-window.c:151
+msgid "Close _All Windows"
+msgstr "å
¨ã¦ã£ã³ãã¦ãéãã(_A)"
+
+#: ../thunar/thunar-window.c:151
+msgid "Close all Thunar windows"
+msgstr "Thunar ã®å
¨ã¦ã®ã¦ã£ã³ãã¦ãéãã¾ã"
+
+#: ../thunar/thunar-window.c:152
+msgid "_Close"
+msgstr "éãã(_C)"
+
+#: ../thunar/thunar-window.c:152
+msgid "Close this window"
+msgstr "ãã®ã¦ã£ã³ãã¦ãéãã¾ã"
+
+#: ../thunar/thunar-window.c:153
+msgid "_Edit"
+msgstr "ç·¨é(_E)"
+
+#: ../thunar/thunar-window.c:154
+msgid "_View"
+msgstr "表示(_V)"
+
+#: ../thunar/thunar-window.c:155
+msgid "_Location Bar"
+msgstr "å ´æãã¼(_L)"
+
+#: ../thunar/thunar-window.c:156
+msgid "_Side Pane"
+msgstr "ãµã¤ããã¤ã³(_S)"
+
+#: ../thunar/thunar-window.c:157
+msgid "_Go"
+msgstr "移å(_G)"
+
+#: ../thunar/thunar-window.c:158
+msgid "Open _Parent"
+msgstr "親ãã©ã«ããéã(_P)"
+
+#: ../thunar/thunar-window.c:158
+msgid "Open the parent folder"
+msgstr "親ãã©ã«ããéãã¾ã"
+
+#: ../thunar/thunar-window.c:159
+#, fuzzy
+msgid "_Home"
+msgstr "ãã¼ã "
+
+#: ../thunar/thunar-window.c:159
+#, fuzzy
+msgid "Open the home folder"
+msgstr "親ãã©ã«ããéãã¾ã"
+
+#: ../thunar/thunar-window.c:160
+msgid "Open _Location..."
+msgstr "å ´æãéã(_L)..."
+
+#: ../thunar/thunar-window.c:160
+msgid "Specify a location to open"
+msgstr "éãå ´æãæå®ãã¾ã"
+
+#: ../thunar/thunar-window.c:161
+msgid "_Help"
+msgstr "ãã«ã(_H)"
+
+#: ../thunar/thunar-window.c:163 ../thunar/thunar-window.c:165
+msgid "_About"
+msgstr "ãã®ããã°ã©ã ã«ã¤ãã¦(_A)"
+
+#: ../thunar/thunar-window.c:163 ../thunar/thunar-window.c:165
+msgid "Display information about Thunar"
+msgstr "Thunar ã«ã¤ãã¦ã®æ
å ±ã表示ãã¾ã"
+
+#: ../thunar/thunar-window.c:171
+#, fuzzy
+msgid "Show _Hidden Files"
+msgstr "é ããã¡ã¤ã«ã表示(_H)"
+
+#: ../thunar/thunar-window.c:171
+msgid "Toggles the display of hidden files in the current window"
+msgstr "ç¾å¨ã®ã¦ã£ã³ãã¦ã§é ããã¡ã¤ã«ã®è¡¨ç¤º/é表示ãåãæ¿ãã¾ã"
+
+#: ../thunar/thunar-window.c:206
+msgid "The directory currently displayed within this window"
+msgstr "ç¾å¨ãã®ã¦ã£ã³ãã¦å
ã«è¡¨ç¤ºããã¦ãããã©ã«ãã§ã"
+
+#: ../thunar/thunar-window.c:234
+msgid "The UI manager used within this window"
+msgstr "ãã®ã¦ã£ã³ãã¦å
ã§ä½¿ç¨ããã¦ãã UI ããã¼ã¸ã£ã§ã"
+
+#.
+#. * add the side pane options
+#.
+#: ../thunar/thunar-window.c:289
+msgid "_Favourites"
+msgstr "ãæ°ã«å
¥ã(_F)"
+
+#: ../thunar/thunar-window.c:295 ../thunar/thunar-window.c:316
+msgid "_Hidden"
+msgstr "é ã(_H)"
+
+#.
+#. * add the location bar options
+#.
+#: ../thunar/thunar-window.c:304
+msgid "_Button Style"
+msgstr "ãã¿ã³å¼(_B)"
+
+#: ../thunar/thunar-window.c:310
+msgid "_Traditional Style"
+msgstr "æ§å¼(_T)"
+
+#.
+#. * add view options
+#.
+#: ../thunar/thunar-window.c:325
+msgid "View as _Icons"
+msgstr "ã¢ã¤ã³ã³è¡¨ç¤º(_I)"
+
+#: ../thunar/thunar-window.c:331
+msgid "View as _Detailed List"
+msgstr "詳細ãªã¹ã表示(_D)"
+
+#. display an error to the user
+#: ../thunar/thunar-window.c:738
+#, fuzzy
+msgid "Failed to open home directory"
+msgstr "ãã©ã«ã %s ãéãã¾ããã"
+
+#: ../thunar/thunar-window.c:815
+msgid ""
+"Thunar is a fast and easy to use file manager\n"
+"for the Xfce Desktop Environment."
+msgstr ""
+"Thunar 㯠Xfce ãã¹ã¯ãããç°å¢åãã®\n"
+"使ãããã軽快ãªãã¡ã¤ã«ããã¼ã¸ã£ã¼ã§ã"
+
+#: ../thunar/thunar-window.c:820
+msgid "translator-credits"
+msgstr "Daichi Kawahata <daichi at xfce.org>"
+
+#: ../thunarx/thunarx-property-page.c:104
+msgid "Label"
+msgstr "ã©ãã«"
+
+#: ../thunarx/thunarx-property-page.c:105
+msgid "Text of the page's label"
+msgstr "ãã¼ã¸ã®ã©ãã«ã®ããã¹ãã§ã"
+
+#: ../thunarx/thunarx-property-page.c:117
+msgid "Label widget"
+msgstr "ã©ãã«ã»ã¦ã£ã¸ãã"
+
+#: ../thunarx/thunarx-property-page.c:118
+msgid "A widget to display in place of the usual page label"
+msgstr "é常ã®ãã¼ã¸ã»ã©ãã«ã®ä»£ããã«è¡¨ç¤ºããã¦ã£ã¸ããã§ã"
+
+#: ../Thunar.desktop.in.h:1
+msgid "Browse the filesystem with the file manager"
+msgstr "ãã¡ã¤ã«ããã¼ã¸ã£ã¼ã§ãã¡ã¤ã«ã·ã¹ãã ãé²è¦§ãã¾ã"
+
+#: ../Thunar.desktop.in.h:2
+msgid "File Manager"
+msgstr "ãã¡ã¤ã«ããã¼ã¸ã£ã¼"
+
+#: ../Thunar.desktop.in.h:3
+msgid "Thunar File Manager"
+msgstr "Thunar ãã¡ã¤ã«ããã¼ã¸ã£ã¼"
+
+#~ msgid "The application \"%s\" supports only local documents."
+#~ msgstr "ã¢ããªã±ã¼ã·ã§ã³ \"%s\" ã¯ãã¼ã«ã«ææ¸ã®ã¿ãµãã¼ããã¾ãã"
+
+#~ msgid ""
+#~ "Unable to query information about\n"
+#~ "the file %s."
+#~ msgstr ""
+#~ "ãã¡ã¤ã« %s ã«ã¤ãã¦ã®æ
å ±ã\n"
+#~ "åãåããã§ãã¾ããã"
+
+#~ msgid "Unable to open file %s."
+#~ msgstr "ãã¡ã¤ã« %s ãéãã¾ããã"
+
+#~ msgid "URI scheme not supported for transfer operations"
+#~ msgstr "転éããããã® URI ã¹ãã¼ã ã¯ãµãã¼ãããã¦ãã¾ãã"
+
+#~ msgid "Files"
+#~ msgstr "ãã¡ã¤ã«"
+
+#~ msgid "The list of files stored within this trash"
+#~ msgstr "ãã®ã´ãç®±ã«ä¿ç®¡ããã¦ãããã¡ã¤ã«ã®ãªã¹ãã§ã"
+
+#~ msgid "Empty"
+#~ msgstr "空"
+
+#~ msgid "Whether all trashes are empty"
+#~ msgstr "å
¨ã¦ã®ã´ãç®±ã空ãã©ããã表ãã¾ã"
+
+#~ msgid "Unable to unlink root nodes"
+#~ msgstr "ã«ã¼ããã¼ãã®ãªã³ã¯ã解é¤ã§ãã¾ãã"
+
+#~ msgid "URI scheme not supported for unlink operations"
+#~ msgstr "ãªã³ã¯è§£é¤ã®ããã® URI ã¹ãã¼ã ã¯ãµãã¼ãããã¦ãã¾ãã"
+
+#~ msgid "The URI '%s' is invalid"
+#~ msgstr "ãã® URI '%s' ã¯ç¡å¹ã§ã"
+
+#~ msgid "The trash file URI '%s' may not include a '#'"
+#~ msgstr "ã´ãç®±ãã¡ã¤ã«ã® URI '%s' ã« '#' ãå
¥ãã¦ã¯ããã¾ãã"
+
+#~ msgid "The URI '%s' uses an unsupported scheme"
+#~ msgstr "ãã® URI '%s' ã¯ãµãã¼ãããã¦ããªãã¹ãã¼ã ã使ç¨ãã¦ãã¾ã"
+
+#~ msgid "Only local directories can be listed"
+#~ msgstr "ãã¼ã«ã«ã®ãã©ã«ãã®ã¿ããªã¹ãããã¾ã"
+
+#~ msgid "Computer"
+#~ msgstr "ã³ã³ãã¥ã¼ã¿ã¼"
+
+#~ msgid "Model"
+#~ msgstr "ã¢ãã«"
+
+#~ msgid "The model to display"
+#~ msgstr "表示ããã¢ãã«ã§ã"
+
+#~ msgid "File column"
+#~ msgstr "ãã¡ã¤ã«æ¬"
+
+#~ msgid "The column which contains the file"
+#~ msgstr "ãã¡ã¤ã«ãå«ã表示æ¬ã§ã"
+
+#~ msgid "Position column"
+#~ msgstr "ä½ç½®æ¬"
+
+#~ msgid "The column which contains the position"
+#~ msgstr "ä½ç½®ãå«ã表示æ¬ã§ã"
+
+#~ msgid "Creating links is not yet supported. This will be fixed soon!"
+#~ msgstr "ãªã³ã¯ã®ä½æã¯ã¾ã ãµãã¼ãããã¦ãã¾ãããããã¯éããªãç´ãã¾ã!"
+
+#~ msgid "Unable to rename file"
+#~ msgstr "ãã¡ã¤ã«åãå¤æ´ã§ãã¾ãã"
+
+#~ msgid "unknown"
+#~ msgstr "ä¸æ"
+
+#~ msgid "\"%s\" %s"
+#~ msgstr "\"%s\" %s"
+
+#~ msgid "Trash"
+#~ msgstr "ã´ãç®±"
+
+#~ msgid "_Empty Trash Bin"
+#~ msgstr "ã´ãç®±ã空ã«ãã(_E)"
+
+#~ msgid "Delete all items in the Trash"
+#~ msgstr "ãã®ã´ãç®±ã®å
¨ã¦ã®ã¢ã¤ãã ãåé¤ãã¾ã"
+
+#~ msgid "This will delete %d file currently located in the trash bin."
+#~ msgid_plural "This will delete %d files currently located in the trash bin."
+#~ msgstr[0] "ç¾å¨ã´ãç®±ã«ãã %d ã®ãã¡ã¤ã«ãåé¤ãã¾ãã"
Added: desktop/trunk/thunar/branches/upstream/current/tdb/Makefile.am
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/tdb/Makefile.am 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/tdb/Makefile.am 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,69 @@
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+
+INCLUDES = \
+ -I$(top_srcdir) \
+ $(PLATFORM_CFLAGS)
+
+noinst_LTLIBRARIES = \
+ libtdb.la
+
+libtdb_la_CFLAGS = \
+ -D_XOPEN_SOURCE=500
+
+libtdb_la_SOURCES = \
+ spinlock.c \
+ spinlock.h \
+ tdb.c \
+ tdb.h \
+ tdbconfig.h
+
+noinst_PROGRAMS = \
+ tdbtool
+
+tdbtool_SOURCES = \
+ tdbtool.c
+
+tdbtool_DEPENDENCIES = \
+ $(top_builddir)/tdb/libtdb.la
+
+tdbtool_LDADD = \
+ $(top_builddir)/tdb/libtdb.la
+
+TESTS = \
+ tdbspeed \
+ tdbtorture
+
+check_PROGRAMS = \
+ tdbspeed \
+ tdbtorture
+
+tdbspeed_SOURCES = \
+ tdbspeed.c
+
+tdbspeed_DEPENDENCIES = \
+ $(top_builddir)/tdb/libtdb.la
+
+tdbspeed_LDADD = \
+ $(top_builddir)/tdb/libtdb.la
+
+tdbtorture_CFLAGS = \
+ -DNLOOPS=1000 \
+ -DNPROCS=10
+
+tdbtorture_SOURCES = \
+ tdbtorture.c
+
+tdbtorture_DEPENDENCIES = \
+ $(top_builddir)/tdb/libtdb.la
+
+tdbtorture_LDADD = \
+ $(top_builddir)/tdb/libtdb.la
+
+CLEANFILES = \
+ test.tdb \
+ torture.tdb
+
+EXTRA_DIST = \
+ README
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
Added: desktop/trunk/thunar/branches/upstream/current/tdb/Makefile.in
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/tdb/Makefile.in 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/tdb/Makefile.in 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,741 @@
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004 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.
+
+ at SET_MAKE@
+
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+
+
+SOURCES = $(libtdb_la_SOURCES) $(tdbspeed_SOURCES) $(tdbtool_SOURCES) $(tdbtorture_SOURCES)
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+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@
+target_triplet = @target@
+noinst_PROGRAMS = tdbtool$(EXEEXT)
+check_PROGRAMS = tdbspeed$(EXEEXT) tdbtorture$(EXEEXT)
+subdir = tdb
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(srcdir)/tdbconfig.h.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = tdbconfig.h
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libtdb_la_LIBADD =
+am_libtdb_la_OBJECTS = libtdb_la-spinlock.lo libtdb_la-tdb.lo
+libtdb_la_OBJECTS = $(am_libtdb_la_OBJECTS)
+PROGRAMS = $(noinst_PROGRAMS)
+am_tdbspeed_OBJECTS = tdbspeed.$(OBJEXT)
+tdbspeed_OBJECTS = $(am_tdbspeed_OBJECTS)
+am_tdbtool_OBJECTS = tdbtool.$(OBJEXT)
+tdbtool_OBJECTS = $(am_tdbtool_OBJECTS)
+am_tdbtorture_OBJECTS = tdbtorture-tdbtorture.$(OBJEXT)
+tdbtorture_OBJECTS = $(am_tdbtorture_OBJECTS)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link --tag=CC $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(libtdb_la_SOURCES) $(tdbspeed_SOURCES) $(tdbtool_SOURCES) \
+ $(tdbtorture_SOURCES)
+DIST_SOURCES = $(libtdb_la_SOURCES) $(tdbspeed_SOURCES) \
+ $(tdbtool_SOURCES) $(tdbtorture_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CAIRO_REQUIRED_VERSION = @CAIRO_REQUIRED_VERSION@
+CAIRO_VERSION = @CAIRO_VERSION@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@
+ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@
+EXEEXT = @EXEEXT@
+EXO_CFLAGS = @EXO_CFLAGS@
+EXO_LIBS = @EXO_LIBS@
+EXO_REQUIRED_VERSION = @EXO_REQUIRED_VERSION@
+EXO_VERSION = @EXO_VERSION@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GCONF_CFLAGS = @GCONF_CFLAGS@
+GCONF_LIBS = @GCONF_LIBS@
+GCONF_REQUIRED_VERSION = @GCONF_REQUIRED_VERSION@
+GCONF_VERSION = @GCONF_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_REQUIRED_VERSION = @GLIB_REQUIRED_VERSION@
+GLIB_VERSION = @GLIB_VERSION@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTHREAD_REQUIRED_VERSION = @GTHREAD_REQUIRED_VERSION@
+GTHREAD_VERSION = @GTHREAD_VERSION@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+GTK_LIBS = @GTK_LIBS@
+GTK_REQUIRED_VERSION = @GTK_REQUIRED_VERSION@
+GTK_VERSION = @GTK_VERSION@
+HAVE_CAIRO_FALSE = @HAVE_CAIRO_FALSE@
+HAVE_CAIRO_TRUE = @HAVE_CAIRO_TRUE@
+HAVE_GCONF_FALSE = @HAVE_GCONF_FALSE@
+HAVE_GCONF_TRUE = @HAVE_GCONF_TRUE@
+HAVE_GNUC_VISIBILITY_FALSE = @HAVE_GNUC_VISIBILITY_FALSE@
+HAVE_GNUC_VISIBILITY_TRUE = @HAVE_GNUC_VISIBILITY_TRUE@
+HAVE_LIBSTARTUP_NOTIFICATION_FALSE = @HAVE_LIBSTARTUP_NOTIFICATION_FALSE@
+HAVE_LIBSTARTUP_NOTIFICATION_TRUE = @HAVE_LIBSTARTUP_NOTIFICATION_TRUE@
+HTML_DIR = @HTML_DIR@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LIBFAM_CFLAGS = @LIBFAM_CFLAGS@
+LIBFAM_LIBS = @LIBFAM_LIBS@
+LIBFAM_REQUIRED_VERSION = @LIBFAM_REQUIRED_VERSION@
+LIBFAM_VERSION = @LIBFAM_VERSION@
+LIBJPEG_CFLAGS = @LIBJPEG_CFLAGS@
+LIBJPEG_LIBS = @LIBJPEG_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
+LIBPNG_LIBS = @LIBPNG_LIBS@
+LIBPNG_REQUIRED_VERSION = @LIBPNG_REQUIRED_VERSION@
+LIBPNG_VERSION = @LIBPNG_VERSION@
+LIBS = @LIBS@
+LIBSTARTUP_NOTIFICATION_CFLAGS = @LIBSTARTUP_NOTIFICATION_CFLAGS@
+LIBSTARTUP_NOTIFICATION_LIBS = @LIBSTARTUP_NOTIFICATION_LIBS@
+LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION = @LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION@
+LIBSTARTUP_NOTIFICATION_VERSION = @LIBSTARTUP_NOTIFICATION_VERSION@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_CFLAGS = @PLATFORM_CFLAGS@
+PLATFORM_CPPFLAGS = @PLATFORM_CPPFLAGS@
+PLATFORM_LDFLAGS = @PLATFORM_LDFLAGS@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TDB_U32_TYPE = @TDB_U32_TYPE@
+THUNAR_VERINFO = @THUNAR_VERINFO@
+THUNAR_VERSION_API = @THUNAR_VERSION_API@
+THUNAR_VERSION_MAJOR = @THUNAR_VERSION_MAJOR@
+THUNAR_VERSION_MICRO = @THUNAR_VERSION_MICRO@
+THUNAR_VERSION_MINOR = @THUNAR_VERSION_MINOR@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_ARGS = @XGETTEXT_ARGS@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+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@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+INCLUDES = \
+ -I$(top_srcdir) \
+ $(PLATFORM_CFLAGS)
+
+noinst_LTLIBRARIES = \
+ libtdb.la
+
+libtdb_la_CFLAGS = \
+ -D_XOPEN_SOURCE=500
+
+libtdb_la_SOURCES = \
+ spinlock.c \
+ spinlock.h \
+ tdb.c \
+ tdb.h \
+ tdbconfig.h
+
+tdbtool_SOURCES = \
+ tdbtool.c
+
+tdbtool_DEPENDENCIES = \
+ $(top_builddir)/tdb/libtdb.la
+
+tdbtool_LDADD = \
+ $(top_builddir)/tdb/libtdb.la
+
+TESTS = \
+ tdbspeed \
+ tdbtorture
+
+tdbspeed_SOURCES = \
+ tdbspeed.c
+
+tdbspeed_DEPENDENCIES = \
+ $(top_builddir)/tdb/libtdb.la
+
+tdbspeed_LDADD = \
+ $(top_builddir)/tdb/libtdb.la
+
+tdbtorture_CFLAGS = \
+ -DNLOOPS=1000 \
+ -DNPROCS=10
+
+tdbtorture_SOURCES = \
+ tdbtorture.c
+
+tdbtorture_DEPENDENCIES = \
+ $(top_builddir)/tdb/libtdb.la
+
+tdbtorture_LDADD = \
+ $(top_builddir)/tdb/libtdb.la
+
+CLEANFILES = \
+ test.tdb \
+ torture.tdb
+
+EXTRA_DIST = \
+ README
+
+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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tdb/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tdb/Makefile
+.PRECIOUS: 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
+tdbconfig.h: $(top_builddir)/config.status $(srcdir)/tdbconfig.h.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libtdb.la: $(libtdb_la_OBJECTS) $(libtdb_la_DEPENDENCIES)
+ $(LINK) $(libtdb_la_LDFLAGS) $(libtdb_la_OBJECTS) $(libtdb_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+
+clean-noinstPROGRAMS:
+ @list='$(noinst_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+tdbspeed$(EXEEXT): $(tdbspeed_OBJECTS) $(tdbspeed_DEPENDENCIES)
+ @rm -f tdbspeed$(EXEEXT)
+ $(LINK) $(tdbspeed_LDFLAGS) $(tdbspeed_OBJECTS) $(tdbspeed_LDADD) $(LIBS)
+tdbtool$(EXEEXT): $(tdbtool_OBJECTS) $(tdbtool_DEPENDENCIES)
+ @rm -f tdbtool$(EXEEXT)
+ $(LINK) $(tdbtool_LDFLAGS) $(tdbtool_OBJECTS) $(tdbtool_LDADD) $(LIBS)
+tdbtorture$(EXEEXT): $(tdbtorture_OBJECTS) $(tdbtorture_DEPENDENCIES)
+ @rm -f tdbtorture$(EXEEXT)
+ $(LINK) $(tdbtorture_LDFLAGS) $(tdbtorture_OBJECTS) $(tdbtorture_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libtdb_la-spinlock.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libtdb_la-tdb.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tdbspeed.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tdbtool.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tdbtorture-tdbtorture.Po at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libtdb_la-spinlock.lo: spinlock.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libtdb_la_CFLAGS) $(CFLAGS) -MT libtdb_la-spinlock.lo -MD -MP -MF "$(DEPDIR)/libtdb_la-spinlock.Tpo" -c -o libtdb_la-spinlock.lo `test -f 'spinlock.c' || echo '$(srcdir)/'`spinlock.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libtdb_la-spinlock.Tpo" "$(DEPDIR)/libtdb_la-spinlock.Plo"; else rm -f "$(DEPDIR)/libtdb_la-spinlock.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='spinlock.c' object='libtdb_la-spinlock.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libtdb_la_CFLAGS) $(CFLAGS) -c -o libtdb_la-spinlock.lo `test -f 'spinlock.c' || echo '$(srcdir)/'`spinlock.c
+
+libtdb_la-tdb.lo: tdb.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libtdb_la_CFLAGS) $(CFLAGS) -MT libtdb_la-tdb.lo -MD -MP -MF "$(DEPDIR)/libtdb_la-tdb.Tpo" -c -o libtdb_la-tdb.lo `test -f 'tdb.c' || echo '$(srcdir)/'`tdb.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libtdb_la-tdb.Tpo" "$(DEPDIR)/libtdb_la-tdb.Plo"; else rm -f "$(DEPDIR)/libtdb_la-tdb.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tdb.c' object='libtdb_la-tdb.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libtdb_la_CFLAGS) $(CFLAGS) -c -o libtdb_la-tdb.lo `test -f 'tdb.c' || echo '$(srcdir)/'`tdb.c
+
+tdbtorture-tdbtorture.o: tdbtorture.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tdbtorture_CFLAGS) $(CFLAGS) -MT tdbtorture-tdbtorture.o -MD -MP -MF "$(DEPDIR)/tdbtorture-tdbtorture.Tpo" -c -o tdbtorture-tdbtorture.o `test -f 'tdbtorture.c' || echo '$(srcdir)/'`tdbtorture.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/tdbtorture-tdbtorture.Tpo" "$(DEPDIR)/tdbtorture-tdbtorture.Po"; else rm -f "$(DEPDIR)/tdbtorture-tdbtorture.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tdbtorture.c' object='tdbtorture-tdbtorture.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tdbtorture_CFLAGS) $(CFLAGS) -c -o tdbtorture-tdbtorture.o `test -f 'tdbtorture.c' || echo '$(srcdir)/'`tdbtorture.c
+
+tdbtorture-tdbtorture.obj: tdbtorture.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tdbtorture_CFLAGS) $(CFLAGS) -MT tdbtorture-tdbtorture.obj -MD -MP -MF "$(DEPDIR)/tdbtorture-tdbtorture.Tpo" -c -o tdbtorture-tdbtorture.obj `if test -f 'tdbtorture.c'; then $(CYGPATH_W) 'tdbtorture.c'; else $(CYGPATH_W) '$(srcdir)/tdbtorture.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/tdbtorture-tdbtorture.Tpo" "$(DEPDIR)/tdbtorture-tdbtorture.Po"; else rm -f "$(DEPDIR)/tdbtorture-tdbtorture.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tdbtorture.c' object='tdbtorture-tdbtorture.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tdbtorture_CFLAGS) $(CFLAGS) -c -o tdbtorture-tdbtorture.obj `if test -f 'tdbtorture.c'; then $(CYGPATH_W) 'tdbtorture.c'; else $(CYGPATH_W) '$(srcdir)/tdbtorture.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list='$(TESTS)'; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *" $$tst "*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *" $$tst "*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(PROGRAMS)
+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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-checkPROGRAMS clean-generic 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-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+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-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-noinstLTLIBRARIES clean-noinstPROGRAMS ctags distclean \
+ distclean-compile distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-exec \
+ install-exec-am install-info install-info-am install-man \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags uninstall uninstall-am \
+ uninstall-info-am
+
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
+# 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:
Added: desktop/trunk/thunar/branches/upstream/current/tdb/README
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/tdb/README 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/tdb/README 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,167 @@
+tdb - a trivial database system
+tridge at linuxcare.com December 1999
+==================================
+
+This is a simple database API. It was inspired by the realisation that
+in Samba we have several ad-hoc bits of code that essentially
+implement small databases for sharing structures between parts of
+Samba. As I was about to add another I realised that a generic
+database module was called for to replace all the ad-hoc bits.
+
+I based the interface on gdbm. I couldn't use gdbm as we need to be
+able to have multiple writers to the databases at one time.
+
+Compilation
+-----------
+
+add HAVE_MMAP=1 to use mmap instead of read/write
+add TDB_DEBUG=1 for verbose debug info
+add NOLOCK=1 to disable locking code
+
+Testing
+-------
+
+Compile tdbtest.c and link with gdbm for testing. tdbtest will perform
+identical operations via tdb and gdbm then make sure the result is the
+same
+
+Also included is tdbtool, which allows simple database manipulation
+on the commandline.
+
+tdbtest and tdbtool are not built as part of Samba, but are included
+for completeness.
+
+Interface
+---------
+
+The interface is very similar to gdbm except for the following:
+
+- different open interface. The tdb_open call is more similar to a
+ traditional open()
+- no tdbm_reorganise() function
+- no tdbm_sync() function. No operations are cached in the library anyway
+- added a tdb_traverse() function for traversing the whole database
+
+A general rule for using tdb is that the caller frees any returned
+TDB_DATA structures. Just call free(p.dptr) to free a TDB_DATA
+return value called p. This is the same as gdbm.
+
+here is a full list of tdb functions with brief descriptions.
+
+
+----------------------------------------------------------------------
+TDB_CONTEXT *tdb_open(char *name, int hash_size, int tdb_flags,
+ int open_flags, mode_t mode)
+
+ open the database, creating it if necessary
+
+ The open_flags and mode are passed straight to the open call on the database
+ file. A flags value of O_WRONLY is invalid
+
+ The hash size is advisory, use zero for a default value.
+
+ return is NULL on error
+
+ possible tdb_flags are:
+ TDB_CLEAR_IF_FIRST - clear database if we are the only one with it open
+ TDB_INTERNAL - don't use a file, instaed store the data in
+ memory. The filename is ignored in this case.
+ TDB_NOLOCK - don't do any locking
+ TDB_NOMMAP - don't use mmap
+
+----------------------------------------------------------------------
+char *tdb_error(TDB_CONTEXT *tdb);
+
+ return a error string for the last tdb error
+
+----------------------------------------------------------------------
+int tdb_close(TDB_CONTEXT *tdb);
+
+ close a database
+
+----------------------------------------------------------------------
+int tdb_update(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA dbuf);
+
+ update an entry in place - this only works if the new data size
+ is <= the old data size and the key exists.
+ on failure return -1
+
+----------------------------------------------------------------------
+TDB_DATA tdb_fetch(TDB_CONTEXT *tdb, TDB_DATA key);
+
+ fetch an entry in the database given a key
+ if the return value has a null dptr then a error occurred
+
+ caller must free the resulting data
+
+----------------------------------------------------------------------
+int tdb_exists(TDB_CONTEXT *tdb, TDB_DATA key);
+
+ check if an entry in the database exists
+
+ note that 1 is returned if the key is found and 0 is returned if not found
+ this doesn't match the conventions in the rest of this module, but is
+ compatible with gdbm
+
+----------------------------------------------------------------------
+int tdb_traverse(TDB_CONTEXT *tdb, int (*fn)(TDB_CONTEXT *tdb,
+ TDB_DATA key, TDB_DATA dbuf, void *state), void *state);
+
+ traverse the entire database - calling fn(tdb, key, data, state) on each
+ element.
+
+ return -1 on error or the record count traversed
+
+ if fn is NULL then it is not called
+
+ a non-zero return value from fn() indicates that the traversal should stop
+
+----------------------------------------------------------------------
+TDB_DATA tdb_firstkey(TDB_CONTEXT *tdb);
+
+ find the first entry in the database and return its key
+
+ the caller must free the returned data
+
+----------------------------------------------------------------------
+TDB_DATA tdb_nextkey(TDB_CONTEXT *tdb, TDB_DATA key);
+
+ find the next entry in the database, returning its key
+
+ the caller must free the returned data
+
+----------------------------------------------------------------------
+int tdb_delete(TDB_CONTEXT *tdb, TDB_DATA key);
+
+ delete an entry in the database given a key
+
+----------------------------------------------------------------------
+int tdb_store(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA dbuf, int flag);
+
+ store an element in the database, replacing any existing element
+ with the same key
+
+ If flag==TDB_INSERT then don't overwrite an existing entry
+ If flag==TDB_MODIFY then don't create a new entry
+
+ return 0 on success, -1 on failure
+
+----------------------------------------------------------------------
+int tdb_writelock(TDB_CONTEXT *tdb);
+
+ lock the database. If we already have it locked then don't do anything
+
+----------------------------------------------------------------------
+int tdb_writeunlock(TDB_CONTEXT *tdb);
+ unlock the database
+
+----------------------------------------------------------------------
+int tdb_lockchain(TDB_CONTEXT *tdb, TDB_DATA key);
+
+ lock one hash chain. This is meant to be used to reduce locking
+ contention - it cannot guarantee how many records will be locked
+
+----------------------------------------------------------------------
+int tdb_unlockchain(TDB_CONTEXT *tdb, TDB_DATA key);
+
+ unlock one hash chain
Added: desktop/trunk/thunar/branches/upstream/current/tdb/spinlock.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/tdb/spinlock.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/tdb/spinlock.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,494 @@
+/* $Id: spinlock.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2001 Anton Blanchard <anton at samba.org>
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * This file was originally part of the tdb library, which in turn is
+ * part of the Samba suite, a Unix SMB/CIFS implementation.
+ */
+
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#ifdef HAVE_SCHED_H
+#include <sched.h>
+#endif
+#include <stdio.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_TIME_H
+#include <time.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <tdb/spinlock.h>
+
+#ifdef USE_SPINLOCKS
+
+/*
+ * ARCH SPECIFIC
+ */
+
+#if defined(SPARC_SPINLOCKS)
+
+static inline int __spin_trylock(spinlock_t *lock)
+{
+ unsigned int result;
+
+ asm volatile("ldstub [%1], %0"
+ : "=r" (result)
+ : "r" (lock)
+ : "memory");
+
+ return (result == 0) ? 0 : EBUSY;
+}
+
+static inline void __spin_unlock(spinlock_t *lock)
+{
+ asm volatile("":::"memory");
+ *lock = 0;
+}
+
+static inline void __spin_lock_init(spinlock_t *lock)
+{
+ *lock = 0;
+}
+
+static inline int __spin_is_locked(spinlock_t *lock)
+{
+ return (*lock != 0);
+}
+
+#elif defined(POWERPC_SPINLOCKS)
+
+static inline int __spin_trylock(spinlock_t *lock)
+{
+ unsigned int result;
+
+ __asm__ __volatile__(
+"1: lwarx %0,0,%1\n\
+ cmpwi 0,%0,0\n\
+ li %0,0\n\
+ bne- 2f\n\
+ li %0,1\n\
+ stwcx. %0,0,%1\n\
+ bne- 1b\n\
+ isync\n\
+2:" : "=&r"(result)
+ : "r"(lock)
+ : "cr0", "memory");
+
+ return (result == 1) ? 0 : EBUSY;
+}
+
+static inline void __spin_unlock(spinlock_t *lock)
+{
+ asm volatile("eieio":::"memory");
+ *lock = 0;
+}
+
+static inline void __spin_lock_init(spinlock_t *lock)
+{
+ *lock = 0;
+}
+
+static inline int __spin_is_locked(spinlock_t *lock)
+{
+ return (*lock != 0);
+}
+
+#elif defined(INTEL_SPINLOCKS)
+
+static inline int __spin_trylock(spinlock_t *lock)
+{
+ int oldval;
+
+ asm volatile("xchgl %0,%1"
+ : "=r" (oldval), "=m" (*lock)
+ : "0" (0)
+ : "memory");
+
+ return oldval > 0 ? 0 : EBUSY;
+}
+
+static inline void __spin_unlock(spinlock_t *lock)
+{
+ asm volatile("":::"memory");
+ *lock = 1;
+}
+
+static inline void __spin_lock_init(spinlock_t *lock)
+{
+ *lock = 1;
+}
+
+static inline int __spin_is_locked(spinlock_t *lock)
+{
+ return (*lock != 1);
+}
+
+#elif defined(MIPS_SPINLOCKS) && defined(sgi) && (_COMPILER_VERSION >= 730)
+
+/* Implement spinlocks on IRIX using the MIPSPro atomic fetch operations. See
+ * sync(3) for the details of the intrinsic operations.
+ *
+ * "sgi" and "_COMPILER_VERSION" are always defined by MIPSPro.
+ */
+
+#ifdef STANDALONE
+
+/* MIPSPro 7.3 has "__inline" as an extension, but not "inline. */
+#define inline __inline
+
+#endif /* STANDALONE */
+
+/* Returns 0 if the lock is acquired, EBUSY otherwise. */
+static inline int __spin_trylock(spinlock_t *lock)
+{
+ unsigned int val;
+ val = __lock_test_and_set(lock, 1);
+ return val == 0 ? 0 : EBUSY;
+}
+
+static inline void __spin_unlock(spinlock_t *lock)
+{
+ __lock_release(lock);
+}
+
+static inline void __spin_lock_init(spinlock_t *lock)
+{
+ __lock_release(lock);
+}
+
+/* Returns 1 if the lock is held, 0 otherwise. */
+static inline int __spin_is_locked(spinlock_t *lock)
+{
+ unsigned int val;
+ val = __add_and_fetch(lock, 0);
+ return val;
+}
+
+#elif defined(MIPS_SPINLOCKS)
+
+static inline unsigned int load_linked(unsigned long addr)
+{
+ unsigned int res;
+
+ __asm__ __volatile__("ll\t%0,(%1)"
+ : "=r" (res)
+ : "r" (addr));
+
+ return res;
+}
+
+static inline unsigned int store_conditional(unsigned long addr, unsigned int value)
+{
+ unsigned int res;
+
+ __asm__ __volatile__("sc\t%0,(%2)"
+ : "=r" (res)
+ : "0" (value), "r" (addr));
+ return res;
+}
+
+static inline int __spin_trylock(spinlock_t *lock)
+{
+ unsigned int mw;
+
+ do {
+ mw = load_linked(lock);
+ if (mw)
+ return EBUSY;
+ } while (!store_conditional(lock, 1));
+
+ asm volatile("":::"memory");
+
+ return 0;
+}
+
+static inline void __spin_unlock(spinlock_t *lock)
+{
+ asm volatile("":::"memory");
+ *lock = 0;
+}
+
+static inline void __spin_lock_init(spinlock_t *lock)
+{
+ *lock = 0;
+}
+
+static inline int __spin_is_locked(spinlock_t *lock)
+{
+ return (*lock != 0);
+}
+
+#else
+#error Need to implement spinlock code in spinlock.c
+#endif
+
+/*
+ * OS SPECIFIC
+ */
+
+static void yield_cpu(void)
+{
+ struct timespec tm;
+
+#ifdef HAVE_SCHED_YIELD
+ sched_yield();
+#else
+ /* Linux will busy loop for delays < 2ms on real time tasks */
+ tm.tv_sec = 0;
+ tm.tv_nsec = 2000000L + 1;
+ nanosleep(&tm, NULL);
+#endif
+}
+
+static int this_is_smp(void)
+{
+#if defined(HAVE_SYSCONF) && defined(SYSCONF_SC_NPROC_ONLN)
+ return (sysconf(_SC_NPROC_ONLN) > 1) ? 1 : 0;
+#else
+ return 0;
+#endif
+}
+
+/*
+ * GENERIC
+ */
+
+static int smp_machine = 0;
+
+static inline void __spin_lock(spinlock_t *lock)
+{
+ int ntries = 0;
+
+ while(__spin_trylock(lock)) {
+ while(__spin_is_locked(lock)) {
+ if (smp_machine && ntries++ < MAX_BUSY_LOOPS)
+ continue;
+ yield_cpu();
+ }
+ }
+}
+
+static void __read_lock(tdb_rwlock_t *rwlock)
+{
+ int ntries = 0;
+
+ while(1) {
+ __spin_lock(&rwlock->lock);
+
+ if (!(rwlock->count & RWLOCK_BIAS)) {
+ rwlock->count++;
+ __spin_unlock(&rwlock->lock);
+ return;
+ }
+
+ __spin_unlock(&rwlock->lock);
+
+ while(rwlock->count & RWLOCK_BIAS) {
+ if (smp_machine && ntries++ < MAX_BUSY_LOOPS)
+ continue;
+ yield_cpu();
+ }
+ }
+}
+
+static void __write_lock(tdb_rwlock_t *rwlock)
+{
+ int ntries = 0;
+
+ while(1) {
+ __spin_lock(&rwlock->lock);
+
+ if (rwlock->count == 0) {
+ rwlock->count |= RWLOCK_BIAS;
+ __spin_unlock(&rwlock->lock);
+ return;
+ }
+
+ __spin_unlock(&rwlock->lock);
+
+ while(rwlock->count != 0) {
+ if (smp_machine && ntries++ < MAX_BUSY_LOOPS)
+ continue;
+ yield_cpu();
+ }
+ }
+}
+
+static void __write_unlock(tdb_rwlock_t *rwlock)
+{
+ __spin_lock(&rwlock->lock);
+
+#ifdef DEBUG
+ if (!(rwlock->count & RWLOCK_BIAS))
+ fprintf(stderr, "bug: write_unlock\n");
+#endif
+
+ rwlock->count &= ~RWLOCK_BIAS;
+ __spin_unlock(&rwlock->lock);
+}
+
+static void __read_unlock(tdb_rwlock_t *rwlock)
+{
+ __spin_lock(&rwlock->lock);
+
+#ifdef DEBUG
+ if (!rwlock->count)
+ fprintf(stderr, "bug: read_unlock\n");
+
+ if (rwlock->count & RWLOCK_BIAS)
+ fprintf(stderr, "bug: read_unlock\n");
+#endif
+
+ rwlock->count--;
+ __spin_unlock(&rwlock->lock);
+}
+
+/* TDB SPECIFIC */
+
+/* lock a list in the database. list -1 is the alloc list */
+int tdb_spinlock(TDB_CONTEXT *tdb, int list, int rw_type)
+{
+ tdb_rwlock_t *rwlocks;
+
+ if (!tdb->map_ptr) return -1;
+ rwlocks = (tdb_rwlock_t *)((char *)tdb->map_ptr + tdb->header.rwlocks);
+
+ switch(rw_type) {
+ case F_RDLCK:
+ __read_lock(&rwlocks[list+1]);
+ break;
+
+ case F_WRLCK:
+ __write_lock(&rwlocks[list+1]);
+ break;
+
+ default:
+ return TDB_ERRCODE(TDB_ERR_LOCK, -1);
+ }
+ return 0;
+}
+
+/* unlock the database. */
+int tdb_spinunlock(TDB_CONTEXT *tdb, int list, int rw_type)
+{
+ tdb_rwlock_t *rwlocks;
+
+ if (!tdb->map_ptr) return -1;
+ rwlocks = (tdb_rwlock_t *)((char *)tdb->map_ptr + tdb->header.rwlocks);
+
+ switch(rw_type) {
+ case F_RDLCK:
+ __read_unlock(&rwlocks[list+1]);
+ break;
+
+ case F_WRLCK:
+ __write_unlock(&rwlocks[list+1]);
+ break;
+
+ default:
+ return TDB_ERRCODE(TDB_ERR_LOCK, -1);
+ }
+
+ return 0;
+}
+
+int tdb_create_rwlocks(int fd, unsigned int hash_size)
+{
+ unsigned size, i;
+ tdb_rwlock_t *rwlocks;
+
+ size = TDB_SPINLOCK_SIZE(hash_size);
+ rwlocks = malloc(size);
+ if (!rwlocks)
+ return -1;
+
+ for(i = 0; i < hash_size+1; i++) {
+ __spin_lock_init(&rwlocks[i].lock);
+ rwlocks[i].count = 0;
+ }
+
+ /* Write it out (appending to end) */
+ if (write(fd, rwlocks, size) != size) {
+ free(rwlocks);
+ return -1;
+ }
+ smp_machine = this_is_smp();
+ free(rwlocks);
+ return 0;
+}
+
+int tdb_clear_spinlocks(TDB_CONTEXT *tdb)
+{
+ tdb_rwlock_t *rwlocks;
+ unsigned i;
+
+ if (tdb->header.rwlocks == 0) return 0;
+ if (!tdb->map_ptr) return -1;
+
+ /* We're mmapped here */
+ rwlocks = (tdb_rwlock_t *)((char *)tdb->map_ptr + tdb->header.rwlocks);
+ for(i = 0; i < tdb->header.hash_size+1; i++) {
+ __spin_lock_init(&rwlocks[i].lock);
+ rwlocks[i].count = 0;
+ }
+ return 0;
+}
+#else
+int tdb_create_rwlocks(int fd, unsigned int hash_size) { return 0; }
+int tdb_spinlock(TDB_CONTEXT *tdb, int list, int rw_type) { return -1; }
+int tdb_spinunlock(TDB_CONTEXT *tdb, int list, int rw_type) { return -1; }
+
+/* Non-spinlock version: remove spinlock pointer */
+int tdb_clear_spinlocks(TDB_CONTEXT *tdb)
+{
+ tdb_off off = (tdb_off)((char *)&tdb->header.rwlocks
+ - (char *)&tdb->header);
+
+ tdb->header.rwlocks = 0;
+ if (lseek(tdb->fd, off, SEEK_SET) != off
+ || write(tdb->fd, (void *)&tdb->header.rwlocks,
+ sizeof(tdb->header.rwlocks))
+ != sizeof(tdb->header.rwlocks))
+ return -1;
+ return 0;
+}
+#endif
Added: desktop/trunk/thunar/branches/upstream/current/tdb/spinlock.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/tdb/spinlock.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/tdb/spinlock.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,77 @@
+/* $Id: spinlock.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2001 Anton Blanchard <anton at samba.org>
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * This file was originally part of the tdb library, which in turn is
+ * part of the Samba suite, a Unix SMB/CIFS implementation.
+ */
+
+#ifndef __SPINLOCK_H__
+#define __SPINLOCK_H__
+
+#include <tdb/tdb.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef USE_SPINLOCKS
+
+#define RWLOCK_BIAS 0x1000UL
+
+/* OS SPECIFIC */
+#define MAX_BUSY_LOOPS 1000
+
+/* ARCH SPECIFIC */
+/* We should make sure these are padded to a cache line */
+#if defined(SPARC_SPINLOCKS)
+typedef volatile char spinlock_t;
+#elif defined(POWERPC_SPINLOCKS)
+typedef volatile unsigned long spinlock_t;
+#elif defined(INTEL_SPINLOCKS)
+typedef volatile int spinlock_t;
+#elif defined(MIPS_SPINLOCKS)
+typedef volatile unsigned long spinlock_t;
+#else
+#error Need to implement spinlock code in spinlock.h
+#endif
+
+typedef struct {
+ spinlock_t lock;
+ volatile int count;
+} tdb_rwlock_t;
+
+#define TDB_SPINLOCK_SIZE(hash_size) (((hash_size) + 1) * sizeof(tdb_rwlock_t))
+
+#else /* !USE_SPINLOCKS */
+
+#define TDB_SPINLOCK_SIZE(hash_size) 0
+
+#endif /* !USE_SPINLOCKS */
+
+int tdb_spinlock(TDB_CONTEXT *tdb, int list, int rw_type);
+int tdb_spinunlock(TDB_CONTEXT *tdb, int list, int rw_type);
+int tdb_create_rwlocks(int fd, unsigned int hash_size);
+int tdb_clear_spinlocks(TDB_CONTEXT *tdb);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !__SPINLOCK_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/tdb/tdb.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/tdb/tdb.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/tdb/tdb.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,2099 @@
+/* $Id: tdb.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 1999-2004 Andrew Tridgell <tridge at linuxcare.com>
+ * Copyright (c) 2000 Paul `Rusty' Russel <rusty at linuxcare.com>
+ * Copyright (c) 2000-2003 Jeremy Allison <jeremy at valinux.com>
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * This file was originally part of the tdb library, which in turn is
+ * part of the Samba suite, a Unix SMB/CIFS implementation.
+ */
+
+/* NOTE: If you use tdbs under valgrind, and in particular if you run
+ * tdbtorture, you may get spurious "uninitialized value" warnings. I
+ * think this is because valgrind doesn't understand that the mmap'd
+ * area may be written to by other processes. Memory can, from the
+ * point of view of the grinded process, spontaneously become
+ * initialized.
+ *
+ * I can think of a few solutions. [mbp 20030311]
+ *
+ * 1 - Write suppressions for Valgrind so that it doesn't complain
+ * about this. Probably the most reasonable but people need to
+ * remember to use them.
+ *
+ * 2 - Use IO not mmap when running under valgrind. Not so nice.
+ *
+ * 3 - Use the special valgrind macros to mark memory as valid at the
+ * right time. Probably too hard -- the process just doesn't know.
+ */
+
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_MMAN_H
+#include <sys/mman.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#ifdef HAVE_SYS_UI_H
+#include <sys/uio.h>
+#endif
+
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#include <stdio.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <tdb/spinlock.h>
+#include <tdb/tdb.h>
+
+#define TDB_MAGIC_FOOD "TDB file\n"
+#define TDB_VERSION (0x26011967 + 6)
+#define TDB_MAGIC (0x26011999U)
+#define TDB_FREE_MAGIC (~TDB_MAGIC)
+#define TDB_DEAD_MAGIC (0xFEE1DEAD)
+#define TDB_ALIGNMENT 4
+#define MIN_REC_SIZE (2*sizeof(struct list_struct) + TDB_ALIGNMENT)
+#define DEFAULT_HASH_SIZE 131
+#define TDB_PAGE_SIZE 0x2000
+#define FREELIST_TOP (sizeof(struct tdb_header))
+#define TDB_ALIGN(x,a) (((x) + (a)-1) & ~((a)-1))
+#define TDB_BYTEREV(x) (((((x)&0xff)<<24)|((x)&0xFF00)<<8)|(((x)>>8)&0xFF00)|((x)>>24))
+#define TDB_DEAD(r) ((r)->magic == TDB_DEAD_MAGIC)
+#define TDB_BAD_MAGIC(r) ((r)->magic != TDB_MAGIC && !TDB_DEAD(r))
+#define TDB_HASH_TOP(hash) (FREELIST_TOP + (BUCKET(hash)+1)*sizeof(tdb_off))
+#define TDB_DATA_START(hash_size) (TDB_HASH_TOP(hash_size-1) + TDB_SPINLOCK_SIZE(hash_size))
+
+
+/* NB assumes there is a local variable called "tdb" that is the
+ * current context, also takes doubly-parenthesized print-style
+ * argument. */
+#define TDB_LOG(x) (tdb->log_fn?((tdb->log_fn x),0) : 0)
+
+/* lock offsets */
+#define GLOBAL_LOCK 0
+#define ACTIVE_LOCK 4
+
+#ifndef MAP_FILE
+#define MAP_FILE 0
+#endif
+
+#ifndef MAP_FAILED
+#define MAP_FAILED ((void *)-1)
+#endif
+
+/* free memory if the pointer is valid and zero the pointer */
+#ifndef SAFE_FREE
+#define SAFE_FREE(x) do { if ((x) != NULL) {free((x)); (x)=NULL;} } while(0)
+#endif
+
+#define BUCKET(hash) ((hash) % tdb->header.hash_size)
+TDB_DATA tdb_null;
+
+/* all contexts, to ensure no double-opens (fcntl locks don't nest!) */
+static TDB_CONTEXT *tdbs = NULL;
+
+static int tdb_munmap(TDB_CONTEXT *tdb)
+{
+ if (tdb->flags & TDB_INTERNAL)
+ return 0;
+
+#ifdef HAVE_MMAP
+ if (tdb->map_ptr) {
+ int ret = munmap(tdb->map_ptr, tdb->map_size);
+ if (ret != 0)
+ return ret;
+ }
+#endif
+ tdb->map_ptr = NULL;
+ return 0;
+}
+
+static void tdb_mmap(TDB_CONTEXT *tdb)
+{
+ if (tdb->flags & TDB_INTERNAL)
+ return;
+
+#ifdef HAVE_MMAP
+ if (!(tdb->flags & TDB_NOMMAP)) {
+ tdb->map_ptr = mmap(NULL, tdb->map_size,
+ PROT_READ|(tdb->read_only? 0:PROT_WRITE),
+ MAP_SHARED|MAP_FILE, tdb->fd, 0);
+
+ /*
+ * NB. When mmap fails it returns MAP_FAILED *NOT* NULL !!!!
+ */
+
+ if (tdb->map_ptr == MAP_FAILED) {
+ tdb->map_ptr = NULL;
+ TDB_LOG((tdb, 2, "tdb_mmap failed for size %d (%s)\n",
+ tdb->map_size, strerror(errno)));
+ }
+ } else {
+ tdb->map_ptr = NULL;
+ }
+#else
+ tdb->map_ptr = NULL;
+#endif
+}
+
+/* Endian conversion: we only ever deal with 4 byte quantities */
+static void *convert(void *buf, u32 size)
+{
+ u32 i, *p = buf;
+ for (i = 0; i < size / 4; i++)
+ p[i] = TDB_BYTEREV(p[i]);
+ return buf;
+}
+#define DOCONV() (tdb->flags & TDB_CONVERT)
+#define CONVERT(x) (DOCONV() ? convert(&x, sizeof(x)) : &x)
+
+/* the body of the database is made of one list_struct for the free space
+ plus a separate data list for each hash value */
+struct list_struct {
+ tdb_off next; /* offset of the next record in the list */
+ tdb_len rec_len; /* total byte length of record */
+ tdb_len key_len; /* byte length of key */
+ tdb_len data_len; /* byte length of data */
+ u32 full_hash; /* the full 32 bit hash of the key */
+ u32 magic; /* try to catch errors */
+ /* the following union is implied:
+ union {
+ char record[rec_len];
+ struct {
+ char key[key_len];
+ char data[data_len];
+ }
+ u32 totalsize; (tailer)
+ }
+ */
+};
+
+/***************************************************************
+ Allow a caller to set a "alarm" flag that tdb can check to abort
+ a blocking lock on SIGALRM.
+***************************************************************/
+
+static sig_atomic_t *palarm_fired;
+
+void tdb_set_lock_alarm(sig_atomic_t *palarm)
+{
+ palarm_fired = palarm;
+}
+
+/* a byte range locking function - return 0 on success
+ this functions locks/unlocks 1 byte at the specified offset.
+
+ On error, errno is also set so that errors are passed back properly
+ through tdb_open(). */
+static int tdb_brlock(TDB_CONTEXT *tdb, tdb_off offset,
+ int rw_type, int lck_type, int probe)
+{
+ struct flock fl;
+ int ret;
+
+ if (tdb->flags & TDB_NOLOCK)
+ return 0;
+ if ((rw_type == F_WRLCK) && (tdb->read_only)) {
+ errno = EACCES;
+ return -1;
+ }
+
+ fl.l_type = rw_type;
+ fl.l_whence = SEEK_SET;
+ fl.l_start = offset;
+ fl.l_len = 1;
+ fl.l_pid = 0;
+
+ do {
+ ret = fcntl(tdb->fd,lck_type,&fl);
+ if (ret == -1 && errno == EINTR && palarm_fired && *palarm_fired)
+ break;
+ } while (ret == -1 && errno == EINTR);
+
+ if (ret == -1) {
+ if (!probe && lck_type != F_SETLK) {
+ /* Ensure error code is set for log fun to examine. */
+ if (errno == EINTR && palarm_fired && *palarm_fired)
+ tdb->ecode = TDB_ERR_LOCK_TIMEOUT;
+ else
+ tdb->ecode = TDB_ERR_LOCK;
+ TDB_LOG((tdb, 5,"tdb_brlock failed (fd=%d) at offset %d rw_type=%d lck_type=%d\n",
+ tdb->fd, offset, rw_type, lck_type));
+ }
+ /* Was it an alarm timeout ? */
+ if (errno == EINTR && palarm_fired && *palarm_fired) {
+ TDB_LOG((tdb, 5, "tdb_brlock timed out (fd=%d) at offset %d rw_type=%d lck_type=%d\n",
+ tdb->fd, offset, rw_type, lck_type));
+ return TDB_ERRCODE(TDB_ERR_LOCK_TIMEOUT, -1);
+ }
+ /* Otherwise - generic lock error. errno set by fcntl.
+ * EAGAIN is an expected return from non-blocking
+ * locks. */
+ if (errno != EAGAIN) {
+ TDB_LOG((tdb, 5, "tdb_brlock failed (fd=%d) at offset %d rw_type=%d lck_type=%d: %s\n",
+ tdb->fd, offset, rw_type, lck_type,
+ strerror(errno)));
+ }
+ return TDB_ERRCODE(TDB_ERR_LOCK, -1);
+ }
+ return 0;
+}
+
+/* lock a list in the database. list -1 is the alloc list */
+static int tdb_lock(TDB_CONTEXT *tdb, int list, int ltype)
+{
+ if (list < -1 || list >= (int)tdb->header.hash_size) {
+ TDB_LOG((tdb, 0,"tdb_lock: invalid list %d for ltype=%d\n",
+ list, ltype));
+ return -1;
+ }
+ if (tdb->flags & TDB_NOLOCK)
+ return 0;
+
+ /* Since fcntl locks don't nest, we do a lock for the first one,
+ and simply bump the count for future ones */
+ if (tdb->locked[list+1].count == 0) {
+ if (!tdb->read_only && tdb->header.rwlocks) {
+ if (tdb_spinlock(tdb, list, ltype)) {
+ TDB_LOG((tdb, 0, "tdb_lock spinlock failed on list %d ltype=%d\n",
+ list, ltype));
+ return -1;
+ }
+ } else if (tdb_brlock(tdb,FREELIST_TOP+4*list,ltype,F_SETLKW, 0)) {
+ TDB_LOG((tdb, 0,"tdb_lock failed on list %d ltype=%d (%s)\n",
+ list, ltype, strerror(errno)));
+ return -1;
+ }
+ tdb->locked[list+1].ltype = ltype;
+ }
+ tdb->locked[list+1].count++;
+ return 0;
+}
+
+/* unlock the database: returns void because it's too late for errors. */
+ /* changed to return int it may be interesting to know there
+ has been an error --simo */
+static int tdb_unlock(TDB_CONTEXT *tdb, int list, int ltype)
+{
+ int ret = -1;
+
+ if (tdb->flags & TDB_NOLOCK)
+ return 0;
+
+ /* Sanity checks */
+ if (list < -1 || list >= (int)tdb->header.hash_size) {
+ TDB_LOG((tdb, 0, "tdb_unlock: list %d invalid (%d)\n", list, tdb->header.hash_size));
+ return ret;
+ }
+
+ if (tdb->locked[list+1].count==0) {
+ TDB_LOG((tdb, 0, "tdb_unlock: count is 0\n"));
+ return ret;
+ }
+
+ if (tdb->locked[list+1].count == 1) {
+ /* Down to last nested lock: unlock underneath */
+ if (!tdb->read_only && tdb->header.rwlocks) {
+ ret = tdb_spinunlock(tdb, list, ltype);
+ } else {
+ ret = tdb_brlock(tdb, FREELIST_TOP+4*list, F_UNLCK, F_SETLKW, 0);
+ }
+ } else {
+ ret = 0;
+ }
+ tdb->locked[list+1].count--;
+
+ if (ret)
+ TDB_LOG((tdb, 0,"tdb_unlock: An error occurred unlocking!\n"));
+ return ret;
+}
+
+/* check for an out of bounds access - if it is out of bounds then
+ see if the database has been expanded by someone else and expand
+ if necessary
+ note that "len" is the minimum length needed for the db
+*/
+static int tdb_oob(TDB_CONTEXT *tdb, tdb_off len, int probe)
+{
+ struct stat st;
+ if (len <= tdb->map_size)
+ return 0;
+ if (tdb->flags & TDB_INTERNAL) {
+ if (!probe) {
+ /* Ensure ecode is set for log fn. */
+ tdb->ecode = TDB_ERR_IO;
+ TDB_LOG((tdb, 0,"tdb_oob len %d beyond internal malloc size %d\n",
+ (int)len, (int)tdb->map_size));
+ }
+ return TDB_ERRCODE(TDB_ERR_IO, -1);
+ }
+
+ if (fstat(tdb->fd, &st) == -1)
+ return TDB_ERRCODE(TDB_ERR_IO, -1);
+
+ if (st.st_size < (size_t)len) {
+ if (!probe) {
+ /* Ensure ecode is set for log fn. */
+ tdb->ecode = TDB_ERR_IO;
+ TDB_LOG((tdb, 0,"tdb_oob len %d beyond eof at %d\n",
+ (int)len, (int)st.st_size));
+ }
+ return TDB_ERRCODE(TDB_ERR_IO, -1);
+ }
+
+ /* Unmap, update size, remap */
+ if (tdb_munmap(tdb) == -1)
+ return TDB_ERRCODE(TDB_ERR_IO, -1);
+ tdb->map_size = st.st_size;
+ tdb_mmap(tdb);
+ return 0;
+}
+
+/* write a lump of data at a specified offset */
+static int tdb_write(TDB_CONTEXT *tdb, tdb_off off, void *buf, tdb_len len)
+{
+ if (tdb_oob(tdb, off + len, 0) != 0)
+ return -1;
+
+ if (tdb->map_ptr)
+ memcpy(off + (char *)tdb->map_ptr, buf, len);
+#ifdef HAVE_PWRITE
+ else if (pwrite(tdb->fd, buf, len, off) != (ssize_t)len) {
+#else
+ else if (lseek(tdb->fd, off, SEEK_SET) != off
+ || write(tdb->fd, buf, len) != (ssize_t)len) {
+#endif
+ /* Ensure ecode is set for log fn. */
+ tdb->ecode = TDB_ERR_IO;
+ TDB_LOG((tdb, 0,"tdb_write failed at %d len=%d (%s)\n",
+ off, len, strerror(errno)));
+ return TDB_ERRCODE(TDB_ERR_IO, -1);
+ }
+ return 0;
+}
+
+/* read a lump of data at a specified offset, maybe convert */
+static int tdb_read(TDB_CONTEXT *tdb,tdb_off off,void *buf,tdb_len len,int cv)
+{
+ if (tdb_oob(tdb, off + len, 0) != 0)
+ return -1;
+
+ if (tdb->map_ptr)
+ memcpy(buf, off + (char *)tdb->map_ptr, len);
+#ifdef HAVE_PREAD
+ else if (pread(tdb->fd, buf, len, off) != (ssize_t)len) {
+#else
+ else if (lseek(tdb->fd, off, SEEK_SET) != off
+ || read(tdb->fd, buf, len) != (ssize_t)len) {
+#endif
+ /* Ensure ecode is set for log fn. */
+ tdb->ecode = TDB_ERR_IO;
+ TDB_LOG((tdb, 0,"tdb_read failed at %d len=%d (%s)\n",
+ off, len, strerror(errno)));
+ return TDB_ERRCODE(TDB_ERR_IO, -1);
+ }
+ if (cv)
+ convert(buf, len);
+ return 0;
+}
+
+/* read a lump of data, allocating the space for it */
+static char *tdb_alloc_read(TDB_CONTEXT *tdb, tdb_off offset, tdb_len len)
+{
+ char *buf;
+
+ if (!(buf = malloc(len))) {
+ /* Ensure ecode is set for log fn. */
+ tdb->ecode = TDB_ERR_OOM;
+ TDB_LOG((tdb, 0,"tdb_alloc_read malloc failed len=%d (%s)\n",
+ len, strerror(errno)));
+ return TDB_ERRCODE(TDB_ERR_OOM, buf);
+ }
+ if (tdb_read(tdb, offset, buf, len, 0) == -1) {
+ SAFE_FREE(buf);
+ return NULL;
+ }
+ return buf;
+}
+
+/* read/write a tdb_off */
+static int ofs_read(TDB_CONTEXT *tdb, tdb_off offset, tdb_off *d)
+{
+ return tdb_read(tdb, offset, (char*)d, sizeof(*d), DOCONV());
+}
+static int ofs_write(TDB_CONTEXT *tdb, tdb_off offset, tdb_off *d)
+{
+ tdb_off off = *d;
+ return tdb_write(tdb, offset, CONVERT(off), sizeof(*d));
+}
+
+/* read/write a record */
+static int rec_read(TDB_CONTEXT *tdb, tdb_off offset, struct list_struct *rec)
+{
+ if (tdb_read(tdb, offset, rec, sizeof(*rec),DOCONV()) == -1)
+ return -1;
+ if (TDB_BAD_MAGIC(rec)) {
+ /* Ensure ecode is set for log fn. */
+ tdb->ecode = TDB_ERR_CORRUPT;
+ TDB_LOG((tdb, 0,"rec_read bad magic 0x%x at offset=%d\n", rec->magic, offset));
+ return TDB_ERRCODE(TDB_ERR_CORRUPT, -1);
+ }
+ return tdb_oob(tdb, rec->next+sizeof(*rec), 0);
+}
+static int rec_write(TDB_CONTEXT *tdb, tdb_off offset, struct list_struct *rec)
+{
+ struct list_struct r = *rec;
+ return tdb_write(tdb, offset, CONVERT(r), sizeof(r));
+}
+
+/* read a freelist record and check for simple errors */
+static int rec_free_read(TDB_CONTEXT *tdb, tdb_off off, struct list_struct *rec)
+{
+ if (tdb_read(tdb, off, rec, sizeof(*rec),DOCONV()) == -1)
+ return -1;
+
+ if (rec->magic == TDB_MAGIC) {
+ /* this happens when a app is showdown while deleting a record - we should
+ not completely fail when this happens */
+ TDB_LOG((tdb, 0,"rec_free_read non-free magic 0x%x at offset=%d - fixing\n",
+ rec->magic, off));
+ rec->magic = TDB_FREE_MAGIC;
+ if (tdb_write(tdb, off, rec, sizeof(*rec)) == -1)
+ return -1;
+ }
+
+ if (rec->magic != TDB_FREE_MAGIC) {
+ /* Ensure ecode is set for log fn. */
+ tdb->ecode = TDB_ERR_CORRUPT;
+ TDB_LOG((tdb, 0,"rec_free_read bad magic 0x%x at offset=%d\n",
+ rec->magic, off));
+ return TDB_ERRCODE(TDB_ERR_CORRUPT, -1);
+ }
+ if (tdb_oob(tdb, rec->next+sizeof(*rec), 0) != 0)
+ return -1;
+ return 0;
+}
+
+/* update a record tailer (must hold allocation lock) */
+static int update_tailer(TDB_CONTEXT *tdb, tdb_off offset,
+ const struct list_struct *rec)
+{
+ tdb_off totalsize;
+
+ /* Offset of tailer from record header */
+ totalsize = sizeof(*rec) + rec->rec_len;
+ return ofs_write(tdb, offset + totalsize - sizeof(tdb_off),
+ &totalsize);
+}
+
+static tdb_off tdb_dump_record(TDB_CONTEXT *tdb, tdb_off offset)
+{
+ struct list_struct rec;
+ tdb_off tailer_ofs, tailer;
+
+ if (tdb_read(tdb, offset, (char *)&rec, sizeof(rec), DOCONV()) == -1) {
+ printf("ERROR: failed to read record at %u\n", offset);
+ return 0;
+ }
+
+ printf(" rec: offset=%u next=%d rec_len=%d key_len=%d data_len=%d full_hash=0x%x magic=0x%x\n",
+ offset, rec.next, rec.rec_len, rec.key_len, rec.data_len, rec.full_hash, rec.magic);
+
+ tailer_ofs = offset + sizeof(rec) + rec.rec_len - sizeof(tdb_off);
+ if (ofs_read(tdb, tailer_ofs, &tailer) == -1) {
+ printf("ERROR: failed to read tailer at %u\n", tailer_ofs);
+ return rec.next;
+ }
+
+ if (tailer != rec.rec_len + sizeof(rec)) {
+ printf("ERROR: tailer does not match record! tailer=%u totalsize=%u\n",
+ (unsigned)tailer, (unsigned)(rec.rec_len + sizeof(rec)));
+ }
+ return rec.next;
+}
+
+static int tdb_dump_chain(TDB_CONTEXT *tdb, int i)
+{
+ tdb_off rec_ptr, top;
+ int hash_length = 0;
+
+ top = TDB_HASH_TOP(i);
+
+ if (tdb_lock(tdb, i, F_WRLCK) != 0)
+ return -1;
+
+ if (ofs_read(tdb, top, &rec_ptr) == -1)
+ return tdb_unlock(tdb, i, F_WRLCK);
+
+ if (rec_ptr)
+ printf("hash=%d\n", i);
+
+ while (rec_ptr) {
+ rec_ptr = tdb_dump_record(tdb, rec_ptr);
+ hash_length += 1;
+ }
+
+ printf("chain %d length %d\n", i, hash_length);
+
+ return tdb_unlock(tdb, i, F_WRLCK);
+}
+
+void tdb_dump_all(TDB_CONTEXT *tdb)
+{
+ int i;
+ for (i=0;i<tdb->header.hash_size;i++) {
+ tdb_dump_chain(tdb, i);
+ }
+ tdb_printfreelist(tdb);
+}
+
+int tdb_printfreelist(TDB_CONTEXT *tdb)
+{
+ int ret;
+ long total_free = 0;
+ tdb_off offset, rec_ptr;
+ struct list_struct rec;
+
+ if ((ret = tdb_lock(tdb, -1, F_WRLCK)) != 0)
+ return ret;
+
+ offset = FREELIST_TOP;
+
+ /* read in the freelist top */
+ if (ofs_read(tdb, offset, &rec_ptr) == -1) {
+ tdb_unlock(tdb, -1, F_WRLCK);
+ return 0;
+ }
+
+ printf("freelist top=[0x%08x]\n", rec_ptr );
+ while (rec_ptr) {
+ if (tdb_read(tdb, rec_ptr, (char *)&rec, sizeof(rec), DOCONV()) == -1) {
+ tdb_unlock(tdb, -1, F_WRLCK);
+ return -1;
+ }
+
+ if (rec.magic != TDB_FREE_MAGIC) {
+ printf("bad magic 0x%08x in free list\n", rec.magic);
+ tdb_unlock(tdb, -1, F_WRLCK);
+ return -1;
+ }
+
+ printf("entry offset=[0x%08x], rec.rec_len = [0x%08x (%d)]\n", rec.next, rec.rec_len, rec.rec_len );
+ total_free += rec.rec_len;
+
+ /* move to the next record */
+ rec_ptr = rec.next;
+ }
+ printf("total rec_len = [0x%08x (%d)]\n", (int)total_free,
+ (int)total_free);
+
+ return tdb_unlock(tdb, -1, F_WRLCK);
+}
+
+/* Remove an element from the freelist. Must have alloc lock. */
+static int remove_from_freelist(TDB_CONTEXT *tdb, tdb_off off, tdb_off next)
+{
+ tdb_off last_ptr, i;
+
+ /* read in the freelist top */
+ last_ptr = FREELIST_TOP;
+ while (ofs_read(tdb, last_ptr, &i) != -1 && i != 0) {
+ if (i == off) {
+ /* We've found it! */
+ return ofs_write(tdb, last_ptr, &next);
+ }
+ /* Follow chain (next offset is at start of record) */
+ last_ptr = i;
+ }
+ TDB_LOG((tdb, 0,"remove_from_freelist: not on list at off=%d\n", off));
+ return TDB_ERRCODE(TDB_ERR_CORRUPT, -1);
+}
+
+/* Add an element into the freelist. Merge adjacent records if
+ neccessary. */
+static int tdb_free(TDB_CONTEXT *tdb, tdb_off offset, struct list_struct *rec)
+{
+ tdb_off right, left;
+
+ /* Allocation and tailer lock */
+ if (tdb_lock(tdb, -1, F_WRLCK) != 0)
+ return -1;
+
+ /* set an initial tailer, so if we fail we don't leave a bogus record */
+ if (update_tailer(tdb, offset, rec) != 0) {
+ TDB_LOG((tdb, 0, "tdb_free: upfate_tailer failed!\n"));
+ goto fail;
+ }
+
+ /* Look right first (I'm an Australian, dammit) */
+ right = offset + sizeof(*rec) + rec->rec_len;
+ if (right + sizeof(*rec) <= tdb->map_size) {
+ struct list_struct r;
+
+ if (tdb_read(tdb, right, &r, sizeof(r), DOCONV()) == -1) {
+ TDB_LOG((tdb, 0, "tdb_free: right read failed at %u\n", right));
+ goto left;
+ }
+
+ /* If it's free, expand to include it. */
+ if (r.magic == TDB_FREE_MAGIC) {
+ if (remove_from_freelist(tdb, right, r.next) == -1) {
+ TDB_LOG((tdb, 0, "tdb_free: right free failed at %u\n", right));
+ goto left;
+ }
+ rec->rec_len += sizeof(r) + r.rec_len;
+ }
+ }
+
+left:
+ /* Look left */
+ left = offset - sizeof(tdb_off);
+ if (left > TDB_DATA_START(tdb->header.hash_size)) {
+ struct list_struct l;
+ tdb_off leftsize;
+
+ /* Read in tailer and jump back to header */
+ if (ofs_read(tdb, left, &leftsize) == -1) {
+ TDB_LOG((tdb, 0, "tdb_free: left offset read failed at %u\n", left));
+ goto update;
+ }
+ left = offset - leftsize;
+
+ /* Now read in record */
+ if (tdb_read(tdb, left, &l, sizeof(l), DOCONV()) == -1) {
+ TDB_LOG((tdb, 0, "tdb_free: left read failed at %u (%u)\n", left, leftsize));
+ goto update;
+ }
+
+ /* If it's free, expand to include it. */
+ if (l.magic == TDB_FREE_MAGIC) {
+ if (remove_from_freelist(tdb, left, l.next) == -1) {
+ TDB_LOG((tdb, 0, "tdb_free: left free failed at %u\n", left));
+ goto update;
+ } else {
+ offset = left;
+ rec->rec_len += leftsize;
+ }
+ }
+ }
+
+update:
+ if (update_tailer(tdb, offset, rec) == -1) {
+ TDB_LOG((tdb, 0, "tdb_free: update_tailer failed at %u\n", offset));
+ goto fail;
+ }
+
+ /* Now, prepend to free list */
+ rec->magic = TDB_FREE_MAGIC;
+
+ if (ofs_read(tdb, FREELIST_TOP, &rec->next) == -1 ||
+ rec_write(tdb, offset, rec) == -1 ||
+ ofs_write(tdb, FREELIST_TOP, &offset) == -1) {
+ TDB_LOG((tdb, 0, "tdb_free record write failed at offset=%d\n", offset));
+ goto fail;
+ }
+
+ /* And we're done. */
+ tdb_unlock(tdb, -1, F_WRLCK);
+ return 0;
+
+ fail:
+ tdb_unlock(tdb, -1, F_WRLCK);
+ return -1;
+}
+
+
+/* expand a file. we prefer to use ftruncate, as that is what posix
+ says to use for mmap expansion */
+static int expand_file(TDB_CONTEXT *tdb, tdb_off size, tdb_off addition)
+{
+ char buf[1024];
+#if HAVE_FTRUNCATE_EXTEND
+ if (ftruncate(tdb->fd, size+addition) != 0) {
+ TDB_LOG((tdb, 0, "expand_file ftruncate to %d failed (%s)\n",
+ size+addition, strerror(errno)));
+ return -1;
+ }
+#else
+ char b = 0;
+
+#ifdef HAVE_PWRITE
+ if (pwrite(tdb->fd, &b, 1, (size+addition) - 1) != 1) {
+#else
+ if (lseek(tdb->fd, (size+addition) - 1, SEEK_SET) != (size+addition) - 1 ||
+ write(tdb->fd, &b, 1) != 1) {
+#endif
+ TDB_LOG((tdb, 0, "expand_file to %d failed (%s)\n",
+ size+addition, strerror(errno)));
+ return -1;
+ }
+#endif
+
+ /* now fill the file with something. This ensures that the file isn't sparse, which would be
+ very bad if we ran out of disk. This must be done with write, not via mmap */
+ memset(buf, 0x42, sizeof(buf));
+ while (addition) {
+ int n = addition>sizeof(buf)?sizeof(buf):addition;
+#ifdef HAVE_PWRITE
+ int ret = pwrite(tdb->fd, buf, n, size);
+#else
+ int ret;
+ if (lseek(tdb->fd, size, SEEK_SET) != size)
+ return -1;
+ ret = write(tdb->fd, buf, n);
+#endif
+ if (ret != n) {
+ TDB_LOG((tdb, 0, "expand_file write of %d failed (%s)\n",
+ n, strerror(errno)));
+ return -1;
+ }
+ addition -= n;
+ size += n;
+ }
+ return 0;
+}
+
+
+/* expand the database at least size bytes by expanding the underlying
+ file and doing the mmap again if necessary */
+static int tdb_expand(TDB_CONTEXT *tdb, tdb_off size)
+{
+ struct list_struct rec;
+ tdb_off offset;
+
+ if (tdb_lock(tdb, -1, F_WRLCK) == -1) {
+ TDB_LOG((tdb, 0, "lock failed in tdb_expand\n"));
+ return -1;
+ }
+
+ /* must know about any previous expansions by another process */
+ tdb_oob(tdb, tdb->map_size + 1, 1);
+
+ /* always make room for at least 10 more records, and round
+ the database up to a multiple of TDB_PAGE_SIZE */
+ size = TDB_ALIGN(tdb->map_size + size*10, TDB_PAGE_SIZE) - tdb->map_size;
+
+ if (!(tdb->flags & TDB_INTERNAL))
+ tdb_munmap(tdb);
+
+ /*
+ * We must ensure the file is unmapped before doing this
+ * to ensure consistency with systems like OpenBSD where
+ * writes and mmaps are not consistent.
+ */
+
+ /* expand the file itself */
+ if (!(tdb->flags & TDB_INTERNAL)) {
+ if (expand_file(tdb, tdb->map_size, size) != 0)
+ goto fail;
+ }
+
+ tdb->map_size += size;
+
+ if (tdb->flags & TDB_INTERNAL) {
+ char *new_map_ptr = realloc(tdb->map_ptr, tdb->map_size);
+ if (!new_map_ptr) {
+ tdb->map_size -= size;
+ goto fail;
+ }
+ tdb->map_ptr = new_map_ptr;
+ } else {
+ /*
+ * We must ensure the file is remapped before adding the space
+ * to ensure consistency with systems like OpenBSD where
+ * writes and mmaps are not consistent.
+ */
+
+ /* We're ok if the mmap fails as we'll fallback to read/write */
+ tdb_mmap(tdb);
+ }
+
+ /* form a new freelist record */
+ memset(&rec,'\0',sizeof(rec));
+ rec.rec_len = size - sizeof(rec);
+
+ /* link it into the free list */
+ offset = tdb->map_size - size;
+ if (tdb_free(tdb, offset, &rec) == -1)
+ goto fail;
+
+ tdb_unlock(tdb, -1, F_WRLCK);
+ return 0;
+ fail:
+ tdb_unlock(tdb, -1, F_WRLCK);
+ return -1;
+}
+
+/* allocate some space from the free list. The offset returned points
+ to a unconnected list_struct within the database with room for at
+ least length bytes of total data
+
+ 0 is returned if the space could not be allocated
+ */
+static tdb_off tdb_allocate(TDB_CONTEXT *tdb, tdb_len length,
+ struct list_struct *rec)
+{
+ tdb_off rec_ptr, last_ptr, newrec_ptr;
+ struct list_struct newrec;
+
+ memset(&newrec, '\0', sizeof(newrec));
+
+ if (tdb_lock(tdb, -1, F_WRLCK) == -1)
+ return 0;
+
+ /* Extra bytes required for tailer */
+ length += sizeof(tdb_off);
+
+ again:
+ last_ptr = FREELIST_TOP;
+
+ /* read in the freelist top */
+ if (ofs_read(tdb, FREELIST_TOP, &rec_ptr) == -1)
+ goto fail;
+
+ /* keep looking until we find a freelist record big enough */
+ while (rec_ptr) {
+ if (rec_free_read(tdb, rec_ptr, rec) == -1)
+ goto fail;
+
+ if (rec->rec_len >= length) {
+ /* found it - now possibly split it up */
+ if (rec->rec_len > length + MIN_REC_SIZE) {
+ /* Length of left piece */
+ length = TDB_ALIGN(length, TDB_ALIGNMENT);
+
+ /* Right piece to go on free list */
+ newrec.rec_len = rec->rec_len
+ - (sizeof(*rec) + length);
+ newrec_ptr = rec_ptr + sizeof(*rec) + length;
+
+ /* And left record is shortened */
+ rec->rec_len = length;
+ } else
+ newrec_ptr = 0;
+
+ /* Remove allocated record from the free list */
+ if (ofs_write(tdb, last_ptr, &rec->next) == -1)
+ goto fail;
+
+ /* Update header: do this before we drop alloc
+ lock, otherwise tdb_free() might try to
+ merge with us, thinking we're free.
+ (Thanks Jeremy Allison). */
+ rec->magic = TDB_MAGIC;
+ if (rec_write(tdb, rec_ptr, rec) == -1)
+ goto fail;
+
+ /* Did we create new block? */
+ if (newrec_ptr) {
+ /* Update allocated record tailer (we
+ shortened it). */
+ if (update_tailer(tdb, rec_ptr, rec) == -1)
+ goto fail;
+
+ /* Free new record */
+ if (tdb_free(tdb, newrec_ptr, &newrec) == -1)
+ goto fail;
+ }
+
+ /* all done - return the new record offset */
+ tdb_unlock(tdb, -1, F_WRLCK);
+ return rec_ptr;
+ }
+ /* move to the next record */
+ last_ptr = rec_ptr;
+ rec_ptr = rec->next;
+ }
+ /* we didn't find enough space. See if we can expand the
+ database and if we can then try again */
+ if (tdb_expand(tdb, length + sizeof(*rec)) == 0)
+ goto again;
+ fail:
+ tdb_unlock(tdb, -1, F_WRLCK);
+ return 0;
+}
+
+/* initialise a new database with a specified hash size */
+static int tdb_new_database(TDB_CONTEXT *tdb, int hash_size)
+{
+ struct tdb_header *newdb;
+ int size, ret = -1;
+
+ /* We make it up in memory, then write it out if not internal */
+ size = sizeof(struct tdb_header) + (hash_size+1)*sizeof(tdb_off);
+ if (!(newdb = calloc(size, 1)))
+ return TDB_ERRCODE(TDB_ERR_OOM, -1);
+
+ /* Fill in the header */
+ newdb->version = TDB_VERSION;
+ newdb->hash_size = hash_size;
+#ifdef USE_SPINLOCKS
+ newdb->rwlocks = size;
+#endif
+ if (tdb->flags & TDB_INTERNAL) {
+ tdb->map_size = size;
+ tdb->map_ptr = (char *)newdb;
+ memcpy(&tdb->header, newdb, sizeof(tdb->header));
+ /* Convert the `ondisk' version if asked. */
+ CONVERT(*newdb);
+ return 0;
+ }
+ if (lseek(tdb->fd, 0, SEEK_SET) == -1)
+ goto fail;
+
+ if (ftruncate(tdb->fd, 0) == -1)
+ goto fail;
+
+ /* This creates an endian-converted header, as if read from disk */
+ CONVERT(*newdb);
+ memcpy(&tdb->header, newdb, sizeof(tdb->header));
+ /* Don't endian-convert the magic food! */
+ memcpy(newdb->magic_food, TDB_MAGIC_FOOD, strlen(TDB_MAGIC_FOOD)+1);
+ if (write(tdb->fd, newdb, size) != size)
+ ret = -1;
+ else
+ ret = tdb_create_rwlocks(tdb->fd, hash_size);
+
+ fail:
+ SAFE_FREE(newdb);
+ return ret;
+}
+
+/* Returns 0 on fail. On success, return offset of record, and fills
+ in rec */
+static tdb_off tdb_find(TDB_CONTEXT *tdb, TDB_DATA key, u32 hash,
+ struct list_struct *r)
+{
+ tdb_off rec_ptr;
+
+ /* read in the hash top */
+ if (ofs_read(tdb, TDB_HASH_TOP(hash), &rec_ptr) == -1)
+ return 0;
+
+ /* keep looking until we find the right record */
+ while (rec_ptr) {
+ if (rec_read(tdb, rec_ptr, r) == -1)
+ return 0;
+
+ if (!TDB_DEAD(r) && hash==r->full_hash && key.dsize==r->key_len) {
+ char *k;
+ /* a very likely hit - read the key */
+ k = tdb_alloc_read(tdb, rec_ptr + sizeof(*r),
+ r->key_len);
+ if (!k)
+ return 0;
+
+ if (memcmp(key.dptr, k, key.dsize) == 0) {
+ SAFE_FREE(k);
+ return rec_ptr;
+ }
+ SAFE_FREE(k);
+ }
+ rec_ptr = r->next;
+ }
+ return TDB_ERRCODE(TDB_ERR_NOEXIST, 0);
+}
+
+/* As tdb_find, but if you succeed, keep the lock */
+static tdb_off tdb_find_lock_hash(TDB_CONTEXT *tdb, TDB_DATA key, u32 hash, int locktype,
+ struct list_struct *rec)
+{
+ u32 rec_ptr;
+
+ if (tdb_lock(tdb, BUCKET(hash), locktype) == -1)
+ return 0;
+ if (!(rec_ptr = tdb_find(tdb, key, hash, rec)))
+ tdb_unlock(tdb, BUCKET(hash), locktype);
+ return rec_ptr;
+}
+
+enum TDB_ERROR tdb_error(TDB_CONTEXT *tdb)
+{
+ return tdb->ecode;
+}
+
+static struct tdb_errname {
+ enum TDB_ERROR ecode; const char *estring;
+} emap[] = { {TDB_SUCCESS, "Success"},
+ {TDB_ERR_CORRUPT, "Corrupt database"},
+ {TDB_ERR_IO, "IO Error"},
+ {TDB_ERR_LOCK, "Locking error"},
+ {TDB_ERR_OOM, "Out of memory"},
+ {TDB_ERR_EXISTS, "Record exists"},
+ {TDB_ERR_NOLOCK, "Lock exists on other keys"},
+ {TDB_ERR_NOEXIST, "Record does not exist"} };
+
+/* Error string for the last tdb error */
+const char *tdb_errorstr(TDB_CONTEXT *tdb)
+{
+ u32 i;
+ for (i = 0; i < sizeof(emap) / sizeof(struct tdb_errname); i++)
+ if (tdb->ecode == emap[i].ecode)
+ return emap[i].estring;
+ return "Invalid error code";
+}
+
+/* update an entry in place - this only works if the new data size
+ is <= the old data size and the key exists.
+ on failure return -1.
+*/
+
+static int tdb_update_hash(TDB_CONTEXT *tdb, TDB_DATA key, u32 hash, TDB_DATA dbuf)
+{
+ struct list_struct rec;
+ tdb_off rec_ptr;
+
+ /* find entry */
+ if (!(rec_ptr = tdb_find(tdb, key, hash, &rec)))
+ return -1;
+
+ /* must be long enough key, data and tailer */
+ if (rec.rec_len < key.dsize + dbuf.dsize + sizeof(tdb_off)) {
+ tdb->ecode = TDB_SUCCESS; /* Not really an error */
+ return -1;
+ }
+
+ if (tdb_write(tdb, rec_ptr + sizeof(rec) + rec.key_len,
+ dbuf.dptr, dbuf.dsize) == -1)
+ return -1;
+
+ if (dbuf.dsize != rec.data_len) {
+ /* update size */
+ rec.data_len = dbuf.dsize;
+ return rec_write(tdb, rec_ptr, &rec);
+ }
+
+ return 0;
+}
+
+/* find an entry in the database given a key */
+/* If an entry doesn't exist tdb_err will be set to
+ * TDB_ERR_NOEXIST. If a key has no data attached
+ * tdb_err will not be set. Both will return a
+ * zero pptr and zero dsize.
+ */
+
+TDB_DATA tdb_fetch(TDB_CONTEXT *tdb, TDB_DATA key)
+{
+ tdb_off rec_ptr;
+ struct list_struct rec;
+ TDB_DATA ret;
+ u32 hash;
+
+ /* find which hash bucket it is in */
+ hash = tdb->hash_fn(&key);
+ if (!(rec_ptr = tdb_find_lock_hash(tdb,key,hash,F_RDLCK,&rec)))
+ return tdb_null;
+
+ if (rec.data_len)
+ ret.dptr = tdb_alloc_read(tdb, rec_ptr + sizeof(rec) + rec.key_len,
+ rec.data_len);
+ else
+ ret.dptr = NULL;
+ ret.dsize = rec.data_len;
+ tdb_unlock(tdb, BUCKET(rec.full_hash), F_RDLCK);
+ return ret;
+}
+
+/* check if an entry in the database exists
+
+ note that 1 is returned if the key is found and 0 is returned if not found
+ this doesn't match the conventions in the rest of this module, but is
+ compatible with gdbm
+*/
+static int tdb_exists_hash(TDB_CONTEXT *tdb, TDB_DATA key, u32 hash)
+{
+ struct list_struct rec;
+
+ if (tdb_find_lock_hash(tdb, key, hash, F_RDLCK, &rec) == 0)
+ return 0;
+ tdb_unlock(tdb, BUCKET(rec.full_hash), F_RDLCK);
+ return 1;
+}
+
+int tdb_exists(TDB_CONTEXT *tdb, TDB_DATA key)
+{
+ u32 hash = tdb->hash_fn(&key);
+ return tdb_exists_hash(tdb, key, hash);
+}
+
+/* record lock stops delete underneath */
+static int lock_record(TDB_CONTEXT *tdb, tdb_off off)
+{
+ return off ? tdb_brlock(tdb, off, F_RDLCK, F_SETLKW, 0) : 0;
+}
+/*
+ Write locks override our own fcntl readlocks, so check it here.
+ Note this is meant to be F_SETLK, *not* F_SETLKW, as it's not
+ an error to fail to get the lock here.
+*/
+
+static int write_lock_record(TDB_CONTEXT *tdb, tdb_off off)
+{
+ struct tdb_traverse_lock *i;
+ for (i = &tdb->travlocks; i; i = i->next)
+ if (i->off == off)
+ return -1;
+ return tdb_brlock(tdb, off, F_WRLCK, F_SETLK, 1);
+}
+
+/*
+ Note this is meant to be F_SETLK, *not* F_SETLKW, as it's not
+ an error to fail to get the lock here.
+*/
+
+static int write_unlock_record(TDB_CONTEXT *tdb, tdb_off off)
+{
+ return tdb_brlock(tdb, off, F_UNLCK, F_SETLK, 0);
+}
+/* fcntl locks don't stack: avoid unlocking someone else's */
+static int unlock_record(TDB_CONTEXT *tdb, tdb_off off)
+{
+ struct tdb_traverse_lock *i;
+ u32 count = 0;
+
+ if (off == 0)
+ return 0;
+ for (i = &tdb->travlocks; i; i = i->next)
+ if (i->off == off)
+ count++;
+ return (count == 1 ? tdb_brlock(tdb, off, F_UNLCK, F_SETLKW, 0) : 0);
+}
+
+/* actually delete an entry in the database given the offset */
+static int do_delete(TDB_CONTEXT *tdb, tdb_off rec_ptr, struct list_struct*rec)
+{
+ tdb_off last_ptr, i;
+ struct list_struct lastrec;
+
+ if (tdb->read_only) return -1;
+
+ if (write_lock_record(tdb, rec_ptr) == -1) {
+ /* Someone traversing here: mark it as dead */
+ rec->magic = TDB_DEAD_MAGIC;
+ return rec_write(tdb, rec_ptr, rec);
+ }
+ if (write_unlock_record(tdb, rec_ptr) != 0)
+ return -1;
+
+ /* find previous record in hash chain */
+ if (ofs_read(tdb, TDB_HASH_TOP(rec->full_hash), &i) == -1)
+ return -1;
+ for (last_ptr = 0; i != rec_ptr; last_ptr = i, i = lastrec.next)
+ if (rec_read(tdb, i, &lastrec) == -1)
+ return -1;
+
+ /* unlink it: next ptr is at start of record. */
+ if (last_ptr == 0)
+ last_ptr = TDB_HASH_TOP(rec->full_hash);
+ if (ofs_write(tdb, last_ptr, &rec->next) == -1)
+ return -1;
+
+ /* recover the space */
+ if (tdb_free(tdb, rec_ptr, rec) == -1)
+ return -1;
+ return 0;
+}
+
+/* Uses traverse lock: 0 = finish, -1 = error, other = record offset */
+static int tdb_next_lock(TDB_CONTEXT *tdb, struct tdb_traverse_lock *tlock,
+ struct list_struct *rec)
+{
+ int want_next = (tlock->off != 0);
+
+ /* Lock each chain from the start one. */
+ for (; tlock->hash < tdb->header.hash_size; tlock->hash++) {
+
+ /* this is an optimisation for the common case where
+ the hash chain is empty, which is particularly
+ common for the use of tdb with ldb, where large
+ hashes are used. In that case we spend most of our
+ time in tdb_brlock(), locking empty hash chains.
+
+ To avoid this, we do an unlocked pre-check to see
+ if the hash chain is empty before starting to look
+ inside it. If it is empty then we can avoid that
+ hash chain. If it isn't empty then we can't believe
+ the value we get back, as we read it without a
+ lock, so instead we get the lock and re-fetch the
+ value below.
+
+ Notice that not doing this optimisation on the
+ first hash chain is critical. We must guarantee
+ that we have done at least one fcntl lock at the
+ start of a search to guarantee that memory is
+ coherent on SMP systems. If records are added by
+ others during the search then thats OK, and we
+ could possibly miss those with this trick, but we
+ could miss them anyway without this trick, so the
+ semantics don't change.
+
+ With a non-indexed ldb search this trick gains us a
+ factor of around 80 in speed on a linux 2.6.x
+ system (testing using ldbtest).
+ */
+ if (!tlock->off && tlock->hash != 0) {
+ u32 off;
+ if (tdb->map_ptr) {
+ for (;tlock->hash < tdb->header.hash_size;tlock->hash++) {
+ if (0 != *(u32 *)(TDB_HASH_TOP(tlock->hash) + (unsigned char *)tdb->map_ptr)) {
+ break;
+ }
+ }
+ if (tlock->hash == tdb->header.hash_size) {
+ continue;
+ }
+ } else {
+ if (ofs_read(tdb, TDB_HASH_TOP(tlock->hash), &off) == 0 &&
+ off == 0) {
+ continue;
+ }
+ }
+ }
+
+ if (tdb_lock(tdb, tlock->hash, F_WRLCK) == -1)
+ return -1;
+
+ /* No previous record? Start at top of chain. */
+ if (!tlock->off) {
+ if (ofs_read(tdb, TDB_HASH_TOP(tlock->hash),
+ &tlock->off) == -1)
+ goto fail;
+ } else {
+ /* Otherwise unlock the previous record. */
+ if (unlock_record(tdb, tlock->off) != 0)
+ goto fail;
+ }
+
+ if (want_next) {
+ /* We have offset of old record: grab next */
+ if (rec_read(tdb, tlock->off, rec) == -1)
+ goto fail;
+ tlock->off = rec->next;
+ }
+
+ /* Iterate through chain */
+ while( tlock->off) {
+ tdb_off current;
+ if (rec_read(tdb, tlock->off, rec) == -1)
+ goto fail;
+
+ /* Detect infinite loops. From "Shlomi Yaakobovich" <Shlomi at exanet.com>. */
+ if (tlock->off == rec->next) {
+ TDB_LOG((tdb, 0, "tdb_next_lock: loop detected.\n"));
+ goto fail;
+ }
+
+ if (!TDB_DEAD(rec)) {
+ /* Woohoo: we found one! */
+ if (lock_record(tdb, tlock->off) != 0)
+ goto fail;
+ return tlock->off;
+ }
+
+ /* Try to clean dead ones from old traverses */
+ current = tlock->off;
+ tlock->off = rec->next;
+ if (!tdb->read_only &&
+ do_delete(tdb, current, rec) != 0)
+ goto fail;
+ }
+ tdb_unlock(tdb, tlock->hash, F_WRLCK);
+ want_next = 0;
+ }
+ /* We finished iteration without finding anything */
+ return TDB_ERRCODE(TDB_SUCCESS, 0);
+
+ fail:
+ tlock->off = 0;
+ if (tdb_unlock(tdb, tlock->hash, F_WRLCK) != 0)
+ TDB_LOG((tdb, 0, "tdb_next_lock: On error unlock failed!\n"));
+ return -1;
+}
+
+/* traverse the entire database - calling fn(tdb, key, data) on each element.
+ return -1 on error or the record count traversed
+ if fn is NULL then it is not called
+ a non-zero return value from fn() indicates that the traversal should stop
+ */
+int tdb_traverse(TDB_CONTEXT *tdb, tdb_traverse_func fn, void *private_val)
+{
+ TDB_DATA key, dbuf;
+ struct list_struct rec;
+ struct tdb_traverse_lock tl = { NULL, 0, 0 };
+ int ret, count = 0;
+
+ /* This was in the initializaton, above, but the IRIX compiler
+ * did not like it. crh
+ */
+ tl.next = tdb->travlocks.next;
+
+ /* fcntl locks don't stack: beware traverse inside traverse */
+ tdb->travlocks.next = &tl;
+
+ /* tdb_next_lock places locks on the record returned, and its chain */
+ while ((ret = tdb_next_lock(tdb, &tl, &rec)) > 0) {
+ count++;
+ /* now read the full record */
+ key.dptr = tdb_alloc_read(tdb, tl.off + sizeof(rec),
+ rec.key_len + rec.data_len);
+ if (!key.dptr) {
+ ret = -1;
+ if (tdb_unlock(tdb, tl.hash, F_WRLCK) != 0)
+ goto out;
+ if (unlock_record(tdb, tl.off) != 0)
+ TDB_LOG((tdb, 0, "tdb_traverse: key.dptr == NULL and unlock_record failed!\n"));
+ goto out;
+ }
+ key.dsize = rec.key_len;
+ dbuf.dptr = key.dptr + rec.key_len;
+ dbuf.dsize = rec.data_len;
+
+ /* Drop chain lock, call out */
+ if (tdb_unlock(tdb, tl.hash, F_WRLCK) != 0) {
+ ret = -1;
+ goto out;
+ }
+ if (fn && fn(tdb, key, dbuf, private_val)) {
+ /* They want us to terminate traversal */
+ ret = count;
+ if (unlock_record(tdb, tl.off) != 0) {
+ TDB_LOG((tdb, 0, "tdb_traverse: unlock_record failed!\n"));;
+ ret = -1;
+ }
+ tdb->travlocks.next = tl.next;
+ SAFE_FREE(key.dptr);
+ return count;
+ }
+ SAFE_FREE(key.dptr);
+ }
+out:
+ tdb->travlocks.next = tl.next;
+ if (ret < 0)
+ return -1;
+ else
+ return count;
+}
+
+/* find the first entry in the database and return its key */
+TDB_DATA tdb_firstkey(TDB_CONTEXT *tdb)
+{
+ TDB_DATA key;
+ struct list_struct rec;
+
+ /* release any old lock */
+ if (unlock_record(tdb, tdb->travlocks.off) != 0)
+ return tdb_null;
+ tdb->travlocks.off = tdb->travlocks.hash = 0;
+
+ if (tdb_next_lock(tdb, &tdb->travlocks, &rec) <= 0)
+ return tdb_null;
+ /* now read the key */
+ key.dsize = rec.key_len;
+ key.dptr =tdb_alloc_read(tdb,tdb->travlocks.off+sizeof(rec),key.dsize);
+ if (tdb_unlock(tdb, BUCKET(tdb->travlocks.hash), F_WRLCK) != 0)
+ TDB_LOG((tdb, 0, "tdb_firstkey: error occurred while tdb_unlocking!\n"));
+ return key;
+}
+
+/* find the next entry in the database, returning its key */
+TDB_DATA tdb_nextkey(TDB_CONTEXT *tdb, TDB_DATA oldkey)
+{
+ u32 oldhash;
+ TDB_DATA key = tdb_null;
+ struct list_struct rec;
+ char *k = NULL;
+
+ /* Is locked key the old key? If so, traverse will be reliable. */
+ if (tdb->travlocks.off) {
+ if (tdb_lock(tdb,tdb->travlocks.hash,F_WRLCK))
+ return tdb_null;
+ if (rec_read(tdb, tdb->travlocks.off, &rec) == -1
+ || !(k = tdb_alloc_read(tdb,tdb->travlocks.off+sizeof(rec),
+ rec.key_len))
+ || memcmp(k, oldkey.dptr, oldkey.dsize) != 0) {
+ /* No, it wasn't: unlock it and start from scratch */
+ if (unlock_record(tdb, tdb->travlocks.off) != 0)
+ return tdb_null;
+ if (tdb_unlock(tdb, tdb->travlocks.hash, F_WRLCK) != 0)
+ return tdb_null;
+ tdb->travlocks.off = 0;
+ }
+
+ SAFE_FREE(k);
+ }
+
+ if (!tdb->travlocks.off) {
+ /* No previous element: do normal find, and lock record */
+ tdb->travlocks.off = tdb_find_lock_hash(tdb, oldkey, tdb->hash_fn(&oldkey), F_WRLCK, &rec);
+ if (!tdb->travlocks.off)
+ return tdb_null;
+ tdb->travlocks.hash = BUCKET(rec.full_hash);
+ if (lock_record(tdb, tdb->travlocks.off) != 0) {
+ TDB_LOG((tdb, 0, "tdb_nextkey: lock_record failed (%s)!\n", strerror(errno)));
+ return tdb_null;
+ }
+ }
+ oldhash = tdb->travlocks.hash;
+
+ /* Grab next record: locks chain and returned record,
+ unlocks old record */
+ if (tdb_next_lock(tdb, &tdb->travlocks, &rec) > 0) {
+ key.dsize = rec.key_len;
+ key.dptr = tdb_alloc_read(tdb, tdb->travlocks.off+sizeof(rec),
+ key.dsize);
+ /* Unlock the chain of this new record */
+ if (tdb_unlock(tdb, tdb->travlocks.hash, F_WRLCK) != 0)
+ TDB_LOG((tdb, 0, "tdb_nextkey: WARNING tdb_unlock failed!\n"));
+ }
+ /* Unlock the chain of old record */
+ if (tdb_unlock(tdb, BUCKET(oldhash), F_WRLCK) != 0)
+ TDB_LOG((tdb, 0, "tdb_nextkey: WARNING tdb_unlock failed!\n"));
+ return key;
+}
+
+/* delete an entry in the database given a key */
+static int tdb_delete_hash(TDB_CONTEXT *tdb, TDB_DATA key, u32 hash)
+{
+ tdb_off rec_ptr;
+ struct list_struct rec;
+ int ret;
+
+ if (!(rec_ptr = tdb_find_lock_hash(tdb, key, hash, F_WRLCK, &rec)))
+ return -1;
+ ret = do_delete(tdb, rec_ptr, &rec);
+ if (tdb_unlock(tdb, BUCKET(rec.full_hash), F_WRLCK) != 0)
+ TDB_LOG((tdb, 0, "tdb_delete: WARNING tdb_unlock failed!\n"));
+ return ret;
+}
+
+int tdb_delete(TDB_CONTEXT *tdb, TDB_DATA key)
+{
+ u32 hash = tdb->hash_fn(&key);
+ return tdb_delete_hash(tdb, key, hash);
+}
+
+/* store an element in the database, replacing any existing element
+ with the same key
+
+ return 0 on success, -1 on failure
+*/
+int tdb_store(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA dbuf, int flag)
+{
+ struct list_struct rec;
+ u32 hash;
+ tdb_off rec_ptr;
+ char *p = NULL;
+ int ret = 0;
+
+ /* find which hash bucket it is in */
+ hash = tdb->hash_fn(&key);
+ if (tdb_lock(tdb, BUCKET(hash), F_WRLCK) == -1)
+ return -1;
+
+ /* check for it existing, on insert. */
+ if (flag == TDB_INSERT) {
+ if (tdb_exists_hash(tdb, key, hash)) {
+ tdb->ecode = TDB_ERR_EXISTS;
+ goto fail;
+ }
+ } else {
+ /* first try in-place update, on modify or replace. */
+ if (tdb_update_hash(tdb, key, hash, dbuf) == 0)
+ goto out;
+ if (tdb->ecode == TDB_ERR_NOEXIST &&
+ flag == TDB_MODIFY) {
+ /* if the record doesn't exist and we are in TDB_MODIFY mode then
+ we should fail the store */
+ goto fail;
+ }
+ }
+ /* reset the error code potentially set by the tdb_update() */
+ tdb->ecode = TDB_SUCCESS;
+
+ /* delete any existing record - if it doesn't exist we don't
+ care. Doing this first reduces fragmentation, and avoids
+ coalescing with `allocated' block before it's updated. */
+ if (flag != TDB_INSERT)
+ tdb_delete_hash(tdb, key, hash);
+
+ /* Copy key+value *before* allocating free space in case malloc
+ fails and we are left with a dead spot in the tdb. */
+
+ if (!(p = (char *)malloc(key.dsize + dbuf.dsize))) {
+ tdb->ecode = TDB_ERR_OOM;
+ goto fail;
+ }
+
+ memcpy(p, key.dptr, key.dsize);
+ if (dbuf.dsize)
+ memcpy(p+key.dsize, dbuf.dptr, dbuf.dsize);
+
+ /* we have to allocate some space */
+ if (!(rec_ptr = tdb_allocate(tdb, key.dsize + dbuf.dsize, &rec)))
+ goto fail;
+
+ /* Read hash top into next ptr */
+ if (ofs_read(tdb, TDB_HASH_TOP(hash), &rec.next) == -1)
+ goto fail;
+
+ rec.key_len = key.dsize;
+ rec.data_len = dbuf.dsize;
+ rec.full_hash = hash;
+ rec.magic = TDB_MAGIC;
+
+ /* write out and point the top of the hash chain at it */
+ if (rec_write(tdb, rec_ptr, &rec) == -1
+ || tdb_write(tdb, rec_ptr+sizeof(rec), p, key.dsize+dbuf.dsize)==-1
+ || ofs_write(tdb, TDB_HASH_TOP(hash), &rec_ptr) == -1) {
+ /* Need to tdb_unallocate() here */
+ goto fail;
+ }
+ out:
+ SAFE_FREE(p);
+ tdb_unlock(tdb, BUCKET(hash), F_WRLCK);
+ return ret;
+fail:
+ ret = -1;
+ goto out;
+}
+
+/* Attempt to append data to an entry in place - this only works if the new data size
+ is <= the old data size and the key exists.
+ on failure return -1. Record must be locked before calling.
+*/
+static int tdb_append_inplace(TDB_CONTEXT *tdb, TDB_DATA key, u32 hash, TDB_DATA new_dbuf)
+{
+ struct list_struct rec;
+ tdb_off rec_ptr;
+
+ /* find entry */
+ if (!(rec_ptr = tdb_find(tdb, key, hash, &rec)))
+ return -1;
+
+ /* Append of 0 is always ok. */
+ if (new_dbuf.dsize == 0)
+ return 0;
+
+ /* must be long enough for key, old data + new data and tailer */
+ if (rec.rec_len < key.dsize + rec.data_len + new_dbuf.dsize + sizeof(tdb_off)) {
+ /* No room. */
+ tdb->ecode = TDB_SUCCESS; /* Not really an error */
+ return -1;
+ }
+
+ if (tdb_write(tdb, rec_ptr + sizeof(rec) + rec.key_len + rec.data_len,
+ new_dbuf.dptr, new_dbuf.dsize) == -1)
+ return -1;
+
+ /* update size */
+ rec.data_len += new_dbuf.dsize;
+ return rec_write(tdb, rec_ptr, &rec);
+}
+
+/* Append to an entry. Create if not exist. */
+
+int tdb_append(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA new_dbuf)
+{
+ struct list_struct rec;
+ u32 hash;
+ tdb_off rec_ptr;
+ char *p = NULL;
+ int ret = 0;
+ size_t new_data_size = 0;
+
+ /* find which hash bucket it is in */
+ hash = tdb->hash_fn(&key);
+ if (tdb_lock(tdb, BUCKET(hash), F_WRLCK) == -1)
+ return -1;
+
+ /* first try in-place. */
+ if (tdb_append_inplace(tdb, key, hash, new_dbuf) == 0)
+ goto out;
+
+ /* reset the error code potentially set by the tdb_append_inplace() */
+ tdb->ecode = TDB_SUCCESS;
+
+ /* find entry */
+ if (!(rec_ptr = tdb_find(tdb, key, hash, &rec))) {
+ if (tdb->ecode != TDB_ERR_NOEXIST)
+ goto fail;
+
+ /* Not found - create. */
+
+ ret = tdb_store(tdb, key, new_dbuf, TDB_INSERT);
+ goto out;
+ }
+
+ new_data_size = rec.data_len + new_dbuf.dsize;
+
+ /* Copy key+old_value+value *before* allocating free space in case malloc
+ fails and we are left with a dead spot in the tdb. */
+
+ if (!(p = (char *)malloc(key.dsize + new_data_size))) {
+ tdb->ecode = TDB_ERR_OOM;
+ goto fail;
+ }
+
+ /* Copy the key in place. */
+ memcpy(p, key.dptr, key.dsize);
+
+ /* Now read the old data into place. */
+ if (rec.data_len &&
+ tdb_read(tdb, rec_ptr + sizeof(rec) + rec.key_len, p + key.dsize, rec.data_len, 0) == -1)
+ goto fail;
+
+ /* Finally append the new data. */
+ if (new_dbuf.dsize)
+ memcpy(p+key.dsize+rec.data_len, new_dbuf.dptr, new_dbuf.dsize);
+
+ /* delete any existing record - if it doesn't exist we don't
+ care. Doing this first reduces fragmentation, and avoids
+ coalescing with `allocated' block before it's updated. */
+
+ tdb_delete_hash(tdb, key, hash);
+
+ if (!(rec_ptr = tdb_allocate(tdb, key.dsize + new_data_size, &rec)))
+ goto fail;
+
+ /* Read hash top into next ptr */
+ if (ofs_read(tdb, TDB_HASH_TOP(hash), &rec.next) == -1)
+ goto fail;
+
+ rec.key_len = key.dsize;
+ rec.data_len = new_data_size;
+ rec.full_hash = hash;
+ rec.magic = TDB_MAGIC;
+
+ /* write out and point the top of the hash chain at it */
+ if (rec_write(tdb, rec_ptr, &rec) == -1
+ || tdb_write(tdb, rec_ptr+sizeof(rec), p, key.dsize+new_data_size)==-1
+ || ofs_write(tdb, TDB_HASH_TOP(hash), &rec_ptr) == -1) {
+ /* Need to tdb_unallocate() here */
+ goto fail;
+ }
+
+ out:
+ SAFE_FREE(p);
+ tdb_unlock(tdb, BUCKET(hash), F_WRLCK);
+ return ret;
+
+fail:
+ ret = -1;
+ goto out;
+}
+
+static int tdb_already_open(dev_t device,
+ ino_t ino)
+{
+ TDB_CONTEXT *i;
+
+ for (i = tdbs; i; i = i->next) {
+ if (i->device == device && i->inode == ino) {
+ return 1;
+ }
+ }
+
+ return 0;
+}
+
+/* This is based on the hash algorithm from gdbm */
+static u32 default_tdb_hash(TDB_DATA *key)
+{
+ u32 value; /* Used to compute the hash value. */
+ u32 i; /* Used to cycle through random values. */
+
+ /* Set the initial value from the key size. */
+ for (value = 0x238F13AF * key->dsize, i=0; i < key->dsize; i++)
+ value = (value + (key->dptr[i] << (i*5 % 24)));
+
+ return (1103515243 * value + 12345);
+}
+
+/* open the database, creating it if necessary
+
+ The open_flags and mode are passed straight to the open call on the
+ database file. A flags value of O_WRONLY is invalid. The hash size
+ is advisory, use zero for a default value.
+
+ Return is NULL on error, in which case errno is also set. Don't
+ try to call tdb_error or tdb_errname, just do strerror(errno).
+
+ @param name may be NULL for internal databases. */
+TDB_CONTEXT *tdb_open(const char *name, int hash_size, int tdb_flags,
+ int open_flags, mode_t mode)
+{
+ return tdb_open_ex(name, hash_size, tdb_flags, open_flags, mode, NULL, NULL);
+}
+
+
+TDB_CONTEXT *tdb_open_ex(const char *name, int hash_size, int tdb_flags,
+ int open_flags, mode_t mode,
+ tdb_log_func log_fn,
+ tdb_hash_func hash_fn)
+{
+ TDB_CONTEXT *tdb;
+ struct stat st;
+ int rev = 0, locked = 0;
+ unsigned char *vp;
+ u32 vertest;
+
+ if (!(tdb = calloc(1, sizeof *tdb))) {
+ /* Can't log this */
+ errno = ENOMEM;
+ goto fail;
+ }
+ tdb->fd = -1;
+ tdb->name = NULL;
+ tdb->map_ptr = NULL;
+ tdb->flags = tdb_flags;
+ tdb->open_flags = open_flags;
+ tdb->log_fn = log_fn;
+ tdb->hash_fn = hash_fn ? hash_fn : default_tdb_hash;
+
+ if ((open_flags & O_ACCMODE) == O_WRONLY) {
+ TDB_LOG((tdb, 0, "tdb_open_ex: can't open tdb %s write-only\n",
+ name));
+ errno = EINVAL;
+ goto fail;
+ }
+
+ if (hash_size == 0)
+ hash_size = DEFAULT_HASH_SIZE;
+ if ((open_flags & O_ACCMODE) == O_RDONLY) {
+ tdb->read_only = 1;
+ /* read only databases don't do locking or clear if first */
+ tdb->flags |= TDB_NOLOCK;
+ tdb->flags &= ~TDB_CLEAR_IF_FIRST;
+ }
+
+ /* internal databases don't mmap or lock, and start off cleared */
+ if (tdb->flags & TDB_INTERNAL) {
+ tdb->flags |= (TDB_NOLOCK | TDB_NOMMAP);
+ tdb->flags &= ~TDB_CLEAR_IF_FIRST;
+ if (tdb_new_database(tdb, hash_size) != 0) {
+ TDB_LOG((tdb, 0, "tdb_open_ex: tdb_new_database failed!"));
+ goto fail;
+ }
+ goto internal;
+ }
+
+ if ((tdb->fd = open(name, open_flags, mode)) == -1) {
+ TDB_LOG((tdb, 5, "tdb_open_ex: could not open file %s: %s\n",
+ name, strerror(errno)));
+ goto fail; /* errno set by open(2) */
+ }
+
+ /* ensure there is only one process initialising at once */
+ if (tdb_brlock(tdb, GLOBAL_LOCK, F_WRLCK, F_SETLKW, 0) == -1) {
+ TDB_LOG((tdb, 0, "tdb_open_ex: failed to get global lock on %s: %s\n",
+ name, strerror(errno)));
+ goto fail; /* errno set by tdb_brlock */
+ }
+
+ /* we need to zero database if we are the only one with it open */
+ if ((tdb_flags & TDB_CLEAR_IF_FIRST) &&
+ (locked = (tdb_brlock(tdb, ACTIVE_LOCK, F_WRLCK, F_SETLK, 0) == 0))) {
+ open_flags |= O_CREAT;
+ if (ftruncate(tdb->fd, 0) == -1) {
+ TDB_LOG((tdb, 0, "tdb_open_ex: "
+ "failed to truncate %s: %s\n",
+ name, strerror(errno)));
+ goto fail; /* errno set by ftruncate */
+ }
+ }
+
+ if (read(tdb->fd, &tdb->header, sizeof(tdb->header)) != sizeof(tdb->header)
+ || strcmp(tdb->header.magic_food, TDB_MAGIC_FOOD) != 0
+ || (tdb->header.version != TDB_VERSION
+ && !(rev = (tdb->header.version==TDB_BYTEREV(TDB_VERSION))))) {
+ /* its not a valid database - possibly initialise it */
+ if (!(open_flags & O_CREAT) || tdb_new_database(tdb, hash_size) == -1) {
+ errno = EIO; /* ie bad format or something */
+ goto fail;
+ }
+ rev = (tdb->flags & TDB_CONVERT);
+ }
+ vp = (unsigned char *)&tdb->header.version;
+ vertest = (((u32)vp[0]) << 24) | (((u32)vp[1]) << 16) |
+ (((u32)vp[2]) << 8) | (u32)vp[3];
+ tdb->flags |= (vertest==TDB_VERSION) ? TDB_BIGENDIAN : 0;
+ if (!rev)
+ tdb->flags &= ~TDB_CONVERT;
+ else {
+ tdb->flags |= TDB_CONVERT;
+ convert(&tdb->header, sizeof(tdb->header));
+ }
+ if (fstat(tdb->fd, &st) == -1)
+ goto fail;
+
+ /* Is it already in the open list? If so, fail. */
+ if (tdb_already_open(st.st_dev, st.st_ino)) {
+ TDB_LOG((tdb, 2, "tdb_open_ex: "
+ "%s (%d,%d) is already open in this process\n",
+ name, (int)st.st_dev, (int)st.st_ino));
+ errno = EBUSY;
+ goto fail;
+ }
+
+ if (!(tdb->name = (char *)strdup(name))) {
+ errno = ENOMEM;
+ goto fail;
+ }
+
+ tdb->map_size = st.st_size;
+ tdb->device = st.st_dev;
+ tdb->inode = st.st_ino;
+ tdb->locked = calloc(tdb->header.hash_size+1, sizeof(tdb->locked[0]));
+ if (!tdb->locked) {
+ TDB_LOG((tdb, 2, "tdb_open_ex: "
+ "failed to allocate lock structure for %s\n",
+ name));
+ errno = ENOMEM;
+ goto fail;
+ }
+ tdb_mmap(tdb);
+ if (locked) {
+ if (!tdb->read_only)
+ if (tdb_clear_spinlocks(tdb) != 0) {
+ TDB_LOG((tdb, 0, "tdb_open_ex: "
+ "failed to clear spinlock\n"));
+ goto fail;
+ }
+ if (tdb_brlock(tdb, ACTIVE_LOCK, F_UNLCK, F_SETLK, 0) == -1) {
+ TDB_LOG((tdb, 0, "tdb_open_ex: "
+ "failed to take ACTIVE_LOCK on %s: %s\n",
+ name, strerror(errno)));
+ goto fail;
+ }
+
+ }
+
+ /* We always need to do this if the CLEAR_IF_FIRST flag is set, even if
+ we didn't get the initial exclusive lock as we need to let all other
+ users know we're using it. */
+
+ if (tdb_flags & TDB_CLEAR_IF_FIRST) {
+ /* leave this lock in place to indicate it's in use */
+ if (tdb_brlock(tdb, ACTIVE_LOCK, F_RDLCK, F_SETLKW, 0) == -1)
+ goto fail;
+ }
+
+
+ internal:
+ /* Internal (memory-only) databases skip all the code above to
+ * do with disk files, and resume here by releasing their
+ * global lock and hooking into the active list. */
+ if (tdb_brlock(tdb, GLOBAL_LOCK, F_UNLCK, F_SETLKW, 0) == -1)
+ goto fail;
+ tdb->next = tdbs;
+ tdbs = tdb;
+ return tdb;
+
+ fail:
+ { int save_errno = errno;
+
+ if (!tdb)
+ return NULL;
+
+ if (tdb->map_ptr) {
+ if (tdb->flags & TDB_INTERNAL)
+ SAFE_FREE(tdb->map_ptr);
+ else
+ tdb_munmap(tdb);
+ }
+ SAFE_FREE(tdb->name);
+ if (tdb->fd != -1)
+ if (close(tdb->fd) != 0)
+ TDB_LOG((tdb, 5, "tdb_open_ex: failed to close tdb->fd on error!\n"));
+ SAFE_FREE(tdb->locked);
+ SAFE_FREE(tdb);
+ errno = save_errno;
+ return NULL;
+ }
+}
+
+/**
+ * Close a database.
+ *
+ * @returns -1 for error; 0 for success.
+ **/
+int tdb_close(TDB_CONTEXT *tdb)
+{
+ TDB_CONTEXT **i;
+ int ret = 0;
+
+ if (tdb->map_ptr) {
+ if (tdb->flags & TDB_INTERNAL)
+ SAFE_FREE(tdb->map_ptr);
+ else
+ tdb_munmap(tdb);
+ }
+ SAFE_FREE(tdb->name);
+ if (tdb->fd != -1)
+ ret = close(tdb->fd);
+ SAFE_FREE(tdb->locked);
+
+ /* Remove from contexts list */
+ for (i = &tdbs; *i; i = &(*i)->next) {
+ if (*i == tdb) {
+ *i = tdb->next;
+ break;
+ }
+ }
+
+ memset(tdb, 0, sizeof(*tdb));
+ SAFE_FREE(tdb);
+
+ return ret;
+}
+
+/* lock/unlock entire database */
+int tdb_lockall(TDB_CONTEXT *tdb)
+{
+ u32 i;
+
+ /* There are no locks on read-only dbs */
+ if (tdb->read_only)
+ return TDB_ERRCODE(TDB_ERR_LOCK, -1);
+ for (i = 0; i < tdb->header.hash_size; i++)
+ if (tdb_lock(tdb, i, F_WRLCK))
+ break;
+
+ /* If error, release locks we have... */
+ if (i < tdb->header.hash_size) {
+ u32 j;
+
+ for ( j = 0; j < i; j++)
+ tdb_unlock(tdb, j, F_WRLCK);
+ return TDB_ERRCODE(TDB_ERR_NOLOCK, -1);
+ }
+
+ return 0;
+}
+void tdb_unlockall(TDB_CONTEXT *tdb)
+{
+ u32 i;
+ for (i=0; i < tdb->header.hash_size; i++)
+ tdb_unlock(tdb, i, F_WRLCK);
+}
+
+/* lock/unlock one hash chain. This is meant to be used to reduce
+ contention - it cannot guarantee how many records will be locked */
+int tdb_chainlock(TDB_CONTEXT *tdb, TDB_DATA key)
+{
+ return tdb_lock(tdb, BUCKET(tdb->hash_fn(&key)), F_WRLCK);
+}
+
+int tdb_chainunlock(TDB_CONTEXT *tdb, TDB_DATA key)
+{
+ return tdb_unlock(tdb, BUCKET(tdb->hash_fn(&key)), F_WRLCK);
+}
+
+int tdb_chainlock_read(TDB_CONTEXT *tdb, TDB_DATA key)
+{
+ return tdb_lock(tdb, BUCKET(tdb->hash_fn(&key)), F_RDLCK);
+}
+
+int tdb_chainunlock_read(TDB_CONTEXT *tdb, TDB_DATA key)
+{
+ return tdb_unlock(tdb, BUCKET(tdb->hash_fn(&key)), F_RDLCK);
+}
+
+
+/* register a loging function */
+void tdb_logging_function(TDB_CONTEXT *tdb, void (*fn)(TDB_CONTEXT *, int , const char *, ...))
+{
+ tdb->log_fn = fn;
+}
+
+/* reopen a tdb - this can be used after a fork to ensure that we have an independent
+ seek pointer from our parent and to re-establish locks */
+int tdb_reopen(TDB_CONTEXT *tdb)
+{
+ struct stat st;
+
+ if (tdb->flags & TDB_INTERNAL)
+ return 0; /* Nothing to do. */
+ if (tdb_munmap(tdb) != 0) {
+ TDB_LOG((tdb, 0, "tdb_reopen: munmap failed (%s)\n", strerror(errno)));
+ goto fail;
+ }
+ if (close(tdb->fd) != 0)
+ TDB_LOG((tdb, 0, "tdb_reopen: WARNING closing tdb->fd failed!\n"));
+ tdb->fd = open(tdb->name, tdb->open_flags & ~(O_CREAT|O_TRUNC), 0);
+ if (tdb->fd == -1) {
+ TDB_LOG((tdb, 0, "tdb_reopen: open failed (%s)\n", strerror(errno)));
+ goto fail;
+ }
+ if ((tdb->flags & TDB_CLEAR_IF_FIRST) &&
+ (tdb_brlock(tdb, ACTIVE_LOCK, F_RDLCK, F_SETLKW, 0) == -1)) {
+ TDB_LOG((tdb, 0, "tdb_reopen: failed to obtain active lock\n"));
+ goto fail;
+ }
+ if (fstat(tdb->fd, &st) != 0) {
+ TDB_LOG((tdb, 0, "tdb_reopen: fstat failed (%s)\n", strerror(errno)));
+ goto fail;
+ }
+ if (st.st_ino != tdb->inode || st.st_dev != tdb->device) {
+ TDB_LOG((tdb, 0, "tdb_reopen: file dev/inode has changed!\n"));
+ goto fail;
+ }
+ tdb_mmap(tdb);
+
+ return 0;
+
+fail:
+ tdb_close(tdb);
+ return -1;
+}
+
+/* reopen all tdb's */
+int tdb_reopen_all(void)
+{
+ TDB_CONTEXT *tdb;
+
+ for (tdb=tdbs; tdb; tdb = tdb->next) {
+ if (tdb_reopen(tdb) != 0)
+ return -1;
+ }
+
+ return 0;
+}
Added: desktop/trunk/thunar/branches/upstream/current/tdb/tdb.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/tdb/tdb.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/tdb/tdb.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,161 @@
+/* $Id: tdb.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 1999-2004 Andrew Tridgell <tridge at linuxcare.com>
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * This file was originally part of the tdb library, which in turn is
+ * part of the Samba suite, a Unix SMB/CIFS implementation.
+ */
+
+#ifndef __TDB_H__
+#define __TDB_H__
+
+#include <tdb/tdbconfig.h>
+
+#include <signal.h>
+#include <unistd.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef PRINTF_ATTRIBUTE
+/** Use gcc attribute to check printf fns. a1 is the 1-based index of
+ * the parameter containing the format, and a2 the index of the first
+ * argument. Note that some gcc 2.x versions don't handle this
+ * properly **/
+#if (__GNUC__ >= 3) && (__GNUC_MINOR__ >= 1 )
+#define PRINTF_ATTRIBUTE(a1, a2) __attribute__ ((format (__printf__, a1, a2)))
+#else
+#define PRINTF_ATTRIBUTE(a1, a2)
+#endif
+#endif
+
+/* flags to tdb_store() */
+#define TDB_REPLACE 1
+#define TDB_INSERT 2
+#define TDB_MODIFY 3
+
+/* flags for tdb_open() */
+#define TDB_DEFAULT 0 /* just a readability place holder */
+#define TDB_CLEAR_IF_FIRST 1
+#define TDB_INTERNAL 2 /* don't store on disk */
+#define TDB_NOLOCK 4 /* don't do any locking */
+#define TDB_NOMMAP 8 /* don't use mmap */
+#define TDB_CONVERT 16 /* convert endian (internal use) */
+#define TDB_BIGENDIAN 32 /* header is big-endian (internal use) */
+
+#define TDB_ERRCODE(code, ret) ((tdb->ecode = (code)), ret)
+
+/* error codes */
+enum TDB_ERROR {TDB_SUCCESS=0, TDB_ERR_CORRUPT, TDB_ERR_IO, TDB_ERR_LOCK,
+ TDB_ERR_OOM, TDB_ERR_EXISTS, TDB_ERR_NOLOCK, TDB_ERR_LOCK_TIMEOUT,
+ TDB_ERR_NOEXIST};
+
+typedef struct {
+ char *dptr;
+ size_t dsize;
+} TDB_DATA;
+
+typedef u32 tdb_len;
+typedef u32 tdb_off;
+
+/* this is stored at the front of every database */
+struct tdb_header {
+ char magic_food[32]; /* for /etc/magic */
+ u32 version; /* version of the code */
+ u32 hash_size; /* number of hash entries */
+ tdb_off rwlocks;
+ tdb_off reserved[31];
+};
+
+struct tdb_lock_type {
+ u32 count;
+ u32 ltype;
+};
+
+struct tdb_traverse_lock {
+ struct tdb_traverse_lock *next;
+ u32 off;
+ u32 hash;
+};
+
+/* this is the context structure that is returned from a db open */
+typedef struct tdb_context {
+ char *name; /* the name of the database */
+ void *map_ptr; /* where it is currently mapped */
+ int fd; /* open file descriptor for the database */
+ tdb_len map_size; /* how much space has been mapped */
+ int read_only; /* opened read-only */
+ struct tdb_lock_type *locked; /* array of chain locks */
+ enum TDB_ERROR ecode; /* error code for last tdb error */
+ struct tdb_header header; /* a cached copy of the header */
+ u32 flags; /* the flags passed to tdb_open */
+ struct tdb_traverse_lock travlocks; /* current traversal locks */
+ struct tdb_context *next; /* all tdbs to avoid multiple opens */
+ dev_t device; /* uniquely identifies this tdb */
+ ino_t inode; /* uniquely identifies this tdb */
+ void (*log_fn)(struct tdb_context *tdb, int level, const char *, ...) PRINTF_ATTRIBUTE(3,4); /* logging function */
+ u32 (*hash_fn)(TDB_DATA *key);
+ int open_flags; /* flags used in the open - needed by reopen */
+} TDB_CONTEXT;
+
+typedef int (*tdb_traverse_func)(TDB_CONTEXT *, TDB_DATA, TDB_DATA, void *);
+typedef void (*tdb_log_func)(TDB_CONTEXT *, int , const char *, ...);
+typedef u32 (*tdb_hash_func)(TDB_DATA *key);
+
+TDB_CONTEXT *tdb_open(const char *name, int hash_size, int tdb_flags,
+ int open_flags, mode_t mode);
+TDB_CONTEXT *tdb_open_ex(const char *name, int hash_size, int tdb_flags,
+ int open_flags, mode_t mode,
+ tdb_log_func log_fn,
+ tdb_hash_func hash_fn);
+
+int tdb_reopen(TDB_CONTEXT *tdb);
+int tdb_reopen_all(void);
+void tdb_logging_function(TDB_CONTEXT *tdb, tdb_log_func);
+enum TDB_ERROR tdb_error(TDB_CONTEXT *tdb);
+const char *tdb_errorstr(TDB_CONTEXT *tdb);
+TDB_DATA tdb_fetch(TDB_CONTEXT *tdb, TDB_DATA key);
+int tdb_delete(TDB_CONTEXT *tdb, TDB_DATA key);
+int tdb_store(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA dbuf, int flag);
+int tdb_append(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA new_dbuf);
+int tdb_close(TDB_CONTEXT *tdb);
+TDB_DATA tdb_firstkey(TDB_CONTEXT *tdb);
+TDB_DATA tdb_nextkey(TDB_CONTEXT *tdb, TDB_DATA key);
+int tdb_traverse(TDB_CONTEXT *tdb, tdb_traverse_func fn, void *);
+int tdb_exists(TDB_CONTEXT *tdb, TDB_DATA key);
+int tdb_lockall(TDB_CONTEXT *tdb);
+void tdb_unlockall(TDB_CONTEXT *tdb);
+
+/* Low level locking functions: use with care */
+void tdb_set_lock_alarm(sig_atomic_t *palarm);
+int tdb_chainlock(TDB_CONTEXT *tdb, TDB_DATA key);
+int tdb_chainunlock(TDB_CONTEXT *tdb, TDB_DATA key);
+
+/* Debug functions. Not used in production. */
+void tdb_dump_all(TDB_CONTEXT *tdb);
+int tdb_printfreelist(TDB_CONTEXT *tdb);
+
+extern TDB_DATA tdb_null;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !__TDB_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/tdb/tdbconfig.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/tdb/tdbconfig.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/tdb/tdbconfig.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,34 @@
+/* $Id: tdbconfig.h.in 131 2005-11-04 15:15:34Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __TDBCONFIG_H__
+#define __TDBCONFIG_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef unsigned int u32;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !__TDBCONFIG_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/tdb/tdbconfig.h.in
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/tdb/tdbconfig.h.in 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/tdb/tdbconfig.h.in 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,34 @@
+/* $Id: tdbconfig.h.in 131 2005-11-04 15:15:34Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __TDBCONFIG_H__
+#define __TDBCONFIG_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef @TDB_U32_TYPE@ u32;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !__TDBCONFIG_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/tdb/tdbspeed.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/tdb/tdbspeed.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/tdb/tdbspeed.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,208 @@
+/* $Id: tdbspeed.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 1999-2004 Andrew Tridgell <tridge at linuxcare.com>
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * This file was originally part of the tdb library, which in turn is
+ * part of the Samba suite, a Unix SMB/CIFS implementation.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_MMAN_H
+#include <sys/mman.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#include <stdio.h>
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+
+#include <tdb/tdb.h>
+
+/* Turn off if error returns from TDB are sane (before v1.0.2) */
+#if 1
+#define TDB_ERROR(tdb, code) ((tdb)->ecode == code)
+#else
+#define TDB_ERROR(tdb, code) 1
+#endif
+/* a test program for tdb - the trivial database */
+
+static TDB_DATA *randdata, *randkeys;
+
+#define DELETE_PROB 7
+#define STORE_PROB 5
+
+static TDB_CONTEXT *db;
+
+struct timeval tp1,tp2;
+
+static void start_timer()
+{
+ gettimeofday(&tp1,NULL);
+}
+
+static double end_timer()
+{
+ gettimeofday(&tp2,NULL);
+ return((tp2.tv_sec - tp1.tv_sec) +
+ (tp2.tv_usec - tp1.tv_usec)*1.0e-6);
+}
+
+static void fatal(TDB_CONTEXT *tdb, const char *why)
+{
+ perror(why);
+ if (tdb) fprintf(stderr, "TDB: (%u)\n", tdb->ecode);
+ exit(1);
+}
+
+static char *randbuf(int len)
+{
+ char *buf;
+ int i;
+ buf = (char *)malloc(len+1);
+
+ for (i=0;i<len;i++) {
+ buf[i] = 'a' + (rand() % 26);
+ }
+ buf[i] = 0;
+ return buf;
+}
+
+static void addrec_db(int i)
+{
+ TDB_DATA key, data;
+
+ key.dptr = randkeys[i].dptr;
+ key.dsize = randkeys[i].dsize+1;
+
+ data.dptr = randdata[i].dptr;
+ data.dsize = randdata[i].dsize+1;
+
+ if (rand() % DELETE_PROB == 0) {
+ if (tdb_delete(db, key) == -1
+ && !TDB_ERROR(db, TDB_ERR_NOEXIST))
+ fatal(db, "tdb_delete failed");
+ } else if (rand() % STORE_PROB == 0) {
+ if (tdb_store(db, key, data, TDB_REPLACE) != 0) {
+ fatal(db, "tdb_store failed");
+ }
+ } else {
+ data = tdb_fetch(db, key);
+ if (data.dptr) free(data.dptr);
+ else {
+ if (db->ecode && !TDB_ERROR(db,TDB_ERR_NOEXIST))
+ fatal(db, "tdb_fetch failed");
+ }
+ }
+}
+
+struct db_size {
+ const char *name;
+ int size;
+} db_sizes[]
+= { { "default", 0 },
+ { "307", 307 },
+ { "512", 512 },
+ { "1024", 1024 },
+ { "4096", 4096 },
+ { "16384", 16384 },
+ { "65536", 65536 } };
+
+unsigned int num_loops[] /* 10,000 each */
+= { 1, 5, 25 };
+
+struct tdb_flag {
+ const char *name;
+ int flags;
+} tdb_flags[]
+= { { "normal", TDB_CLEAR_IF_FIRST },
+#ifdef TDB_CONVERT
+ { "byte-reversed", TDB_CLEAR_IF_FIRST|TDB_CONVERT }
+#endif
+};
+
+int main(int argc, char *argv[])
+{
+ int i, j, seed=0;
+ int k;
+
+ /* Precook random buffers */
+ randdata = malloc(10000 * sizeof(randdata[0]));
+ randkeys = malloc(10000 * sizeof(randkeys[0]));
+
+ srand(seed);
+ for (i=0;i<10000;i++) {
+ randkeys[i].dsize = 1 + (rand() % 4);
+ randdata[i].dsize = 1 + (rand() % 100);
+ randkeys[i].dptr = randbuf(randkeys[i].dsize);
+ randdata[i].dptr = randbuf(randdata[i].dsize);
+ }
+
+ for (k = 0; k < sizeof(tdb_flags)/sizeof(struct tdb_flag); k++) {
+ printf("Operations per second for %s database:\n",
+ tdb_flags[k].name);
+
+ printf("Hashsize: ");
+ for (i = 0; i < sizeof(db_sizes)/sizeof(struct db_size); i++)
+ printf("%-8s ", db_sizes[i].name);
+ printf("\n");
+
+ for (i = 0; i < sizeof(num_loops)/sizeof(int); i++) {
+ printf("%7u: ", num_loops[i]*10000);
+ for (j = 0; j < sizeof(db_sizes)/sizeof(struct db_size); j++) {
+ unsigned int l = 0, l2;
+ db = tdb_open("test.tdb", db_sizes[j].size,
+ tdb_flags[k].flags,
+ O_RDWR | O_CREAT | O_TRUNC, 0600);
+ srand(seed);
+ start_timer();
+ for (l2=0; l2 < num_loops[i]; l2++)
+ for (l=0;l<10000;l++) addrec_db(l);
+ printf("%-7u ", (int)(l*l2/end_timer()));
+ tdb_close(db);
+ }
+ printf("\n");
+ }
+ printf("\n");
+ }
+ return 0;
+}
Added: desktop/trunk/thunar/branches/upstream/current/tdb/tdbtool.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/tdb/tdbtool.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/tdb/tdbtool.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,514 @@
+/* $Id: tdbtool.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 1999-2000 Andrew Tridgell
+ * Copyright (c) 2000 Paul `Rusty' Russell
+ * Copyright (c) 2000 Jeremy Allison
+ * Copyright (c) 2001 Andrew Esh
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * This file was originally part of the tdb library, which in turn is
+ * part of the Samba suite, a Unix SMB/CIFS implementation.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_MMAN_H
+#include <sys/mman.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+
+#ifdef HAVE_CTYPE_H
+#include <ctype.h>
+#endif
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#include <stdio.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_TIME_H
+#include <time.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <tdb/tdb.h>
+
+/* a tdb tool for manipulating a tdb database */
+
+#define FSTRING_LEN 256
+typedef char fstring[FSTRING_LEN];
+
+typedef struct connections_key {
+ pid_t pid;
+ int cnum;
+ fstring name;
+} connections_key;
+
+typedef struct connections_data {
+ int magic;
+ pid_t pid;
+ int cnum;
+ uid_t uid;
+ gid_t gid;
+ char name[24];
+ char addr[24];
+ char machine[128];
+ time_t start;
+} connections_data;
+
+static TDB_CONTEXT *tdb;
+FILE *pDumpFile;
+
+static int print_rec(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA dbuf, void *state);
+
+static char *get_token(int startover)
+{
+ static char tmp[1024];
+ static char *cont = NULL;
+ char *insert, *start;
+ char *k = strtok(NULL, " ");
+
+ if (!k)
+ return NULL;
+
+ if (startover)
+ start = tmp;
+ else
+ start = cont;
+
+ strcpy(start, k);
+ insert = start + strlen(start) - 1;
+ while (*insert == '\\') {
+ *insert++ = ' ';
+ k = strtok(NULL, " ");
+ if (!k)
+ break;
+ strcpy(insert, k);
+ insert = start + strlen(start) - 1;
+ }
+
+ /* Get ready for next call */
+ cont = start + strlen(start) + 1;
+ return start;
+}
+
+static int open_dump_file()
+{
+ int retval = 0;
+ char *tok = get_token(0);
+ if (!tok) {
+ pDumpFile = stdout;
+ } else {
+ pDumpFile = fopen(tok, "w");
+
+ if (pDumpFile == NULL) {
+ printf("File Open Failed! -- %s", tok);
+ retval = 1;
+ } else {
+ printf("Writing to file: %s\n", tok);
+ }
+ }
+ return(retval);
+}
+
+static void close_dump_file()
+{
+ if(pDumpFile != NULL && pDumpFile != stdout) {
+ fclose(pDumpFile);
+ }
+}
+
+ static void print_asc(unsigned char *buf,int len)
+{
+ int i;
+
+ /* We're probably printing ASCII strings so don't try to display
+ the trailing NULL character. */
+
+ if (buf[len - 1] == 0)
+ len--;
+
+ for (i=0;i<len;i++)
+ fprintf(pDumpFile,"%c",isprint(buf[i])?buf[i]:'.');
+}
+
+static void print_data(unsigned char *buf,int len)
+{
+ int i=0;
+ if (len<=0) return;
+ fprintf(pDumpFile,"[%03X] ",i);
+ for (i=0;i<len;) {
+ fprintf(pDumpFile,"%02X ",(int)buf[i]);
+ i++;
+ if (i%8 == 0) fprintf(pDumpFile," ");
+ if (i%16 == 0) {
+ print_asc(&buf[i-16],8); fprintf(pDumpFile," ");
+ print_asc(&buf[i-8],8); fprintf(pDumpFile,"\n");
+ if (i<len) fprintf(pDumpFile,"[%03X] ",i);
+ }
+ }
+ if (i%16) {
+ int n;
+
+ n = 16 - (i%16);
+ fprintf(pDumpFile," ");
+ if (n>8) fprintf(pDumpFile," ");
+ while (n--) fprintf(pDumpFile," ");
+
+ n = i%16;
+ if (n > 8) n = 8;
+ print_asc(&buf[i-(i%16)],n); fprintf(pDumpFile," ");
+ n = (i%16) - n;
+ if (n>0) print_asc(&buf[i-n],n);
+ fprintf(pDumpFile,"\n");
+ }
+}
+
+static void help(void)
+{
+ printf(
+"tdbtool:\n"
+" create dbname : create a database\n"
+" open dbname : open an existing database\n"
+" erase : erase the database\n"
+" dump dumpname : dump the database as strings\n"
+" insert key data : insert a record\n"
+" store key data : store a record (replace)\n"
+" show key : show a record by key\n"
+" delete key : delete a record by key\n"
+" list : print the database hash table and freelist\n"
+" free : print the database freelist\n"
+" 1 | first : print the first record\n"
+" n | next : print the next record\n"
+" q | quit : terminate\n"
+" \\n : repeat 'next' command\n");
+}
+
+static void terror(char *why)
+{
+ printf("%s\n", why);
+}
+
+static void create_tdb(void)
+{
+ char *tok = get_token(1);
+ if (!tok) {
+ help();
+ return;
+ }
+ if (tdb) tdb_close(tdb);
+ tdb = tdb_open(tok, 0, TDB_CLEAR_IF_FIRST,
+ O_RDWR | O_CREAT | O_TRUNC, 0600);
+ if (!tdb) {
+ printf("Could not create %s: %s\n", tok, strerror(errno));
+ }
+}
+
+static void open_tdb(void)
+{
+ char *tok = get_token(1);
+ if (!tok) {
+ help();
+ return;
+ }
+ if (tdb) tdb_close(tdb);
+ tdb = tdb_open(tok, 0, 0, O_RDWR, 0600);
+ if (!tdb) {
+ printf("Could not open %s: %s\n", tok, strerror(errno));
+ }
+}
+
+static void insert_tdb(void)
+{
+ char *k = get_token(1);
+ char *d = get_token(0);
+ TDB_DATA key, dbuf;
+
+ if (!k || !d) {
+ help();
+ return;
+ }
+
+ key.dptr = k;
+ key.dsize = strlen(k)+1;
+ dbuf.dptr = d;
+ dbuf.dsize = strlen(d)+1;
+
+ if (tdb_store(tdb, key, dbuf, TDB_INSERT) == -1) {
+ terror("insert failed");
+ }
+}
+
+static void store_tdb(void)
+{
+ char *k = get_token(1);
+ char *d = get_token(0);
+ TDB_DATA key, dbuf;
+
+ if (!k || !d) {
+ help();
+ return;
+ }
+
+ key.dptr = k;
+ key.dsize = strlen(k)+1;
+ dbuf.dptr = d;
+ dbuf.dsize = strlen(d)+1;
+
+ printf("Storing key:\n");
+ print_rec(tdb, key, dbuf, NULL);
+
+ if (tdb_store(tdb, key, dbuf, TDB_REPLACE) == -1) {
+ terror("store failed");
+ }
+}
+
+static void show_tdb(void)
+{
+ char *k = get_token(1);
+ TDB_DATA key, dbuf;
+
+ if (!k) {
+ help();
+ return;
+ }
+
+ key.dptr = k;
+ key.dsize = strlen(k)+1;
+
+ dbuf = tdb_fetch(tdb, key);
+ if (!dbuf.dptr) {
+ terror("fetch failed");
+ return;
+ }
+ /* printf("%s : %*.*s\n", k, (int)dbuf.dsize, (int)dbuf.dsize, dbuf.dptr); */
+ print_rec(tdb, key, dbuf, NULL);
+}
+
+static void delete_tdb(void)
+{
+ char *k = get_token(1);
+ TDB_DATA key;
+
+ if (!k) {
+ help();
+ return;
+ }
+
+ key.dptr = k;
+ key.dsize = strlen(k)+1;
+
+ if (tdb_delete(tdb, key) != 0) {
+ terror("delete failed");
+ }
+}
+
+static int print_rec(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA dbuf, void *state)
+{
+ fprintf(pDumpFile,"\nkey %d bytes\n", key.dsize);
+ print_asc((unsigned char*)key.dptr, key.dsize);
+ fprintf(pDumpFile,"\ndata %d bytes\n", dbuf.dsize);
+ print_data((unsigned char*)dbuf.dptr, dbuf.dsize);
+ return 0;
+}
+
+static int print_key(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA dbuf, void *state)
+{
+ print_asc((unsigned char*)key.dptr, key.dsize);
+ printf("\n");
+ return 0;
+}
+
+static int total_bytes;
+
+static int traverse_fn(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA dbuf, void *state)
+{
+ total_bytes += dbuf.dsize;
+ return 0;
+}
+
+static void info_tdb(void)
+{
+ int count;
+ total_bytes = 0;
+ if ((count = tdb_traverse(tdb, traverse_fn, NULL) == -1))
+ printf("Error = %s\n", tdb_errorstr(tdb));
+ else
+ printf("%d records totalling %d bytes\n", count, total_bytes);
+}
+
+static char *tdb_getline(char *prompt)
+{
+ static char line[1024];
+ char *p;
+ fputs(prompt, stdout);
+ line[0] = 0;
+ p = fgets(line, sizeof(line)-1, stdin);
+ if (p) p = strchr(p, '\n');
+ if (p) *p = 0;
+ pDumpFile = stdout;
+ return p?line:NULL;
+}
+
+static int do_delete_fn(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA dbuf,
+ void *state)
+{
+ return tdb_delete(tdb, key);
+}
+
+static void first_record(TDB_CONTEXT *tdb, TDB_DATA *pkey)
+{
+ TDB_DATA dbuf;
+ *pkey = tdb_firstkey(tdb);
+
+ dbuf = tdb_fetch(tdb, *pkey);
+ if (!dbuf.dptr) terror("fetch failed");
+ /* printf("%s : %*.*s\n", k, (int)dbuf.dsize, (int)dbuf.dsize, dbuf.dptr); */
+ print_rec(tdb, *pkey, dbuf, NULL);
+}
+
+static void next_record(TDB_CONTEXT *tdb, TDB_DATA *pkey)
+{
+ TDB_DATA dbuf;
+ *pkey = tdb_nextkey(tdb, *pkey);
+
+ dbuf = tdb_fetch(tdb, *pkey);
+ if (!dbuf.dptr)
+ terror("fetch failed");
+ else
+ /* printf("%s : %*.*s\n", k, (int)dbuf.dsize, (int)dbuf.dsize, dbuf.dptr); */
+ print_rec(tdb, *pkey, dbuf, NULL);
+}
+
+int main(int argc, char *argv[])
+{
+ int bIterate = 0;
+ char *line;
+ char *tok;
+ TDB_DATA iterate_kbuf;
+
+ if (argv[1]) {
+ static char tmp[1024];
+ sprintf(tmp, "open %s", argv[1]);
+ tok=strtok(tmp," ");
+ open_tdb();
+ }
+
+ while ((line = tdb_getline("tdb> "))) {
+
+ /* Shell command */
+
+ if (line[0] == '!') {
+ system(line + 1);
+ continue;
+ }
+
+ if ((tok = strtok(line," "))==NULL) {
+ if (bIterate)
+ next_record(tdb, &iterate_kbuf);
+ continue;
+ }
+ if (strcmp(tok,"create") == 0) {
+ bIterate = 0;
+ create_tdb();
+ continue;
+ } else if (strcmp(tok,"open") == 0) {
+ open_tdb();
+ continue;
+ } else if ((strcmp(tok, "q") == 0) ||
+ (strcmp(tok, "quit") == 0)) {
+ break;
+ }
+
+ /* all the rest require a open database */
+ if (!tdb) {
+ bIterate = 0;
+ terror("database not open");
+ help();
+ continue;
+ }
+
+ if (strcmp(tok,"insert") == 0) {
+ bIterate = 0;
+ insert_tdb();
+ } else if (strcmp(tok,"store") == 0) {
+ bIterate = 0;
+ store_tdb();
+ } else if (strcmp(tok,"show") == 0) {
+ bIterate = 0;
+ show_tdb();
+ } else if (strcmp(tok,"erase") == 0) {
+ bIterate = 0;
+ tdb_traverse(tdb, do_delete_fn, NULL);
+ } else if (strcmp(tok,"delete") == 0) {
+ bIterate = 0;
+ delete_tdb();
+ } else if (strcmp(tok,"dump") == 0) {
+ bIterate = 0;
+ if(open_dump_file() == 0) { //open file
+ tdb_traverse(tdb, print_rec, NULL);
+ close_dump_file(); //close file
+ }
+ pDumpFile = stdout;
+ } else if (strcmp(tok,"list") == 0) {
+ tdb_dump_all(tdb);
+ } else if (strcmp(tok, "free") == 0) {
+ tdb_printfreelist(tdb);
+ } else if (strcmp(tok,"info") == 0) {
+ info_tdb();
+ } else if ( (strcmp(tok, "1") == 0) ||
+ (strcmp(tok, "first") == 0)) {
+ bIterate = 1;
+ first_record(tdb, &iterate_kbuf);
+ } else if ((strcmp(tok, "n") == 0) ||
+ (strcmp(tok, "next") == 0)) {
+ next_record(tdb, &iterate_kbuf);
+ } else if ((strcmp(tok, "keys") == 0)) {
+ bIterate = 0;
+ tdb_traverse(tdb, print_key, NULL);
+ } else {
+ help();
+ }
+ }
+
+ if (tdb) tdb_close(tdb);
+
+ return 0;
+}
Added: desktop/trunk/thunar/branches/upstream/current/tdb/tdbtorture.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/tdb/tdbtorture.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/tdb/tdbtorture.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,278 @@
+/* $Id: tdbtorture.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 1999-2004 Andrew Tridgell <tridge at linuxcare.com>
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * This file was originally part of the tdb library, which in turn is
+ * part of the Samba suite, a Unix SMB/CIFS implementation.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_MMAN_h
+#include <sys/mman.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#ifdef HAVE_SYS_WAIT_H
+#include <sys/wait.h>
+#endif
+
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#ifdef HAVE_STDARG_H
+#include <stdarg.h>
+#endif
+#include <stdio.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_TIME_H
+#include <time.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <tdb/tdb.h>
+
+/* this tests tdb by doing lots of ops from several simultaneous
+ writers - that stresses the locking code. Build with TDB_DEBUG=1
+ for best effect */
+
+
+
+#define REOPEN_PROB 30
+#define DELETE_PROB 8
+#define STORE_PROB 4
+#define APPEND_PROB 6
+#define LOCKSTORE_PROB 0
+#define TRAVERSE_PROB 20
+#define CULL_PROB 100
+#define KEYLEN 3
+#define DATALEN 100
+#define LOCKLEN 20
+
+static TDB_CONTEXT *db;
+
+static void tdb_log(TDB_CONTEXT *tdb, int level, const char *format, ...)
+{
+ va_list ap;
+
+ va_start(ap, format);
+ vfprintf(stdout, format, ap);
+ va_end(ap);
+ fflush(stdout);
+#if 0
+ {
+ char *ptr;
+ asprintf(&ptr,"xterm -e gdb /proc/%d/exe %d", getpid(), getpid());
+ system(ptr);
+ free(ptr);
+ }
+#endif
+}
+
+static void fatal(char *why)
+{
+ perror(why);
+ exit(1);
+}
+
+static char *randbuf(int len)
+{
+ char *buf;
+ int i;
+ buf = (char *)malloc(len+1);
+
+ for (i=0;i<len;i++) {
+ buf[i] = 'a' + (rand() % 26);
+ }
+ buf[i] = 0;
+ return buf;
+}
+
+static int cull_traverse(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA dbuf,
+ void *state)
+{
+ if (random() % CULL_PROB == 0) {
+ tdb_delete(tdb, key);
+ }
+ return 0;
+}
+
+static void addrec_db(void)
+{
+ int klen, dlen, slen;
+ char *k, *d, *s;
+ TDB_DATA key, data, lockkey;
+
+ klen = 1 + (rand() % KEYLEN);
+ dlen = 1 + (rand() % DATALEN);
+ slen = 1 + (rand() % LOCKLEN);
+
+ k = randbuf(klen);
+ d = randbuf(dlen);
+ s = randbuf(slen);
+
+ key.dptr = k;
+ key.dsize = klen+1;
+
+ data.dptr = d;
+ data.dsize = dlen+1;
+
+ lockkey.dptr = s;
+ lockkey.dsize = slen+1;
+
+#if REOPEN_PROB
+ if (random() % REOPEN_PROB == 0) {
+ tdb_reopen_all();
+ goto next;
+ }
+#endif
+
+#if DELETE_PROB
+ if (random() % DELETE_PROB == 0) {
+ tdb_delete(db, key);
+ goto next;
+ }
+#endif
+
+#if STORE_PROB
+ if (random() % STORE_PROB == 0) {
+ if (tdb_store(db, key, data, TDB_REPLACE) != 0) {
+ fatal("tdb_store failed");
+ }
+ goto next;
+ }
+#endif
+
+#if APPEND_PROB
+ if (random() % APPEND_PROB == 0) {
+ if (tdb_append(db, key, data) != 0) {
+ fatal("tdb_append failed");
+ }
+ goto next;
+ }
+#endif
+
+#if LOCKSTORE_PROB
+ if (random() % LOCKSTORE_PROB == 0) {
+ tdb_chainlock(db, lockkey);
+ data = tdb_fetch(db, key);
+ if (tdb_store(db, key, data, TDB_REPLACE) != 0) {
+ fatal("tdb_store failed");
+ }
+ if (data.dptr) free(data.dptr);
+ tdb_chainunlock(db, lockkey);
+ goto next;
+ }
+#endif
+
+#if TRAVERSE_PROB
+ if (random() % TRAVERSE_PROB == 0) {
+ tdb_traverse(db, cull_traverse, NULL);
+ goto next;
+ }
+#endif
+
+ data = tdb_fetch(db, key);
+ if (data.dptr) free(data.dptr);
+
+next:
+ free(k);
+ free(d);
+ free(s);
+}
+
+static int traverse_fn(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA dbuf,
+ void *state)
+{
+ tdb_delete(tdb, key);
+ return 0;
+}
+
+#ifndef NPROC
+#define NPROC 6
+#endif
+
+#ifndef NLOOPS
+#define NLOOPS 200000
+#endif
+
+int main(int argc, char *argv[])
+{
+ int i, seed=0;
+ int loops = NLOOPS;
+ pid_t pids[NPROC];
+
+ pids[0] = getpid();
+
+ for (i=0;i<NPROC-1;i++) {
+ if ((pids[i+1]=fork()) == 0) break;
+ }
+
+ db = tdb_open("torture.tdb", 2, TDB_CLEAR_IF_FIRST,
+ O_RDWR | O_CREAT, 0600);
+ if (!db) {
+ fatal("db open failed");
+ }
+ tdb_logging_function(db, tdb_log);
+
+ srand(seed + getpid());
+ srandom(seed + getpid() + time(NULL));
+ for (i=0;i<loops;i++) addrec_db();
+
+ tdb_traverse(db, NULL, NULL);
+ tdb_traverse(db, traverse_fn, NULL);
+ tdb_traverse(db, traverse_fn, NULL);
+
+ tdb_close(db);
+
+ if (getpid() == pids[0]) {
+ for (i=0;i<NPROC-1;i++) {
+ int status;
+ if (waitpid(pids[i+1], &status, 0) != pids[i+1]) {
+ printf("failed to wait for %d\n",
+ (int)pids[i+1]);
+ exit(1);
+ }
+ if (WEXITSTATUS(status) != 0) {
+ printf("child %d exited with status %d\n",
+ (int)pids[i+1], WEXITSTATUS(status));
+ exit(1);
+ }
+ }
+ printf("OK\n");
+ }
+
+ return 0;
+}
Added: desktop/trunk/thunar/branches/upstream/current/tests/Makefile.am
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/tests/Makefile.am 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/tests/Makefile.am 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,48 @@
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+
+SUBDIRS = \
+ data
+
+INCLUDES = \
+ -I$(top_srcdir) \
+ -DEXO_API_SUBJECT_TO_CHANGE \
+ -DEXO_DISABLE_DEPRECATED \
+ -DG_LOG_DOMAIN=\"tests\" \
+ $(EXO_CFLAGS) \
+ $(GTHREAD_CFLAGS)
+
+TESTS_ENVIRONMENT = \
+ PATH_FSTAB=$(srcdir)/data/test-thunar-vfs-volume-bsd.fstab
+
+TESTS = \
+ test-thunar-vfs-path \
+ test-thunar-vfs-volume-bsd
+
+check_PROGRAMS = \
+ test-thunar-vfs-path \
+ test-thunar-vfs-volume-bsd
+
+test_thunar_vfs_path_SOURCES = \
+ test-thunar-vfs-path.c
+
+test_thunar_vfs_path_DEPENDENCIES = \
+ $(top_builddir)/thunar-vfs/libthunar-vfs-$(THUNAR_VERSION_API).la
+
+test_thunar_vfs_path_LDADD = \
+ $(GTHREAD_LIBS) \
+ $(top_builddir)/thunar-vfs/libthunar-vfs-$(THUNAR_VERSION_API).la
+
+test_thunar_vfs_volume_bsd_SOURCES = \
+ test-thunar-vfs-volume-bsd.c
+
+test_thunar_vfs_volume_bsd_DEPENDENCIES = \
+ $(top_builddir)/thunar-vfs/libthunar-vfs-$(THUNAR_VERSION_API).la
+
+test_thunar_vfs_volume_bsd_LDADD = \
+ $(GTHREAD_LIBS) \
+ $(top_builddir)/thunar-vfs/libthunar-vfs-$(THUNAR_VERSION_API).la
+
+clean-local:
+ rm -f *.core core core.*
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
Added: desktop/trunk/thunar/branches/upstream/current/tests/Makefile.in
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/tests/Makefile.in 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/tests/Makefile.in 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,759 @@
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004 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.
+
+ at SET_MAKE@
+
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+SOURCES = $(test_thunar_vfs_path_SOURCES) $(test_thunar_vfs_volume_bsd_SOURCES)
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+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@
+target_triplet = @target@
+check_PROGRAMS = test-thunar-vfs-path$(EXEEXT) \
+ test-thunar-vfs-volume-bsd$(EXEEXT)
+subdir = tests
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+am_test_thunar_vfs_path_OBJECTS = test-thunar-vfs-path.$(OBJEXT)
+test_thunar_vfs_path_OBJECTS = $(am_test_thunar_vfs_path_OBJECTS)
+am__DEPENDENCIES_1 =
+am_test_thunar_vfs_volume_bsd_OBJECTS = \
+ test-thunar-vfs-volume-bsd.$(OBJEXT)
+test_thunar_vfs_volume_bsd_OBJECTS = \
+ $(am_test_thunar_vfs_volume_bsd_OBJECTS)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link --tag=CC $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(test_thunar_vfs_path_SOURCES) \
+ $(test_thunar_vfs_volume_bsd_SOURCES)
+DIST_SOURCES = $(test_thunar_vfs_path_SOURCES) \
+ $(test_thunar_vfs_volume_bsd_SOURCES)
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-exec-recursive install-info-recursive \
+ install-recursive installcheck-recursive installdirs-recursive \
+ pdf-recursive ps-recursive uninstall-info-recursive \
+ uninstall-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CAIRO_REQUIRED_VERSION = @CAIRO_REQUIRED_VERSION@
+CAIRO_VERSION = @CAIRO_VERSION@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@
+ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@
+EXEEXT = @EXEEXT@
+EXO_CFLAGS = @EXO_CFLAGS@
+EXO_LIBS = @EXO_LIBS@
+EXO_REQUIRED_VERSION = @EXO_REQUIRED_VERSION@
+EXO_VERSION = @EXO_VERSION@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GCONF_CFLAGS = @GCONF_CFLAGS@
+GCONF_LIBS = @GCONF_LIBS@
+GCONF_REQUIRED_VERSION = @GCONF_REQUIRED_VERSION@
+GCONF_VERSION = @GCONF_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_REQUIRED_VERSION = @GLIB_REQUIRED_VERSION@
+GLIB_VERSION = @GLIB_VERSION@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTHREAD_REQUIRED_VERSION = @GTHREAD_REQUIRED_VERSION@
+GTHREAD_VERSION = @GTHREAD_VERSION@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+GTK_LIBS = @GTK_LIBS@
+GTK_REQUIRED_VERSION = @GTK_REQUIRED_VERSION@
+GTK_VERSION = @GTK_VERSION@
+HAVE_CAIRO_FALSE = @HAVE_CAIRO_FALSE@
+HAVE_CAIRO_TRUE = @HAVE_CAIRO_TRUE@
+HAVE_GCONF_FALSE = @HAVE_GCONF_FALSE@
+HAVE_GCONF_TRUE = @HAVE_GCONF_TRUE@
+HAVE_GNUC_VISIBILITY_FALSE = @HAVE_GNUC_VISIBILITY_FALSE@
+HAVE_GNUC_VISIBILITY_TRUE = @HAVE_GNUC_VISIBILITY_TRUE@
+HAVE_LIBSTARTUP_NOTIFICATION_FALSE = @HAVE_LIBSTARTUP_NOTIFICATION_FALSE@
+HAVE_LIBSTARTUP_NOTIFICATION_TRUE = @HAVE_LIBSTARTUP_NOTIFICATION_TRUE@
+HTML_DIR = @HTML_DIR@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LIBFAM_CFLAGS = @LIBFAM_CFLAGS@
+LIBFAM_LIBS = @LIBFAM_LIBS@
+LIBFAM_REQUIRED_VERSION = @LIBFAM_REQUIRED_VERSION@
+LIBFAM_VERSION = @LIBFAM_VERSION@
+LIBJPEG_CFLAGS = @LIBJPEG_CFLAGS@
+LIBJPEG_LIBS = @LIBJPEG_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
+LIBPNG_LIBS = @LIBPNG_LIBS@
+LIBPNG_REQUIRED_VERSION = @LIBPNG_REQUIRED_VERSION@
+LIBPNG_VERSION = @LIBPNG_VERSION@
+LIBS = @LIBS@
+LIBSTARTUP_NOTIFICATION_CFLAGS = @LIBSTARTUP_NOTIFICATION_CFLAGS@
+LIBSTARTUP_NOTIFICATION_LIBS = @LIBSTARTUP_NOTIFICATION_LIBS@
+LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION = @LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION@
+LIBSTARTUP_NOTIFICATION_VERSION = @LIBSTARTUP_NOTIFICATION_VERSION@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_CFLAGS = @PLATFORM_CFLAGS@
+PLATFORM_CPPFLAGS = @PLATFORM_CPPFLAGS@
+PLATFORM_LDFLAGS = @PLATFORM_LDFLAGS@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TDB_U32_TYPE = @TDB_U32_TYPE@
+THUNAR_VERINFO = @THUNAR_VERINFO@
+THUNAR_VERSION_API = @THUNAR_VERSION_API@
+THUNAR_VERSION_MAJOR = @THUNAR_VERSION_MAJOR@
+THUNAR_VERSION_MICRO = @THUNAR_VERSION_MICRO@
+THUNAR_VERSION_MINOR = @THUNAR_VERSION_MINOR@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_ARGS = @XGETTEXT_ARGS@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+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@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+SUBDIRS = \
+ data
+
+INCLUDES = \
+ -I$(top_srcdir) \
+ -DEXO_API_SUBJECT_TO_CHANGE \
+ -DEXO_DISABLE_DEPRECATED \
+ -DG_LOG_DOMAIN=\"tests\" \
+ $(EXO_CFLAGS) \
+ $(GTHREAD_CFLAGS)
+
+TESTS_ENVIRONMENT = \
+ PATH_FSTAB=$(srcdir)/data/test-thunar-vfs-volume-bsd.fstab
+
+TESTS = \
+ test-thunar-vfs-path \
+ test-thunar-vfs-volume-bsd
+
+test_thunar_vfs_path_SOURCES = \
+ test-thunar-vfs-path.c
+
+test_thunar_vfs_path_DEPENDENCIES = \
+ $(top_builddir)/thunar-vfs/libthunar-vfs-$(THUNAR_VERSION_API).la
+
+test_thunar_vfs_path_LDADD = \
+ $(GTHREAD_LIBS) \
+ $(top_builddir)/thunar-vfs/libthunar-vfs-$(THUNAR_VERSION_API).la
+
+test_thunar_vfs_volume_bsd_SOURCES = \
+ test-thunar-vfs-volume-bsd.c
+
+test_thunar_vfs_volume_bsd_DEPENDENCIES = \
+ $(top_builddir)/thunar-vfs/libthunar-vfs-$(THUNAR_VERSION_API).la
+
+test_thunar_vfs_volume_bsd_LDADD = \
+ $(GTHREAD_LIBS) \
+ $(top_builddir)/thunar-vfs/libthunar-vfs-$(THUNAR_VERSION_API).la
+
+all: all-recursive
+
+.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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/Makefile
+.PRECIOUS: 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
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+test-thunar-vfs-path$(EXEEXT): $(test_thunar_vfs_path_OBJECTS) $(test_thunar_vfs_path_DEPENDENCIES)
+ @rm -f test-thunar-vfs-path$(EXEEXT)
+ $(LINK) $(test_thunar_vfs_path_LDFLAGS) $(test_thunar_vfs_path_OBJECTS) $(test_thunar_vfs_path_LDADD) $(LIBS)
+test-thunar-vfs-volume-bsd$(EXEEXT): $(test_thunar_vfs_volume_bsd_OBJECTS) $(test_thunar_vfs_volume_bsd_DEPENDENCIES)
+ @rm -f test-thunar-vfs-volume-bsd$(EXEEXT)
+ $(LINK) $(test_thunar_vfs_volume_bsd_LDFLAGS) $(test_thunar_vfs_volume_bsd_OBJECTS) $(test_thunar_vfs_volume_bsd_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test-thunar-vfs-path.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test-thunar-vfs-volume-bsd.Po at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+
+# 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.
+$(RECURSIVE_TARGETS):
+ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; 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; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+ @set fnord $$MAKEFLAGS; amf=$$2; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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 || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list='$(TESTS)'; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *" $$tst "*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *" $$tst "*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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 \
+ test -d "$(distdir)/$$subdir" \
+ || $(mkdir_p) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-checkPROGRAMS clean-generic clean-libtool clean-local \
+ mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-libtool distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+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-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-TESTS \
+ check-am clean clean-checkPROGRAMS clean-generic clean-libtool \
+ clean-local clean-recursive ctags ctags-recursive distclean \
+ distclean-compile distclean-generic distclean-libtool \
+ distclean-recursive distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-exec install-exec-am install-info \
+ install-info-am install-man install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic maintainer-clean-recursive \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \
+ tags tags-recursive uninstall uninstall-am uninstall-info-am
+
+
+clean-local:
+ rm -f *.core core core.*
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
+# 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:
Added: desktop/trunk/thunar/branches/upstream/current/tests/data/Makefile.am
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/tests/data/Makefile.am 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/tests/data/Makefile.am 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,9 @@
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+
+noinst_DATA = \
+ test-thunar-vfs-volume-bsd.fstab
+
+EXTRA_DIST = \
+ $(noinst_DATA)
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
Added: desktop/trunk/thunar/branches/upstream/current/tests/data/Makefile.in
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/tests/data/Makefile.in 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/tests/data/Makefile.in 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,433 @@
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004 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.
+
+ at SET_MAKE@
+
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+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@
+target_triplet = @target@
+subdir = tests/data
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DATA = $(noinst_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CAIRO_REQUIRED_VERSION = @CAIRO_REQUIRED_VERSION@
+CAIRO_VERSION = @CAIRO_VERSION@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@
+ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@
+EXEEXT = @EXEEXT@
+EXO_CFLAGS = @EXO_CFLAGS@
+EXO_LIBS = @EXO_LIBS@
+EXO_REQUIRED_VERSION = @EXO_REQUIRED_VERSION@
+EXO_VERSION = @EXO_VERSION@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GCONF_CFLAGS = @GCONF_CFLAGS@
+GCONF_LIBS = @GCONF_LIBS@
+GCONF_REQUIRED_VERSION = @GCONF_REQUIRED_VERSION@
+GCONF_VERSION = @GCONF_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_REQUIRED_VERSION = @GLIB_REQUIRED_VERSION@
+GLIB_VERSION = @GLIB_VERSION@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTHREAD_REQUIRED_VERSION = @GTHREAD_REQUIRED_VERSION@
+GTHREAD_VERSION = @GTHREAD_VERSION@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+GTK_LIBS = @GTK_LIBS@
+GTK_REQUIRED_VERSION = @GTK_REQUIRED_VERSION@
+GTK_VERSION = @GTK_VERSION@
+HAVE_CAIRO_FALSE = @HAVE_CAIRO_FALSE@
+HAVE_CAIRO_TRUE = @HAVE_CAIRO_TRUE@
+HAVE_GCONF_FALSE = @HAVE_GCONF_FALSE@
+HAVE_GCONF_TRUE = @HAVE_GCONF_TRUE@
+HAVE_GNUC_VISIBILITY_FALSE = @HAVE_GNUC_VISIBILITY_FALSE@
+HAVE_GNUC_VISIBILITY_TRUE = @HAVE_GNUC_VISIBILITY_TRUE@
+HAVE_LIBSTARTUP_NOTIFICATION_FALSE = @HAVE_LIBSTARTUP_NOTIFICATION_FALSE@
+HAVE_LIBSTARTUP_NOTIFICATION_TRUE = @HAVE_LIBSTARTUP_NOTIFICATION_TRUE@
+HTML_DIR = @HTML_DIR@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LIBFAM_CFLAGS = @LIBFAM_CFLAGS@
+LIBFAM_LIBS = @LIBFAM_LIBS@
+LIBFAM_REQUIRED_VERSION = @LIBFAM_REQUIRED_VERSION@
+LIBFAM_VERSION = @LIBFAM_VERSION@
+LIBJPEG_CFLAGS = @LIBJPEG_CFLAGS@
+LIBJPEG_LIBS = @LIBJPEG_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
+LIBPNG_LIBS = @LIBPNG_LIBS@
+LIBPNG_REQUIRED_VERSION = @LIBPNG_REQUIRED_VERSION@
+LIBPNG_VERSION = @LIBPNG_VERSION@
+LIBS = @LIBS@
+LIBSTARTUP_NOTIFICATION_CFLAGS = @LIBSTARTUP_NOTIFICATION_CFLAGS@
+LIBSTARTUP_NOTIFICATION_LIBS = @LIBSTARTUP_NOTIFICATION_LIBS@
+LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION = @LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION@
+LIBSTARTUP_NOTIFICATION_VERSION = @LIBSTARTUP_NOTIFICATION_VERSION@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_CFLAGS = @PLATFORM_CFLAGS@
+PLATFORM_CPPFLAGS = @PLATFORM_CPPFLAGS@
+PLATFORM_LDFLAGS = @PLATFORM_LDFLAGS@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TDB_U32_TYPE = @TDB_U32_TYPE@
+THUNAR_VERINFO = @THUNAR_VERINFO@
+THUNAR_VERSION_API = @THUNAR_VERSION_API@
+THUNAR_VERSION_MAJOR = @THUNAR_VERSION_MAJOR@
+THUNAR_VERSION_MICRO = @THUNAR_VERSION_MICRO@
+THUNAR_VERSION_MINOR = @THUNAR_VERSION_MINOR@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_ARGS = @XGETTEXT_ARGS@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+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@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+noinst_DATA = \
+ test-thunar-vfs-volume-bsd.fstab
+
+EXTRA_DIST = \
+ $(noinst_DATA)
+
+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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/data/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/data/Makefile
+.PRECIOUS: 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
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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 $(DATA)
+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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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 distclean-libtool
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+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-info-am
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ distclean distclean-generic distclean-libtool distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-exec install-exec-am \
+ install-info install-info-am install-man install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
+ uninstall-info-am
+
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
+# 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:
Added: desktop/trunk/thunar/branches/upstream/current/tests/data/test-thunar-vfs-volume-bsd.fstab
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/tests/data/test-thunar-vfs-volume-bsd.fstab 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/tests/data/test-thunar-vfs-volume-bsd.fstab 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,4 @@
+/dev/ad8s1e /usr ufs rw 2 2
+/dev/da4s2f /usr/bin ufs rw 2 2
+/dev/cd5 /usr/lib cd9660 ro 0 0
+/dev/ad4s7b none swap sw 0 0
Added: desktop/trunk/thunar/branches/upstream/current/tests/test-thunar-vfs-path.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/tests/test-thunar-vfs-path.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/tests/test-thunar-vfs-path.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,128 @@
+/* $Id: test-thunar-vfs-path.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+
+int
+main (int argc, char **argv)
+{
+ ThunarVfsPath *a;
+ ThunarVfsPath *b;
+ gchar buffer[THUNAR_VFS_PATH_MAXURILEN];
+ gchar *s;
+ gint n;
+
+ /* initialize GThreads (required for Thunar-VFS initialization) */
+ if (!g_thread_supported ())
+ g_thread_init (NULL);
+
+ /* initialize Gtk+ (required for Thunar-VFS initialization) */
+ gtk_init (&argc, &argv);
+
+ /* initialize the thunar-vfs library */
+ thunar_vfs_init ();
+
+ /* verify the root path */
+ a = thunar_vfs_path_new ("/", NULL);
+ b = thunar_vfs_path_get_for_root ();
+ s = thunar_vfs_path_dup_string (a);
+ n = thunar_vfs_path_to_string (b, buffer, sizeof (buffer), NULL);
+ g_assert (a == b);
+ g_assert (thunar_vfs_path_equal (a, b));
+ g_assert (thunar_vfs_path_get_parent (a) == NULL);
+ g_assert (thunar_vfs_path_get_parent (b) == NULL);
+ g_assert (thunar_vfs_path_hash (a) == thunar_vfs_path_hash (b));
+ g_assert (strcmp (s, buffer) == 0);
+ g_assert (strcmp (s, "/") == 0);
+ g_assert (n == strlen (buffer) + 1);
+ thunar_vfs_path_unref (b);
+ thunar_vfs_path_unref (a);
+ g_free (s);
+
+ /* verify the home path */
+ a = thunar_vfs_path_new (xfce_get_homedir (), NULL);
+ b = thunar_vfs_path_get_for_home ();
+ s = thunar_vfs_path_dup_uri (a);
+ n = thunar_vfs_path_to_uri (b, buffer, sizeof (buffer), NULL);
+ g_assert (a == b);
+ g_assert (thunar_vfs_path_equal (a, b));
+ g_assert (thunar_vfs_path_hash (a) == thunar_vfs_path_hash (b));
+ g_assert (strcmp (s, buffer) == 0);
+ g_assert (strncmp (s, "file:///", 8) == 0);
+ g_assert (n == strlen (buffer) + 1);
+ thunar_vfs_path_unref (b);
+ thunar_vfs_path_unref (a);
+ g_free (s);
+
+ /* verify the URI handling */
+ a = thunar_vfs_path_new ("/%test ", NULL);
+ b = thunar_vfs_path_new ("file:///%25test%20//", NULL);
+ s = thunar_vfs_path_dup_uri (a);
+ n = thunar_vfs_path_to_string (b, buffer, sizeof (buffer), NULL);
+ g_assert (thunar_vfs_path_equal (a, b));
+ g_assert (thunar_vfs_path_hash (a) == thunar_vfs_path_hash (b));
+ g_assert (strcmp (s, "file:///%25test%20") == 0);
+ g_assert (strcmp (buffer, "/%test ") == 0);
+ g_assert (n == strlen (buffer) + 1);
+ thunar_vfs_path_unref (b);
+ thunar_vfs_path_unref (a);
+ g_free (s);
+
+ /* verify the thunar_vfs_path_relative method */
+ a = thunar_vfs_path_get_for_home ();
+ b = thunar_vfs_path_get_parent (a);
+ g_assert (b != NULL);
+ thunar_vfs_path_ref (b);
+ thunar_vfs_path_unref (a);
+ s = g_path_get_basename (xfce_get_homedir ());
+ a = thunar_vfs_path_relative (b, s);
+ thunar_vfs_path_unref (b);
+ g_free (s);
+ b = thunar_vfs_path_get_for_home ();
+ s = thunar_vfs_path_dup_string (a);
+ g_assert (a == b);
+ g_assert (thunar_vfs_path_equal (a, b));
+ g_assert (thunar_vfs_path_hash (a) == thunar_vfs_path_hash (b));
+ g_assert (strcmp (s, xfce_get_homedir ()) == 0);
+ thunar_vfs_path_unref (b);
+ thunar_vfs_path_unref (a);
+ g_free (s);
+
+ /* shutdown the Thunar-VFS library */
+ thunar_vfs_shutdown ();
+
+ return EXIT_SUCCESS;
+}
+
Added: desktop/trunk/thunar/branches/upstream/current/tests/test-thunar-vfs-volume-bsd.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/tests/test-thunar-vfs-volume-bsd.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/tests/test-thunar-vfs-volume-bsd.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,84 @@
+/* $Id: test-thunar-vfs-volume-bsd.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+#include <thunar-vfs/thunar-vfs.h>
+
+
+
+int
+main (int argc, char **argv)
+{
+#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
+ ThunarVfsVolumeManager *manager;
+ ThunarVfsVolume *volume;
+ GList *volumes;
+
+ /* initialize GThread (required for Thunar-VFS initialization) */
+ if (!g_thread_supported ())
+ g_thread_init (NULL);
+
+ /* initialize Gtk+ (required for Thunar-VFS initialization) */
+ gtk_init (&argc, &argv);
+
+ /* initialize Thunar-VFS */
+ thunar_vfs_init ();
+
+ manager = thunar_vfs_volume_manager_get_default ();
+ g_assert (THUNAR_VFS_IS_VOLUME_MANAGER (manager));
+
+ volumes = thunar_vfs_volume_manager_get_volumes (manager);
+ g_assert (g_list_length (volumes) == 3);
+
+ volume = g_list_nth_data (volumes, 0);
+ g_assert (THUNAR_VFS_IS_VOLUME (volume));
+ g_assert (!thunar_vfs_volume_is_mounted (volume));
+ g_assert (thunar_vfs_volume_get_mount_point (volume) != NULL);
+
+ volume = g_list_nth_data (volumes, 1);
+ g_assert (THUNAR_VFS_IS_VOLUME (volume));
+ g_assert (!thunar_vfs_volume_is_mounted (volume));
+ g_assert (thunar_vfs_volume_get_mount_point (volume) != NULL);
+
+ volume = g_list_nth_data (volumes, 2);
+ g_assert (THUNAR_VFS_IS_VOLUME (volume));
+ g_assert (!thunar_vfs_volume_is_mounted (volume));
+ g_assert (thunar_vfs_volume_get_mount_point (volume) != NULL);
+
+ g_object_unref (G_OBJECT (manager));
+
+ /* shutdown Thunar-VFS */
+ thunar_vfs_shutdown ();
+
+ return EXIT_SUCCESS;
+#else
+ /* only BSD systems will pass this test */
+ return 77;
+#endif
+}
+
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/Makefile.am
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/Makefile.am 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/Makefile.am 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,213 @@
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+
+INCLUDES = \
+ -I$(top_builddir) \
+ -I$(top_srcdir) \
+ -DBINDIR=\"$(bindir)\" \
+ -DDATADIR=\"$(datadir)\" \
+ -DEXO_API_SUBJECT_TO_CHANGE \
+ -DEXO_DISABLE_DEPRECATED \
+ -DG_LOG_DOMAIN=\"Thunar\" \
+ -DLIBDIR=\"$(libdir)\" \
+ -DPACKAGE_LOCALE_DIR=\"$(localedir)\" \
+ -DTHUNAR_VERSION_API=\"$(THUNAR_VERSION_API)\" \
+ $(PLATFORM_CPPFLAGS)
+
+bin_PROGRAMS = \
+ Thunar
+
+thunar_built_sources = \
+ thunar-marshal.c \
+ thunar-marshal.h
+
+Thunar_SOURCES = \
+ $(thunar_include_HEADERS) \
+ $(thunar_built_sources) \
+ main.c \
+ thunar-application.c \
+ thunar-application.h \
+ thunar-chooser-dialog.c \
+ thunar-chooser-dialog.h \
+ thunar-chooser-model.c \
+ thunar-chooser-model.h \
+ thunar-clipboard-manager.c \
+ thunar-clipboard-manager.h \
+ thunar-create-dialog.c \
+ thunar-create-dialog.h \
+ thunar-details-view.c \
+ thunar-details-view.h \
+ thunar-dialogs.c \
+ thunar-dialogs.h \
+ thunar-dnd.c \
+ thunar-dnd.h \
+ thunar-emblem-chooser.c \
+ thunar-emblem-chooser.h \
+ thunar-extension-manager.c \
+ thunar-extension-manager.h \
+ thunar-fallback-icon.c \
+ thunar-fallback-icon.h \
+ thunar-favourites-model.c \
+ thunar-favourites-model.h \
+ thunar-favourites-pane.c \
+ thunar-favourites-pane.h \
+ thunar-favourites-view.c \
+ thunar-favourites-view.h \
+ thunar-file.c \
+ thunar-file.h \
+ thunar-folder.c \
+ thunar-folder.h \
+ thunar-gdk-pixbuf-extensions.c \
+ thunar-gdk-pixbuf-extensions.h \
+ thunar-gobject-extensions.c \
+ thunar-gobject-extensions.h \
+ thunar-gtk-extensions.c \
+ thunar-gtk-extensions.h \
+ thunar-history.c \
+ thunar-history.h \
+ thunar-icon-factory.c \
+ thunar-icon-factory.h \
+ thunar-icon-renderer.c \
+ thunar-icon-renderer.h \
+ thunar-icon-view.c \
+ thunar-icon-view.h \
+ thunar-icon-view-ui.h \
+ thunar-launcher.c \
+ thunar-launcher.h \
+ thunar-list-model.c \
+ thunar-list-model.h \
+ thunar-location-bar.c \
+ thunar-location-bar.h \
+ thunar-location-buttons.c \
+ thunar-location-buttons.h \
+ thunar-location-dialog.c \
+ thunar-location-dialog.h \
+ thunar-location-entry.c \
+ thunar-location-entry.h \
+ thunar-metafile.c \
+ thunar-metafile.h \
+ thunar-navigator.c \
+ thunar-navigator.h \
+ thunar-open-with-action.c \
+ thunar-open-with-action.h \
+ thunar-path-entry.c \
+ thunar-path-entry.h \
+ thunar-preferences.c \
+ thunar-preferences.h \
+ thunar-progress-dialog.c \
+ thunar-progress-dialog.h \
+ thunar-properties-dialog.c \
+ thunar-properties-dialog.h \
+ thunar-side-pane.c \
+ thunar-side-pane.h \
+ thunar-standard-view.c \
+ thunar-standard-view.h \
+ thunar-standard-view-ui.h \
+ thunar-statusbar.c \
+ thunar-statusbar.h \
+ thunar-text-renderer.c \
+ thunar-text-renderer.h \
+ thunar-thumbnail-frame.c \
+ thunar-thumbnail-frame.h \
+ thunar-thumbnail-generator.c \
+ thunar-thumbnail-generator.h \
+ thunar-view.c \
+ thunar-view.h \
+ thunar-window.c \
+ thunar-window.h \
+ thunar-window-ui.h
+
+Thunar_CFLAGS = \
+ $(CAIRO_CFLAGS) \
+ $(EXO_CFLAGS) \
+ $(GTHREAD_CFLAGS) \
+ $(PLATFORM_CFLAGS)
+
+Thunar_LDFLAGS = \
+ -no-undefined \
+ $(PLATFORM_LDFLAGS)
+
+Thunar_LDADD = \
+ $(top_builddir)/tdb/libtdb.la \
+ $(top_builddir)/thunar-vfs/libthunar-vfs-$(THUNAR_VERSION_API).la \
+ $(top_builddir)/thunarx/libthunarx-$(THUNAR_VERSION_API).la \
+ $(CAIRO_LIBS) \
+ $(EXO_LIBS) \
+ $(GTHREAD_LIBS)
+
+Thunar_DEPENDENCIES = \
+ $(top_builddir)/tdb/libtdb.la \
+ $(top_builddir)/thunar-vfs/libthunar-vfs-$(THUNAR_VERSION_API).la \
+ $(top_builddir)/thunarx/libthunarx-$(THUNAR_VERSION_API).la
+
+# install symlink to 'thunar'
+install-data-local:
+ $(mkinstalldirs) $(DESTDIR)$(bindir)
+ ( cd $(DESTDIR)$(bindir) ; ln -sf Thunar thunar )
+
+clean-local:
+ rm -f *.core core core.*
+
+if MAINTAINER_MODE
+CLEANFILES = \
+ xgen-tvmc \
+ xgen-tvmh
+
+DISTCLEANFILES = \
+ $(thunar_built_sources) \
+ stamp-thunar-marshal.h \
+ thunar-fallback-icon.c \
+ thunar-icon-view-ui.h \
+ thunar-standard-view-ui.h \
+ thunar-thumbnail-frame.c \
+ thunar-window-ui.h
+
+BUILT_SOURCES = \
+ $(thunar_built_sources) \
+ thunar-fallback-icon.c \
+ thunar-icon-view-ui.h \
+ thunar-standard-view-ui.h \
+ thunar-thumbnail-frame.c \
+ thunar-window-ui.h
+
+thunar-fallback-icon.c: $(srcdir)/thunar-fallback-icon.png Makefile
+ (echo "#include <thunar/thunar-fallback-icon.h>" && gdk-pixbuf-csource --extern --raw --stream --name=thunar_fallback_icon $(srcdir)/thunar-fallback-icon.png) > thunar-fallback-icon.c
+
+thunar-thumbnail-frame.c: $(srcdir)/thunar-thumbnail-frame.png Makefile
+ (echo "#include <thunar/thunar-thumbnail-frame.h>" && gdk-pixbuf-csource --extern --raw --stream --name=thunar_thumbnail_frame $(srcdir)/thunar-thumbnail-frame.png) > thunar-thumbnail-frame.c
+
+thunar-icon-view-ui.h: Makefile $(srcdir)/thunar-icon-view-ui.xml
+ exo-csource --static --name=thunar_icon_view_ui $(srcdir)/thunar-icon-view-ui.xml > thunar-icon-view-ui.h
+
+thunar-standard-view-ui.h: Makefile $(srcdir)/thunar-standard-view-ui.xml
+ exo-csource --static --name=thunar_standard_view_ui $(srcdir)/thunar-standard-view-ui.xml > thunar-standard-view-ui.h
+
+thunar-window-ui.h: Makefile $(srcdir)/thunar-window-ui.xml
+ exo-csource --static --name=thunar_window_ui $(srcdir)/thunar-window-ui.xml > thunar-window-ui.h
+
+thunar-marshal.h: stamp-thunar-marshal.h
+ @true
+stamp-thunar-marshal.h: thunar-marshal.list Makefile
+ ( cd $(srcdir) && glib-genmarshal \
+ --prefix=_thunar_marshal \
+ --header thunar-marshal.list ) >> xgen-tmh \
+ && ( cmp -s xgen-tmh thunar-marshal.h || cp xgen-tmh thunar-marshal.h ) \
+ && rm -f xgen-tmh \
+ && echo timestamp > $(@F)
+
+thunar-marshal.c: thunar-marshal.list Makefile
+ ( cd $(srcdir) && glib-genmarshal \
+ --prefix=_thunar_marshal \
+ --body thunar-marshal.list ) >> xgen-tmc \
+ && cp xgen-tmc thunar-marshal.c \
+ && rm -f xgen-tmc
+endif
+
+EXTRA_DIST = \
+ thunar-fallback-icon.png \
+ thunar-icon-view-ui.xml \
+ thunar-marshal.list \
+ thunar-standard-view-ui.xml \
+ thunar-thumbnail-frame.png \
+ thunar-window-ui.xml
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
Added: desktop/trunk/thunar/branches/upstream/current/thunar/Makefile.in
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/Makefile.in 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/Makefile.in 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,1504 @@
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004 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.
+
+ at SET_MAKE@
+
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+
+SOURCES = $(Thunar_SOURCES)
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+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@
+target_triplet = @target@
+bin_PROGRAMS = Thunar$(EXEEXT)
+subdir = thunar
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)"
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(bin_PROGRAMS)
+am__objects_1 = Thunar-thunar-marshal.$(OBJEXT)
+am_Thunar_OBJECTS = $(am__objects_1) Thunar-main.$(OBJEXT) \
+ Thunar-thunar-application.$(OBJEXT) \
+ Thunar-thunar-chooser-dialog.$(OBJEXT) \
+ Thunar-thunar-chooser-model.$(OBJEXT) \
+ Thunar-thunar-clipboard-manager.$(OBJEXT) \
+ Thunar-thunar-create-dialog.$(OBJEXT) \
+ Thunar-thunar-details-view.$(OBJEXT) \
+ Thunar-thunar-dialogs.$(OBJEXT) Thunar-thunar-dnd.$(OBJEXT) \
+ Thunar-thunar-emblem-chooser.$(OBJEXT) \
+ Thunar-thunar-extension-manager.$(OBJEXT) \
+ Thunar-thunar-fallback-icon.$(OBJEXT) \
+ Thunar-thunar-favourites-model.$(OBJEXT) \
+ Thunar-thunar-favourites-pane.$(OBJEXT) \
+ Thunar-thunar-favourites-view.$(OBJEXT) \
+ Thunar-thunar-file.$(OBJEXT) Thunar-thunar-folder.$(OBJEXT) \
+ Thunar-thunar-gdk-pixbuf-extensions.$(OBJEXT) \
+ Thunar-thunar-gobject-extensions.$(OBJEXT) \
+ Thunar-thunar-gtk-extensions.$(OBJEXT) \
+ Thunar-thunar-history.$(OBJEXT) \
+ Thunar-thunar-icon-factory.$(OBJEXT) \
+ Thunar-thunar-icon-renderer.$(OBJEXT) \
+ Thunar-thunar-icon-view.$(OBJEXT) \
+ Thunar-thunar-launcher.$(OBJEXT) \
+ Thunar-thunar-list-model.$(OBJEXT) \
+ Thunar-thunar-location-bar.$(OBJEXT) \
+ Thunar-thunar-location-buttons.$(OBJEXT) \
+ Thunar-thunar-location-dialog.$(OBJEXT) \
+ Thunar-thunar-location-entry.$(OBJEXT) \
+ Thunar-thunar-metafile.$(OBJEXT) \
+ Thunar-thunar-navigator.$(OBJEXT) \
+ Thunar-thunar-open-with-action.$(OBJEXT) \
+ Thunar-thunar-path-entry.$(OBJEXT) \
+ Thunar-thunar-preferences.$(OBJEXT) \
+ Thunar-thunar-progress-dialog.$(OBJEXT) \
+ Thunar-thunar-properties-dialog.$(OBJEXT) \
+ Thunar-thunar-side-pane.$(OBJEXT) \
+ Thunar-thunar-standard-view.$(OBJEXT) \
+ Thunar-thunar-statusbar.$(OBJEXT) \
+ Thunar-thunar-text-renderer.$(OBJEXT) \
+ Thunar-thunar-thumbnail-frame.$(OBJEXT) \
+ Thunar-thunar-thumbnail-generator.$(OBJEXT) \
+ Thunar-thunar-view.$(OBJEXT) Thunar-thunar-window.$(OBJEXT)
+Thunar_OBJECTS = $(am_Thunar_OBJECTS)
+am__DEPENDENCIES_1 =
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link --tag=CC $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(Thunar_SOURCES)
+DIST_SOURCES = $(Thunar_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CAIRO_REQUIRED_VERSION = @CAIRO_REQUIRED_VERSION@
+CAIRO_VERSION = @CAIRO_VERSION@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@
+ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@
+EXEEXT = @EXEEXT@
+EXO_CFLAGS = @EXO_CFLAGS@
+EXO_LIBS = @EXO_LIBS@
+EXO_REQUIRED_VERSION = @EXO_REQUIRED_VERSION@
+EXO_VERSION = @EXO_VERSION@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GCONF_CFLAGS = @GCONF_CFLAGS@
+GCONF_LIBS = @GCONF_LIBS@
+GCONF_REQUIRED_VERSION = @GCONF_REQUIRED_VERSION@
+GCONF_VERSION = @GCONF_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_REQUIRED_VERSION = @GLIB_REQUIRED_VERSION@
+GLIB_VERSION = @GLIB_VERSION@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTHREAD_REQUIRED_VERSION = @GTHREAD_REQUIRED_VERSION@
+GTHREAD_VERSION = @GTHREAD_VERSION@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+GTK_LIBS = @GTK_LIBS@
+GTK_REQUIRED_VERSION = @GTK_REQUIRED_VERSION@
+GTK_VERSION = @GTK_VERSION@
+HAVE_CAIRO_FALSE = @HAVE_CAIRO_FALSE@
+HAVE_CAIRO_TRUE = @HAVE_CAIRO_TRUE@
+HAVE_GCONF_FALSE = @HAVE_GCONF_FALSE@
+HAVE_GCONF_TRUE = @HAVE_GCONF_TRUE@
+HAVE_GNUC_VISIBILITY_FALSE = @HAVE_GNUC_VISIBILITY_FALSE@
+HAVE_GNUC_VISIBILITY_TRUE = @HAVE_GNUC_VISIBILITY_TRUE@
+HAVE_LIBSTARTUP_NOTIFICATION_FALSE = @HAVE_LIBSTARTUP_NOTIFICATION_FALSE@
+HAVE_LIBSTARTUP_NOTIFICATION_TRUE = @HAVE_LIBSTARTUP_NOTIFICATION_TRUE@
+HTML_DIR = @HTML_DIR@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LIBFAM_CFLAGS = @LIBFAM_CFLAGS@
+LIBFAM_LIBS = @LIBFAM_LIBS@
+LIBFAM_REQUIRED_VERSION = @LIBFAM_REQUIRED_VERSION@
+LIBFAM_VERSION = @LIBFAM_VERSION@
+LIBJPEG_CFLAGS = @LIBJPEG_CFLAGS@
+LIBJPEG_LIBS = @LIBJPEG_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
+LIBPNG_LIBS = @LIBPNG_LIBS@
+LIBPNG_REQUIRED_VERSION = @LIBPNG_REQUIRED_VERSION@
+LIBPNG_VERSION = @LIBPNG_VERSION@
+LIBS = @LIBS@
+LIBSTARTUP_NOTIFICATION_CFLAGS = @LIBSTARTUP_NOTIFICATION_CFLAGS@
+LIBSTARTUP_NOTIFICATION_LIBS = @LIBSTARTUP_NOTIFICATION_LIBS@
+LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION = @LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION@
+LIBSTARTUP_NOTIFICATION_VERSION = @LIBSTARTUP_NOTIFICATION_VERSION@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_CFLAGS = @PLATFORM_CFLAGS@
+PLATFORM_CPPFLAGS = @PLATFORM_CPPFLAGS@
+PLATFORM_LDFLAGS = @PLATFORM_LDFLAGS@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TDB_U32_TYPE = @TDB_U32_TYPE@
+THUNAR_VERINFO = @THUNAR_VERINFO@
+THUNAR_VERSION_API = @THUNAR_VERSION_API@
+THUNAR_VERSION_MAJOR = @THUNAR_VERSION_MAJOR@
+THUNAR_VERSION_MICRO = @THUNAR_VERSION_MICRO@
+THUNAR_VERSION_MINOR = @THUNAR_VERSION_MINOR@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_ARGS = @XGETTEXT_ARGS@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+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@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+INCLUDES = \
+ -I$(top_builddir) \
+ -I$(top_srcdir) \
+ -DBINDIR=\"$(bindir)\" \
+ -DDATADIR=\"$(datadir)\" \
+ -DEXO_API_SUBJECT_TO_CHANGE \
+ -DEXO_DISABLE_DEPRECATED \
+ -DG_LOG_DOMAIN=\"Thunar\" \
+ -DLIBDIR=\"$(libdir)\" \
+ -DPACKAGE_LOCALE_DIR=\"$(localedir)\" \
+ -DTHUNAR_VERSION_API=\"$(THUNAR_VERSION_API)\" \
+ $(PLATFORM_CPPFLAGS)
+
+thunar_built_sources = \
+ thunar-marshal.c \
+ thunar-marshal.h
+
+Thunar_SOURCES = \
+ $(thunar_include_HEADERS) \
+ $(thunar_built_sources) \
+ main.c \
+ thunar-application.c \
+ thunar-application.h \
+ thunar-chooser-dialog.c \
+ thunar-chooser-dialog.h \
+ thunar-chooser-model.c \
+ thunar-chooser-model.h \
+ thunar-clipboard-manager.c \
+ thunar-clipboard-manager.h \
+ thunar-create-dialog.c \
+ thunar-create-dialog.h \
+ thunar-details-view.c \
+ thunar-details-view.h \
+ thunar-dialogs.c \
+ thunar-dialogs.h \
+ thunar-dnd.c \
+ thunar-dnd.h \
+ thunar-emblem-chooser.c \
+ thunar-emblem-chooser.h \
+ thunar-extension-manager.c \
+ thunar-extension-manager.h \
+ thunar-fallback-icon.c \
+ thunar-fallback-icon.h \
+ thunar-favourites-model.c \
+ thunar-favourites-model.h \
+ thunar-favourites-pane.c \
+ thunar-favourites-pane.h \
+ thunar-favourites-view.c \
+ thunar-favourites-view.h \
+ thunar-file.c \
+ thunar-file.h \
+ thunar-folder.c \
+ thunar-folder.h \
+ thunar-gdk-pixbuf-extensions.c \
+ thunar-gdk-pixbuf-extensions.h \
+ thunar-gobject-extensions.c \
+ thunar-gobject-extensions.h \
+ thunar-gtk-extensions.c \
+ thunar-gtk-extensions.h \
+ thunar-history.c \
+ thunar-history.h \
+ thunar-icon-factory.c \
+ thunar-icon-factory.h \
+ thunar-icon-renderer.c \
+ thunar-icon-renderer.h \
+ thunar-icon-view.c \
+ thunar-icon-view.h \
+ thunar-icon-view-ui.h \
+ thunar-launcher.c \
+ thunar-launcher.h \
+ thunar-list-model.c \
+ thunar-list-model.h \
+ thunar-location-bar.c \
+ thunar-location-bar.h \
+ thunar-location-buttons.c \
+ thunar-location-buttons.h \
+ thunar-location-dialog.c \
+ thunar-location-dialog.h \
+ thunar-location-entry.c \
+ thunar-location-entry.h \
+ thunar-metafile.c \
+ thunar-metafile.h \
+ thunar-navigator.c \
+ thunar-navigator.h \
+ thunar-open-with-action.c \
+ thunar-open-with-action.h \
+ thunar-path-entry.c \
+ thunar-path-entry.h \
+ thunar-preferences.c \
+ thunar-preferences.h \
+ thunar-progress-dialog.c \
+ thunar-progress-dialog.h \
+ thunar-properties-dialog.c \
+ thunar-properties-dialog.h \
+ thunar-side-pane.c \
+ thunar-side-pane.h \
+ thunar-standard-view.c \
+ thunar-standard-view.h \
+ thunar-standard-view-ui.h \
+ thunar-statusbar.c \
+ thunar-statusbar.h \
+ thunar-text-renderer.c \
+ thunar-text-renderer.h \
+ thunar-thumbnail-frame.c \
+ thunar-thumbnail-frame.h \
+ thunar-thumbnail-generator.c \
+ thunar-thumbnail-generator.h \
+ thunar-view.c \
+ thunar-view.h \
+ thunar-window.c \
+ thunar-window.h \
+ thunar-window-ui.h
+
+Thunar_CFLAGS = \
+ $(CAIRO_CFLAGS) \
+ $(EXO_CFLAGS) \
+ $(GTHREAD_CFLAGS) \
+ $(PLATFORM_CFLAGS)
+
+Thunar_LDFLAGS = \
+ -no-undefined \
+ $(PLATFORM_LDFLAGS)
+
+Thunar_LDADD = \
+ $(top_builddir)/tdb/libtdb.la \
+ $(top_builddir)/thunar-vfs/libthunar-vfs-$(THUNAR_VERSION_API).la \
+ $(top_builddir)/thunarx/libthunarx-$(THUNAR_VERSION_API).la \
+ $(CAIRO_LIBS) \
+ $(EXO_LIBS) \
+ $(GTHREAD_LIBS)
+
+Thunar_DEPENDENCIES = \
+ $(top_builddir)/tdb/libtdb.la \
+ $(top_builddir)/thunar-vfs/libthunar-vfs-$(THUNAR_VERSION_API).la \
+ $(top_builddir)/thunarx/libthunarx-$(THUNAR_VERSION_API).la
+
+ at MAINTAINER_MODE_TRUE@CLEANFILES = \
+ at MAINTAINER_MODE_TRUE@ xgen-tvmc \
+ at MAINTAINER_MODE_TRUE@ xgen-tvmh
+
+ at MAINTAINER_MODE_TRUE@DISTCLEANFILES = \
+ at MAINTAINER_MODE_TRUE@ $(thunar_built_sources) \
+ at MAINTAINER_MODE_TRUE@ stamp-thunar-marshal.h \
+ at MAINTAINER_MODE_TRUE@ thunar-fallback-icon.c \
+ at MAINTAINER_MODE_TRUE@ thunar-icon-view-ui.h \
+ at MAINTAINER_MODE_TRUE@ thunar-standard-view-ui.h \
+ at MAINTAINER_MODE_TRUE@ thunar-thumbnail-frame.c \
+ at MAINTAINER_MODE_TRUE@ thunar-window-ui.h
+
+ at MAINTAINER_MODE_TRUE@BUILT_SOURCES = \
+ at MAINTAINER_MODE_TRUE@ $(thunar_built_sources) \
+ at MAINTAINER_MODE_TRUE@ thunar-fallback-icon.c \
+ at MAINTAINER_MODE_TRUE@ thunar-icon-view-ui.h \
+ at MAINTAINER_MODE_TRUE@ thunar-standard-view-ui.h \
+ at MAINTAINER_MODE_TRUE@ thunar-thumbnail-frame.c \
+ at MAINTAINER_MODE_TRUE@ thunar-window-ui.h
+
+EXTRA_DIST = \
+ thunar-fallback-icon.png \
+ thunar-icon-view-ui.xml \
+ thunar-marshal.list \
+ thunar-standard-view-ui.xml \
+ thunar-thumbnail-frame.png \
+ thunar-window-ui.xml
+
+all: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) 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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu thunar/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu thunar/Makefile
+.PRECIOUS: 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
+install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ if test -f $$p \
+ || test -f $$p1 \
+ ; then \
+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
+ else :; fi; \
+ done
+
+uninstall-binPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+ rm -f "$(DESTDIR)$(bindir)/$$f"; \
+ done
+
+clean-binPROGRAMS:
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+Thunar$(EXEEXT): $(Thunar_OBJECTS) $(Thunar_DEPENDENCIES)
+ @rm -f Thunar$(EXEEXT)
+ $(LINK) $(Thunar_LDFLAGS) $(Thunar_OBJECTS) $(Thunar_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-main.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-application.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-chooser-dialog.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-chooser-model.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-clipboard-manager.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-create-dialog.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-details-view.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-dialogs.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-dnd.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-emblem-chooser.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-extension-manager.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-fallback-icon.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-favourites-model.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-favourites-pane.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-favourites-view.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-file.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-folder.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-gdk-pixbuf-extensions.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-gobject-extensions.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-gtk-extensions.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-history.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-icon-factory.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-icon-renderer.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-icon-view.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-launcher.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-list-model.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-location-bar.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-location-buttons.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-location-dialog.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-location-entry.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-marshal.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-metafile.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-navigator.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-open-with-action.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-path-entry.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-preferences.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-progress-dialog.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-properties-dialog.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-side-pane.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-standard-view.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-statusbar.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-text-renderer.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-thumbnail-frame.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-thumbnail-generator.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-view.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thunar-thunar-window.Po at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+Thunar-thunar-marshal.o: thunar-marshal.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-marshal.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-marshal.Tpo" -c -o Thunar-thunar-marshal.o `test -f 'thunar-marshal.c' || echo '$(srcdir)/'`thunar-marshal.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-marshal.Tpo" "$(DEPDIR)/Thunar-thunar-marshal.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-marshal.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-marshal.c' object='Thunar-thunar-marshal.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-marshal.o `test -f 'thunar-marshal.c' || echo '$(srcdir)/'`thunar-marshal.c
+
+Thunar-thunar-marshal.obj: thunar-marshal.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-marshal.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-marshal.Tpo" -c -o Thunar-thunar-marshal.obj `if test -f 'thunar-marshal.c'; then $(CYGPATH_W) 'thunar-marshal.c'; else $(CYGPATH_W) '$(srcdir)/thunar-marshal.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-marshal.Tpo" "$(DEPDIR)/Thunar-thunar-marshal.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-marshal.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-marshal.c' object='Thunar-thunar-marshal.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-marshal.obj `if test -f 'thunar-marshal.c'; then $(CYGPATH_W) 'thunar-marshal.c'; else $(CYGPATH_W) '$(srcdir)/thunar-marshal.c'; fi`
+
+Thunar-main.o: main.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-main.o -MD -MP -MF "$(DEPDIR)/Thunar-main.Tpo" -c -o Thunar-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-main.Tpo" "$(DEPDIR)/Thunar-main.Po"; else rm -f "$(DEPDIR)/Thunar-main.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='main.c' object='Thunar-main.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c
+
+Thunar-main.obj: main.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-main.obj -MD -MP -MF "$(DEPDIR)/Thunar-main.Tpo" -c -o Thunar-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-main.Tpo" "$(DEPDIR)/Thunar-main.Po"; else rm -f "$(DEPDIR)/Thunar-main.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='main.c' object='Thunar-main.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi`
+
+Thunar-thunar-application.o: thunar-application.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-application.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-application.Tpo" -c -o Thunar-thunar-application.o `test -f 'thunar-application.c' || echo '$(srcdir)/'`thunar-application.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-application.Tpo" "$(DEPDIR)/Thunar-thunar-application.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-application.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-application.c' object='Thunar-thunar-application.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-application.o `test -f 'thunar-application.c' || echo '$(srcdir)/'`thunar-application.c
+
+Thunar-thunar-application.obj: thunar-application.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-application.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-application.Tpo" -c -o Thunar-thunar-application.obj `if test -f 'thunar-application.c'; then $(CYGPATH_W) 'thunar-application.c'; else $(CYGPATH_W) '$(srcdir)/thunar-application.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-application.Tpo" "$(DEPDIR)/Thunar-thunar-application.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-application.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-application.c' object='Thunar-thunar-application.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-application.obj `if test -f 'thunar-application.c'; then $(CYGPATH_W) 'thunar-application.c'; else $(CYGPATH_W) '$(srcdir)/thunar-application.c'; fi`
+
+Thunar-thunar-chooser-dialog.o: thunar-chooser-dialog.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-chooser-dialog.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-chooser-dialog.Tpo" -c -o Thunar-thunar-chooser-dialog.o `test -f 'thunar-chooser-dialog.c' || echo '$(srcdir)/'`thunar-chooser-dialog.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-chooser-dialog.Tpo" "$(DEPDIR)/Thunar-thunar-chooser-dialog.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-chooser-dialog.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-chooser-dialog.c' object='Thunar-thunar-chooser-dialog.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-chooser-dialog.o `test -f 'thunar-chooser-dialog.c' || echo '$(srcdir)/'`thunar-chooser-dialog.c
+
+Thunar-thunar-chooser-dialog.obj: thunar-chooser-dialog.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-chooser-dialog.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-chooser-dialog.Tpo" -c -o Thunar-thunar-chooser-dialog.obj `if test -f 'thunar-chooser-dialog.c'; then $(CYGPATH_W) 'thunar-chooser-dialog.c'; else $(CYGPATH_W) '$(srcdir)/thunar-chooser-dialog.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-chooser-dialog.Tpo" "$(DEPDIR)/Thunar-thunar-chooser-dialog.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-chooser-dialog.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-chooser-dialog.c' object='Thunar-thunar-chooser-dialog.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-chooser-dialog.obj `if test -f 'thunar-chooser-dialog.c'; then $(CYGPATH_W) 'thunar-chooser-dialog.c'; else $(CYGPATH_W) '$(srcdir)/thunar-chooser-dialog.c'; fi`
+
+Thunar-thunar-chooser-model.o: thunar-chooser-model.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-chooser-model.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-chooser-model.Tpo" -c -o Thunar-thunar-chooser-model.o `test -f 'thunar-chooser-model.c' || echo '$(srcdir)/'`thunar-chooser-model.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-chooser-model.Tpo" "$(DEPDIR)/Thunar-thunar-chooser-model.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-chooser-model.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-chooser-model.c' object='Thunar-thunar-chooser-model.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-chooser-model.o `test -f 'thunar-chooser-model.c' || echo '$(srcdir)/'`thunar-chooser-model.c
+
+Thunar-thunar-chooser-model.obj: thunar-chooser-model.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-chooser-model.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-chooser-model.Tpo" -c -o Thunar-thunar-chooser-model.obj `if test -f 'thunar-chooser-model.c'; then $(CYGPATH_W) 'thunar-chooser-model.c'; else $(CYGPATH_W) '$(srcdir)/thunar-chooser-model.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-chooser-model.Tpo" "$(DEPDIR)/Thunar-thunar-chooser-model.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-chooser-model.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-chooser-model.c' object='Thunar-thunar-chooser-model.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-chooser-model.obj `if test -f 'thunar-chooser-model.c'; then $(CYGPATH_W) 'thunar-chooser-model.c'; else $(CYGPATH_W) '$(srcdir)/thunar-chooser-model.c'; fi`
+
+Thunar-thunar-clipboard-manager.o: thunar-clipboard-manager.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-clipboard-manager.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-clipboard-manager.Tpo" -c -o Thunar-thunar-clipboard-manager.o `test -f 'thunar-clipboard-manager.c' || echo '$(srcdir)/'`thunar-clipboard-manager.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-clipboard-manager.Tpo" "$(DEPDIR)/Thunar-thunar-clipboard-manager.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-clipboard-manager.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-clipboard-manager.c' object='Thunar-thunar-clipboard-manager.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-clipboard-manager.o `test -f 'thunar-clipboard-manager.c' || echo '$(srcdir)/'`thunar-clipboard-manager.c
+
+Thunar-thunar-clipboard-manager.obj: thunar-clipboard-manager.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-clipboard-manager.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-clipboard-manager.Tpo" -c -o Thunar-thunar-clipboard-manager.obj `if test -f 'thunar-clipboard-manager.c'; then $(CYGPATH_W) 'thunar-clipboard-manager.c'; else $(CYGPATH_W) '$(srcdir)/thunar-clipboard-manager.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-clipboard-manager.Tpo" "$(DEPDIR)/Thunar-thunar-clipboard-manager.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-clipboard-manager.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-clipboard-manager.c' object='Thunar-thunar-clipboard-manager.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-clipboard-manager.obj `if test -f 'thunar-clipboard-manager.c'; then $(CYGPATH_W) 'thunar-clipboard-manager.c'; else $(CYGPATH_W) '$(srcdir)/thunar-clipboard-manager.c'; fi`
+
+Thunar-thunar-create-dialog.o: thunar-create-dialog.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-create-dialog.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-create-dialog.Tpo" -c -o Thunar-thunar-create-dialog.o `test -f 'thunar-create-dialog.c' || echo '$(srcdir)/'`thunar-create-dialog.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-create-dialog.Tpo" "$(DEPDIR)/Thunar-thunar-create-dialog.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-create-dialog.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-create-dialog.c' object='Thunar-thunar-create-dialog.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-create-dialog.o `test -f 'thunar-create-dialog.c' || echo '$(srcdir)/'`thunar-create-dialog.c
+
+Thunar-thunar-create-dialog.obj: thunar-create-dialog.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-create-dialog.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-create-dialog.Tpo" -c -o Thunar-thunar-create-dialog.obj `if test -f 'thunar-create-dialog.c'; then $(CYGPATH_W) 'thunar-create-dialog.c'; else $(CYGPATH_W) '$(srcdir)/thunar-create-dialog.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-create-dialog.Tpo" "$(DEPDIR)/Thunar-thunar-create-dialog.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-create-dialog.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-create-dialog.c' object='Thunar-thunar-create-dialog.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-create-dialog.obj `if test -f 'thunar-create-dialog.c'; then $(CYGPATH_W) 'thunar-create-dialog.c'; else $(CYGPATH_W) '$(srcdir)/thunar-create-dialog.c'; fi`
+
+Thunar-thunar-details-view.o: thunar-details-view.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-details-view.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-details-view.Tpo" -c -o Thunar-thunar-details-view.o `test -f 'thunar-details-view.c' || echo '$(srcdir)/'`thunar-details-view.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-details-view.Tpo" "$(DEPDIR)/Thunar-thunar-details-view.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-details-view.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-details-view.c' object='Thunar-thunar-details-view.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-details-view.o `test -f 'thunar-details-view.c' || echo '$(srcdir)/'`thunar-details-view.c
+
+Thunar-thunar-details-view.obj: thunar-details-view.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-details-view.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-details-view.Tpo" -c -o Thunar-thunar-details-view.obj `if test -f 'thunar-details-view.c'; then $(CYGPATH_W) 'thunar-details-view.c'; else $(CYGPATH_W) '$(srcdir)/thunar-details-view.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-details-view.Tpo" "$(DEPDIR)/Thunar-thunar-details-view.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-details-view.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-details-view.c' object='Thunar-thunar-details-view.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-details-view.obj `if test -f 'thunar-details-view.c'; then $(CYGPATH_W) 'thunar-details-view.c'; else $(CYGPATH_W) '$(srcdir)/thunar-details-view.c'; fi`
+
+Thunar-thunar-dialogs.o: thunar-dialogs.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-dialogs.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-dialogs.Tpo" -c -o Thunar-thunar-dialogs.o `test -f 'thunar-dialogs.c' || echo '$(srcdir)/'`thunar-dialogs.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-dialogs.Tpo" "$(DEPDIR)/Thunar-thunar-dialogs.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-dialogs.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-dialogs.c' object='Thunar-thunar-dialogs.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-dialogs.o `test -f 'thunar-dialogs.c' || echo '$(srcdir)/'`thunar-dialogs.c
+
+Thunar-thunar-dialogs.obj: thunar-dialogs.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-dialogs.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-dialogs.Tpo" -c -o Thunar-thunar-dialogs.obj `if test -f 'thunar-dialogs.c'; then $(CYGPATH_W) 'thunar-dialogs.c'; else $(CYGPATH_W) '$(srcdir)/thunar-dialogs.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-dialogs.Tpo" "$(DEPDIR)/Thunar-thunar-dialogs.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-dialogs.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-dialogs.c' object='Thunar-thunar-dialogs.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-dialogs.obj `if test -f 'thunar-dialogs.c'; then $(CYGPATH_W) 'thunar-dialogs.c'; else $(CYGPATH_W) '$(srcdir)/thunar-dialogs.c'; fi`
+
+Thunar-thunar-dnd.o: thunar-dnd.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-dnd.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-dnd.Tpo" -c -o Thunar-thunar-dnd.o `test -f 'thunar-dnd.c' || echo '$(srcdir)/'`thunar-dnd.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-dnd.Tpo" "$(DEPDIR)/Thunar-thunar-dnd.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-dnd.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-dnd.c' object='Thunar-thunar-dnd.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-dnd.o `test -f 'thunar-dnd.c' || echo '$(srcdir)/'`thunar-dnd.c
+
+Thunar-thunar-dnd.obj: thunar-dnd.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-dnd.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-dnd.Tpo" -c -o Thunar-thunar-dnd.obj `if test -f 'thunar-dnd.c'; then $(CYGPATH_W) 'thunar-dnd.c'; else $(CYGPATH_W) '$(srcdir)/thunar-dnd.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-dnd.Tpo" "$(DEPDIR)/Thunar-thunar-dnd.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-dnd.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-dnd.c' object='Thunar-thunar-dnd.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-dnd.obj `if test -f 'thunar-dnd.c'; then $(CYGPATH_W) 'thunar-dnd.c'; else $(CYGPATH_W) '$(srcdir)/thunar-dnd.c'; fi`
+
+Thunar-thunar-emblem-chooser.o: thunar-emblem-chooser.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-emblem-chooser.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-emblem-chooser.Tpo" -c -o Thunar-thunar-emblem-chooser.o `test -f 'thunar-emblem-chooser.c' || echo '$(srcdir)/'`thunar-emblem-chooser.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-emblem-chooser.Tpo" "$(DEPDIR)/Thunar-thunar-emblem-chooser.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-emblem-chooser.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-emblem-chooser.c' object='Thunar-thunar-emblem-chooser.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-emblem-chooser.o `test -f 'thunar-emblem-chooser.c' || echo '$(srcdir)/'`thunar-emblem-chooser.c
+
+Thunar-thunar-emblem-chooser.obj: thunar-emblem-chooser.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-emblem-chooser.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-emblem-chooser.Tpo" -c -o Thunar-thunar-emblem-chooser.obj `if test -f 'thunar-emblem-chooser.c'; then $(CYGPATH_W) 'thunar-emblem-chooser.c'; else $(CYGPATH_W) '$(srcdir)/thunar-emblem-chooser.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-emblem-chooser.Tpo" "$(DEPDIR)/Thunar-thunar-emblem-chooser.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-emblem-chooser.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-emblem-chooser.c' object='Thunar-thunar-emblem-chooser.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-emblem-chooser.obj `if test -f 'thunar-emblem-chooser.c'; then $(CYGPATH_W) 'thunar-emblem-chooser.c'; else $(CYGPATH_W) '$(srcdir)/thunar-emblem-chooser.c'; fi`
+
+Thunar-thunar-extension-manager.o: thunar-extension-manager.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-extension-manager.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-extension-manager.Tpo" -c -o Thunar-thunar-extension-manager.o `test -f 'thunar-extension-manager.c' || echo '$(srcdir)/'`thunar-extension-manager.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-extension-manager.Tpo" "$(DEPDIR)/Thunar-thunar-extension-manager.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-extension-manager.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-extension-manager.c' object='Thunar-thunar-extension-manager.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-extension-manager.o `test -f 'thunar-extension-manager.c' || echo '$(srcdir)/'`thunar-extension-manager.c
+
+Thunar-thunar-extension-manager.obj: thunar-extension-manager.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-extension-manager.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-extension-manager.Tpo" -c -o Thunar-thunar-extension-manager.obj `if test -f 'thunar-extension-manager.c'; then $(CYGPATH_W) 'thunar-extension-manager.c'; else $(CYGPATH_W) '$(srcdir)/thunar-extension-manager.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-extension-manager.Tpo" "$(DEPDIR)/Thunar-thunar-extension-manager.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-extension-manager.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-extension-manager.c' object='Thunar-thunar-extension-manager.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-extension-manager.obj `if test -f 'thunar-extension-manager.c'; then $(CYGPATH_W) 'thunar-extension-manager.c'; else $(CYGPATH_W) '$(srcdir)/thunar-extension-manager.c'; fi`
+
+Thunar-thunar-fallback-icon.o: thunar-fallback-icon.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-fallback-icon.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-fallback-icon.Tpo" -c -o Thunar-thunar-fallback-icon.o `test -f 'thunar-fallback-icon.c' || echo '$(srcdir)/'`thunar-fallback-icon.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-fallback-icon.Tpo" "$(DEPDIR)/Thunar-thunar-fallback-icon.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-fallback-icon.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-fallback-icon.c' object='Thunar-thunar-fallback-icon.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-fallback-icon.o `test -f 'thunar-fallback-icon.c' || echo '$(srcdir)/'`thunar-fallback-icon.c
+
+Thunar-thunar-fallback-icon.obj: thunar-fallback-icon.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-fallback-icon.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-fallback-icon.Tpo" -c -o Thunar-thunar-fallback-icon.obj `if test -f 'thunar-fallback-icon.c'; then $(CYGPATH_W) 'thunar-fallback-icon.c'; else $(CYGPATH_W) '$(srcdir)/thunar-fallback-icon.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-fallback-icon.Tpo" "$(DEPDIR)/Thunar-thunar-fallback-icon.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-fallback-icon.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-fallback-icon.c' object='Thunar-thunar-fallback-icon.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-fallback-icon.obj `if test -f 'thunar-fallback-icon.c'; then $(CYGPATH_W) 'thunar-fallback-icon.c'; else $(CYGPATH_W) '$(srcdir)/thunar-fallback-icon.c'; fi`
+
+Thunar-thunar-favourites-model.o: thunar-favourites-model.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-favourites-model.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-favourites-model.Tpo" -c -o Thunar-thunar-favourites-model.o `test -f 'thunar-favourites-model.c' || echo '$(srcdir)/'`thunar-favourites-model.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-favourites-model.Tpo" "$(DEPDIR)/Thunar-thunar-favourites-model.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-favourites-model.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-favourites-model.c' object='Thunar-thunar-favourites-model.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-favourites-model.o `test -f 'thunar-favourites-model.c' || echo '$(srcdir)/'`thunar-favourites-model.c
+
+Thunar-thunar-favourites-model.obj: thunar-favourites-model.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-favourites-model.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-favourites-model.Tpo" -c -o Thunar-thunar-favourites-model.obj `if test -f 'thunar-favourites-model.c'; then $(CYGPATH_W) 'thunar-favourites-model.c'; else $(CYGPATH_W) '$(srcdir)/thunar-favourites-model.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-favourites-model.Tpo" "$(DEPDIR)/Thunar-thunar-favourites-model.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-favourites-model.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-favourites-model.c' object='Thunar-thunar-favourites-model.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-favourites-model.obj `if test -f 'thunar-favourites-model.c'; then $(CYGPATH_W) 'thunar-favourites-model.c'; else $(CYGPATH_W) '$(srcdir)/thunar-favourites-model.c'; fi`
+
+Thunar-thunar-favourites-pane.o: thunar-favourites-pane.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-favourites-pane.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-favourites-pane.Tpo" -c -o Thunar-thunar-favourites-pane.o `test -f 'thunar-favourites-pane.c' || echo '$(srcdir)/'`thunar-favourites-pane.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-favourites-pane.Tpo" "$(DEPDIR)/Thunar-thunar-favourites-pane.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-favourites-pane.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-favourites-pane.c' object='Thunar-thunar-favourites-pane.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-favourites-pane.o `test -f 'thunar-favourites-pane.c' || echo '$(srcdir)/'`thunar-favourites-pane.c
+
+Thunar-thunar-favourites-pane.obj: thunar-favourites-pane.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-favourites-pane.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-favourites-pane.Tpo" -c -o Thunar-thunar-favourites-pane.obj `if test -f 'thunar-favourites-pane.c'; then $(CYGPATH_W) 'thunar-favourites-pane.c'; else $(CYGPATH_W) '$(srcdir)/thunar-favourites-pane.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-favourites-pane.Tpo" "$(DEPDIR)/Thunar-thunar-favourites-pane.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-favourites-pane.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-favourites-pane.c' object='Thunar-thunar-favourites-pane.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-favourites-pane.obj `if test -f 'thunar-favourites-pane.c'; then $(CYGPATH_W) 'thunar-favourites-pane.c'; else $(CYGPATH_W) '$(srcdir)/thunar-favourites-pane.c'; fi`
+
+Thunar-thunar-favourites-view.o: thunar-favourites-view.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-favourites-view.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-favourites-view.Tpo" -c -o Thunar-thunar-favourites-view.o `test -f 'thunar-favourites-view.c' || echo '$(srcdir)/'`thunar-favourites-view.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-favourites-view.Tpo" "$(DEPDIR)/Thunar-thunar-favourites-view.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-favourites-view.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-favourites-view.c' object='Thunar-thunar-favourites-view.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-favourites-view.o `test -f 'thunar-favourites-view.c' || echo '$(srcdir)/'`thunar-favourites-view.c
+
+Thunar-thunar-favourites-view.obj: thunar-favourites-view.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-favourites-view.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-favourites-view.Tpo" -c -o Thunar-thunar-favourites-view.obj `if test -f 'thunar-favourites-view.c'; then $(CYGPATH_W) 'thunar-favourites-view.c'; else $(CYGPATH_W) '$(srcdir)/thunar-favourites-view.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-favourites-view.Tpo" "$(DEPDIR)/Thunar-thunar-favourites-view.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-favourites-view.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-favourites-view.c' object='Thunar-thunar-favourites-view.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-favourites-view.obj `if test -f 'thunar-favourites-view.c'; then $(CYGPATH_W) 'thunar-favourites-view.c'; else $(CYGPATH_W) '$(srcdir)/thunar-favourites-view.c'; fi`
+
+Thunar-thunar-file.o: thunar-file.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-file.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-file.Tpo" -c -o Thunar-thunar-file.o `test -f 'thunar-file.c' || echo '$(srcdir)/'`thunar-file.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-file.Tpo" "$(DEPDIR)/Thunar-thunar-file.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-file.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-file.c' object='Thunar-thunar-file.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-file.o `test -f 'thunar-file.c' || echo '$(srcdir)/'`thunar-file.c
+
+Thunar-thunar-file.obj: thunar-file.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-file.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-file.Tpo" -c -o Thunar-thunar-file.obj `if test -f 'thunar-file.c'; then $(CYGPATH_W) 'thunar-file.c'; else $(CYGPATH_W) '$(srcdir)/thunar-file.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-file.Tpo" "$(DEPDIR)/Thunar-thunar-file.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-file.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-file.c' object='Thunar-thunar-file.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-file.obj `if test -f 'thunar-file.c'; then $(CYGPATH_W) 'thunar-file.c'; else $(CYGPATH_W) '$(srcdir)/thunar-file.c'; fi`
+
+Thunar-thunar-folder.o: thunar-folder.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-folder.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-folder.Tpo" -c -o Thunar-thunar-folder.o `test -f 'thunar-folder.c' || echo '$(srcdir)/'`thunar-folder.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-folder.Tpo" "$(DEPDIR)/Thunar-thunar-folder.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-folder.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-folder.c' object='Thunar-thunar-folder.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-folder.o `test -f 'thunar-folder.c' || echo '$(srcdir)/'`thunar-folder.c
+
+Thunar-thunar-folder.obj: thunar-folder.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-folder.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-folder.Tpo" -c -o Thunar-thunar-folder.obj `if test -f 'thunar-folder.c'; then $(CYGPATH_W) 'thunar-folder.c'; else $(CYGPATH_W) '$(srcdir)/thunar-folder.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-folder.Tpo" "$(DEPDIR)/Thunar-thunar-folder.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-folder.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-folder.c' object='Thunar-thunar-folder.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-folder.obj `if test -f 'thunar-folder.c'; then $(CYGPATH_W) 'thunar-folder.c'; else $(CYGPATH_W) '$(srcdir)/thunar-folder.c'; fi`
+
+Thunar-thunar-gdk-pixbuf-extensions.o: thunar-gdk-pixbuf-extensions.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-gdk-pixbuf-extensions.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-gdk-pixbuf-extensions.Tpo" -c -o Thunar-thunar-gdk-pixbuf-extensions.o `test -f 'thunar-gdk-pixbuf-extensions.c' || echo '$(srcdir)/'`thunar-gdk-pixbuf-extensions.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-gdk-pixbuf-extensions.Tpo" "$(DEPDIR)/Thunar-thunar-gdk-pixbuf-extensions.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-gdk-pixbuf-extensions.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-gdk-pixbuf-extensions.c' object='Thunar-thunar-gdk-pixbuf-extensions.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-gdk-pixbuf-extensions.o `test -f 'thunar-gdk-pixbuf-extensions.c' || echo '$(srcdir)/'`thunar-gdk-pixbuf-extensions.c
+
+Thunar-thunar-gdk-pixbuf-extensions.obj: thunar-gdk-pixbuf-extensions.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-gdk-pixbuf-extensions.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-gdk-pixbuf-extensions.Tpo" -c -o Thunar-thunar-gdk-pixbuf-extensions.obj `if test -f 'thunar-gdk-pixbuf-extensions.c'; then $(CYGPATH_W) 'thunar-gdk-pixbuf-extensions.c'; else $(CYGPATH_W) '$(srcdir)/thunar-gdk-pixbuf-extensions.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-gdk-pixbuf-extensions.Tpo" "$(DEPDIR)/Thunar-thunar-gdk-pixbuf-extensions.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-gdk-pixbuf-extensions.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-gdk-pixbuf-extensions.c' object='Thunar-thunar-gdk-pixbuf-extensions.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-gdk-pixbuf-extensions.obj `if test -f 'thunar-gdk-pixbuf-extensions.c'; then $(CYGPATH_W) 'thunar-gdk-pixbuf-extensions.c'; else $(CYGPATH_W) '$(srcdir)/thunar-gdk-pixbuf-extensions.c'; fi`
+
+Thunar-thunar-gobject-extensions.o: thunar-gobject-extensions.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-gobject-extensions.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-gobject-extensions.Tpo" -c -o Thunar-thunar-gobject-extensions.o `test -f 'thunar-gobject-extensions.c' || echo '$(srcdir)/'`thunar-gobject-extensions.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-gobject-extensions.Tpo" "$(DEPDIR)/Thunar-thunar-gobject-extensions.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-gobject-extensions.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-gobject-extensions.c' object='Thunar-thunar-gobject-extensions.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-gobject-extensions.o `test -f 'thunar-gobject-extensions.c' || echo '$(srcdir)/'`thunar-gobject-extensions.c
+
+Thunar-thunar-gobject-extensions.obj: thunar-gobject-extensions.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-gobject-extensions.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-gobject-extensions.Tpo" -c -o Thunar-thunar-gobject-extensions.obj `if test -f 'thunar-gobject-extensions.c'; then $(CYGPATH_W) 'thunar-gobject-extensions.c'; else $(CYGPATH_W) '$(srcdir)/thunar-gobject-extensions.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-gobject-extensions.Tpo" "$(DEPDIR)/Thunar-thunar-gobject-extensions.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-gobject-extensions.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-gobject-extensions.c' object='Thunar-thunar-gobject-extensions.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-gobject-extensions.obj `if test -f 'thunar-gobject-extensions.c'; then $(CYGPATH_W) 'thunar-gobject-extensions.c'; else $(CYGPATH_W) '$(srcdir)/thunar-gobject-extensions.c'; fi`
+
+Thunar-thunar-gtk-extensions.o: thunar-gtk-extensions.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-gtk-extensions.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-gtk-extensions.Tpo" -c -o Thunar-thunar-gtk-extensions.o `test -f 'thunar-gtk-extensions.c' || echo '$(srcdir)/'`thunar-gtk-extensions.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-gtk-extensions.Tpo" "$(DEPDIR)/Thunar-thunar-gtk-extensions.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-gtk-extensions.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-gtk-extensions.c' object='Thunar-thunar-gtk-extensions.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-gtk-extensions.o `test -f 'thunar-gtk-extensions.c' || echo '$(srcdir)/'`thunar-gtk-extensions.c
+
+Thunar-thunar-gtk-extensions.obj: thunar-gtk-extensions.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-gtk-extensions.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-gtk-extensions.Tpo" -c -o Thunar-thunar-gtk-extensions.obj `if test -f 'thunar-gtk-extensions.c'; then $(CYGPATH_W) 'thunar-gtk-extensions.c'; else $(CYGPATH_W) '$(srcdir)/thunar-gtk-extensions.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-gtk-extensions.Tpo" "$(DEPDIR)/Thunar-thunar-gtk-extensions.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-gtk-extensions.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-gtk-extensions.c' object='Thunar-thunar-gtk-extensions.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-gtk-extensions.obj `if test -f 'thunar-gtk-extensions.c'; then $(CYGPATH_W) 'thunar-gtk-extensions.c'; else $(CYGPATH_W) '$(srcdir)/thunar-gtk-extensions.c'; fi`
+
+Thunar-thunar-history.o: thunar-history.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-history.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-history.Tpo" -c -o Thunar-thunar-history.o `test -f 'thunar-history.c' || echo '$(srcdir)/'`thunar-history.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-history.Tpo" "$(DEPDIR)/Thunar-thunar-history.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-history.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-history.c' object='Thunar-thunar-history.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-history.o `test -f 'thunar-history.c' || echo '$(srcdir)/'`thunar-history.c
+
+Thunar-thunar-history.obj: thunar-history.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-history.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-history.Tpo" -c -o Thunar-thunar-history.obj `if test -f 'thunar-history.c'; then $(CYGPATH_W) 'thunar-history.c'; else $(CYGPATH_W) '$(srcdir)/thunar-history.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-history.Tpo" "$(DEPDIR)/Thunar-thunar-history.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-history.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-history.c' object='Thunar-thunar-history.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-history.obj `if test -f 'thunar-history.c'; then $(CYGPATH_W) 'thunar-history.c'; else $(CYGPATH_W) '$(srcdir)/thunar-history.c'; fi`
+
+Thunar-thunar-icon-factory.o: thunar-icon-factory.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-icon-factory.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-icon-factory.Tpo" -c -o Thunar-thunar-icon-factory.o `test -f 'thunar-icon-factory.c' || echo '$(srcdir)/'`thunar-icon-factory.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-icon-factory.Tpo" "$(DEPDIR)/Thunar-thunar-icon-factory.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-icon-factory.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-icon-factory.c' object='Thunar-thunar-icon-factory.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-icon-factory.o `test -f 'thunar-icon-factory.c' || echo '$(srcdir)/'`thunar-icon-factory.c
+
+Thunar-thunar-icon-factory.obj: thunar-icon-factory.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-icon-factory.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-icon-factory.Tpo" -c -o Thunar-thunar-icon-factory.obj `if test -f 'thunar-icon-factory.c'; then $(CYGPATH_W) 'thunar-icon-factory.c'; else $(CYGPATH_W) '$(srcdir)/thunar-icon-factory.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-icon-factory.Tpo" "$(DEPDIR)/Thunar-thunar-icon-factory.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-icon-factory.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-icon-factory.c' object='Thunar-thunar-icon-factory.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-icon-factory.obj `if test -f 'thunar-icon-factory.c'; then $(CYGPATH_W) 'thunar-icon-factory.c'; else $(CYGPATH_W) '$(srcdir)/thunar-icon-factory.c'; fi`
+
+Thunar-thunar-icon-renderer.o: thunar-icon-renderer.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-icon-renderer.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-icon-renderer.Tpo" -c -o Thunar-thunar-icon-renderer.o `test -f 'thunar-icon-renderer.c' || echo '$(srcdir)/'`thunar-icon-renderer.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-icon-renderer.Tpo" "$(DEPDIR)/Thunar-thunar-icon-renderer.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-icon-renderer.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-icon-renderer.c' object='Thunar-thunar-icon-renderer.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-icon-renderer.o `test -f 'thunar-icon-renderer.c' || echo '$(srcdir)/'`thunar-icon-renderer.c
+
+Thunar-thunar-icon-renderer.obj: thunar-icon-renderer.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-icon-renderer.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-icon-renderer.Tpo" -c -o Thunar-thunar-icon-renderer.obj `if test -f 'thunar-icon-renderer.c'; then $(CYGPATH_W) 'thunar-icon-renderer.c'; else $(CYGPATH_W) '$(srcdir)/thunar-icon-renderer.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-icon-renderer.Tpo" "$(DEPDIR)/Thunar-thunar-icon-renderer.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-icon-renderer.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-icon-renderer.c' object='Thunar-thunar-icon-renderer.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-icon-renderer.obj `if test -f 'thunar-icon-renderer.c'; then $(CYGPATH_W) 'thunar-icon-renderer.c'; else $(CYGPATH_W) '$(srcdir)/thunar-icon-renderer.c'; fi`
+
+Thunar-thunar-icon-view.o: thunar-icon-view.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-icon-view.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-icon-view.Tpo" -c -o Thunar-thunar-icon-view.o `test -f 'thunar-icon-view.c' || echo '$(srcdir)/'`thunar-icon-view.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-icon-view.Tpo" "$(DEPDIR)/Thunar-thunar-icon-view.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-icon-view.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-icon-view.c' object='Thunar-thunar-icon-view.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-icon-view.o `test -f 'thunar-icon-view.c' || echo '$(srcdir)/'`thunar-icon-view.c
+
+Thunar-thunar-icon-view.obj: thunar-icon-view.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-icon-view.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-icon-view.Tpo" -c -o Thunar-thunar-icon-view.obj `if test -f 'thunar-icon-view.c'; then $(CYGPATH_W) 'thunar-icon-view.c'; else $(CYGPATH_W) '$(srcdir)/thunar-icon-view.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-icon-view.Tpo" "$(DEPDIR)/Thunar-thunar-icon-view.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-icon-view.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-icon-view.c' object='Thunar-thunar-icon-view.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-icon-view.obj `if test -f 'thunar-icon-view.c'; then $(CYGPATH_W) 'thunar-icon-view.c'; else $(CYGPATH_W) '$(srcdir)/thunar-icon-view.c'; fi`
+
+Thunar-thunar-launcher.o: thunar-launcher.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-launcher.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-launcher.Tpo" -c -o Thunar-thunar-launcher.o `test -f 'thunar-launcher.c' || echo '$(srcdir)/'`thunar-launcher.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-launcher.Tpo" "$(DEPDIR)/Thunar-thunar-launcher.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-launcher.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-launcher.c' object='Thunar-thunar-launcher.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-launcher.o `test -f 'thunar-launcher.c' || echo '$(srcdir)/'`thunar-launcher.c
+
+Thunar-thunar-launcher.obj: thunar-launcher.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-launcher.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-launcher.Tpo" -c -o Thunar-thunar-launcher.obj `if test -f 'thunar-launcher.c'; then $(CYGPATH_W) 'thunar-launcher.c'; else $(CYGPATH_W) '$(srcdir)/thunar-launcher.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-launcher.Tpo" "$(DEPDIR)/Thunar-thunar-launcher.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-launcher.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-launcher.c' object='Thunar-thunar-launcher.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-launcher.obj `if test -f 'thunar-launcher.c'; then $(CYGPATH_W) 'thunar-launcher.c'; else $(CYGPATH_W) '$(srcdir)/thunar-launcher.c'; fi`
+
+Thunar-thunar-list-model.o: thunar-list-model.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-list-model.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-list-model.Tpo" -c -o Thunar-thunar-list-model.o `test -f 'thunar-list-model.c' || echo '$(srcdir)/'`thunar-list-model.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-list-model.Tpo" "$(DEPDIR)/Thunar-thunar-list-model.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-list-model.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-list-model.c' object='Thunar-thunar-list-model.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-list-model.o `test -f 'thunar-list-model.c' || echo '$(srcdir)/'`thunar-list-model.c
+
+Thunar-thunar-list-model.obj: thunar-list-model.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-list-model.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-list-model.Tpo" -c -o Thunar-thunar-list-model.obj `if test -f 'thunar-list-model.c'; then $(CYGPATH_W) 'thunar-list-model.c'; else $(CYGPATH_W) '$(srcdir)/thunar-list-model.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-list-model.Tpo" "$(DEPDIR)/Thunar-thunar-list-model.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-list-model.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-list-model.c' object='Thunar-thunar-list-model.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-list-model.obj `if test -f 'thunar-list-model.c'; then $(CYGPATH_W) 'thunar-list-model.c'; else $(CYGPATH_W) '$(srcdir)/thunar-list-model.c'; fi`
+
+Thunar-thunar-location-bar.o: thunar-location-bar.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-location-bar.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-location-bar.Tpo" -c -o Thunar-thunar-location-bar.o `test -f 'thunar-location-bar.c' || echo '$(srcdir)/'`thunar-location-bar.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-location-bar.Tpo" "$(DEPDIR)/Thunar-thunar-location-bar.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-location-bar.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-location-bar.c' object='Thunar-thunar-location-bar.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-location-bar.o `test -f 'thunar-location-bar.c' || echo '$(srcdir)/'`thunar-location-bar.c
+
+Thunar-thunar-location-bar.obj: thunar-location-bar.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-location-bar.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-location-bar.Tpo" -c -o Thunar-thunar-location-bar.obj `if test -f 'thunar-location-bar.c'; then $(CYGPATH_W) 'thunar-location-bar.c'; else $(CYGPATH_W) '$(srcdir)/thunar-location-bar.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-location-bar.Tpo" "$(DEPDIR)/Thunar-thunar-location-bar.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-location-bar.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-location-bar.c' object='Thunar-thunar-location-bar.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-location-bar.obj `if test -f 'thunar-location-bar.c'; then $(CYGPATH_W) 'thunar-location-bar.c'; else $(CYGPATH_W) '$(srcdir)/thunar-location-bar.c'; fi`
+
+Thunar-thunar-location-buttons.o: thunar-location-buttons.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-location-buttons.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-location-buttons.Tpo" -c -o Thunar-thunar-location-buttons.o `test -f 'thunar-location-buttons.c' || echo '$(srcdir)/'`thunar-location-buttons.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-location-buttons.Tpo" "$(DEPDIR)/Thunar-thunar-location-buttons.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-location-buttons.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-location-buttons.c' object='Thunar-thunar-location-buttons.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-location-buttons.o `test -f 'thunar-location-buttons.c' || echo '$(srcdir)/'`thunar-location-buttons.c
+
+Thunar-thunar-location-buttons.obj: thunar-location-buttons.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-location-buttons.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-location-buttons.Tpo" -c -o Thunar-thunar-location-buttons.obj `if test -f 'thunar-location-buttons.c'; then $(CYGPATH_W) 'thunar-location-buttons.c'; else $(CYGPATH_W) '$(srcdir)/thunar-location-buttons.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-location-buttons.Tpo" "$(DEPDIR)/Thunar-thunar-location-buttons.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-location-buttons.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-location-buttons.c' object='Thunar-thunar-location-buttons.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-location-buttons.obj `if test -f 'thunar-location-buttons.c'; then $(CYGPATH_W) 'thunar-location-buttons.c'; else $(CYGPATH_W) '$(srcdir)/thunar-location-buttons.c'; fi`
+
+Thunar-thunar-location-dialog.o: thunar-location-dialog.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-location-dialog.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-location-dialog.Tpo" -c -o Thunar-thunar-location-dialog.o `test -f 'thunar-location-dialog.c' || echo '$(srcdir)/'`thunar-location-dialog.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-location-dialog.Tpo" "$(DEPDIR)/Thunar-thunar-location-dialog.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-location-dialog.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-location-dialog.c' object='Thunar-thunar-location-dialog.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-location-dialog.o `test -f 'thunar-location-dialog.c' || echo '$(srcdir)/'`thunar-location-dialog.c
+
+Thunar-thunar-location-dialog.obj: thunar-location-dialog.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-location-dialog.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-location-dialog.Tpo" -c -o Thunar-thunar-location-dialog.obj `if test -f 'thunar-location-dialog.c'; then $(CYGPATH_W) 'thunar-location-dialog.c'; else $(CYGPATH_W) '$(srcdir)/thunar-location-dialog.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-location-dialog.Tpo" "$(DEPDIR)/Thunar-thunar-location-dialog.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-location-dialog.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-location-dialog.c' object='Thunar-thunar-location-dialog.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-location-dialog.obj `if test -f 'thunar-location-dialog.c'; then $(CYGPATH_W) 'thunar-location-dialog.c'; else $(CYGPATH_W) '$(srcdir)/thunar-location-dialog.c'; fi`
+
+Thunar-thunar-location-entry.o: thunar-location-entry.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-location-entry.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-location-entry.Tpo" -c -o Thunar-thunar-location-entry.o `test -f 'thunar-location-entry.c' || echo '$(srcdir)/'`thunar-location-entry.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-location-entry.Tpo" "$(DEPDIR)/Thunar-thunar-location-entry.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-location-entry.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-location-entry.c' object='Thunar-thunar-location-entry.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-location-entry.o `test -f 'thunar-location-entry.c' || echo '$(srcdir)/'`thunar-location-entry.c
+
+Thunar-thunar-location-entry.obj: thunar-location-entry.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-location-entry.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-location-entry.Tpo" -c -o Thunar-thunar-location-entry.obj `if test -f 'thunar-location-entry.c'; then $(CYGPATH_W) 'thunar-location-entry.c'; else $(CYGPATH_W) '$(srcdir)/thunar-location-entry.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-location-entry.Tpo" "$(DEPDIR)/Thunar-thunar-location-entry.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-location-entry.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-location-entry.c' object='Thunar-thunar-location-entry.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-location-entry.obj `if test -f 'thunar-location-entry.c'; then $(CYGPATH_W) 'thunar-location-entry.c'; else $(CYGPATH_W) '$(srcdir)/thunar-location-entry.c'; fi`
+
+Thunar-thunar-metafile.o: thunar-metafile.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-metafile.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-metafile.Tpo" -c -o Thunar-thunar-metafile.o `test -f 'thunar-metafile.c' || echo '$(srcdir)/'`thunar-metafile.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-metafile.Tpo" "$(DEPDIR)/Thunar-thunar-metafile.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-metafile.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-metafile.c' object='Thunar-thunar-metafile.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-metafile.o `test -f 'thunar-metafile.c' || echo '$(srcdir)/'`thunar-metafile.c
+
+Thunar-thunar-metafile.obj: thunar-metafile.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-metafile.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-metafile.Tpo" -c -o Thunar-thunar-metafile.obj `if test -f 'thunar-metafile.c'; then $(CYGPATH_W) 'thunar-metafile.c'; else $(CYGPATH_W) '$(srcdir)/thunar-metafile.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-metafile.Tpo" "$(DEPDIR)/Thunar-thunar-metafile.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-metafile.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-metafile.c' object='Thunar-thunar-metafile.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-metafile.obj `if test -f 'thunar-metafile.c'; then $(CYGPATH_W) 'thunar-metafile.c'; else $(CYGPATH_W) '$(srcdir)/thunar-metafile.c'; fi`
+
+Thunar-thunar-navigator.o: thunar-navigator.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-navigator.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-navigator.Tpo" -c -o Thunar-thunar-navigator.o `test -f 'thunar-navigator.c' || echo '$(srcdir)/'`thunar-navigator.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-navigator.Tpo" "$(DEPDIR)/Thunar-thunar-navigator.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-navigator.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-navigator.c' object='Thunar-thunar-navigator.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-navigator.o `test -f 'thunar-navigator.c' || echo '$(srcdir)/'`thunar-navigator.c
+
+Thunar-thunar-navigator.obj: thunar-navigator.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-navigator.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-navigator.Tpo" -c -o Thunar-thunar-navigator.obj `if test -f 'thunar-navigator.c'; then $(CYGPATH_W) 'thunar-navigator.c'; else $(CYGPATH_W) '$(srcdir)/thunar-navigator.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-navigator.Tpo" "$(DEPDIR)/Thunar-thunar-navigator.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-navigator.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-navigator.c' object='Thunar-thunar-navigator.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-navigator.obj `if test -f 'thunar-navigator.c'; then $(CYGPATH_W) 'thunar-navigator.c'; else $(CYGPATH_W) '$(srcdir)/thunar-navigator.c'; fi`
+
+Thunar-thunar-open-with-action.o: thunar-open-with-action.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-open-with-action.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-open-with-action.Tpo" -c -o Thunar-thunar-open-with-action.o `test -f 'thunar-open-with-action.c' || echo '$(srcdir)/'`thunar-open-with-action.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-open-with-action.Tpo" "$(DEPDIR)/Thunar-thunar-open-with-action.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-open-with-action.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-open-with-action.c' object='Thunar-thunar-open-with-action.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-open-with-action.o `test -f 'thunar-open-with-action.c' || echo '$(srcdir)/'`thunar-open-with-action.c
+
+Thunar-thunar-open-with-action.obj: thunar-open-with-action.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-open-with-action.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-open-with-action.Tpo" -c -o Thunar-thunar-open-with-action.obj `if test -f 'thunar-open-with-action.c'; then $(CYGPATH_W) 'thunar-open-with-action.c'; else $(CYGPATH_W) '$(srcdir)/thunar-open-with-action.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-open-with-action.Tpo" "$(DEPDIR)/Thunar-thunar-open-with-action.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-open-with-action.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-open-with-action.c' object='Thunar-thunar-open-with-action.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-open-with-action.obj `if test -f 'thunar-open-with-action.c'; then $(CYGPATH_W) 'thunar-open-with-action.c'; else $(CYGPATH_W) '$(srcdir)/thunar-open-with-action.c'; fi`
+
+Thunar-thunar-path-entry.o: thunar-path-entry.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-path-entry.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-path-entry.Tpo" -c -o Thunar-thunar-path-entry.o `test -f 'thunar-path-entry.c' || echo '$(srcdir)/'`thunar-path-entry.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-path-entry.Tpo" "$(DEPDIR)/Thunar-thunar-path-entry.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-path-entry.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-path-entry.c' object='Thunar-thunar-path-entry.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-path-entry.o `test -f 'thunar-path-entry.c' || echo '$(srcdir)/'`thunar-path-entry.c
+
+Thunar-thunar-path-entry.obj: thunar-path-entry.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-path-entry.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-path-entry.Tpo" -c -o Thunar-thunar-path-entry.obj `if test -f 'thunar-path-entry.c'; then $(CYGPATH_W) 'thunar-path-entry.c'; else $(CYGPATH_W) '$(srcdir)/thunar-path-entry.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-path-entry.Tpo" "$(DEPDIR)/Thunar-thunar-path-entry.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-path-entry.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-path-entry.c' object='Thunar-thunar-path-entry.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-path-entry.obj `if test -f 'thunar-path-entry.c'; then $(CYGPATH_W) 'thunar-path-entry.c'; else $(CYGPATH_W) '$(srcdir)/thunar-path-entry.c'; fi`
+
+Thunar-thunar-preferences.o: thunar-preferences.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-preferences.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-preferences.Tpo" -c -o Thunar-thunar-preferences.o `test -f 'thunar-preferences.c' || echo '$(srcdir)/'`thunar-preferences.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-preferences.Tpo" "$(DEPDIR)/Thunar-thunar-preferences.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-preferences.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-preferences.c' object='Thunar-thunar-preferences.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-preferences.o `test -f 'thunar-preferences.c' || echo '$(srcdir)/'`thunar-preferences.c
+
+Thunar-thunar-preferences.obj: thunar-preferences.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-preferences.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-preferences.Tpo" -c -o Thunar-thunar-preferences.obj `if test -f 'thunar-preferences.c'; then $(CYGPATH_W) 'thunar-preferences.c'; else $(CYGPATH_W) '$(srcdir)/thunar-preferences.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-preferences.Tpo" "$(DEPDIR)/Thunar-thunar-preferences.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-preferences.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-preferences.c' object='Thunar-thunar-preferences.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-preferences.obj `if test -f 'thunar-preferences.c'; then $(CYGPATH_W) 'thunar-preferences.c'; else $(CYGPATH_W) '$(srcdir)/thunar-preferences.c'; fi`
+
+Thunar-thunar-progress-dialog.o: thunar-progress-dialog.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-progress-dialog.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-progress-dialog.Tpo" -c -o Thunar-thunar-progress-dialog.o `test -f 'thunar-progress-dialog.c' || echo '$(srcdir)/'`thunar-progress-dialog.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-progress-dialog.Tpo" "$(DEPDIR)/Thunar-thunar-progress-dialog.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-progress-dialog.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-progress-dialog.c' object='Thunar-thunar-progress-dialog.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-progress-dialog.o `test -f 'thunar-progress-dialog.c' || echo '$(srcdir)/'`thunar-progress-dialog.c
+
+Thunar-thunar-progress-dialog.obj: thunar-progress-dialog.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-progress-dialog.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-progress-dialog.Tpo" -c -o Thunar-thunar-progress-dialog.obj `if test -f 'thunar-progress-dialog.c'; then $(CYGPATH_W) 'thunar-progress-dialog.c'; else $(CYGPATH_W) '$(srcdir)/thunar-progress-dialog.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-progress-dialog.Tpo" "$(DEPDIR)/Thunar-thunar-progress-dialog.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-progress-dialog.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-progress-dialog.c' object='Thunar-thunar-progress-dialog.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-progress-dialog.obj `if test -f 'thunar-progress-dialog.c'; then $(CYGPATH_W) 'thunar-progress-dialog.c'; else $(CYGPATH_W) '$(srcdir)/thunar-progress-dialog.c'; fi`
+
+Thunar-thunar-properties-dialog.o: thunar-properties-dialog.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-properties-dialog.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-properties-dialog.Tpo" -c -o Thunar-thunar-properties-dialog.o `test -f 'thunar-properties-dialog.c' || echo '$(srcdir)/'`thunar-properties-dialog.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-properties-dialog.Tpo" "$(DEPDIR)/Thunar-thunar-properties-dialog.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-properties-dialog.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-properties-dialog.c' object='Thunar-thunar-properties-dialog.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-properties-dialog.o `test -f 'thunar-properties-dialog.c' || echo '$(srcdir)/'`thunar-properties-dialog.c
+
+Thunar-thunar-properties-dialog.obj: thunar-properties-dialog.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-properties-dialog.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-properties-dialog.Tpo" -c -o Thunar-thunar-properties-dialog.obj `if test -f 'thunar-properties-dialog.c'; then $(CYGPATH_W) 'thunar-properties-dialog.c'; else $(CYGPATH_W) '$(srcdir)/thunar-properties-dialog.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-properties-dialog.Tpo" "$(DEPDIR)/Thunar-thunar-properties-dialog.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-properties-dialog.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-properties-dialog.c' object='Thunar-thunar-properties-dialog.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-properties-dialog.obj `if test -f 'thunar-properties-dialog.c'; then $(CYGPATH_W) 'thunar-properties-dialog.c'; else $(CYGPATH_W) '$(srcdir)/thunar-properties-dialog.c'; fi`
+
+Thunar-thunar-side-pane.o: thunar-side-pane.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-side-pane.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-side-pane.Tpo" -c -o Thunar-thunar-side-pane.o `test -f 'thunar-side-pane.c' || echo '$(srcdir)/'`thunar-side-pane.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-side-pane.Tpo" "$(DEPDIR)/Thunar-thunar-side-pane.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-side-pane.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-side-pane.c' object='Thunar-thunar-side-pane.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-side-pane.o `test -f 'thunar-side-pane.c' || echo '$(srcdir)/'`thunar-side-pane.c
+
+Thunar-thunar-side-pane.obj: thunar-side-pane.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-side-pane.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-side-pane.Tpo" -c -o Thunar-thunar-side-pane.obj `if test -f 'thunar-side-pane.c'; then $(CYGPATH_W) 'thunar-side-pane.c'; else $(CYGPATH_W) '$(srcdir)/thunar-side-pane.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-side-pane.Tpo" "$(DEPDIR)/Thunar-thunar-side-pane.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-side-pane.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-side-pane.c' object='Thunar-thunar-side-pane.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-side-pane.obj `if test -f 'thunar-side-pane.c'; then $(CYGPATH_W) 'thunar-side-pane.c'; else $(CYGPATH_W) '$(srcdir)/thunar-side-pane.c'; fi`
+
+Thunar-thunar-standard-view.o: thunar-standard-view.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-standard-view.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-standard-view.Tpo" -c -o Thunar-thunar-standard-view.o `test -f 'thunar-standard-view.c' || echo '$(srcdir)/'`thunar-standard-view.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-standard-view.Tpo" "$(DEPDIR)/Thunar-thunar-standard-view.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-standard-view.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-standard-view.c' object='Thunar-thunar-standard-view.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-standard-view.o `test -f 'thunar-standard-view.c' || echo '$(srcdir)/'`thunar-standard-view.c
+
+Thunar-thunar-standard-view.obj: thunar-standard-view.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-standard-view.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-standard-view.Tpo" -c -o Thunar-thunar-standard-view.obj `if test -f 'thunar-standard-view.c'; then $(CYGPATH_W) 'thunar-standard-view.c'; else $(CYGPATH_W) '$(srcdir)/thunar-standard-view.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-standard-view.Tpo" "$(DEPDIR)/Thunar-thunar-standard-view.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-standard-view.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-standard-view.c' object='Thunar-thunar-standard-view.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-standard-view.obj `if test -f 'thunar-standard-view.c'; then $(CYGPATH_W) 'thunar-standard-view.c'; else $(CYGPATH_W) '$(srcdir)/thunar-standard-view.c'; fi`
+
+Thunar-thunar-statusbar.o: thunar-statusbar.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-statusbar.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-statusbar.Tpo" -c -o Thunar-thunar-statusbar.o `test -f 'thunar-statusbar.c' || echo '$(srcdir)/'`thunar-statusbar.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-statusbar.Tpo" "$(DEPDIR)/Thunar-thunar-statusbar.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-statusbar.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-statusbar.c' object='Thunar-thunar-statusbar.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-statusbar.o `test -f 'thunar-statusbar.c' || echo '$(srcdir)/'`thunar-statusbar.c
+
+Thunar-thunar-statusbar.obj: thunar-statusbar.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-statusbar.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-statusbar.Tpo" -c -o Thunar-thunar-statusbar.obj `if test -f 'thunar-statusbar.c'; then $(CYGPATH_W) 'thunar-statusbar.c'; else $(CYGPATH_W) '$(srcdir)/thunar-statusbar.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-statusbar.Tpo" "$(DEPDIR)/Thunar-thunar-statusbar.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-statusbar.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-statusbar.c' object='Thunar-thunar-statusbar.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-statusbar.obj `if test -f 'thunar-statusbar.c'; then $(CYGPATH_W) 'thunar-statusbar.c'; else $(CYGPATH_W) '$(srcdir)/thunar-statusbar.c'; fi`
+
+Thunar-thunar-text-renderer.o: thunar-text-renderer.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-text-renderer.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-text-renderer.Tpo" -c -o Thunar-thunar-text-renderer.o `test -f 'thunar-text-renderer.c' || echo '$(srcdir)/'`thunar-text-renderer.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-text-renderer.Tpo" "$(DEPDIR)/Thunar-thunar-text-renderer.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-text-renderer.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-text-renderer.c' object='Thunar-thunar-text-renderer.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-text-renderer.o `test -f 'thunar-text-renderer.c' || echo '$(srcdir)/'`thunar-text-renderer.c
+
+Thunar-thunar-text-renderer.obj: thunar-text-renderer.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-text-renderer.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-text-renderer.Tpo" -c -o Thunar-thunar-text-renderer.obj `if test -f 'thunar-text-renderer.c'; then $(CYGPATH_W) 'thunar-text-renderer.c'; else $(CYGPATH_W) '$(srcdir)/thunar-text-renderer.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-text-renderer.Tpo" "$(DEPDIR)/Thunar-thunar-text-renderer.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-text-renderer.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-text-renderer.c' object='Thunar-thunar-text-renderer.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-text-renderer.obj `if test -f 'thunar-text-renderer.c'; then $(CYGPATH_W) 'thunar-text-renderer.c'; else $(CYGPATH_W) '$(srcdir)/thunar-text-renderer.c'; fi`
+
+Thunar-thunar-thumbnail-frame.o: thunar-thumbnail-frame.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-thumbnail-frame.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-thumbnail-frame.Tpo" -c -o Thunar-thunar-thumbnail-frame.o `test -f 'thunar-thumbnail-frame.c' || echo '$(srcdir)/'`thunar-thumbnail-frame.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-thumbnail-frame.Tpo" "$(DEPDIR)/Thunar-thunar-thumbnail-frame.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-thumbnail-frame.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-thumbnail-frame.c' object='Thunar-thunar-thumbnail-frame.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-thumbnail-frame.o `test -f 'thunar-thumbnail-frame.c' || echo '$(srcdir)/'`thunar-thumbnail-frame.c
+
+Thunar-thunar-thumbnail-frame.obj: thunar-thumbnail-frame.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-thumbnail-frame.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-thumbnail-frame.Tpo" -c -o Thunar-thunar-thumbnail-frame.obj `if test -f 'thunar-thumbnail-frame.c'; then $(CYGPATH_W) 'thunar-thumbnail-frame.c'; else $(CYGPATH_W) '$(srcdir)/thunar-thumbnail-frame.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-thumbnail-frame.Tpo" "$(DEPDIR)/Thunar-thunar-thumbnail-frame.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-thumbnail-frame.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-thumbnail-frame.c' object='Thunar-thunar-thumbnail-frame.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-thumbnail-frame.obj `if test -f 'thunar-thumbnail-frame.c'; then $(CYGPATH_W) 'thunar-thumbnail-frame.c'; else $(CYGPATH_W) '$(srcdir)/thunar-thumbnail-frame.c'; fi`
+
+Thunar-thunar-thumbnail-generator.o: thunar-thumbnail-generator.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-thumbnail-generator.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-thumbnail-generator.Tpo" -c -o Thunar-thunar-thumbnail-generator.o `test -f 'thunar-thumbnail-generator.c' || echo '$(srcdir)/'`thunar-thumbnail-generator.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-thumbnail-generator.Tpo" "$(DEPDIR)/Thunar-thunar-thumbnail-generator.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-thumbnail-generator.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-thumbnail-generator.c' object='Thunar-thunar-thumbnail-generator.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-thumbnail-generator.o `test -f 'thunar-thumbnail-generator.c' || echo '$(srcdir)/'`thunar-thumbnail-generator.c
+
+Thunar-thunar-thumbnail-generator.obj: thunar-thumbnail-generator.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-thumbnail-generator.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-thumbnail-generator.Tpo" -c -o Thunar-thunar-thumbnail-generator.obj `if test -f 'thunar-thumbnail-generator.c'; then $(CYGPATH_W) 'thunar-thumbnail-generator.c'; else $(CYGPATH_W) '$(srcdir)/thunar-thumbnail-generator.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-thumbnail-generator.Tpo" "$(DEPDIR)/Thunar-thunar-thumbnail-generator.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-thumbnail-generator.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-thumbnail-generator.c' object='Thunar-thunar-thumbnail-generator.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-thumbnail-generator.obj `if test -f 'thunar-thumbnail-generator.c'; then $(CYGPATH_W) 'thunar-thumbnail-generator.c'; else $(CYGPATH_W) '$(srcdir)/thunar-thumbnail-generator.c'; fi`
+
+Thunar-thunar-view.o: thunar-view.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-view.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-view.Tpo" -c -o Thunar-thunar-view.o `test -f 'thunar-view.c' || echo '$(srcdir)/'`thunar-view.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-view.Tpo" "$(DEPDIR)/Thunar-thunar-view.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-view.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-view.c' object='Thunar-thunar-view.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-view.o `test -f 'thunar-view.c' || echo '$(srcdir)/'`thunar-view.c
+
+Thunar-thunar-view.obj: thunar-view.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-view.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-view.Tpo" -c -o Thunar-thunar-view.obj `if test -f 'thunar-view.c'; then $(CYGPATH_W) 'thunar-view.c'; else $(CYGPATH_W) '$(srcdir)/thunar-view.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-view.Tpo" "$(DEPDIR)/Thunar-thunar-view.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-view.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-view.c' object='Thunar-thunar-view.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-view.obj `if test -f 'thunar-view.c'; then $(CYGPATH_W) 'thunar-view.c'; else $(CYGPATH_W) '$(srcdir)/thunar-view.c'; fi`
+
+Thunar-thunar-window.o: thunar-window.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-window.o -MD -MP -MF "$(DEPDIR)/Thunar-thunar-window.Tpo" -c -o Thunar-thunar-window.o `test -f 'thunar-window.c' || echo '$(srcdir)/'`thunar-window.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-window.Tpo" "$(DEPDIR)/Thunar-thunar-window.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-window.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-window.c' object='Thunar-thunar-window.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-window.o `test -f 'thunar-window.c' || echo '$(srcdir)/'`thunar-window.c
+
+Thunar-thunar-window.obj: thunar-window.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -MT Thunar-thunar-window.obj -MD -MP -MF "$(DEPDIR)/Thunar-thunar-window.Tpo" -c -o Thunar-thunar-window.obj `if test -f 'thunar-window.c'; then $(CYGPATH_W) 'thunar-window.c'; else $(CYGPATH_W) '$(srcdir)/thunar-window.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/Thunar-thunar-window.Tpo" "$(DEPDIR)/Thunar-thunar-window.Po"; else rm -f "$(DEPDIR)/Thunar-thunar-window.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-window.c' object='Thunar-thunar-window.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(Thunar_CFLAGS) $(CFLAGS) -c -o Thunar-thunar-window.obj `if test -f 'thunar-window.c'; then $(CYGPATH_W) 'thunar-window.c'; else $(CYGPATH_W) '$(srcdir)/thunar-window.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+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)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(PROGRAMS)
+installdirs:
+ for dir in "$(DESTDIR)$(bindir)"; 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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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)
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic clean-libtool clean-local \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-data-local
+
+install-exec-am: install-binPROGRAMS
+
+install-info: install-info-am
+
+install-man:
+
+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-binPROGRAMS uninstall-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+ clean-generic clean-libtool clean-local ctags 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-data \
+ install-data-am install-data-local install-exec \
+ install-exec-am install-info install-info-am install-man \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags uninstall uninstall-am \
+ uninstall-binPROGRAMS uninstall-info-am
+
+
+# install symlink to 'thunar'
+install-data-local:
+ $(mkinstalldirs) $(DESTDIR)$(bindir)
+ ( cd $(DESTDIR)$(bindir) ; ln -sf Thunar thunar )
+
+clean-local:
+ rm -f *.core core core.*
+
+ at MAINTAINER_MODE_TRUE@thunar-fallback-icon.c: $(srcdir)/thunar-fallback-icon.png Makefile
+ at MAINTAINER_MODE_TRUE@ (echo "#include <thunar/thunar-fallback-icon.h>" && gdk-pixbuf-csource --extern --raw --stream --name=thunar_fallback_icon $(srcdir)/thunar-fallback-icon.png) > thunar-fallback-icon.c
+
+ at MAINTAINER_MODE_TRUE@thunar-thumbnail-frame.c: $(srcdir)/thunar-thumbnail-frame.png Makefile
+ at MAINTAINER_MODE_TRUE@ (echo "#include <thunar/thunar-thumbnail-frame.h>" && gdk-pixbuf-csource --extern --raw --stream --name=thunar_thumbnail_frame $(srcdir)/thunar-thumbnail-frame.png) > thunar-thumbnail-frame.c
+
+ at MAINTAINER_MODE_TRUE@thunar-icon-view-ui.h: Makefile $(srcdir)/thunar-icon-view-ui.xml
+ at MAINTAINER_MODE_TRUE@ exo-csource --static --name=thunar_icon_view_ui $(srcdir)/thunar-icon-view-ui.xml > thunar-icon-view-ui.h
+
+ at MAINTAINER_MODE_TRUE@thunar-standard-view-ui.h: Makefile $(srcdir)/thunar-standard-view-ui.xml
+ at MAINTAINER_MODE_TRUE@ exo-csource --static --name=thunar_standard_view_ui $(srcdir)/thunar-standard-view-ui.xml > thunar-standard-view-ui.h
+
+ at MAINTAINER_MODE_TRUE@thunar-window-ui.h: Makefile $(srcdir)/thunar-window-ui.xml
+ at MAINTAINER_MODE_TRUE@ exo-csource --static --name=thunar_window_ui $(srcdir)/thunar-window-ui.xml > thunar-window-ui.h
+
+ at MAINTAINER_MODE_TRUE@thunar-marshal.h: stamp-thunar-marshal.h
+ at MAINTAINER_MODE_TRUE@ @true
+ at MAINTAINER_MODE_TRUE@stamp-thunar-marshal.h: thunar-marshal.list Makefile
+ at MAINTAINER_MODE_TRUE@ ( cd $(srcdir) && glib-genmarshal \
+ at MAINTAINER_MODE_TRUE@ --prefix=_thunar_marshal \
+ at MAINTAINER_MODE_TRUE@ --header thunar-marshal.list ) >> xgen-tmh \
+ at MAINTAINER_MODE_TRUE@ && ( cmp -s xgen-tmh thunar-marshal.h || cp xgen-tmh thunar-marshal.h ) \
+ at MAINTAINER_MODE_TRUE@ && rm -f xgen-tmh \
+ at MAINTAINER_MODE_TRUE@ && echo timestamp > $(@F)
+
+ at MAINTAINER_MODE_TRUE@thunar-marshal.c: thunar-marshal.list Makefile
+ at MAINTAINER_MODE_TRUE@ ( cd $(srcdir) && glib-genmarshal \
+ at MAINTAINER_MODE_TRUE@ --prefix=_thunar_marshal \
+ at MAINTAINER_MODE_TRUE@ --body thunar-marshal.list ) >> xgen-tmc \
+ at MAINTAINER_MODE_TRUE@ && cp xgen-tmc thunar-marshal.c \
+ at MAINTAINER_MODE_TRUE@ && rm -f xgen-tmc
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
+# 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:
Added: desktop/trunk/thunar/branches/upstream/current/thunar/main.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/main.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/main.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,99 @@
+/* $Id: main.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 os-cillation e.K.
+ *
+ * Written by Benedikt Meurer <benny at xfce.org>.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdio.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+#include <thunar/thunar-application.h>
+
+
+
+int
+main (int argc, char **argv)
+{
+ ThunarApplication *application;
+ ThunarVfsPath *path;
+ ThunarFile *file = NULL;
+ GError *error = NULL;
+
+ /* setup translation domain */
+ xfce_textdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8");
+
+ /* setup application name */
+ g_set_application_name (_("Thunar"));
+
+#ifndef G_DISABLE_CHECKS
+ /* Do NOT remove this line for now, If something doesn't work,
+ * fix your code instead!
+ */
+ g_log_set_always_fatal (G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_WARNING);
+#endif
+
+ /* initialize the GLib thread support */
+ if (!g_thread_supported ())
+ g_thread_init (NULL);
+
+ /* initialize Gtk+ */
+ gtk_init (&argc, &argv);
+
+ /* initialize the ThunarVFS library */
+ thunar_vfs_init ();
+
+ /* acquire a reference on the global application */
+ application = thunar_application_get ();
+
+ path = (argc > 1) ? thunar_vfs_path_new (argv[1], &error) : thunar_vfs_path_get_for_home ();
+ if (G_LIKELY (path != NULL))
+ {
+ file = thunar_file_get_for_path (path, &error);
+ thunar_vfs_path_unref (path);
+ }
+
+ if (path == NULL || file == NULL)
+ {
+ fprintf (stderr, "%s: Failed to open `%s': %s\n",
+ argv[0], (argc > 1) ? argv[1] : xfce_get_homedir (),
+ error->message);
+ g_error_free (error);
+ return EXIT_FAILURE;
+ }
+
+ /* open the first window */
+ thunar_application_open_window (application, file, NULL);
+
+ g_object_unref (G_OBJECT (file));
+
+ gtk_main ();
+
+ /* release the application reference */
+ g_object_unref (G_OBJECT (application));
+
+ /* shutdown the VFS library */
+ thunar_vfs_shutdown ();
+
+ return EXIT_SUCCESS;
+}
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-application.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-application.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-application.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,559 @@
+/* $Id: thunar-application.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ * Copyright (c) 2005 Jeff Franks <jcfranks at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <thunar/thunar-application.h>
+#include <thunar/thunar-dialogs.h>
+#include <thunar/thunar-preferences.h>
+#include <thunar/thunar-progress-dialog.h>
+
+
+
+/* Prototype for the Thunar-VFS job launchers */
+typedef ThunarVfsJob *(*Launcher) (GList *source_path_list,
+ GList *target_path_list,
+ GError **error);
+
+
+
+static void thunar_application_class_init (ThunarApplicationClass *klass);
+static void thunar_application_init (ThunarApplication *application);
+static void thunar_application_finalize (GObject *object);
+static void thunar_application_collect_and_launch (ThunarApplication *application,
+ GtkWidget *widget,
+ const gchar *icon_name,
+ const gchar *title,
+ Launcher launcher,
+ GList *source_path_list,
+ ThunarVfsPath *target_path,
+ GClosure *new_files_closure);
+static void thunar_application_launch (ThunarApplication *application,
+ GtkWidget *widget,
+ const gchar *icon_name,
+ const gchar *title,
+ Launcher launcher,
+ GList *source_path_list,
+ GList *target_path_list,
+ GClosure *new_files_closure);
+static void thunar_application_window_destroyed (GtkWidget *window,
+ ThunarApplication *application);
+static gboolean thunar_application_show_dialogs (gpointer user_data);
+static void thunar_application_show_dialogs_destroy (gpointer user_data);
+
+
+
+struct _ThunarApplicationClass
+{
+ GObjectClass __parent__;
+};
+
+struct _ThunarApplication
+{
+ GObject __parent__;
+
+ ThunarPreferences *preferences;
+ GList *windows;
+
+ gint show_dialogs_timer_id;
+};
+
+
+
+G_DEFINE_TYPE (ThunarApplication, thunar_application, G_TYPE_OBJECT);
+
+
+
+static void
+thunar_application_class_init (ThunarApplicationClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_application_finalize;
+}
+
+
+
+static void
+thunar_application_init (ThunarApplication *application)
+{
+ application->preferences = thunar_preferences_get ();
+ application->show_dialogs_timer_id = -1;
+}
+
+
+
+static void
+thunar_application_finalize (GObject *object)
+{
+ ThunarApplication *application = THUNAR_APPLICATION (object);
+ GList *lp;
+
+ /* drop any running "show dialogs" timer */
+ if (G_UNLIKELY (application->show_dialogs_timer_id >= 0))
+ g_source_remove (application->show_dialogs_timer_id);
+
+ /* drop the open windows */
+ for (lp = application->windows; lp != NULL; lp = lp->next)
+ {
+ g_signal_handlers_disconnect_by_func (G_OBJECT (lp->data), G_CALLBACK (thunar_application_window_destroyed), application);
+ gtk_widget_destroy (GTK_WIDGET (lp->data));
+ }
+ g_list_free (application->windows);
+
+ /* release our reference on the preferences */
+ g_object_unref (G_OBJECT (application->preferences));
+
+ (*G_OBJECT_CLASS (thunar_application_parent_class)->finalize) (object);
+}
+
+
+
+static void
+thunar_application_collect_and_launch (ThunarApplication *application,
+ GtkWidget *widget,
+ const gchar *icon_name,
+ const gchar *title,
+ Launcher launcher,
+ GList *source_path_list,
+ ThunarVfsPath *target_path,
+ GClosure *new_files_closure)
+{
+ ThunarVfsPath *path;
+ GList *target_path_list = NULL;
+ GList *lp;
+
+ /* check if we have anything to operate on */
+ if (G_UNLIKELY (source_path_list == NULL))
+ return;
+
+ /* generate the target path list */
+ for (lp = g_list_last (source_path_list); lp != NULL; lp = lp->prev)
+ {
+ path = thunar_vfs_path_relative (target_path, thunar_vfs_path_get_name (lp->data));
+ target_path_list = g_list_prepend (target_path_list, path);
+ }
+
+ /* launch the operation */
+ thunar_application_launch (application, widget, icon_name, title, launcher,
+ source_path_list, target_path_list, new_files_closure);
+
+ /* release the target path list */
+ thunar_vfs_path_list_free (target_path_list);
+}
+
+
+
+static void
+thunar_application_launch (ThunarApplication *application,
+ GtkWidget *widget,
+ const gchar *icon_name,
+ const gchar *title,
+ Launcher launcher,
+ GList *source_path_list,
+ GList *target_path_list,
+ GClosure *new_files_closure)
+{
+ ThunarVfsJob *job;
+ GtkWidget *dialog;
+ GtkWindow *window;
+ GError *error = NULL;
+
+ /* determine the toplevel window for the widget */
+ window = (widget != NULL) ? (GtkWindow *) gtk_widget_get_toplevel (widget) : NULL;
+
+ /* try to allocate a new job for the operation */
+ job = (*launcher) (source_path_list, target_path_list, &error);
+ if (G_UNLIKELY (job == NULL))
+ {
+ /* display an error message to the user */
+ thunar_dialogs_show_error (widget, error, _("Failed to launch operation"));
+
+ /* release the error */
+ g_error_free (error);
+ }
+ else
+ {
+ /* connect the "new-files" closure (if any) */
+ if (G_LIKELY (new_files_closure != NULL))
+ g_signal_connect_closure (G_OBJECT (job), "new-files", new_files_closure, FALSE);
+
+ /* allocate a progress dialog for the job */
+ dialog = g_object_new (THUNAR_TYPE_PROGRESS_DIALOG,
+ "icon-name", icon_name,
+ "title", title,
+ "job", job,
+ NULL);
+
+ /* connect to the parent (if any) */
+ if (G_LIKELY (window != NULL))
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), window);
+
+ /* be sure to destroy the dialog when the job is done */
+ g_signal_connect_after (G_OBJECT (dialog), "response", G_CALLBACK (gtk_widget_destroy), dialog);
+
+ /* hook up the dialog window */
+ g_signal_connect (G_OBJECT (dialog), "destroy", G_CALLBACK (thunar_application_window_destroyed), application);
+ application->windows = g_list_prepend (application->windows, dialog);
+
+ /* Set up a timer to show the dialog, to make sure we don't
+ * just popup and destroy a dialog for a very short job.
+ */
+ if (G_LIKELY (application->show_dialogs_timer_id < 0))
+ {
+ application->show_dialogs_timer_id = g_timeout_add_full (G_PRIORITY_DEFAULT, 750, thunar_application_show_dialogs,
+ application, thunar_application_show_dialogs_destroy);
+ }
+
+ /* drop our reference on the job */
+ g_object_unref (G_OBJECT (job));
+ }
+}
+
+
+
+static void
+thunar_application_window_destroyed (GtkWidget *window,
+ ThunarApplication *application)
+{
+ g_return_if_fail (GTK_IS_WINDOW (window));
+ g_return_if_fail (THUNAR_IS_APPLICATION (application));
+ g_return_if_fail (g_list_find (application->windows, window) != NULL);
+
+ application->windows = g_list_remove (application->windows, window);
+
+ /* terminate the application if we don't have any more
+ * windows and we don't manage the desktop.
+ */
+ if (G_UNLIKELY (application->windows == NULL
+ /*&& application->desktop_view == NULL*/))
+ {
+ gtk_main_quit ();
+ }
+}
+
+
+
+static gboolean
+thunar_application_show_dialogs (gpointer user_data)
+{
+ ThunarApplication *application = THUNAR_APPLICATION (user_data);
+ GList *lp;
+
+ GDK_THREADS_ENTER ();
+
+ /* show all progress dialogs */
+ for (lp = application->windows; lp != NULL; lp = lp->next)
+ if (THUNAR_IS_PROGRESS_DIALOG (lp->data))
+ gtk_widget_show (GTK_WIDGET (lp->data));
+
+ GDK_THREADS_LEAVE ();
+
+ return FALSE;
+}
+
+
+
+static void
+thunar_application_show_dialogs_destroy (gpointer user_data)
+{
+ THUNAR_APPLICATION (user_data)->show_dialogs_timer_id = -1;
+}
+
+
+
+/**
+ * thunar_application_get:
+ *
+ * Returns the global shared #ThunarApplication instance.
+ * This method takes a reference on the global instance
+ * for the caller, so you must call g_object_unref()
+ * on it when done.
+ *
+ * Return value: the shared #ThunarApplication instance.
+ **/
+ThunarApplication*
+thunar_application_get (void)
+{
+ static ThunarApplication *application = NULL;
+
+ if (G_UNLIKELY (application == NULL))
+ {
+ application = g_object_new (THUNAR_TYPE_APPLICATION, NULL);
+ g_object_add_weak_pointer (G_OBJECT (application), (gpointer) &application);
+ }
+ else
+ {
+ g_object_ref (G_OBJECT (application));
+ }
+
+ return application;
+}
+
+
+
+/**
+ * thunar_application_get_windows:
+ * @application : a #ThunarApplication.
+ *
+ * Returns the list of regular #ThunarWindows currently handled by
+ * @application. The returned list is owned by the caller and
+ * must be freed using g_list_free().
+ *
+ * Return value: the list of regular #ThunarWindows in @application.
+ **/
+GList*
+thunar_application_get_windows (ThunarApplication *application)
+{
+ GList *windows = NULL;
+ GList *lp;
+
+ g_return_val_if_fail (THUNAR_IS_APPLICATION (application), NULL);
+
+ for (lp = application->windows; lp != NULL; lp = lp->next)
+ if (G_LIKELY (THUNAR_IS_WINDOW (lp->data)))
+ windows = g_list_prepend (windows, lp->data);
+
+ return windows;
+}
+
+
+
+/**
+ * thunar_application_open_window:
+ * @application : a #ThunarApplication.
+ * @directory : the directory to open.
+ * @screen : the #GdkScreen on which to open the window or %NULL
+ * to open on the default screen.
+ *
+ * Opens a new #ThunarWindow for @application, displaying the
+ * given @directory.
+ **/
+void
+thunar_application_open_window (ThunarApplication *application,
+ ThunarFile *directory,
+ GdkScreen *screen)
+{
+ GtkWidget *window;
+
+ g_return_if_fail (THUNAR_IS_APPLICATION (application));
+ g_return_if_fail (THUNAR_IS_FILE (directory));
+ g_return_if_fail (screen == NULL || GDK_IS_SCREEN (screen));
+
+ if (G_UNLIKELY (screen == NULL))
+ screen = gdk_screen_get_default ();
+
+ /* allocate the window */
+ window = g_object_new (THUNAR_TYPE_WINDOW,
+ "screen", screen,
+ NULL);
+
+ /* hook up the window */
+ g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (thunar_application_window_destroyed), application);
+ application->windows = g_list_prepend (application->windows, window);
+
+ /* show the new window */
+ gtk_widget_show (window);
+
+ /* change the directory */
+ thunar_window_set_current_directory (THUNAR_WINDOW (window), directory);
+}
+
+
+
+/**
+ * thunar_application_copy_into:
+ * @application : a #ThunarApplication.
+ * @widget : the associated widget or %NULL.
+ * @source_path_list : the list of #ThunarVfsPath<!---->s that should be copied.
+ * @target_path : the #ThunarVfsPath to the target directory.
+ * @new_files_closure : a #GClosure to connect to the job's "new-files" signal,
+ * which will be emitted when the job finishes with the
+ * list of #ThunarVfsPath<!---->s created by the job, or
+ * %NULL if you're not interested in the signal.
+ *
+ * Copies all files referenced by the @source_path_list to the directory
+ * referenced by @target_path. This method takes care of all user interaction.
+ **/
+void
+thunar_application_copy_into (ThunarApplication *application,
+ GtkWidget *widget,
+ GList *source_path_list,
+ ThunarVfsPath *target_path,
+ GClosure *new_files_closure)
+{
+ g_return_if_fail (THUNAR_IS_APPLICATION (application));
+ g_return_if_fail (widget == NULL || GTK_IS_WIDGET (widget));
+ g_return_if_fail (target_path != NULL);
+
+ /* collect the target paths and launch the job */
+ thunar_application_collect_and_launch (application, widget, "stock_folder-copy",
+ _("Copying files..."), thunar_vfs_copy_files,
+ source_path_list, target_path, new_files_closure);
+}
+
+
+
+/**
+ * thunar_application_link_into:
+ * @application : a #ThunarApplication.
+ * @widget : the associated #GtkWidget or %NULL.
+ * @source_path_list : the list of #ThunarVfsPath<!---->s that should be symlinked.
+ * @target_path : the target directory.
+ * @new_files_closure : a #GClosure to connect to the job's "new-files" signal,
+ * which will be emitted when the job finishes with the
+ * list of #ThunarVfsPath<!---->s created by the job, or
+ * %NULL if you're not interested in the signal.
+ *
+ * Symlinks all files referenced by the @source_path_list to the directory
+ * referenced by @target_path. This method takes care of all user
+ * interaction.
+ **/
+void
+thunar_application_link_into (ThunarApplication *application,
+ GtkWidget *widget,
+ GList *source_path_list,
+ ThunarVfsPath *target_path,
+ GClosure *new_files_closure)
+{
+ g_return_if_fail (THUNAR_IS_APPLICATION (application));
+ g_return_if_fail (widget == NULL || GTK_IS_WIDGET (widget));
+ g_return_if_fail (target_path != NULL);
+
+ /* collect the target paths and launch the job */
+ thunar_application_collect_and_launch (application, widget, "stock_link",
+ _("Creating symbolic links..."),
+ thunar_vfs_link_files, source_path_list,
+ target_path, new_files_closure);
+}
+
+
+
+/**
+ * thunar_application_move_into:
+ * @application : a #ThunarApplication.
+ * @widget : the associated #GtkWidget or %NULL.
+ * @source_path_list : the list of #ThunarVfsPath<!---->s that should be moved.
+ * @target_path : the target directory.
+ * @new_files_closure : a #GClosure to connect to the job's "new-files" signal,
+ * which will be emitted when the job finishes with the
+ * list of #ThunarVfsPath<!---->s created by the job, or
+ * %NULL if you're not interested in the signal.
+ *
+ * Moves all files referenced by the @source_path_list to the directory
+ * referenced by @target_path. This method takes care of all user
+ * interaction.
+ **/
+void
+thunar_application_move_into (ThunarApplication *application,
+ GtkWidget *widget,
+ GList *source_path_list,
+ ThunarVfsPath *target_path,
+ GClosure *new_files_closure)
+{
+ g_return_if_fail (THUNAR_IS_APPLICATION (application));
+ g_return_if_fail (widget == NULL || GTK_IS_WIDGET (widget));
+ g_return_if_fail (target_path != NULL);
+
+ /* launch the operation */
+ thunar_application_collect_and_launch (application, widget, "stock_folder-move",
+ _("Moving files..."), thunar_vfs_move_files,
+ source_path_list, target_path, new_files_closure);
+}
+
+
+
+static ThunarVfsJob*
+unlink_stub (GList *source_path_list,
+ GList *target_path_list,
+ GError **error)
+{
+ return thunar_vfs_unlink_files (source_path_list, error);
+}
+
+
+
+/**
+ * thunar_application_unlink:
+ * @application : a #ThunarApplication.
+ * @widget : the associated #GtkWidget or %NULL.
+ * @path_list : the list of #ThunarVfsPath<!---->s that should be deleted.
+ *
+ * Deletes all files referenced by the @path_list and takes care of all user
+ * interaction.
+ **/
+void
+thunar_application_unlink (ThunarApplication *application,
+ GtkWidget *widget,
+ GList *path_list)
+{
+ g_return_if_fail (THUNAR_IS_APPLICATION (application));
+ g_return_if_fail (widget == NULL || GTK_IS_WIDGET (widget));
+
+ /* launch the operation */
+ thunar_application_launch (application, widget, "stock_delete",
+ _("Deleting files..."), unlink_stub,
+ path_list, path_list, NULL);
+}
+
+
+
+static ThunarVfsJob*
+mkdir_stub (GList *source_path_list,
+ GList *target_path_list,
+ GError **error)
+{
+ return thunar_vfs_make_directories (source_path_list, error);
+}
+
+
+
+/**
+ * thunar_application_mkdir:
+ * @application : a #ThunarApplication.
+ * @widget : the associated #GtkWidget or %NULL.
+ * @path_list : the list of directories to create.
+ * @new_files_closure : a #GClosure to connect to the job's "new-files" signal,
+ * which will be emitted when the job finishes with the
+ * list of #ThunarVfsPath<!---->s created by the job, or
+ * %NULL if you're not interested in the signal.
+ *
+ * Creates all directories referenced by the @path_list. This method takes care of all user
+ * interaction.
+ **/
+void
+thunar_application_mkdir (ThunarApplication *application,
+ GtkWidget *widget,
+ GList *path_list,
+ GClosure *new_files_closure)
+{
+ g_return_if_fail (THUNAR_IS_APPLICATION (application));
+ g_return_if_fail (widget == NULL || GTK_IS_WIDGET (widget));
+
+ /* launch the operation */
+ thunar_application_launch (application, widget, "stock_folder",
+ _("Creating directories..."), mkdir_stub,
+ path_list, path_list, new_files_closure);
+}
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-application.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-application.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-application.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,77 @@
+/* $Id: thunar-application.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ * Copyright (c) 2005 Jeff Franks <jcfranks at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_APPLICATION_H__
+#define __THUNAR_APPLICATION_H__
+
+#include <thunar/thunar-window.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarApplicationClass ThunarApplicationClass;
+typedef struct _ThunarApplication ThunarApplication;
+
+#define THUNAR_TYPE_APPLICATION (thunar_application_get_type ())
+#define THUNAR_APPLICATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_APPLICATION, ThunarApplication))
+#define THUNAR_APPLICATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_APPLICATION, ThunarApplicationClass))
+#define THUNAR_IS_APPLICATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_APPLICATION))
+#define THUNAR_IS_APPLICATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_APPLICATION))
+#define THUNAR_APPLICATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_APPLICATION, ThunarApplicationClass))
+
+GType thunar_application_get_type (void) G_GNUC_CONST;
+
+ThunarApplication *thunar_application_get (void);
+
+GList *thunar_application_get_windows (ThunarApplication *application);
+
+void thunar_application_open_window (ThunarApplication *application,
+ ThunarFile *directory,
+ GdkScreen *screen);
+
+void thunar_application_copy_into (ThunarApplication *application,
+ GtkWidget *widget,
+ GList *source_path_list,
+ ThunarVfsPath *target_path,
+ GClosure *new_files_closure);
+
+void thunar_application_link_into (ThunarApplication *application,
+ GtkWidget *widget,
+ GList *source_path_list,
+ ThunarVfsPath *target_path,
+ GClosure *new_files_closure);
+
+void thunar_application_move_into (ThunarApplication *application,
+ GtkWidget *widget,
+ GList *source_path_list,
+ ThunarVfsPath *target_path,
+ GClosure *new_files_closure);
+
+void thunar_application_unlink (ThunarApplication *application,
+ GtkWidget *widget,
+ GList *path_list);
+
+void thunar_application_mkdir (ThunarApplication *application,
+ GtkWidget *widget,
+ GList *path_list,
+ GClosure *new_files_closure);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_APPLICATION_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-chooser-dialog.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-chooser-dialog.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-chooser-dialog.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,939 @@
+/* $Id: thunar-chooser-dialog.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#include <thunar/thunar-chooser-dialog.h>
+#include <thunar/thunar-chooser-model.h>
+#include <thunar/thunar-dialogs.h>
+#include <thunar/thunar-icon-factory.h>
+
+
+
+/* Property identifiers */
+enum
+{
+ PROP_0,
+ PROP_FILE,
+ PROP_OPEN,
+};
+
+
+
+static void thunar_chooser_dialog_class_init (ThunarChooserDialogClass *klass);
+static void thunar_chooser_dialog_init (ThunarChooserDialog *dialog);
+static void thunar_chooser_dialog_dispose (GObject *object);
+static void thunar_chooser_dialog_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void thunar_chooser_dialog_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void thunar_chooser_dialog_realize (GtkWidget *widget);
+static void thunar_chooser_dialog_response (GtkDialog *widget,
+ gint response);
+static gboolean thunar_chooser_dialog_selection_func (GtkTreeSelection *selection,
+ GtkTreeModel *model,
+ GtkTreePath *path,
+ gboolean path_currently_selected,
+ gpointer user_data);
+static void thunar_chooser_dialog_update_accept (ThunarChooserDialog *dialog);
+static void thunar_chooser_dialog_update_header (ThunarChooserDialog *dialog);
+static void thunar_chooser_dialog_browse (GtkWidget *button,
+ ThunarChooserDialog *dialog);
+static void thunar_chooser_dialog_notify_expanded (GtkExpander *expander,
+ GParamSpec *pspec,
+ ThunarChooserDialog *dialog);
+static void thunar_chooser_dialog_notify_loading (ThunarChooserModel *model,
+ GParamSpec *pspec,
+ ThunarChooserDialog *dialog);
+static void thunar_chooser_dialog_row_activated (GtkTreeView *treeview,
+ GtkTreePath *path,
+ GtkTreeViewColumn *column,
+ ThunarChooserDialog *dialog);
+
+
+
+struct _ThunarChooserDialogClass
+{
+ GtkDialogClass __parent__;
+};
+
+struct _ThunarChooserDialog
+{
+ GtkDialog __parent__;
+
+ ThunarFile *file;
+ gboolean open;
+
+ GtkWidget *header_image;
+ GtkWidget *header_label;
+ GtkWidget *tree_view;
+ GtkWidget *custom_expander;
+ GtkWidget *custom_entry;
+ GtkWidget *cancel_button;
+ GtkWidget *accept_button;
+};
+
+
+
+G_DEFINE_TYPE (ThunarChooserDialog, thunar_chooser_dialog, GTK_TYPE_DIALOG);
+
+
+
+static void
+thunar_chooser_dialog_class_init (ThunarChooserDialogClass *klass)
+{
+ GtkDialogClass *gtkdialog_class;
+ GtkWidgetClass *gtkwidget_class;
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->dispose = thunar_chooser_dialog_dispose;
+ gobject_class->get_property = thunar_chooser_dialog_get_property;
+ gobject_class->set_property = thunar_chooser_dialog_set_property;
+
+ gtkwidget_class = GTK_WIDGET_CLASS (klass);
+ gtkwidget_class->realize = thunar_chooser_dialog_realize;
+
+ gtkdialog_class = GTK_DIALOG_CLASS (klass);
+ gtkdialog_class->response = thunar_chooser_dialog_response;
+
+ /**
+ * ThunarChooserDialog::file:
+ *
+ * The #ThunarFile for which an application should be chosen.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_FILE,
+ g_param_spec_object ("file",
+ _("File"),
+ _("The file for which an application should be chosen"),
+ THUNAR_TYPE_FILE,
+ EXO_PARAM_READWRITE));
+
+ /**
+ * ThunarChooserDialog::open:
+ *
+ * Whether the chooser should open the specified file.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_OPEN,
+ g_param_spec_boolean ("open",
+ _("Open"),
+ _("Whether the chooser should open the specified file"),
+ FALSE,
+ G_PARAM_CONSTRUCT | EXO_PARAM_READWRITE));
+}
+
+
+
+static void
+thunar_chooser_dialog_init (ThunarChooserDialog *dialog)
+{
+ GtkTreeViewColumn *column;
+ GtkTreeSelection *selection;
+ GtkCellRenderer *renderer;
+ GtkWidget *header;
+ GtkWidget *button;
+ GtkWidget *image;
+ GtkWidget *hbox;
+ GtkWidget *vbox;
+ GtkWidget *box;
+ GtkWidget *swin;
+
+ /* setup basic window properties */
+ gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
+ gtk_window_set_destroy_with_parent (GTK_WINDOW (dialog), TRUE);
+ gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);
+ gtk_window_set_title (GTK_WINDOW (dialog), _("Open With"));
+
+ /* create the main widget box */
+ vbox = g_object_new (GTK_TYPE_VBOX, "border-width", 6, "spacing", 12, NULL);
+ gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), vbox, TRUE, TRUE, 0);
+ gtk_widget_show (vbox);
+
+ /* create the header box */
+ header = gtk_hbox_new (FALSE, 6);
+ gtk_box_pack_start (GTK_BOX (vbox), header, FALSE, FALSE, 0);
+ gtk_widget_show (header);
+
+ /* create the header image */
+ dialog->header_image = gtk_image_new ();
+ gtk_box_pack_start (GTK_BOX (header), dialog->header_image, FALSE, FALSE, 0);
+ gtk_widget_show (dialog->header_image);
+
+ /* create the header label */
+ dialog->header_label = gtk_label_new ("");
+ gtk_misc_set_alignment (GTK_MISC (dialog->header_label), 0.0f, 0.5f);
+ gtk_label_set_line_wrap (GTK_LABEL (dialog->header_label), TRUE);
+ gtk_widget_set_size_request (dialog->header_label, 350, -1);
+ gtk_box_pack_start (GTK_BOX (header), dialog->header_label, FALSE, FALSE, 0);
+ gtk_widget_show (dialog->header_label);
+
+ /* create the view box */
+ box = gtk_vbox_new (FALSE, 6);
+ gtk_box_pack_start (GTK_BOX (vbox), box, TRUE, TRUE, 0);
+ gtk_widget_show (box);
+
+ /* create the scrolled window for the tree view */
+ swin = gtk_scrolled_window_new (NULL, NULL);
+ gtk_widget_set_size_request (swin, -1, 275);
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swin), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+ gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (swin), GTK_SHADOW_IN);
+ gtk_box_pack_start (GTK_BOX (box), swin, TRUE, TRUE, 0);
+ gtk_widget_show (swin);
+
+ /* create the tree view */
+ dialog->tree_view = g_object_new (GTK_TYPE_TREE_VIEW, "headers-visible", FALSE, NULL);
+ g_signal_connect (G_OBJECT (dialog->tree_view), "row-activated", G_CALLBACK (thunar_chooser_dialog_row_activated), dialog);
+ gtk_container_add (GTK_CONTAINER (swin), dialog->tree_view);
+ gtk_widget_show (dialog->tree_view);
+
+ /* append the tree view column */
+ column = g_object_new (GTK_TYPE_TREE_VIEW_COLUMN, "expand", TRUE, NULL);
+ renderer = gtk_cell_renderer_pixbuf_new ();
+ gtk_tree_view_column_pack_start (column, renderer, FALSE);
+ gtk_tree_view_column_set_attributes (column, renderer,
+ "pixbuf", THUNAR_CHOOSER_MODEL_COLUMN_ICON,
+ NULL);
+ renderer = gtk_cell_renderer_text_new ();
+ gtk_tree_view_column_pack_start (column, renderer, TRUE);
+ gtk_tree_view_column_set_attributes (column, renderer,
+ "style", THUNAR_CHOOSER_MODEL_COLUMN_STYLE,
+ "style-set", THUNAR_CHOOSER_MODEL_COLUMN_STYLE_SET,
+ "text", THUNAR_CHOOSER_MODEL_COLUMN_NAME,
+ NULL);
+ gtk_tree_view_column_set_sort_column_id (column, THUNAR_CHOOSER_MODEL_COLUMN_NAME);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (dialog->tree_view), column);
+
+ /* create the "Custom command" expand */
+ dialog->custom_expander = gtk_expander_new_with_mnemonic (_("Use a _custom command:"));
+ exo_binding_new_with_negation (G_OBJECT (dialog->custom_expander), "expanded", G_OBJECT (dialog->tree_view), "sensitive");
+ g_signal_connect (G_OBJECT (dialog->custom_expander), "notify::expanded", G_CALLBACK (thunar_chooser_dialog_notify_expanded), dialog);
+ gtk_box_pack_start (GTK_BOX (box), dialog->custom_expander, FALSE, FALSE, 0);
+ gtk_widget_show (dialog->custom_expander);
+
+ /* create the "Custom command" box */
+ hbox = gtk_hbox_new (FALSE, 6);
+ gtk_container_add (GTK_CONTAINER (dialog->custom_expander), hbox);
+ gtk_widget_show (hbox);
+
+ /* create the "Custom command" entry */
+ dialog->custom_entry = g_object_new (GTK_TYPE_ENTRY, "activates-default", TRUE, NULL);
+ g_signal_connect_swapped (G_OBJECT (dialog->custom_entry), "changed", G_CALLBACK (thunar_chooser_dialog_update_accept), dialog);
+ gtk_box_pack_start (GTK_BOX (hbox), dialog->custom_entry, TRUE, TRUE, 0);
+ gtk_widget_show (dialog->custom_entry);
+
+ /* create the "Custom command" button */
+ button = gtk_button_new_with_mnemonic (_("_Browse"));
+ g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (thunar_chooser_dialog_browse), dialog);
+ gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
+ gtk_widget_show (button);
+
+ /* create the image for the browse button */
+ image = gtk_image_new_from_stock (GTK_STOCK_OPEN, GTK_ICON_SIZE_BUTTON);
+ gtk_button_set_image (GTK_BUTTON (button), image);
+ gtk_widget_show (image);
+
+ /* add the "Cancel" button */
+ dialog->cancel_button = gtk_dialog_add_button (GTK_DIALOG (dialog), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
+
+ /* add the "Ok"/"Open" button */
+ dialog->accept_button = gtk_dialog_add_button (GTK_DIALOG (dialog), GTK_STOCK_OK, GTK_RESPONSE_ACCEPT);
+ gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT, FALSE);
+ gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT);
+
+ /* update the "Ok"/"Open" button whenever the tree selection changes */
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (dialog->tree_view));
+ gtk_tree_selection_set_select_function (selection, thunar_chooser_dialog_selection_func, dialog, NULL);
+ g_signal_connect_swapped (G_OBJECT (selection), "changed", G_CALLBACK (thunar_chooser_dialog_update_accept), dialog);
+}
+
+
+
+static void
+thunar_chooser_dialog_dispose (GObject *object)
+{
+ ThunarChooserDialog *dialog = THUNAR_CHOOSER_DIALOG (object);
+
+ /* drop the reference on the file */
+ thunar_chooser_dialog_set_file (dialog, NULL);
+
+ (*G_OBJECT_CLASS (thunar_chooser_dialog_parent_class)->dispose) (object);
+}
+
+
+
+static void
+thunar_chooser_dialog_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarChooserDialog *dialog = THUNAR_CHOOSER_DIALOG (object);
+
+ switch (prop_id)
+ {
+ case PROP_FILE:
+ g_value_set_object (value, thunar_chooser_dialog_get_file (dialog));
+ break;
+
+ case PROP_OPEN:
+ g_value_set_boolean (value, thunar_chooser_dialog_get_open (dialog));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunar_chooser_dialog_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarChooserDialog *dialog = THUNAR_CHOOSER_DIALOG (object);
+
+ switch (prop_id)
+ {
+ case PROP_FILE:
+ thunar_chooser_dialog_set_file (dialog, g_value_get_object (value));
+ break;
+
+ case PROP_OPEN:
+ thunar_chooser_dialog_set_open (dialog, g_value_get_boolean (value));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunar_chooser_dialog_realize (GtkWidget *widget)
+{
+ ThunarChooserDialog *dialog = THUNAR_CHOOSER_DIALOG (widget);
+ GtkTreeModel *model;
+ GdkCursor *cursor;
+
+ /* let the GtkWindow class realize the dialog */
+ (*GTK_WIDGET_CLASS (thunar_chooser_dialog_parent_class)->realize) (widget);
+
+ /* update the dialog header */
+ thunar_chooser_dialog_update_header (dialog);
+
+ /* setup a watch cursor if we're currently loading the model */
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->tree_view));
+ if (thunar_chooser_model_get_loading (THUNAR_CHOOSER_MODEL (model)))
+ {
+ cursor = gdk_cursor_new (GDK_WATCH);
+ gdk_window_set_cursor (widget->window, cursor);
+ gdk_cursor_unref (cursor);
+ }
+}
+
+
+
+static void
+thunar_chooser_dialog_response (GtkDialog *widget,
+ gint response)
+{
+ ThunarVfsMimeApplication *application = NULL;
+ ThunarVfsMimeDatabase *mime_database;
+ ThunarChooserDialog *dialog = THUNAR_CHOOSER_DIALOG (widget);
+ ThunarVfsMimeInfo *mime_info;
+ GtkTreeSelection *selection;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ const gchar *exec;
+ gboolean succeed;
+ GError *error = NULL;
+ gchar *path;
+ gchar *name;
+ gchar *s;
+ GList list;
+
+ /* no special processing for non-accept responses */
+ if (G_UNLIKELY (response != GTK_RESPONSE_ACCEPT))
+ return;
+
+ /* grab a reference on the mime database */
+ mime_database = thunar_vfs_mime_database_get_default ();
+
+ /* determine the mime info for the file */
+ mime_info = thunar_file_get_mime_info (dialog->file);
+
+ /* determine the application that was chosen by the user */
+ if (!gtk_expander_get_expanded (GTK_EXPANDER (dialog->custom_expander)))
+ {
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (dialog->tree_view));
+ if (gtk_tree_selection_get_selected (selection, &model, &iter))
+ gtk_tree_model_get (model, &iter, THUNAR_CHOOSER_MODEL_COLUMN_APPLICATION, &application, -1);
+ }
+ else
+ {
+ /* determine the command line for the custom command */
+ exec = gtk_entry_get_text (GTK_ENTRY (dialog->custom_entry));
+
+ /* determine the path for the custom command */
+ path = g_strdup (exec);
+ s = strchr (path, ' ');
+ if (G_UNLIKELY (s != NULL))
+ *s = '\0';
+
+ /* determine the name from the path of the custom command */
+ name = g_path_get_basename (path);
+
+ /* try to add an application for the custom command */
+ application = thunar_vfs_mime_database_add_application (mime_database, mime_info, name, exec, &error);
+
+ /* verify the application */
+ if (G_UNLIKELY (application == NULL))
+ {
+ /* display an error to the user */
+ thunar_dialogs_show_error (GTK_WIDGET (dialog), error, _("Failed to add new application `%s'"), name);
+
+ /* release the error */
+ g_error_free (error);
+ }
+
+ /* cleanup */
+ g_free (path);
+ g_free (name);
+ }
+
+ /* verify that we have a valid application */
+ if (G_UNLIKELY (application == NULL))
+ goto cleanup;
+
+ /* remember the application as default for these kind of file */
+ succeed = thunar_vfs_mime_database_set_default_application (mime_database, mime_info, application, &error);
+
+ /* verify that we were successfull */
+ if (G_UNLIKELY (!succeed))
+ {
+ /* display an error to the user */
+ thunar_dialogs_show_error (GTK_WIDGET (dialog), error, _("Failed to set default application for `%s'"),
+ thunar_file_get_display_name (dialog->file));
+
+ /* release the error */
+ g_error_free (error);
+ }
+ else if (G_LIKELY (dialog->open))
+ {
+ /* open the file using the specified application */
+ list.data = thunar_file_get_path (dialog->file); list.next = list.prev = NULL;
+ if (!thunar_vfs_mime_application_exec (application, gtk_widget_get_screen (GTK_WIDGET (dialog)), &list, &error))
+ {
+ /* display an error to the user */
+ thunar_dialogs_show_error (GTK_WIDGET (dialog), error, _("Failed to execute `%s'"),
+ thunar_vfs_mime_application_get_name (application));
+
+ /* release the error */
+ g_error_free (error);
+ }
+ }
+
+ /* cleanup */
+ thunar_vfs_mime_application_unref (application);
+cleanup:
+ g_object_unref (G_OBJECT (mime_database));
+}
+
+
+
+static gboolean
+thunar_chooser_dialog_selection_func (GtkTreeSelection *selection,
+ GtkTreeModel *model,
+ GtkTreePath *path,
+ gboolean path_currently_selected,
+ gpointer user_data)
+{
+ GtkTreeIter iter;
+ gboolean permitted = TRUE;
+ GValue value = { 0, };
+
+ /* we can always change the selection if the path is already selected */
+ if (G_UNLIKELY (!path_currently_selected))
+ {
+ /* check if there's an application for the path */
+ gtk_tree_model_get_iter (model, &iter, path);
+ gtk_tree_model_get_value (model, &iter, THUNAR_CHOOSER_MODEL_COLUMN_APPLICATION, &value);
+ permitted = (g_value_get_boxed (&value) != NULL);
+ g_value_unset (&value);
+ }
+
+ return permitted;
+}
+
+
+
+static void
+thunar_chooser_dialog_update_accept (ThunarChooserDialog *dialog)
+{
+ GtkTreeSelection *selection;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ const gchar *text;
+ gboolean sensitive = FALSE;
+ GValue value = { 0, };
+
+ g_return_if_fail (THUNAR_IS_CHOOSER_DIALOG (dialog));
+
+ if (gtk_expander_get_expanded (GTK_EXPANDER (dialog->custom_expander)))
+ {
+ /* check if the user entered a valid custom command */
+ text = gtk_entry_get_text (GTK_ENTRY (dialog->custom_entry));
+ sensitive = (text != NULL && *text != '\0');
+ }
+ else
+ {
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (dialog->tree_view));
+ if (gtk_tree_selection_get_selected (selection, &model, &iter))
+ {
+ /* check if the selected row refers to a valid application */
+ gtk_tree_model_get_value (model, &iter, THUNAR_CHOOSER_MODEL_COLUMN_APPLICATION, &value);
+ sensitive = (g_value_get_boxed (&value) != NULL);
+ g_value_unset (&value);
+ }
+ }
+
+ /* update the "Ok"/"Open" button sensitivity */
+ gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT, sensitive);
+}
+
+
+
+static void
+thunar_chooser_dialog_update_header (ThunarChooserDialog *dialog)
+{
+ ThunarVfsMimeInfo *mime_info;
+ ThunarIconFactory *icon_factory;
+ GtkIconTheme *icon_theme;
+ const gchar *icon_name;
+ GdkPixbuf *icon;
+ gchar *text;
+
+ g_return_if_fail (THUNAR_IS_CHOOSER_DIALOG (dialog));
+ g_return_if_fail (GTK_WIDGET_REALIZED (dialog));
+
+ /* check if we have a valid file set */
+ if (G_UNLIKELY (dialog->file == NULL))
+ {
+#if GTK_CHECK_VERSION(2,8,0)
+ gtk_image_clear (GTK_IMAGE (dialog->header_image));
+#endif
+ gtk_label_set_text (GTK_LABEL (dialog->header_label), NULL);
+ }
+ else
+ {
+ /* determine the mime info for the file */
+ mime_info = thunar_file_get_mime_info (dialog->file);
+
+ /* determine the icon theme/factory for the widget */
+ icon_theme = gtk_icon_theme_get_for_screen (gtk_widget_get_screen (GTK_WIDGET (dialog)));
+ icon_factory = thunar_icon_factory_get_for_icon_theme (icon_theme);
+
+ /* update the header image with the icon for the mime type */
+ icon_name = thunar_vfs_mime_info_lookup_icon_name (mime_info, icon_theme);
+ icon = thunar_icon_factory_load_icon (icon_factory, icon_name, 48, NULL, FALSE);
+ gtk_image_set_from_pixbuf (GTK_IMAGE (dialog->header_image), icon);
+ if (G_LIKELY (icon != NULL))
+ g_object_unref (G_OBJECT (icon));
+
+ /* update the header label */
+ text = g_strdup_printf (_("Open <i>%s</i> and other files of type \"%s\" with:"),
+ thunar_file_get_display_name (dialog->file),
+ thunar_vfs_mime_info_get_comment (mime_info));
+ gtk_label_set_markup (GTK_LABEL (dialog->header_label), text);
+ g_free (text);
+
+ /* cleanup */
+ g_object_unref (G_OBJECT (icon_factory));
+ }
+}
+
+
+
+static void
+thunar_chooser_dialog_browse (GtkWidget *button,
+ ThunarChooserDialog *dialog)
+{
+ GtkFileFilter *filter;
+ GtkWidget *chooser;
+ gchar *filename;
+ gchar *s;
+
+ chooser = gtk_file_chooser_dialog_new (_("Select an Application"),
+ GTK_WINDOW (dialog),
+ GTK_FILE_CHOOSER_ACTION_OPEN,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
+ NULL);
+ gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (chooser), TRUE);
+
+ /* add file chooser filters */
+ filter = gtk_file_filter_new ();
+ gtk_file_filter_set_name (filter, _("All Files"));
+ gtk_file_filter_add_pattern (filter, "*");
+ gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter);
+
+ filter = gtk_file_filter_new ();
+ gtk_file_filter_set_name (filter, _("Executable Files"));
+ gtk_file_filter_add_mime_type (filter, "application/x-csh");
+ gtk_file_filter_add_mime_type (filter, "application/x-executable");
+ gtk_file_filter_add_mime_type (filter, "application/x-perl");
+ gtk_file_filter_add_mime_type (filter, "application/x-python");
+ gtk_file_filter_add_mime_type (filter, "application/x-ruby");
+ gtk_file_filter_add_mime_type (filter, "application/x-shellscript");
+ gtk_file_filter_add_pattern (filter, "*.pl");
+ gtk_file_filter_add_pattern (filter, "*.py");
+ gtk_file_filter_add_pattern (filter, "*.rb");
+ gtk_file_filter_add_pattern (filter, "*.sh");
+ gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter);
+ gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (chooser), filter);
+
+ filter = gtk_file_filter_new ();
+ gtk_file_filter_set_name (filter, _("Perl Scripts"));
+ gtk_file_filter_add_mime_type (filter, "application/x-perl");
+ gtk_file_filter_add_pattern (filter, "*.pl");
+ gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter);
+
+ filter = gtk_file_filter_new ();
+ gtk_file_filter_set_name (filter, _("Python Scripts"));
+ gtk_file_filter_add_mime_type (filter, "application/x-python");
+ gtk_file_filter_add_pattern (filter, "*.py");
+ gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter);
+
+ filter = gtk_file_filter_new ();
+ gtk_file_filter_set_name (filter, _("Ruby Scripts"));
+ gtk_file_filter_add_mime_type (filter, "application/x-ruby");
+ gtk_file_filter_add_pattern (filter, "*.rb");
+ gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter);
+
+ filter = gtk_file_filter_new ();
+ gtk_file_filter_set_name (filter, _("Shell Scripts"));
+ gtk_file_filter_add_mime_type (filter, "application/x-csh");
+ gtk_file_filter_add_mime_type (filter, "application/x-shellscript");
+ gtk_file_filter_add_pattern (filter, "*.sh");
+ gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter);
+
+ /* use the bindir as default folder */
+ gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (chooser), BINDIR);
+
+ /* setup the currently selected file */
+ filename = gtk_editable_get_chars (GTK_EDITABLE (dialog->custom_entry), 0, -1);
+ if (G_LIKELY (filename != NULL))
+ {
+ /* use only the first argument */
+ s = strchr (filename, ' ');
+ if (G_UNLIKELY (s != NULL))
+ *s = '\0';
+
+ if (G_LIKELY (*filename != '\0'))
+ gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (chooser), filename);
+ g_free (filename);
+ }
+
+ /* run the chooser dialog */
+ if (gtk_dialog_run (GTK_DIALOG (chooser)) == GTK_RESPONSE_ACCEPT)
+ {
+ filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (chooser));
+ gtk_entry_set_text (GTK_ENTRY (dialog->custom_entry), filename);
+ g_free (filename);
+ }
+
+ gtk_widget_destroy (chooser);
+}
+
+
+
+static void
+thunar_chooser_dialog_notify_expanded (GtkExpander *expander,
+ GParamSpec *pspec,
+ ThunarChooserDialog *dialog)
+{
+ GtkTreeSelection *selection;
+
+ g_return_if_fail (GTK_IS_EXPANDER (expander));
+ g_return_if_fail (THUNAR_IS_CHOOSER_DIALOG (dialog));
+
+ /* clear the application selection whenever the expander
+ * is expanded to avoid confusion for the user.
+ */
+ if (gtk_expander_get_expanded (expander))
+ {
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (dialog->tree_view));
+ gtk_tree_selection_unselect_all (selection);
+ }
+
+ /* update the sensitivity of the "Ok"/"Open" button */
+ thunar_chooser_dialog_update_accept (dialog);
+}
+
+
+
+static void
+thunar_chooser_dialog_notify_loading (ThunarChooserModel *model,
+ GParamSpec *pspec,
+ ThunarChooserDialog *dialog)
+{
+ GtkTreePath *path;
+ GtkTreeIter iter;
+
+ g_return_if_fail (THUNAR_IS_CHOOSER_MODEL (model));
+ g_return_if_fail (THUNAR_IS_CHOOSER_DIALOG (dialog));
+
+ /* expand the first tree view row (the recommended applications) */
+ if (G_LIKELY (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (model), &iter)))
+ {
+ path = gtk_tree_model_get_path (GTK_TREE_MODEL (model), &iter);
+ gtk_tree_view_expand_to_path (GTK_TREE_VIEW (dialog->tree_view), path);
+ gtk_tree_path_free (path);
+ }
+
+ /* reset the cursor */
+ if (G_LIKELY (GTK_WIDGET_REALIZED (dialog)))
+ gdk_window_set_cursor (GTK_WIDGET (dialog)->window, NULL);
+
+ /* grab focus to the tree view widget */
+ if (G_LIKELY (GTK_WIDGET_REALIZED (dialog->tree_view)))
+ gtk_widget_grab_focus (dialog->tree_view);
+}
+
+
+
+static void
+thunar_chooser_dialog_row_activated (GtkTreeView *treeview,
+ GtkTreePath *path,
+ GtkTreeViewColumn *column,
+ ThunarChooserDialog *dialog)
+{
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ GValue value = { 0, };
+
+ g_return_if_fail (THUNAR_IS_CHOOSER_DIALOG (dialog));
+ g_return_if_fail (GTK_IS_TREE_VIEW (treeview));
+
+ /* determine the current chooser model */
+ model = gtk_tree_view_get_model (treeview);
+ if (G_UNLIKELY (model == NULL))
+ return;
+
+ /* determine the application for the tree path */
+ gtk_tree_model_get_iter (model, &iter, path);
+ gtk_tree_model_get_value (model, &iter, THUNAR_CHOOSER_MODEL_COLUMN_APPLICATION, &value);
+
+ /* check if the row refers to a valid application */
+ if (G_LIKELY (g_value_get_boxed (&value) != NULL))
+ {
+ /* emit the accept dialog response */
+ gtk_dialog_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT);
+ }
+ else if (gtk_tree_view_row_expanded (treeview, path))
+ {
+ /* collapse the path that were double clicked */
+ gtk_tree_view_collapse_row (treeview, path);
+ }
+ else
+ {
+ /* expand the path that were double clicked */
+ gtk_tree_view_expand_to_path (treeview, path);
+ }
+
+ /* cleanup */
+ g_value_unset (&value);
+}
+
+
+
+/**
+ * thunar_chooser_dialog_new:
+ * @parent : transient parent of the dialog or %NULL.
+ * @file : the #ThunarFile for which an application should be chosen.
+ * @open : whether to also open the @file.
+ *
+ * Allocates a new #ThunarChooserDialog with the given parameters.
+ *
+ * Return value: the newly allocated #ThunarChooserDialog.
+ **/
+GtkWidget*
+thunar_chooser_dialog_new (GtkWindow *parent,
+ ThunarFile *file,
+ gboolean open)
+{
+ GtkWidget *dialog;
+
+ g_return_val_if_fail (parent == NULL || GTK_IS_WINDOW (parent), NULL);
+ g_return_val_if_fail (THUNAR_IS_FILE (file), NULL);
+
+ dialog = g_object_new (THUNAR_TYPE_CHOOSER_DIALOG,
+ "file", file,
+ "open", open,
+ NULL);
+
+ if (G_LIKELY (parent != NULL))
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), parent);
+
+ return dialog;
+}
+
+
+
+/**
+ * thunar_chooser_dialog_get_file:
+ * @dialog : a #ThunarChooserDialog.
+ *
+ * Returns the #ThunarFile currently associated with @dialog or
+ * %NULL if there's no such association.
+ *
+ * Return value: the #ThunarFile associated with @dialog.
+ **/
+ThunarFile*
+thunar_chooser_dialog_get_file (ThunarChooserDialog *dialog)
+{
+ g_return_val_if_fail (THUNAR_IS_CHOOSER_DIALOG (dialog), NULL);
+ return dialog->file;
+}
+
+
+
+/**
+ * thunar_chooser_dialog_set_file:
+ * @dialog : a #ThunarChooserDialog.
+ * @file : a #ThunarFile or %NULL.
+ *
+ * Associates @dialog with @file.
+ **/
+void
+thunar_chooser_dialog_set_file (ThunarChooserDialog *dialog,
+ ThunarFile *file)
+{
+ ThunarChooserModel *model;
+ ThunarVfsMimeInfo *mime_info;
+
+ g_return_if_fail (THUNAR_IS_CHOOSER_DIALOG (dialog));
+ g_return_if_fail (file == NULL || THUNAR_IS_FILE (file));
+
+ /* disconnect from the previous file */
+ if (G_LIKELY (dialog->file != NULL))
+ {
+ /* unset the chooser model */
+ gtk_tree_view_set_model (GTK_TREE_VIEW (dialog->tree_view), NULL);
+
+ /* disconnect us from the file */
+ g_signal_handlers_disconnect_by_func (G_OBJECT (dialog->file), gtk_widget_destroy, dialog);
+ thunar_file_unwatch (THUNAR_FILE (dialog->file));
+ g_object_unref (G_OBJECT (dialog->file));
+ }
+
+ /* activate the new file */
+ dialog->file = file;
+
+ /* connect to the new file */
+ if (G_LIKELY (file != NULL))
+ {
+ /* take a reference on the file */
+ g_object_ref (G_OBJECT (file));
+
+ /* watch the file for changes */
+ thunar_file_watch (dialog->file);
+
+ /* destroy the chooser dialog if the file is deleted */
+ g_signal_connect_swapped (G_OBJECT (file), "destroy", G_CALLBACK (gtk_widget_destroy), dialog);
+
+ /* allocate the new chooser model */
+ mime_info = thunar_file_get_mime_info (file);
+ model = thunar_chooser_model_new (mime_info);
+ gtk_tree_view_set_model (GTK_TREE_VIEW (dialog->tree_view), GTK_TREE_MODEL (model));
+ g_signal_connect (G_OBJECT (model), "notify::loading", G_CALLBACK (thunar_chooser_dialog_notify_loading), dialog);
+ g_object_unref (G_OBJECT (model));
+ }
+
+ /* update the header */
+ if (GTK_WIDGET_REALIZED (dialog))
+ thunar_chooser_dialog_update_header (dialog);
+
+ /* notify listeners */
+ g_object_notify (G_OBJECT (dialog), "file");
+}
+
+
+
+/**
+ * thunar_chooser_dialog_get_open:
+ * @dialog : a #ThunarChooserDialog.
+ *
+ * Tells whether the chooser @dialog should open the file.
+ *
+ * Return value: %TRUE if @dialog should open the file.
+ **/
+gboolean
+thunar_chooser_dialog_get_open (ThunarChooserDialog *dialog)
+{
+ g_return_val_if_fail (THUNAR_IS_CHOOSER_DIALOG (dialog), FALSE);
+ return dialog->open;
+}
+
+
+
+/**
+ * thunar_chooser_dialog_set_open:
+ * @dialog : a #ThunarChooserDialog.
+ * @open : %TRUE if the chooser @dialog should open the file.
+ *
+ * Sets whether the chooser @dialog should open the file.
+ **/
+void
+thunar_chooser_dialog_set_open (ThunarChooserDialog *dialog,
+ gboolean open)
+{
+ g_return_if_fail (THUNAR_IS_CHOOSER_DIALOG (dialog));
+
+ /* apply the new state */
+ dialog->open = open;
+
+ /* change the accept button label text */
+ gtk_button_set_label (GTK_BUTTON (dialog->accept_button), open ? GTK_STOCK_OPEN : GTK_STOCK_OK);
+
+ /* notify listeners */
+ g_object_notify (G_OBJECT (dialog), "open");
+}
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-chooser-dialog.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-chooser-dialog.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-chooser-dialog.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,53 @@
+/* $Id: thunar-chooser-dialog.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_CHOOSER_DIALOG_H__
+#define __THUNAR_CHOOSER_DIALOG_H__
+
+#include <thunar/thunar-file.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarChooserDialogClass ThunarChooserDialogClass;
+typedef struct _ThunarChooserDialog ThunarChooserDialog;
+
+#define THUNAR_TYPE_CHOOSER_DIALOG (thunar_chooser_dialog_get_type ())
+#define THUNAR_CHOOSER_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_CHOOSER_DIALOG, ThunarChooserDialog))
+#define THUNAR_CHOOSER_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_CHOOSER_DIALOG, ThunarChooserDialogClass))
+#define THUNAR_IS_CHOOSER_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_CHOOSER_DIALOG))
+#define THUNAR_IS_CHOOSER_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_CHOOSER_DIALOG))
+#define THUNAR_CHOOSER_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_CHOOSER_DIALOG, ThunarChooserDialogClass))
+
+GType thunar_chooser_dialog_get_type (void) G_GNUC_CONST;
+
+GtkWidget *thunar_chooser_dialog_new (GtkWindow *parent,
+ ThunarFile *file,
+ gboolean open) G_GNUC_MALLOC;
+
+ThunarFile *thunar_chooser_dialog_get_file (ThunarChooserDialog *dialog);
+void thunar_chooser_dialog_set_file (ThunarChooserDialog *dialog,
+ ThunarFile *file);
+
+gboolean thunar_chooser_dialog_get_open (ThunarChooserDialog *dialog);
+void thunar_chooser_dialog_set_open (ThunarChooserDialog *dialog,
+ gboolean open);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_CHOOSER_DIALOG_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-chooser-model.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-chooser-model.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-chooser-model.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,599 @@
+/* $Id: thunar-chooser-model.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#include <thunar/thunar-chooser-model.h>
+#include <thunar/thunar-icon-factory.h>
+
+
+
+/* Property identifiers */
+enum
+{
+ PROP_0,
+ PROP_LOADING,
+ PROP_MIME_INFO,
+};
+
+
+
+static void thunar_chooser_model_class_init (ThunarChooserModelClass *klass);
+static void thunar_chooser_model_init (ThunarChooserModel *model);
+static void thunar_chooser_model_finalize (GObject *object);
+static void thunar_chooser_model_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void thunar_chooser_model_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void thunar_chooser_model_append (ThunarChooserModel *model,
+ const gchar *title,
+ const gchar *icon_name,
+ GList *applications);
+static void thunar_chooser_model_import (ThunarChooserModel *model,
+ GList *applications);
+static GList *thunar_chooser_model_readdir (ThunarChooserModel *model,
+ const gchar *absdir,
+ const gchar *reldir);
+static gpointer thunar_chooser_model_thread (gpointer user_data);
+static gboolean thunar_chooser_model_timer (gpointer user_data);
+static void thunar_chooser_model_timer_destroy (gpointer user_data);
+
+
+
+
+struct _ThunarChooserModelClass
+{
+ GtkTreeStoreClass __parent__;
+};
+
+struct _ThunarChooserModel
+{
+ GtkTreeStore __parent__;
+
+ ThunarVfsMimeInfo *mime_info;
+
+ /* thread interaction */
+ gint timer_id;
+ GThread *thread;
+ volatile gboolean finished;
+ volatile gboolean cancelled;
+};
+
+
+
+G_DEFINE_TYPE (ThunarChooserModel, thunar_chooser_model, GTK_TYPE_TREE_STORE);
+
+
+
+static void
+thunar_chooser_model_class_init (ThunarChooserModelClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_chooser_model_finalize;
+ gobject_class->get_property = thunar_chooser_model_get_property;
+ gobject_class->set_property = thunar_chooser_model_set_property;
+
+ /**
+ * ThunarChooserModel::loading:
+ *
+ * Whether the contents of the #ThunarChooserModel are
+ * currently being loaded from disk.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_LOADING,
+ g_param_spec_boolean ("loading",
+ _("Loading"),
+ _("Whether the model is currently being loaded"),
+ FALSE,
+ EXO_PARAM_READABLE));
+
+ /**
+ * ThunarChooserModel::mime-info:
+ *
+ * The #ThunarVfsMimeInfo info for the model.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_MIME_INFO,
+ g_param_spec_boxed ("mime-info",
+ _("Mime info"),
+ _("The mime info for the model"),
+ THUNAR_VFS_TYPE_MIME_INFO,
+ G_PARAM_CONSTRUCT_ONLY | EXO_PARAM_READWRITE));
+}
+
+
+
+static void
+thunar_chooser_model_init (ThunarChooserModel *model)
+{
+ /* allocate the types array for the columns */
+ GType column_types[THUNAR_CHOOSER_MODEL_N_COLUMNS] =
+ {
+ G_TYPE_STRING,
+ GDK_TYPE_PIXBUF,
+ THUNAR_VFS_TYPE_MIME_APPLICATION,
+ PANGO_TYPE_STYLE,
+ G_TYPE_BOOLEAN,
+ };
+
+ /* register the column types */
+ gtk_tree_store_set_column_types (GTK_TREE_STORE (model), G_N_ELEMENTS (column_types), column_types);
+
+ /* start to load the applications installed on the system */
+ model->thread = g_thread_create (thunar_chooser_model_thread, model, TRUE, NULL);
+
+ /* start the timer to monitor the thread */
+ model->timer_id = g_timeout_add_full (G_PRIORITY_LOW, 200, thunar_chooser_model_timer,
+ model, thunar_chooser_model_timer_destroy);
+}
+
+
+
+static void
+thunar_chooser_model_finalize (GObject *object)
+{
+ ThunarChooserModel *model = THUNAR_CHOOSER_MODEL (object);
+ GList *applications;
+
+ /* drop any pending timer */
+ if (G_UNLIKELY (model->timer_id >= 0))
+ g_source_remove (model->timer_id);
+
+ /* cancel the thread (if running) */
+ if (G_UNLIKELY (model->thread != NULL))
+ {
+ /* set the cancellation flag */
+ model->cancelled = TRUE;
+
+ /* join the thread */
+ applications = g_thread_join (model->thread);
+
+ /* ditch the returned application list */
+ g_list_foreach (applications, (GFunc) thunar_vfs_mime_application_unref, NULL);
+ g_list_free (applications);
+ }
+
+ /* drop the mime info (if any) */
+ if (G_LIKELY (model->mime_info != NULL))
+ thunar_vfs_mime_info_unref (model->mime_info);
+
+ (*G_OBJECT_CLASS (thunar_chooser_model_parent_class)->finalize) (object);
+}
+
+
+
+static void
+thunar_chooser_model_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarChooserModel *model = THUNAR_CHOOSER_MODEL (object);
+
+ switch (prop_id)
+ {
+ case PROP_LOADING:
+ g_value_set_boolean (value, thunar_chooser_model_get_loading (model));
+ break;
+
+ case PROP_MIME_INFO:
+ g_value_set_boxed (value, thunar_chooser_model_get_mime_info (model));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunar_chooser_model_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarChooserModel *model = THUNAR_CHOOSER_MODEL (object);
+
+ switch (prop_id)
+ {
+ case PROP_MIME_INFO:
+ if (G_LIKELY (model->mime_info == NULL))
+ model->mime_info = g_value_dup_boxed (value);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunar_chooser_model_append (ThunarChooserModel *model,
+ const gchar *title,
+ const gchar *icon_name,
+ GList *applications)
+{
+ ThunarIconFactory *icon_factory;
+ GtkIconTheme *icon_theme;
+ GtkTreeIter parent_iter;
+ GtkTreeIter child_iter;
+ GdkPixbuf *icon;
+ GList *lp;
+
+ g_return_if_fail (THUNAR_IS_CHOOSER_MODEL (model));
+ g_return_if_fail (title != NULL);
+ g_return_if_fail (icon_name != NULL);
+
+ /* query the default icon theme/factory */
+ icon_theme = gtk_icon_theme_get_default ();
+ icon_factory = thunar_icon_factory_get_for_icon_theme (icon_theme);
+
+ /* insert the section title */
+ icon = gtk_icon_theme_load_icon (icon_theme, icon_name, 24, 0, NULL);
+ gtk_tree_store_append (GTK_TREE_STORE (model), &parent_iter, NULL);
+ gtk_tree_store_set (GTK_TREE_STORE (model), &parent_iter,
+ THUNAR_CHOOSER_MODEL_COLUMN_NAME, title,
+ THUNAR_CHOOSER_MODEL_COLUMN_ICON, icon,
+ -1);
+ if (G_LIKELY (icon != NULL))
+ g_object_unref (G_OBJECT (icon));
+
+ /* check if we have any program items */
+ if (G_LIKELY (applications != NULL))
+ {
+ /* insert the program items */
+ for (lp = applications; lp != NULL; lp = lp->next)
+ {
+ /* determine the icon name for the application */
+ icon_name = thunar_vfs_mime_application_lookup_icon_name (lp->data, icon_theme);
+
+ /* try to load the themed icon for the program */
+ icon = thunar_icon_factory_load_icon (icon_factory, icon_name, 24, NULL, FALSE);
+
+ /* append the tree row with the program data */
+ gtk_tree_store_append (GTK_TREE_STORE (model), &child_iter, &parent_iter);
+ gtk_tree_store_set (GTK_TREE_STORE (model), &child_iter,
+ THUNAR_CHOOSER_MODEL_COLUMN_NAME, thunar_vfs_mime_application_get_name (lp->data),
+ THUNAR_CHOOSER_MODEL_COLUMN_ICON, icon,
+ THUNAR_CHOOSER_MODEL_COLUMN_APPLICATION, lp->data,
+ -1);
+
+ /* release the icon (if any) */
+ if (G_LIKELY (icon != NULL))
+ g_object_unref (G_OBJECT (icon));
+ }
+ }
+ else
+ {
+ /* tell the user that we don't have any applications for this category */
+ gtk_tree_store_append (GTK_TREE_STORE (model), &child_iter, &parent_iter);
+ gtk_tree_store_set (GTK_TREE_STORE (model), &child_iter,
+ THUNAR_CHOOSER_MODEL_COLUMN_NAME, _("None available"),
+ THUNAR_CHOOSER_MODEL_COLUMN_STYLE, PANGO_STYLE_ITALIC,
+ THUNAR_CHOOSER_MODEL_COLUMN_STYLE_SET, TRUE,
+ -1);
+ }
+
+ /* cleanup */
+ g_object_unref (G_OBJECT (icon_factory));
+}
+
+
+
+static void
+thunar_chooser_model_import (ThunarChooserModel *model,
+ GList *applications)
+{
+ ThunarVfsMimeDatabase *mime_database;
+ GList *recommended;
+ GList *other = NULL;
+ GList *lp;
+ GList *p;
+
+ g_return_if_fail (THUNAR_IS_CHOOSER_MODEL (model));
+ g_return_if_fail (model->mime_info != NULL);
+
+ /* determine the recommended applications for the mime info */
+ mime_database = thunar_vfs_mime_database_get_default ();
+ recommended = thunar_vfs_mime_database_get_applications (mime_database, model->mime_info);
+ g_object_unref (G_OBJECT (mime_database));
+
+ /* add all applications to other that are not already on recommended */
+ for (lp = applications; lp != NULL; lp = lp->next)
+ {
+ /* check if this application is already on the recommended list */
+ for (p = recommended; p != NULL; p = p->next)
+ if (thunar_vfs_mime_application_equal (p->data, lp->data))
+ break;
+
+ /* add to the list of other applications if it's not on recommended */
+ if (G_LIKELY (p == NULL))
+ other = g_list_append (other, lp->data);
+ }
+
+ /* append the "Recommended Applications:" category */
+ thunar_chooser_model_append (model, _("Recommended Applications:"), "gnome-settings-default-applications", recommended);
+
+ /* append the "Other Applications:" category */
+ thunar_chooser_model_append (model, _("Other Applications:"), "gnome-applications", other);
+
+ /* cleanup */
+ g_list_foreach (recommended, (GFunc) thunar_vfs_mime_application_unref, NULL);
+ g_list_free (recommended);
+ g_list_free (other);
+}
+
+
+
+static GList*
+thunar_chooser_model_readdir (ThunarChooserModel *model,
+ const gchar *absdir,
+ const gchar *reldir)
+{
+ ThunarVfsMimeApplication *application;
+ const gchar *name;
+ GList *applications = NULL;
+ gchar *abspath;
+ gchar *relpath;
+ gchar *p;
+ GDir *dp;
+
+ g_return_val_if_fail (THUNAR_IS_CHOOSER_MODEL (model), NULL);
+ g_return_val_if_fail (reldir == NULL || !g_path_is_absolute (reldir), NULL);
+ g_return_val_if_fail (g_path_is_absolute (absdir), NULL);
+
+ /* try to open the directory */
+ dp = g_dir_open (absdir, 0, NULL);
+ if (G_LIKELY (dp != NULL))
+ {
+ /* process the files within the directory */
+ while (!model->cancelled)
+ {
+ /* read the next file entry */
+ name = g_dir_read_name (dp);
+ if (G_UNLIKELY (name == NULL))
+ break;
+
+ /* generate the absolute path to the file entry */
+ abspath = g_build_filename (absdir, name, NULL);
+
+ /* generate the relative path to the file entry */
+ relpath = (reldir != NULL) ? g_build_filename (reldir, name, NULL) : g_strdup (name);
+
+ /* check if we have a directory or a regular file here */
+ if (g_file_test (abspath, G_FILE_TEST_IS_DIR))
+ {
+ /* recurse for directories */
+ applications = g_list_concat (applications, thunar_chooser_model_readdir (model, abspath, relpath));
+ }
+ else if (g_file_test (abspath, G_FILE_TEST_IS_REGULAR) && g_str_has_suffix (name, ".desktop"))
+ {
+ /* generate the desktop-id from the relative path */
+ for (p = relpath; *p != '\0'; ++p)
+ if (*p == G_DIR_SEPARATOR)
+ *p = '-';
+
+ /* try to load the application for the given desktop-id */
+ application = thunar_vfs_mime_application_new_from_file (abspath, relpath);
+
+ /* check if we have successfully loaded the application */
+ if (G_LIKELY (application != NULL))
+ {
+ /* check if the application supports atleast one mime-type */
+ if (thunar_vfs_mime_application_get_mime_types (application) != NULL)
+ applications = g_list_append (applications, application);
+ else
+ thunar_vfs_mime_application_unref (application);
+ }
+ }
+
+ /* cleanup */
+ g_free (abspath);
+ g_free (relpath);
+ }
+
+ /* close the directory handle */
+ g_dir_close (dp);
+ }
+
+ return applications;
+}
+
+
+
+static gint
+compare_application_by_name (gconstpointer a,
+ gconstpointer b)
+{
+ return strcmp (thunar_vfs_mime_application_get_name (a),
+ thunar_vfs_mime_application_get_name (b));
+}
+
+
+
+static gpointer
+thunar_chooser_model_thread (gpointer user_data)
+{
+ ThunarChooserModel *model = THUNAR_CHOOSER_MODEL (user_data);
+ GList *applications = NULL;
+ GList *list;
+ GList *lp;
+ GList *p;
+ gchar **paths;
+ guint n;
+
+ /* determine the available applications/ directories */
+ paths = xfce_resource_lookup_all (XFCE_RESOURCE_DATA, "applications/");
+ for (n = 0; !model->cancelled && paths[n] != NULL; ++n)
+ {
+ /* lookup the applications in this directory */
+ list = thunar_chooser_model_readdir (model, paths[n], NULL);
+
+ /* merge the applications with what we already have */
+ for (lp = list; lp != NULL; lp = lp->next)
+ {
+ /* ignore hidden applications to be compatible with the Nautilus mess */
+ if ((thunar_vfs_mime_application_get_flags (lp->data) & THUNAR_VFS_MIME_APPLICATION_HIDDEN) != 0)
+ {
+ thunar_vfs_mime_application_unref (lp->data);
+ continue;
+ }
+
+ /* check if we have that application already */
+ for (p = applications; p != NULL; p = p->next)
+ {
+ /* compare the desktop-ids */
+ if (thunar_vfs_mime_application_equal (p->data, lp->data))
+ break;
+ }
+
+ /* no need to add if we have it already */
+ if (G_UNLIKELY (p != NULL))
+ {
+ thunar_vfs_mime_application_unref (lp->data);
+ continue;
+ }
+
+ /* insert the application into the list */
+ applications = g_list_insert_sorted (applications, lp->data, compare_application_by_name);
+ }
+
+ /* free the temporary list */
+ g_list_free (list);
+ }
+ g_strfreev (paths);
+
+ /* tell the model that we're done */
+ model->finished = TRUE;
+
+ return applications;
+}
+
+
+
+static gboolean
+thunar_chooser_model_timer (gpointer user_data)
+{
+ ThunarChooserModel *model = THUNAR_CHOOSER_MODEL (user_data);
+ gboolean finished;
+ GList *applications;
+
+ /* check if the applications are loaded */
+ GDK_THREADS_ENTER ();
+ finished = model->finished;
+ if (G_LIKELY (finished))
+ {
+ /* grab the application list from the thread */
+ applications = g_thread_join (model->thread);
+ model->thread = NULL;
+
+ /* process the applications list */
+ thunar_chooser_model_import (model, applications);
+
+ /* tell everybody that the model is loaded */
+ g_object_notify (G_OBJECT (model), "loading");
+
+ /* free the application list */
+ g_list_foreach (applications, (GFunc) thunar_vfs_mime_application_unref, NULL);
+ g_list_free (applications);
+ }
+ GDK_THREADS_LEAVE ();
+
+ return !finished;
+}
+
+
+
+static void
+thunar_chooser_model_timer_destroy (gpointer user_data)
+{
+ THUNAR_CHOOSER_MODEL (user_data)->timer_id = -1;
+}
+
+
+
+/**
+ * thunar_chooser_model_new:
+ * @mime_info : a #ThunarVfsMimeInfo.
+ *
+ * Allocates a new #ThunarChooserModel for @mime_info.
+ *
+ * Return value: the newly allocated #ThunarChooserModel.
+ **/
+ThunarChooserModel*
+thunar_chooser_model_new (ThunarVfsMimeInfo *mime_info)
+{
+ return g_object_new (THUNAR_TYPE_CHOOSER_MODEL,
+ "mime-info", mime_info,
+ NULL);
+}
+
+
+
+/**
+ * thunar_chooser_model_get_loading:
+ * @model : a #ThunarChooserModel.
+ *
+ * Returns %TRUE if @model is currently being loaded.
+ *
+ * Return value: %TRUE if @model is currently being loaded.
+ **/
+gboolean
+thunar_chooser_model_get_loading (ThunarChooserModel *model)
+{
+ g_return_val_if_fail (THUNAR_IS_CHOOSER_MODEL (model), FALSE);
+ return (model->thread != NULL);
+}
+
+
+
+/**
+ * thunar_chooser_model_get_mime_info:
+ * @model : a #ThunarChooserModel.
+ *
+ * Returns the #ThunarVfsMimeInfo for @model.
+ *
+ * Return value: the #ThunarVfsMimeInfo for @model.
+ **/
+ThunarVfsMimeInfo*
+thunar_chooser_model_get_mime_info (ThunarChooserModel *model)
+{
+ g_return_val_if_fail (THUNAR_IS_CHOOSER_MODEL (model), NULL);
+ return model->mime_info;
+}
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-chooser-model.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-chooser-model.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-chooser-model.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,68 @@
+/* $Id: thunar-chooser-model.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_CHOOSER_MODEL_H__
+#define __THUNAR_CHOOSER_MODEL_H__
+
+#include <thunar-vfs/thunar-vfs.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarChooserModelClass ThunarChooserModelClass;
+typedef struct _ThunarChooserModel ThunarChooserModel;
+
+#define THUNAR_TYPE_CHOOSER_MODEL (thunar_chooser_model_get_type ())
+#define THUNAR_CHOOSER_MODEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_CHOOSER_MODEL, ThunarChooserModel))
+#define THUNAR_CHOOSER_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_CHOOSER_MODEL, ThunarChooserModelClass))
+#define THUNAR_IS_CHOOSER_MODEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_CHOOSER_MODEL))
+#define THUNAR_IS_CHOOSER_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_CHOOSER_MODEL))
+#define THUNAR_CHOOSER_MODEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_CHOOSER_MODEL, ThunarChooserModelClass))
+
+/**
+ * ThunarChooserModelColumn:
+ * @THUNAR_CHOOSER_MODEL_COLUMN_NAME : the name of the application.
+ * @THUNAR_CHOOSER_MODEL_COLUMN_ICON : the icon of the application.
+ * @THUNAR_CHOOSER_MODEL_COLUMN_APPLICATION : the #ThunarVfsMimeApplication object.
+ * @THUNAR_CHOOSER_MODEL_COLUMN_STYLE : custom font style.
+ * @THUNAR_CHOOSER_MODEL_COLUMN_STYLE_SET : whether to actually use the custom font style.
+ * @THUNAR_CHOOSER_MODEL_N_COLUMNS : the number of columns in #ThunarChooserModel.
+ *
+ * The identifiers for the columns provided by the #ThunarChooserModel.
+ **/
+typedef enum
+{
+ THUNAR_CHOOSER_MODEL_COLUMN_NAME,
+ THUNAR_CHOOSER_MODEL_COLUMN_ICON,
+ THUNAR_CHOOSER_MODEL_COLUMN_APPLICATION,
+ THUNAR_CHOOSER_MODEL_COLUMN_STYLE,
+ THUNAR_CHOOSER_MODEL_COLUMN_STYLE_SET,
+ THUNAR_CHOOSER_MODEL_N_COLUMNS,
+} ThunarChooserModelColumn;
+
+GType thunar_chooser_model_get_type (void) G_GNUC_CONST;
+
+ThunarChooserModel *thunar_chooser_model_new (ThunarVfsMimeInfo *mime_info) G_GNUC_MALLOC;
+
+gboolean thunar_chooser_model_get_loading (ThunarChooserModel *model);
+
+ThunarVfsMimeInfo *thunar_chooser_model_get_mime_info (ThunarChooserModel *model);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_CHOOSER_MODEL_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-clipboard-manager.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-clipboard-manager.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-clipboard-manager.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,680 @@
+/* $Id: thunar-clipboard-manager.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#include <thunar/thunar-application.h>
+#include <thunar/thunar-clipboard-manager.h>
+#include <thunar/thunar-dialogs.h>
+
+
+
+enum
+{
+ PROP_0,
+ PROP_CAN_PASTE,
+};
+
+enum
+{
+ CHANGED,
+ LAST_SIGNAL,
+};
+
+enum
+{
+ TARGET_GNOME_COPIED_FILES,
+ TARGET_UTF8_STRING,
+};
+
+
+
+static void thunar_clipboard_manager_class_init (ThunarClipboardManagerClass *klass);
+static void thunar_clipboard_manager_finalize (GObject *object);
+static void thunar_clipboard_manager_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void thunar_clipboard_manager_file_destroyed (ThunarFile *file,
+ ThunarClipboardManager *manager);
+static void thunar_clipboard_manager_owner_changed (GtkClipboard *clipboard,
+ GdkEventOwnerChange *event,
+ ThunarClipboardManager *manager);
+static void thunar_clipboard_manager_contents_received (GtkClipboard *clipboard,
+ GtkSelectionData *selection_data,
+ gpointer user_data);
+static void thunar_clipboard_manager_targets_received (GtkClipboard *clipboard,
+ GtkSelectionData *selection_data,
+ gpointer user_data);
+static void thunar_clipboard_manager_get_callback (GtkClipboard *clipboard,
+ GtkSelectionData *selection_data,
+ guint info,
+ gpointer user_data);
+static void thunar_clipboard_manager_clear_callback (GtkClipboard *clipboard,
+ gpointer user_data);
+static void thunar_clipboard_manager_transfer_files (ThunarClipboardManager *manager,
+ gboolean copy,
+ GList *files);
+
+
+
+struct _ThunarClipboardManagerClass
+{
+ GObjectClass __parent__;
+
+ void (*changed) (ThunarClipboardManager *manager);
+};
+
+struct _ThunarClipboardManager
+{
+ GObject __parent__;
+
+ GtkClipboard *clipboard;
+ gboolean can_paste;
+ GdkAtom x_special_gnome_copied_files;
+
+ gboolean files_cutted;
+ GList *files;
+};
+
+typedef struct
+{
+ ThunarClipboardManager *manager;
+ ThunarVfsPath *target_path;
+ GtkWidget *widget;
+ GClosure *new_files_closure;
+} ThunarClipboardPasteRequest;
+
+
+
+static const GtkTargetEntry clipboard_targets[] =
+{
+ { "x-special/gnome-copied-files", 0, TARGET_GNOME_COPIED_FILES },
+ { "UTF8_STRING", 0, TARGET_UTF8_STRING }
+};
+
+static GQuark thunar_clipboard_manager_quark = 0;
+static guint manager_signals[LAST_SIGNAL];
+
+
+
+G_DEFINE_TYPE (ThunarClipboardManager, thunar_clipboard_manager, G_TYPE_OBJECT);
+
+
+
+static void
+thunar_clipboard_manager_class_init (ThunarClipboardManagerClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_clipboard_manager_finalize;
+ gobject_class->get_property = thunar_clipboard_manager_get_property;
+
+ /**
+ * ThunarClipboardManager:can-paste:
+ *
+ * This property tells whether the current clipboard content of
+ * this #ThunarClipboardManager can be pasted into a folder
+ * displayed by a #ThunarView.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_CAN_PASTE,
+ g_param_spec_boolean ("can-paste",
+ _("Can paste"),
+ _("Whether the clipboard content can be pasted"),
+ FALSE,
+ EXO_PARAM_READABLE));
+
+ /**
+ * ThunarClipboardManager::changed:
+ * @manager : a #ThunarClipboardManager.
+ *
+ * This signal is emitted whenever the contents of the
+ * clipboard associated with @manager changes.
+ **/
+ manager_signals[CHANGED] =
+ g_signal_new ("changed",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (ThunarClipboardManagerClass, changed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+}
+
+
+
+static void
+thunar_clipboard_manager_init (ThunarClipboardManager *manager)
+{
+ manager->can_paste = FALSE;
+ manager->x_special_gnome_copied_files = gdk_atom_intern ("x-special/gnome-copied-files", FALSE);
+}
+
+
+
+static void
+thunar_clipboard_manager_finalize (GObject *object)
+{
+ ThunarClipboardManager *manager = THUNAR_CLIPBOARD_MANAGER (object);
+ GList *lp;
+
+ /* release any pending files */
+ for (lp = manager->files; lp != NULL; lp = lp->next)
+ {
+ g_signal_handlers_disconnect_by_func (G_OBJECT (lp->data), thunar_clipboard_manager_file_destroyed, manager);
+ g_object_unref (G_OBJECT (lp->data));
+ }
+ g_list_free (manager->files);
+
+ /* disconnect from the clipboard */
+ g_signal_handlers_disconnect_by_func (G_OBJECT (manager->clipboard), thunar_clipboard_manager_owner_changed, manager);
+ g_object_set_qdata (G_OBJECT (manager->clipboard), thunar_clipboard_manager_quark, NULL);
+ g_object_unref (G_OBJECT (manager->clipboard));
+
+ (*G_OBJECT_CLASS (thunar_clipboard_manager_parent_class)->finalize) (object);
+}
+
+
+
+static void
+thunar_clipboard_manager_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarClipboardManager *manager = THUNAR_CLIPBOARD_MANAGER (object);
+
+ switch (prop_id)
+ {
+ case PROP_CAN_PASTE:
+ g_value_set_boolean (value, thunar_clipboard_manager_get_can_paste (manager));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunar_clipboard_manager_file_destroyed (ThunarFile *file,
+ ThunarClipboardManager *manager)
+{
+ g_return_if_fail (THUNAR_IS_CLIPBOARD_MANAGER (manager));
+ g_return_if_fail (g_list_find (manager->files, file) != NULL);
+
+ /* remove the file from our list */
+ manager->files = g_list_remove (manager->files, file);
+
+ /* disconnect from the file */
+ g_signal_handlers_disconnect_by_func (G_OBJECT (file), thunar_clipboard_manager_file_destroyed, manager);
+ g_object_unref (G_OBJECT (file));
+}
+
+
+
+static void
+thunar_clipboard_manager_owner_changed (GtkClipboard *clipboard,
+ GdkEventOwnerChange *event,
+ ThunarClipboardManager *manager)
+{
+ g_return_if_fail (GTK_IS_CLIPBOARD (clipboard));
+ g_return_if_fail (THUNAR_IS_CLIPBOARD_MANAGER (manager));
+ g_return_if_fail (manager->clipboard == clipboard);
+
+ /* need to take a reference on the manager, because the clipboards
+ * "targets received callback" mechanism is not cancellable.
+ */
+ g_object_ref (G_OBJECT (manager));
+
+ /* request the list of supported targets from the new owner */
+ gtk_clipboard_request_contents (clipboard, gdk_atom_intern ("TARGETS", FALSE),
+ thunar_clipboard_manager_targets_received, manager);
+}
+
+
+
+static void
+thunar_clipboard_manager_contents_received (GtkClipboard *clipboard,
+ GtkSelectionData *selection_data,
+ gpointer user_data)
+{
+ ThunarClipboardPasteRequest *request = user_data;
+ ThunarClipboardManager *manager = THUNAR_CLIPBOARD_MANAGER (request->manager);
+ ThunarApplication *application;
+ gboolean path_copy = TRUE;
+ GList *path_list = NULL;
+ gchar *data;
+
+ /* check whether the retrieval worked */
+ if (G_LIKELY (selection_data->length > 0))
+ {
+ /* be sure the selection data is zero-terminated */
+ data = (gchar *) selection_data->data;
+ data[selection_data->length] = '\0';
+
+ /* check whether to copy or move */
+ if (g_ascii_strncasecmp (data, "copy\n", 5) == 0)
+ {
+ path_copy = TRUE;
+ data += 5;
+ }
+ else if (g_ascii_strncasecmp (data, "cut\n", 4) == 0)
+ {
+ path_copy = FALSE;
+ data += 4;
+ }
+
+ /* determine the path list stored with the selection */
+ path_list = thunar_vfs_path_list_from_string (data, NULL);
+ }
+
+ /* perform the action if possible */
+ if (G_LIKELY (path_list != NULL))
+ {
+ application = thunar_application_get ();
+ if (G_LIKELY (path_copy))
+ thunar_application_copy_into (application, request->widget, path_list, request->target_path, request->new_files_closure);
+ else
+ thunar_application_move_into (application, request->widget, path_list, request->target_path, request->new_files_closure);
+ g_object_unref (G_OBJECT (application));
+ thunar_vfs_path_list_free (path_list);
+
+ /* clear the clipboard if it contained "cutted data"
+ * (gtk_clipboard_clear takes care of not clearing
+ * the selection if we don't own it)
+ */
+ if (G_UNLIKELY (!path_copy))
+ gtk_clipboard_clear (manager->clipboard);
+
+ /* check the contents of the clipboard again
+ * if either the Xserver or our GTK+ version
+ * doesn't support the XFixes extension.
+ */
+#if GTK_CHECK_VERSION(2,6,0)
+ if (!gdk_display_supports_selection_notification (gtk_clipboard_get_display (manager->clipboard)))
+#endif
+ {
+ thunar_clipboard_manager_owner_changed (manager->clipboard, NULL, manager);
+ }
+ }
+ else
+ {
+ /* tell the user that we cannot paste */
+ thunar_dialogs_show_error (request->widget, NULL, _("There is nothing on the clipboard to paste"));
+ }
+
+ /* free the request */
+ if (G_LIKELY (request->widget != NULL))
+ g_object_remove_weak_pointer (G_OBJECT (request->widget), (gpointer) &request->widget);
+ if (G_LIKELY (request->new_files_closure != NULL))
+ g_closure_unref (request->new_files_closure);
+ g_object_unref (G_OBJECT (request->manager));
+ thunar_vfs_path_unref (request->target_path);
+ g_free (request);
+}
+
+
+
+static void
+thunar_clipboard_manager_targets_received (GtkClipboard *clipboard,
+ GtkSelectionData *selection_data,
+ gpointer user_data)
+{
+ ThunarClipboardManager *manager = THUNAR_CLIPBOARD_MANAGER (user_data);
+ GdkAtom *targets;
+ gint n_targets;
+ gint n;
+
+ g_return_if_fail (GTK_IS_CLIPBOARD (clipboard));
+ g_return_if_fail (THUNAR_IS_CLIPBOARD_MANAGER (manager));
+ g_return_if_fail (manager->clipboard == clipboard);
+
+ /* reset the "can-paste" state */
+ manager->can_paste = FALSE;
+
+ /* check the list of targets provided by the owner */
+ if (gtk_selection_data_get_targets (selection_data, &targets, &n_targets))
+ {
+ for (n = 0; n < n_targets; ++n)
+ if (targets[n] == manager->x_special_gnome_copied_files)
+ {
+ manager->can_paste = TRUE;
+ break;
+ }
+
+ g_free (targets);
+ }
+
+ /* notify listeners that we have a new clipboard state */
+ g_signal_emit (G_OBJECT (manager), manager_signals[CHANGED], 0);
+ g_object_notify (G_OBJECT (manager), "can-paste");
+
+ /* drop the reference taken for the callback */
+ g_object_unref (G_OBJECT (manager));
+}
+
+
+
+static void
+thunar_clipboard_manager_get_callback (GtkClipboard *clipboard,
+ GtkSelectionData *selection_data,
+ guint target_info,
+ gpointer user_data)
+{
+ ThunarClipboardManager *manager = THUNAR_CLIPBOARD_MANAGER (user_data);
+ GList *path_list = NULL;
+ GList *lp;
+ gchar *string_list;
+ gchar *data;
+
+ g_return_if_fail (GTK_IS_CLIPBOARD (clipboard));
+ g_return_if_fail (THUNAR_IS_CLIPBOARD_MANAGER (manager));
+ g_return_if_fail (manager->clipboard == clipboard);
+
+ /* determine the path list from the file list */
+ for (lp = manager->files; lp != NULL; lp = lp->next)
+ path_list = g_list_append (path_list, thunar_file_get_path (lp->data));
+
+ /* determine the string representation of the path list */
+ string_list = thunar_vfs_path_list_to_string (path_list);
+
+ switch (target_info)
+ {
+ case TARGET_GNOME_COPIED_FILES:
+ data = g_strconcat (manager->files_cutted ? "cut\n" : "copy\n", string_list, NULL);
+ gtk_selection_data_set (selection_data, selection_data->target, 8, (guchar *) data, strlen (data));
+ g_free (data);
+ break;
+
+ case TARGET_UTF8_STRING:
+ gtk_selection_data_set (selection_data, selection_data->target, 8, (guchar *) string_list, strlen (string_list));
+ break;
+
+ default:
+ g_assert_not_reached ();
+ }
+
+ /* cleanup */
+ g_list_free (path_list);
+ g_free (string_list);
+}
+
+
+
+static void
+thunar_clipboard_manager_clear_callback (GtkClipboard *clipboard,
+ gpointer user_data)
+{
+ ThunarClipboardManager *manager = THUNAR_CLIPBOARD_MANAGER (user_data);
+ GList *lp;
+
+ g_return_if_fail (GTK_IS_CLIPBOARD (clipboard));
+ g_return_if_fail (THUNAR_IS_CLIPBOARD_MANAGER (manager));
+ g_return_if_fail (manager->clipboard == clipboard);
+
+ /* release the pending files */
+ for (lp = manager->files; lp != NULL; lp = lp->next)
+ {
+ g_signal_handlers_disconnect_by_func (G_OBJECT (lp->data), thunar_clipboard_manager_file_destroyed, manager);
+ g_object_unref (G_OBJECT (lp->data));
+ }
+ g_list_free (manager->files);
+ manager->files = NULL;
+}
+
+
+
+static void
+thunar_clipboard_manager_transfer_files (ThunarClipboardManager *manager,
+ gboolean copy,
+ GList *files)
+{
+ ThunarFile *file;
+ GList *lp;
+
+ /* release any pending files */
+ for (lp = manager->files; lp != NULL; lp = lp->next)
+ {
+ g_signal_handlers_disconnect_by_func (G_OBJECT (lp->data), thunar_clipboard_manager_file_destroyed, manager);
+ g_object_unref (G_OBJECT (lp->data));
+ }
+ g_list_free (manager->files);
+
+ /* remember the transfer operation */
+ manager->files_cutted = !copy;
+
+ /* setup the new file list */
+ for (lp = files, manager->files = NULL; lp != NULL; lp = lp->next)
+ {
+ file = g_object_ref (G_OBJECT (lp->data));
+ manager->files = g_list_prepend (manager->files, file);
+ g_signal_connect (G_OBJECT (file), "destroy", G_CALLBACK (thunar_clipboard_manager_file_destroyed), manager);
+ }
+
+ /* acquire the CLIPBOARD ownership */
+ gtk_clipboard_set_with_owner (manager->clipboard, clipboard_targets,
+ G_N_ELEMENTS (clipboard_targets),
+ thunar_clipboard_manager_get_callback,
+ thunar_clipboard_manager_clear_callback,
+ G_OBJECT (manager));
+
+ /* Need to fake a "owner-change" event here if the Xserver doesn't support clipboard notification */
+#if GTK_CHECK_VERSION(2,6,0)
+ if (!gdk_display_supports_selection_notification (gtk_clipboard_get_display (manager->clipboard)))
+#endif
+ {
+ thunar_clipboard_manager_owner_changed (manager->clipboard, NULL, manager);
+ }
+}
+
+
+
+/**
+ * thunar_clipboard_manager_get_for_display:
+ * @display : a #GdkDisplay.
+ *
+ * Determines the #ThunarClipboardManager that is used to manage
+ * the clipboard on the given @display.
+ *
+ * The caller is responsible for freeing the returned object
+ * using g_object_unref() when it's no longer needed.
+ *
+ * Return value: the #ThunarClipboardManager for @display.
+ **/
+ThunarClipboardManager*
+thunar_clipboard_manager_get_for_display (GdkDisplay *display)
+{
+ ThunarClipboardManager *manager;
+ GtkClipboard *clipboard;
+
+ g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
+
+ /* generate the quark on-demand */
+ if (G_UNLIKELY (thunar_clipboard_manager_quark == 0))
+ thunar_clipboard_manager_quark = g_quark_from_static_string ("thunar-clipboard-manager");
+
+ /* figure out the clipboard for the given display */
+ clipboard = gtk_clipboard_get_for_display (display, GDK_SELECTION_CLIPBOARD);
+
+ /* check if a clipboard manager exists */
+ manager = g_object_get_qdata (G_OBJECT (clipboard), thunar_clipboard_manager_quark);
+ if (G_LIKELY (manager != NULL))
+ {
+ g_object_ref (G_OBJECT (manager));
+ return manager;
+ }
+
+ /* allocate a new manager */
+ manager = g_object_new (THUNAR_TYPE_CLIPBOARD_MANAGER, NULL);
+ manager->clipboard = g_object_ref (G_OBJECT (clipboard));
+ g_object_set_qdata (G_OBJECT (clipboard), thunar_clipboard_manager_quark, manager);
+
+ /* listen for the "owner-change" signal on the clipboard */
+ g_signal_connect (G_OBJECT (manager->clipboard), "owner-change",
+ G_CALLBACK (thunar_clipboard_manager_owner_changed), manager);
+
+ return manager;
+}
+
+
+
+/**
+ * thunar_clipboard_manager_get_can_paste:
+ * @manager : a #ThunarClipboardManager.
+ *
+ * Tells whether the contents of the clipboard represented
+ * by @manager can be pasted into a folder.
+ *
+ * Return value: %TRUE if the contents of the clipboard
+ * represented by @manager can be pasted
+ * into a folder.
+ **/
+gboolean
+thunar_clipboard_manager_get_can_paste (ThunarClipboardManager *manager)
+{
+ g_return_val_if_fail (THUNAR_IS_CLIPBOARD_MANAGER (manager), FALSE);
+ return manager->can_paste;
+}
+
+
+
+/**
+ * thunar_clipboard_manager_has_cutted_file:
+ * @manager : a #ThunarClipboardManager.
+ * @file : a #ThunarFile.
+ *
+ * Checks whether @file was cutted to the given @manager earlier.
+ *
+ * Return value: %TRUE if @file is on the cutted list of @manager.
+ **/
+gboolean
+thunar_clipboard_manager_has_cutted_file (ThunarClipboardManager *manager,
+ const ThunarFile *file)
+{
+ g_return_val_if_fail (THUNAR_IS_CLIPBOARD_MANAGER (manager), FALSE);
+ g_return_val_if_fail (THUNAR_IS_FILE (file), FALSE);
+
+ return (manager->files_cutted && g_list_find (manager->files, file) != NULL);
+}
+
+
+
+/**
+ * thunar_clipboard_manager_copy_files:
+ * @manager : a #ThunarClipboardManager.
+ * @files : a list of #ThunarFile<!---->s.
+ *
+ * Sets the clipboard represented by @manager to
+ * contain the @files and marks them to be copied
+ * when the user pastes from the clipboard.
+ **/
+void
+thunar_clipboard_manager_copy_files (ThunarClipboardManager *manager,
+ GList *files)
+{
+ g_return_if_fail (THUNAR_IS_CLIPBOARD_MANAGER (manager));
+ thunar_clipboard_manager_transfer_files (manager, TRUE, files);
+}
+
+
+
+/**
+ * thunar_clipboard_manager_cut_files:
+ * @manager : a #ThunarClipboardManager.
+ * @files : a list of #ThunarFile<!---->s.
+ *
+ * Sets the clipboard represented by @manager to
+ * contain the @files and marks them to be moved
+ * when the user pastes from the clipboard.
+ **/
+void
+thunar_clipboard_manager_cut_files (ThunarClipboardManager *manager,
+ GList *files)
+{
+ g_return_if_fail (THUNAR_IS_CLIPBOARD_MANAGER (manager));
+ thunar_clipboard_manager_transfer_files (manager, FALSE, files);
+}
+
+
+
+/**
+ * thunar_clipboard_manager_paste_files:
+ * @manager : a #ThunarClipboardManager.
+ * @target_path : the #ThunarVfsPath of the folder to which the contents on the clipboard
+ * should be pasted.
+ * @widget : a #GtkWidget, on which to perform the paste or %NULL if no widget is
+ * known.
+ * @new_files_closure : a #GClosure to connect to the job's "new-files" signal,
+ * which will be emitted when the job finishes with the
+ * list of #ThunarVfsPath<!---->s created by the job, or
+ * %NULL if you're not interested in the signal.
+ *
+ * Pastes the contents from the clipboard associated with @manager to the directory
+ * referenced by @target_path.
+ **/
+void
+thunar_clipboard_manager_paste_files (ThunarClipboardManager *manager,
+ ThunarVfsPath *target_path,
+ GtkWidget *widget,
+ GClosure *new_files_closure)
+{
+ ThunarClipboardPasteRequest *request;
+
+ g_return_if_fail (THUNAR_IS_CLIPBOARD_MANAGER (manager));
+ g_return_if_fail (widget == NULL || GTK_IS_WIDGET (widget));
+
+ /* prepare the paste request */
+ request = g_new0 (ThunarClipboardPasteRequest, 1);
+ request->manager = g_object_ref (G_OBJECT (manager));
+ request->target_path = thunar_vfs_path_ref (target_path);
+ request->widget = widget;
+
+ /* take a reference on the closure (if any) */
+ if (G_LIKELY (new_files_closure != NULL))
+ {
+ request->new_files_closure = new_files_closure;
+ g_closure_ref (new_files_closure);
+ g_closure_sink (new_files_closure);
+ }
+
+ /* get notified when the widget is destroyed prior to
+ * completing the clipboard contents retrieval
+ */
+ if (G_LIKELY (request->widget != NULL))
+ g_object_add_weak_pointer (G_OBJECT (request->widget), (gpointer) &request->widget);
+
+ /* schedule the request */
+ gtk_clipboard_request_contents (manager->clipboard, manager->x_special_gnome_copied_files,
+ thunar_clipboard_manager_contents_received, request);
+}
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-clipboard-manager.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-clipboard-manager.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-clipboard-manager.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,57 @@
+/* $Id: thunar-clipboard-manager.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_CLIPBOARD_MANAGER_H__
+#define __THUNAR_CLIPBOARD_MANAGER_H__
+
+#include <thunar/thunar-file.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarClipboardManagerClass ThunarClipboardManagerClass;
+typedef struct _ThunarClipboardManager ThunarClipboardManager;
+
+#define THUNAR_TYPE_CLIPBOARD_MANAGER (thunar_clipboard_manager_get_type ())
+#define THUNAR_CLIPBOARD_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_CLIPBOARD_MANAGER, ThunarClipboardManager))
+#define THUNAR_CLIPBOARD_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((obj), THUNAR_TYPE_CLIPBOARD_MANAGER, ThunarClipboardManagerClass))
+#define THUNAR_IS_CLIPBOARD_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_CLIPBOARD_MANAGER))
+#define THUNAR_IS_CLIPBAORD_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_CLIPBOARD_MANAGER))
+#define THUNAR_CLIPBOARD_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_CLIPBAORD_MANAGER, ThunarClipboardManagerClass))
+
+GType thunar_clipboard_manager_get_type (void) G_GNUC_CONST;
+
+ThunarClipboardManager *thunar_clipboard_manager_get_for_display (GdkDisplay *display);
+
+gboolean thunar_clipboard_manager_get_can_paste (ThunarClipboardManager *manager);
+
+gboolean thunar_clipboard_manager_has_cutted_file (ThunarClipboardManager *manager,
+ const ThunarFile *file);
+
+void thunar_clipboard_manager_copy_files (ThunarClipboardManager *manager,
+ GList *files);
+void thunar_clipboard_manager_cut_files (ThunarClipboardManager *manager,
+ GList *files);
+void thunar_clipboard_manager_paste_files (ThunarClipboardManager *manager,
+ ThunarVfsPath *target_path,
+ GtkWidget *widget,
+ GClosure *new_files_closure);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_CLIPBOARD_MANAGER_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-create-dialog.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-create-dialog.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-create-dialog.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,414 @@
+/* $Id: thunar-create-dialog.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <thunar/thunar-create-dialog.h>
+#include <thunar/thunar-icon-factory.h>
+
+
+
+/* Property identifiers */
+enum
+{
+ PROP_0,
+ PROP_FILENAME,
+ PROP_MIME_INFO,
+};
+
+
+
+static void thunar_create_dialog_class_init (ThunarCreateDialogClass *klass);
+static void thunar_create_dialog_init (ThunarCreateDialog *dialog);
+static void thunar_create_dialog_dispose (GObject *object);
+static void thunar_create_dialog_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void thunar_create_dialog_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void thunar_create_dialog_realize (GtkWidget *widget);
+static void thunar_create_dialog_update_image (ThunarCreateDialog *dialog);
+static void thunar_create_dialog_text_changed (GtkWidget *entry,
+ ThunarCreateDialog *dialog);
+
+
+
+struct _ThunarCreateDialogClass
+{
+ GtkDialogClass __parent__;
+};
+
+struct _ThunarCreateDialog
+{
+ GtkDialog __parent__;
+
+ GtkWidget *image;
+ GtkWidget *entry;
+
+ ThunarVfsMimeInfo *mime_info;
+};
+
+
+
+G_DEFINE_TYPE (ThunarCreateDialog, thunar_create_dialog, GTK_TYPE_DIALOG);
+
+
+
+static void
+thunar_create_dialog_class_init (ThunarCreateDialogClass *klass)
+{
+ GtkWidgetClass *gtkwidget_class;
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->dispose = thunar_create_dialog_dispose;
+ gobject_class->get_property = thunar_create_dialog_get_property;
+ gobject_class->set_property = thunar_create_dialog_set_property;
+
+ gtkwidget_class = GTK_WIDGET_CLASS (klass);
+ gtkwidget_class->realize = thunar_create_dialog_realize;
+
+ /**
+ * ThunarCreateDialog::filename:
+ *
+ * The filename entered in the dialog's entry box.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_FILENAME,
+ g_param_spec_string ("filename",
+ _("Filename"),
+ _("Filename"),
+ NULL,
+ EXO_PARAM_READWRITE));
+
+ /**
+ * ThunarCreateDialog::mime-info:
+ *
+ * The #ThunarVfsMimeInfo of the file to create.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_MIME_INFO,
+ g_param_spec_boxed ("mime-info",
+ _("Mime Info"),
+ _("Mime Info"),
+ THUNAR_VFS_TYPE_MIME_INFO,
+ EXO_PARAM_READWRITE));
+}
+
+
+
+static void
+thunar_create_dialog_init (ThunarCreateDialog *dialog)
+{
+ AtkRelationSet *relations;
+ AtkRelation *relation;
+ AtkObject *object;
+ GtkWidget *label;
+ GtkWidget *table;
+
+ /* configure the dialog itself */
+ gtk_dialog_add_buttons (GTK_DIALOG (dialog),
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_OK, GTK_RESPONSE_OK,
+ NULL);
+ gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
+ gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
+ gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), GTK_RESPONSE_OK, FALSE);
+ gtk_window_set_default_size (GTK_WINDOW (dialog), 300, -1);
+
+ table = g_object_new (GTK_TYPE_TABLE, "border-width", 6, "column-spacing", 6, "row-spacing", 3, NULL);
+ gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), table, TRUE, TRUE, 0);
+ gtk_widget_show (table);
+
+ dialog->image = g_object_new (GTK_TYPE_IMAGE, "xpad", 6, "ypad", 6, NULL);
+ gtk_table_attach (GTK_TABLE (table), dialog->image, 0, 1, 0, 2, GTK_FILL, GTK_FILL, 0, 0);
+ gtk_widget_show (dialog->image);
+
+ label = g_object_new (GTK_TYPE_LABEL, "label", _("Enter the new name:"), "xalign", 0.0f, NULL);
+ gtk_table_attach (GTK_TABLE (table), label, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
+ gtk_widget_show (label);
+
+ dialog->entry = g_object_new (GTK_TYPE_ENTRY, "activates-default", TRUE, NULL);
+ g_signal_connect (G_OBJECT (dialog->entry), "changed", G_CALLBACK (thunar_create_dialog_text_changed), dialog);
+ gtk_table_attach (GTK_TABLE (table), dialog->entry, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
+ gtk_widget_show (dialog->entry);
+
+ /* set Atk label relation for the entry */
+ object = gtk_widget_get_accessible (dialog->entry);
+ relations = atk_object_ref_relation_set (gtk_widget_get_accessible (label));
+ relation = atk_relation_new (&object, 1, ATK_RELATION_LABEL_FOR);
+ atk_relation_set_add (relations, relation);
+ g_object_unref (G_OBJECT (relation));
+}
+
+
+
+static void
+thunar_create_dialog_dispose (GObject *object)
+{
+ ThunarCreateDialog *dialog = THUNAR_CREATE_DIALOG (object);
+
+ /* release the mime info (if any) */
+ thunar_create_dialog_set_mime_info (dialog, NULL);
+
+ (*G_OBJECT_CLASS (thunar_create_dialog_parent_class)->dispose) (object);
+}
+
+
+
+static void
+thunar_create_dialog_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarCreateDialog *dialog = THUNAR_CREATE_DIALOG (object);
+
+ switch (prop_id)
+ {
+ case PROP_FILENAME:
+ g_value_set_string (value, thunar_create_dialog_get_filename (dialog));
+ break;
+
+ case PROP_MIME_INFO:
+ g_value_set_boxed (value, thunar_create_dialog_get_mime_info (dialog));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunar_create_dialog_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarCreateDialog *dialog = THUNAR_CREATE_DIALOG (object);
+
+ switch (prop_id)
+ {
+ case PROP_FILENAME:
+ thunar_create_dialog_set_filename (dialog, g_value_get_string (value));
+ break;
+
+ case PROP_MIME_INFO:
+ thunar_create_dialog_set_mime_info (dialog, g_value_get_boxed (value));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunar_create_dialog_realize (GtkWidget *widget)
+{
+ ThunarCreateDialog *dialog = THUNAR_CREATE_DIALOG (widget);
+
+ /* let GtkWidget realize the widget */
+ (*GTK_WIDGET_CLASS (thunar_create_dialog_parent_class)->realize) (widget);
+
+ /* update the image */
+ thunar_create_dialog_update_image (dialog);
+}
+
+
+
+static void
+thunar_create_dialog_update_image (ThunarCreateDialog *dialog)
+{
+ ThunarIconFactory *icon_factory;
+ GtkIconTheme *icon_theme;
+ const gchar *icon_name;
+ GdkPixbuf *icon = NULL;
+
+ /* check if we have a mime info */
+ if (G_LIKELY (dialog->mime_info != NULL))
+ {
+ /* determine the icon theme and factory for the current screen */
+ icon_theme = gtk_icon_theme_get_for_screen (gtk_widget_get_screen (GTK_WIDGET (dialog)));
+ icon_factory = thunar_icon_factory_get_for_icon_theme (icon_theme);
+
+ /* determine the icon name for the mime info */
+ icon_name = thunar_vfs_mime_info_lookup_icon_name (dialog->mime_info, icon_theme);
+
+ /* try to load the icon for the given name */
+ icon = thunar_icon_factory_load_icon (icon_factory, icon_name, 48, NULL, FALSE);
+
+ /* release the icon factory */
+ g_object_unref (G_OBJECT (icon_factory));
+ }
+
+ /* setup the image */
+ if (G_LIKELY (icon != NULL))
+ {
+ gtk_image_set_from_pixbuf (GTK_IMAGE (dialog->image), icon);
+ g_object_unref (G_OBJECT (icon));
+ gtk_widget_show (dialog->image);
+ }
+ else
+ {
+ gtk_widget_hide (dialog->image);
+ }
+}
+
+
+
+static void
+thunar_create_dialog_text_changed (GtkWidget *entry,
+ ThunarCreateDialog *dialog)
+{
+ const gchar *text;
+ const gchar *p;
+
+ g_return_if_fail (GTK_IS_ENTRY (entry));
+ g_return_if_fail (THUNAR_IS_CREATE_DIALOG (dialog));
+ g_return_if_fail (dialog->entry == entry);
+
+ /* verify the new text */
+ text = gtk_entry_get_text (GTK_ENTRY (entry));
+ for (p = text; *p != '\0'; ++p)
+ if (G_UNLIKELY (G_IS_DIR_SEPARATOR (*p)))
+ break;
+
+ /* enable/disable the "OK" button appropriately */
+ gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), GTK_RESPONSE_OK, (*text != '\0' && *p == '\0'));
+}
+
+
+
+/**
+ * thunar_create_dialog_new:
+ *
+ * Allocates a new #ThunarCreateDialog instance.
+ *
+ * Return value: the newly allocated #ThunarCreateDialog instance.
+ **/
+GtkWidget*
+thunar_create_dialog_new (void)
+{
+ return g_object_new (THUNAR_TYPE_CREATE_DIALOG, NULL);
+}
+
+
+
+/**
+ * thunar_create_dialog_get_filename:
+ * @dialog : a #ThunarCreateDialog.
+ *
+ * Returns the filename currently selected in @dialog.
+ *
+ * Return value: the filename currently selected in @dialog.
+ **/
+const gchar*
+thunar_create_dialog_get_filename (const ThunarCreateDialog *dialog)
+{
+ g_return_val_if_fail (THUNAR_IS_CREATE_DIALOG (dialog), NULL);
+ return gtk_entry_get_text (GTK_ENTRY (dialog->entry));
+}
+
+
+
+/**
+ * thunar_create_dialog_set_filename:
+ * @dialog : a #ThunarCreateDialog.
+ * @filename : the new filename to set.
+ *
+ * Sets the filename currently selected in @dialog
+ * to the specified @filename.
+ **/
+void
+thunar_create_dialog_set_filename (ThunarCreateDialog *dialog,
+ const gchar *filename)
+{
+ g_return_if_fail (THUNAR_IS_CREATE_DIALOG (dialog));
+ g_return_if_fail (filename != NULL);
+
+ /* setup the new filename */
+ gtk_entry_set_text (GTK_ENTRY (dialog->entry), filename);
+
+ /* notify listeners */
+ g_object_notify (G_OBJECT (dialog), "filename");
+}
+
+
+
+/**
+ * thunar_create_dialog_get_mime_info:
+ * @dialog : a #ThunarCreateDialog.
+ *
+ * Returns the current mime info for @dialog
+ * or %NULL.
+ *
+ * Return value: the mime info for @dialog.
+ **/
+ThunarVfsMimeInfo*
+thunar_create_dialog_get_mime_info (const ThunarCreateDialog *dialog)
+{
+ g_return_val_if_fail (THUNAR_IS_CREATE_DIALOG (dialog), NULL);
+ return dialog->mime_info;
+}
+
+
+
+/**
+ * thunar_create_dialog_set_mime_info:
+ * @dialog : a #ThunarCreateDialog.
+ * @mime_info : the new #ThunarVfsMimeInfo or %NULL.
+ *
+ * Set the mime info for @dialog to @mime_info.
+ **/
+void
+thunar_create_dialog_set_mime_info (ThunarCreateDialog *dialog,
+ ThunarVfsMimeInfo *mime_info)
+{
+ g_return_if_fail (THUNAR_IS_CREATE_DIALOG (dialog));
+
+ /* release the previous mime info */
+ if (G_UNLIKELY (dialog->mime_info != NULL))
+ thunar_vfs_mime_info_unref (dialog->mime_info);
+
+ /* activate the new mime info */
+ dialog->mime_info = mime_info;
+
+ /* take a reference on the mime info */
+ if (G_LIKELY (mime_info != NULL))
+ thunar_vfs_mime_info_ref (mime_info);
+
+ /* update the image if we're already realized */
+ if (GTK_WIDGET_REALIZED (dialog))
+ thunar_create_dialog_update_image (dialog);
+
+ /* notify listeners */
+ g_object_notify (G_OBJECT (dialog), "mime-info");
+}
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-create-dialog.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-create-dialog.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-create-dialog.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,51 @@
+/* $Id: thunar-create-dialog.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_CREATE_DIALOG_H__
+#define __THUNAR_CREATE_DIALOG_H__
+
+#include <thunar-vfs/thunar-vfs.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarCreateDialogClass ThunarCreateDialogClass;
+typedef struct _ThunarCreateDialog ThunarCreateDialog;
+
+#define THUNAR_TYPE_CREATE_DIALOG (thunar_create_dialog_get_type ())
+#define THUNAR_CREATE_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_CREATE_DIALOG, ThunarCreateDialog))
+#define THUNAR_CREATE_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_CREATE_DIALOG, ThunarCreateDialogClass))
+#define THUNAR_IS_CREATE_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_CREATE_DIALOG))
+#define THUNAR_IS_CREATE_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_CREATE_DIALOG))
+#define THUNAR_CREATE_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_CREATE_DIALOG, ThunarCreateDialogClass))
+
+GType thunar_create_dialog_get_type (void) G_GNUC_CONST;
+
+GtkWidget *thunar_create_dialog_new (void) G_GNUC_MALLOC;
+
+const gchar *thunar_create_dialog_get_filename (const ThunarCreateDialog *dialog);
+void thunar_create_dialog_set_filename (ThunarCreateDialog *dialog,
+ const gchar *filename);
+
+ThunarVfsMimeInfo *thunar_create_dialog_get_mime_info (const ThunarCreateDialog *dialog);
+void thunar_create_dialog_set_mime_info (ThunarCreateDialog *dialog,
+ ThunarVfsMimeInfo *mime_info);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_CREATE_DIALOG_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-details-view.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-details-view.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-details-view.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,511 @@
+/* $Id: thunar-details-view.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <gdk/gdkkeysyms.h>
+
+#include <thunar/thunar-details-view.h>
+#include <thunar/thunar-text-renderer.h>
+
+
+static void thunar_details_view_class_init (ThunarDetailsViewClass *klass);
+static void thunar_details_view_init (ThunarDetailsView *details_view);
+static AtkObject *thunar_details_view_get_accessible (GtkWidget *widget);
+static GList *thunar_details_view_get_selected_items (ThunarStandardView *standard_view);
+static void thunar_details_view_select_all (ThunarStandardView *standard_view);
+static void thunar_details_view_unselect_all (ThunarStandardView *standard_view);
+static void thunar_details_view_select_path (ThunarStandardView *standard_view,
+ GtkTreePath *path);
+static void thunar_details_view_set_cursor (ThunarStandardView *standard_view,
+ GtkTreePath *path,
+ gboolean start_editing);
+static void thunar_details_view_scroll_to_path (ThunarStandardView *standard_view,
+ GtkTreePath *path);
+static GtkTreePath *thunar_details_view_get_path_at_pos (ThunarStandardView *standard_view,
+ gint x,
+ gint y);
+static void thunar_details_view_highlight_path (ThunarStandardView *standard_view,
+ GtkTreePath *path);
+static void thunar_details_view_notify_model (GtkTreeView *tree_view,
+ GParamSpec *pspec,
+ ThunarDetailsView *details_view);
+static gboolean thunar_details_view_button_press_event (GtkTreeView *tree_view,
+ GdkEventButton *event,
+ ThunarDetailsView *details_view);
+static gboolean thunar_details_view_key_press_event (GtkTreeView *tree_view,
+ GdkEventKey *event,
+ ThunarDetailsView *details_view);
+static void thunar_details_view_row_activated (GtkTreeView *tree_view,
+ GtkTreePath *path,
+ GtkTreeViewColumn *column,
+ ThunarDetailsView *details_view);
+
+
+
+struct _ThunarDetailsViewClass
+{
+ ThunarStandardViewClass __parent__;
+};
+
+struct _ThunarDetailsView
+{
+ ThunarStandardView __parent__;
+};
+
+
+
+G_DEFINE_TYPE (ThunarDetailsView, thunar_details_view, THUNAR_TYPE_STANDARD_VIEW);
+
+
+
+static void
+thunar_details_view_class_init (ThunarDetailsViewClass *klass)
+{
+ ThunarStandardViewClass *thunarstandard_view_class;
+ GtkWidgetClass *gtkwidget_class;
+
+ gtkwidget_class = GTK_WIDGET_CLASS (klass);
+ gtkwidget_class->get_accessible = thunar_details_view_get_accessible;
+
+ thunarstandard_view_class = THUNAR_STANDARD_VIEW_CLASS (klass);
+ thunarstandard_view_class->get_selected_items = thunar_details_view_get_selected_items;
+ thunarstandard_view_class->select_all = thunar_details_view_select_all;
+ thunarstandard_view_class->unselect_all = thunar_details_view_unselect_all;
+ thunarstandard_view_class->select_path = thunar_details_view_select_path;
+ thunarstandard_view_class->set_cursor = thunar_details_view_set_cursor;
+ thunarstandard_view_class->scroll_to_path = thunar_details_view_scroll_to_path;
+ thunarstandard_view_class->get_path_at_pos = thunar_details_view_get_path_at_pos;
+ thunarstandard_view_class->highlight_path = thunar_details_view_highlight_path;
+}
+
+
+
+static void
+thunar_details_view_init (ThunarDetailsView *details_view)
+{
+ GtkTreeViewColumn *column;
+ GtkTreeSelection *selection;
+ GtkCellRenderer *renderer;
+ GtkWidget *tree_view;
+
+ /* create the tree view to embed */
+ tree_view = gtk_tree_view_new ();
+ g_signal_connect (G_OBJECT (tree_view), "notify::model",
+ G_CALLBACK (thunar_details_view_notify_model), details_view);
+ g_signal_connect (G_OBJECT (tree_view), "button-press-event",
+ G_CALLBACK (thunar_details_view_button_press_event), details_view);
+ g_signal_connect (G_OBJECT (tree_view), "key-press-event",
+ G_CALLBACK (thunar_details_view_key_press_event), details_view);
+ g_signal_connect (G_OBJECT (tree_view), "row-activated",
+ G_CALLBACK (thunar_details_view_row_activated), details_view);
+ gtk_container_add (GTK_CONTAINER (details_view), tree_view);
+ gtk_widget_show (tree_view);
+
+ /* configure general aspects of the details view */
+ gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (tree_view), TRUE);
+ gtk_tree_view_set_enable_search (GTK_TREE_VIEW (tree_view), TRUE);
+
+ /* first column (icon, name) */
+ column = g_object_new (GTK_TYPE_TREE_VIEW_COLUMN,
+ "expand", TRUE,
+ "resizable", TRUE,
+ "title", _("Name"),
+ NULL);
+ gtk_tree_view_column_pack_start (column, THUNAR_STANDARD_VIEW (details_view)->icon_renderer, FALSE);
+ gtk_tree_view_column_set_attributes (column, THUNAR_STANDARD_VIEW (details_view)->icon_renderer,
+ "file", THUNAR_LIST_MODEL_COLUMN_FILE,
+ NULL);
+ g_object_set (G_OBJECT (THUNAR_STANDARD_VIEW (details_view)->name_renderer),
+ "xalign", 0.0,
+ NULL);
+ gtk_tree_view_column_pack_start (column, THUNAR_STANDARD_VIEW (details_view)->name_renderer, TRUE);
+ gtk_tree_view_column_set_attributes (column, THUNAR_STANDARD_VIEW (details_view)->name_renderer,
+ "text", THUNAR_LIST_MODEL_COLUMN_NAME,
+ NULL);
+ gtk_tree_view_column_set_sort_column_id (column, THUNAR_LIST_MODEL_COLUMN_NAME);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
+
+ /* second column (size) */
+ column = g_object_new (GTK_TYPE_TREE_VIEW_COLUMN,
+ "resizable", TRUE,
+ "title", _("Size"),
+ NULL);
+ renderer = g_object_new (THUNAR_TYPE_TEXT_RENDERER,
+ "xalign", 1.0,
+ NULL);
+ gtk_tree_view_column_pack_start (column, renderer, TRUE);
+ gtk_tree_view_column_set_attributes (column, renderer,
+ "text", THUNAR_LIST_MODEL_COLUMN_SIZE,
+ NULL);
+ gtk_tree_view_column_set_sort_column_id (column, THUNAR_LIST_MODEL_COLUMN_SIZE);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
+
+ /* third column (permissions) */
+ column = g_object_new (GTK_TYPE_TREE_VIEW_COLUMN,
+ "resizable", TRUE,
+ "title", _("Permissions"),
+ NULL);
+ renderer = g_object_new (THUNAR_TYPE_TEXT_RENDERER,
+ "xalign", 0.0,
+ NULL);
+ gtk_tree_view_column_pack_start (column, renderer, TRUE);
+ gtk_tree_view_column_set_attributes (column, renderer,
+ "text", THUNAR_LIST_MODEL_COLUMN_PERMISSIONS,
+ NULL);
+ gtk_tree_view_column_set_sort_column_id (column, THUNAR_LIST_MODEL_COLUMN_PERMISSIONS);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
+
+ /* fourth column (type) */
+ column = g_object_new (GTK_TYPE_TREE_VIEW_COLUMN,
+ "resizable", TRUE,
+ "title", _("Type"),
+ NULL);
+ gtk_tree_view_column_pack_start (column, renderer, TRUE);
+ gtk_tree_view_column_set_attributes (column, renderer,
+ "text", THUNAR_LIST_MODEL_COLUMN_TYPE,
+ NULL);
+ gtk_tree_view_column_set_sort_column_id (column, THUNAR_LIST_MODEL_COLUMN_TYPE);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
+
+ /* fifth column (modification date) */
+ column = g_object_new (GTK_TYPE_TREE_VIEW_COLUMN,
+ "resizable", TRUE,
+ "title", _("Date modified"),
+ NULL);
+ gtk_tree_view_column_pack_start (column, renderer, TRUE);
+ gtk_tree_view_column_set_attributes (column, renderer,
+ "text", THUNAR_LIST_MODEL_COLUMN_DATE_MODIFIED,
+ NULL);
+ gtk_tree_view_column_set_sort_column_id (column, THUNAR_LIST_MODEL_COLUMN_DATE_MODIFIED);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
+
+ /* configure the tree selection */
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view));
+ gtk_tree_selection_set_mode (selection, GTK_SELECTION_MULTIPLE);
+ g_signal_connect_swapped (G_OBJECT (selection), "changed",
+ G_CALLBACK (thunar_standard_view_selection_changed), details_view);
+}
+
+
+
+static AtkObject*
+thunar_details_view_get_accessible (GtkWidget *widget)
+{
+ AtkObject *object;
+
+ /* query the atk object for the tree view class */
+ object = GTK_WIDGET_CLASS (thunar_details_view_parent_class)->get_accessible (widget);
+
+ /* set custom Atk properties for the details view */
+ if (G_LIKELY (object != NULL))
+ {
+ atk_object_set_name (object, _("Details view"));
+ atk_object_set_description (object, _("Detailed directory listing"));
+ }
+
+ return object;
+}
+
+
+
+static GList*
+thunar_details_view_get_selected_items (ThunarStandardView *standard_view)
+{
+ GtkTreeSelection *selection;
+
+ g_return_val_if_fail (THUNAR_IS_DETAILS_VIEW (standard_view), NULL);
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (GTK_BIN (standard_view)->child));
+ return gtk_tree_selection_get_selected_rows (selection, NULL);
+}
+
+
+
+static void
+thunar_details_view_select_all (ThunarStandardView *standard_view)
+{
+ GtkTreeSelection *selection;
+
+ g_return_if_fail (THUNAR_IS_DETAILS_VIEW (standard_view));
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (GTK_BIN (standard_view)->child));
+ gtk_tree_selection_select_all (selection);
+}
+
+
+
+static void
+thunar_details_view_unselect_all (ThunarStandardView *standard_view)
+{
+ GtkTreeSelection *selection;
+
+ g_return_if_fail (THUNAR_IS_DETAILS_VIEW (standard_view));
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (GTK_BIN (standard_view)->child));
+ gtk_tree_selection_unselect_all (selection);
+}
+
+
+
+static void
+thunar_details_view_select_path (ThunarStandardView *standard_view,
+ GtkTreePath *path)
+{
+ GtkTreeSelection *selection;
+
+ g_return_if_fail (THUNAR_IS_DETAILS_VIEW (standard_view));
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (GTK_BIN (standard_view)->child));
+ gtk_tree_selection_select_path (selection, path);
+}
+
+
+
+static void
+thunar_details_view_set_cursor (ThunarStandardView *standard_view,
+ GtkTreePath *path,
+ gboolean start_editing)
+{
+ GtkCellRendererMode mode;
+ GtkTreeViewColumn *column;
+
+ g_return_if_fail (THUNAR_IS_DETAILS_VIEW (standard_view));
+
+ /* make sure the name renderer is editable */
+ mode = standard_view->name_renderer->mode;
+ standard_view->name_renderer->mode = GTK_CELL_RENDERER_MODE_EDITABLE;
+
+ /* tell the tree view to start editing the given row */
+ column = gtk_tree_view_get_column (GTK_TREE_VIEW (GTK_BIN (standard_view)->child), 0);
+ gtk_tree_view_set_cursor_on_cell (GTK_TREE_VIEW (GTK_BIN (standard_view)->child),
+ path, column, standard_view->name_renderer,
+ start_editing);
+
+ /* reset the name renderer mode */
+ standard_view->name_renderer->mode = mode;
+}
+
+
+
+static void
+thunar_details_view_scroll_to_path (ThunarStandardView *standard_view,
+ GtkTreePath *path)
+{
+ GtkTreeViewColumn *column;
+
+ g_return_if_fail (THUNAR_IS_DETAILS_VIEW (standard_view));
+
+ /* tell the tree view to scroll to the given row */
+ column = gtk_tree_view_get_column (GTK_TREE_VIEW (GTK_BIN (standard_view)->child), 0);
+ gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (GTK_BIN (standard_view)->child), path, column, FALSE, 0.0f, 0.0f);
+}
+
+
+
+static GtkTreePath*
+thunar_details_view_get_path_at_pos (ThunarStandardView *standard_view,
+ gint x,
+ gint y)
+{
+ GtkTreePath *path;
+
+ g_return_val_if_fail (THUNAR_IS_DETAILS_VIEW (standard_view), NULL);
+
+ if (gtk_tree_view_get_dest_row_at_pos (GTK_TREE_VIEW (GTK_BIN (standard_view)->child), x, y, &path, NULL))
+ return path;
+
+ return NULL;
+}
+
+
+
+static void
+thunar_details_view_highlight_path (ThunarStandardView *standard_view,
+ GtkTreePath *path)
+{
+ g_return_if_fail (THUNAR_IS_DETAILS_VIEW (standard_view));
+ gtk_tree_view_set_drag_dest_row (GTK_TREE_VIEW (GTK_BIN (standard_view)->child), path, GTK_TREE_VIEW_DROP_INTO_OR_AFTER);
+}
+
+
+
+static void
+thunar_details_view_notify_model (GtkTreeView *tree_view,
+ GParamSpec *pspec,
+ ThunarDetailsView *details_view)
+{
+ /* We need to set the search column here, as GtkTreeView resets it
+ * whenever a new model is set.
+ */
+ gtk_tree_view_set_search_column (tree_view, THUNAR_LIST_MODEL_COLUMN_NAME);
+}
+
+
+
+static gboolean
+thunar_details_view_button_press_event (GtkTreeView *tree_view,
+ GdkEventButton *event,
+ ThunarDetailsView *details_view)
+{
+ GtkTreeSelection *selection;
+ GtkTreePath *path;
+ GtkTreeIter iter;
+ ThunarFile *file;
+ GtkAction *action;
+
+ /* we unselect all selected items if the user clicks on an empty
+ * area of the treeview and no modifier key is active.
+ */
+ if ((event->state & gtk_accelerator_get_default_mod_mask ()) == 0
+ && !gtk_tree_view_get_path_at_pos (tree_view, event->x, event->y, NULL, NULL, NULL, NULL))
+ {
+ selection = gtk_tree_view_get_selection (tree_view);
+ gtk_tree_selection_unselect_all (selection);
+ }
+
+ /* open the context menu on right clicks */
+ if (event->type == GDK_BUTTON_PRESS && event->button == 3)
+ {
+ selection = gtk_tree_view_get_selection (tree_view);
+ if (gtk_tree_view_get_path_at_pos (tree_view, event->x, event->y, &path, NULL, NULL, NULL))
+ {
+ /* select the path on which the user clicked if not selected yet */
+ if (!gtk_tree_selection_path_is_selected (selection, path))
+ {
+ /* we don't unselect all other items if Control is active */
+ if ((event->state & GDK_CONTROL_MASK) == 0)
+ gtk_tree_selection_unselect_all (selection);
+ gtk_tree_selection_select_path (selection, path);
+ }
+ gtk_tree_path_free (path);
+
+ /* queue the menu popup */
+ thunar_standard_view_queue_popup (THUNAR_STANDARD_VIEW (details_view), event);
+ }
+ else
+ {
+ /* open the context menu */
+ thunar_standard_view_context_menu (THUNAR_STANDARD_VIEW (details_view), event->button, event->time);
+ }
+
+ return TRUE;
+ }
+ else if ((event->type == GDK_BUTTON_PRESS || event->type == GDK_2BUTTON_PRESS) && event->button == 2)
+ {
+ /* determine the path to the item that was middle-clicked */
+ if (gtk_tree_view_get_path_at_pos (tree_view, event->x, event->y, &path, NULL, NULL, NULL))
+ {
+ /* select only the path to the item on which the user clicked */
+ selection = gtk_tree_view_get_selection (tree_view);
+ gtk_tree_selection_unselect_all (selection);
+ gtk_tree_selection_select_path (selection, path);
+
+ /* if the event was a double-click, then we'll open the file or folder (folder's are opened in new windows) */
+ if (G_LIKELY (event->type == GDK_2BUTTON_PRESS))
+ {
+ /* determine the file for the path */
+ gtk_tree_model_get_iter (GTK_TREE_MODEL (THUNAR_STANDARD_VIEW (details_view)->model), &iter, path);
+ file = thunar_list_model_get_file (THUNAR_STANDARD_VIEW (details_view)->model, &iter);
+ if (G_LIKELY (file != NULL))
+ {
+ /* determine the action to perform depending on the type of the file */
+ action = gtk_action_group_get_action (THUNAR_STANDARD_VIEW (details_view)->action_group,
+ thunar_file_is_directory (file) ? "open-in-new-window" : "open");
+
+ /* emit the action */
+ if (G_LIKELY (action != NULL))
+ gtk_action_activate (action);
+
+ /* release the file reference */
+ g_object_unref (G_OBJECT (file));
+ }
+ }
+
+ /* cleanup */
+ gtk_tree_path_free (path);
+ }
+
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+
+
+static gboolean
+thunar_details_view_key_press_event (GtkTreeView *tree_view,
+ GdkEventKey *event,
+ ThunarDetailsView *details_view)
+{
+ /* popup context menu if "Menu" or "<Shift>F10" is pressed */
+ if (event->keyval == GDK_Menu || ((event->state & GDK_SHIFT_MASK) != 0 && event->keyval == GDK_F10))
+ {
+ thunar_standard_view_context_menu (THUNAR_STANDARD_VIEW (details_view), 0, event->time);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+
+
+static void
+thunar_details_view_row_activated (GtkTreeView *tree_view,
+ GtkTreePath *path,
+ GtkTreeViewColumn *column,
+ ThunarDetailsView *details_view)
+{
+ GtkTreeSelection *selection;
+ GtkAction *action;
+
+ g_return_if_fail (THUNAR_IS_DETAILS_VIEW (details_view));
+
+ /* be sure to have only the double clicked item selected */
+ selection = gtk_tree_view_get_selection (tree_view);
+ gtk_tree_selection_unselect_all (selection);
+ gtk_tree_selection_select_path (selection, path);
+
+ /* emit the "open" action */
+ action = gtk_action_group_get_action (THUNAR_STANDARD_VIEW (details_view)->action_group, "open");
+ if (G_LIKELY (action != NULL))
+ gtk_action_activate (action);
+}
+
+
+
+/**
+ * thunar_details_view_new:
+ *
+ * Allocates a new #ThunarDetailsView instance, which is not
+ * associated with any #ThunarListModel yet.
+ *
+ * Return value: the newly allocated #ThunarDetailsView instance.
+ **/
+GtkWidget*
+thunar_details_view_new (void)
+{
+ return g_object_new (THUNAR_TYPE_DETAILS_VIEW, NULL);
+}
+
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-details-view.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-details-view.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-details-view.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,43 @@
+/* $Id: thunar-details-view.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_DETAILS_VIEW_H__
+#define __THUNAR_DETAILS_VIEW_H__
+
+#include <thunar/thunar-standard-view.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarDetailsViewClass ThunarDetailsViewClass;
+typedef struct _ThunarDetailsView ThunarDetailsView;
+
+#define THUNAR_TYPE_DETAILS_VIEW (thunar_details_view_get_type ())
+#define THUNAR_DETAILS_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_DETAILS_VIEW, ThunarDetailsView))
+#define THUNAR_DETAILS_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_DETAILS_VIEW, ThunarDetailsViewClass))
+#define THUNAR_IS_DETAILS_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_DETAILS_VIEW))
+#define THUNAR_IS_DETAILS_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_DETAILS_VIEW))
+#define THUNAR_DETAILS_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_DETAILS_VIEW, ThunarDetailsViewClass))
+
+GType thunar_details_view_get_type (void) G_GNUC_CONST;
+
+GtkWidget *thunar_details_view_new (void);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_DETAILS_VIEW_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-dialogs.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-dialogs.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-dialogs.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,89 @@
+/* $Id: thunar-dialogs.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_STDARG_H
+#include <stdarg.h>
+#endif
+
+#include <exo/exo.h>
+
+#include <thunar/thunar-dialogs.h>
+
+
+
+/**
+ * thunar_dialogs_show_error:
+ * @widget : a #GtkWidget on which the error dialog should be shown or %NULL.
+ * @error : a #GError, which gives a more precise description of the problem or %NULL.
+ * @format : the printf()-style format for the primary problem description.
+ * @... : argument list for the @format.
+ *
+ * Displays an error dialog on @widget using the @format as primary message and optionally
+ * displaying @error as secondary error text.
+ *
+ * If @widget is not %NULL and @widget is part of a #GtkWindow, the function makes sure
+ * that the toplevel window is visible prior to displaying the error dialog.
+ **/
+void
+thunar_dialogs_show_error (GtkWidget *widget,
+ const GError *error,
+ const gchar *format,
+ ...)
+{
+ GtkWidget *dialog;
+ GtkWidget *window;
+ va_list args;
+ gchar *primary_text;
+
+ /* determine the toplevel window and make sure it's shown */
+ window = (widget != NULL) ? gtk_widget_get_toplevel (widget) : NULL;
+ if (G_LIKELY (window != NULL))
+ gtk_widget_show_now (window);
+
+ /* determine the primary error text */
+ va_start (args, format);
+ primary_text = g_strdup_vprintf (format, args);
+ va_end (args);
+
+ /* allocate the error dialog */
+ dialog = gtk_message_dialog_new ((GtkWindow *) window,
+ GTK_DIALOG_DESTROY_WITH_PARENT
+ | GTK_DIALOG_MODAL,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_CLOSE,
+ _("%s."), primary_text);
+
+ /* set secondary text if an error is provided */
+ if (G_LIKELY (error != NULL))
+ gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), _("%s."), error->message);
+
+ /* display the dialog */
+ gtk_dialog_run (GTK_DIALOG (dialog));
+
+ /* cleanup */
+ gtk_widget_destroy (dialog);
+ g_free (primary_text);
+}
+
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-dialogs.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-dialogs.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-dialogs.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,34 @@
+/* $Id: thunar-dialogs.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_DIALOGS_H__
+#define __THUNAR_DIALOGS_H__
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS;
+
+void thunar_dialogs_show_error (GtkWidget *widget,
+ const GError *error,
+ const gchar *format,
+ ...) G_GNUC_INTERNAL G_GNUC_PRINTF (3, 4);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_DIALOGS_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-dnd.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-dnd.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-dnd.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,208 @@
+/* $Id: thunar-dnd.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <thunar/thunar-application.h>
+#include <thunar/thunar-dialogs.h>
+#include <thunar/thunar-dnd.h>
+
+
+
+static void
+action_selected (GtkWidget *item,
+ GdkDragAction *action)
+{
+ *action = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (item), "action"));
+}
+
+
+
+/**
+ * thunar_dnd_ask:
+ * @widget : the widget on which the drop was performed.
+ * @time : the time of the drop event.
+ * @actions : the list of actions supported for the drop.
+ *
+ * Pops up a menu that asks the user to choose one of the
+ * @actions or to cancel the drop. If the user chooses a
+ * valid #GdkDragAction from @actions, then this action is
+ * returned. Else if the user cancels the drop, 0 will be
+ * returned.
+ *
+ * This method can be used to implement a response to the
+ * #GDK_ACTION_ASK action on drops.
+ *
+ * Return value: the selected #GdkDragAction or 0 to cancel.
+ **/
+GdkDragAction
+thunar_dnd_ask (GtkWidget *widget,
+ guint time,
+ GdkDragAction actions)
+{
+ static const GdkDragAction action_items[] = { GDK_ACTION_COPY, GDK_ACTION_MOVE, GDK_ACTION_LINK };
+ static const gchar *action_names[] = { N_ ("_Copy here"), N_ ("_Move here"), N_ ("_Link here") };
+ static const gchar *action_icons[] = { "stock_folder-copy", "stock_folder-move", NULL };
+
+ GdkDragAction action = 0;
+ GtkWidget *image;
+ GtkWidget *menu;
+ GtkWidget *item;
+ GMainLoop *loop;
+ guint n;
+
+ g_return_val_if_fail (GTK_IS_WIDGET (widget), 0);
+
+ /* prepare the internal loop */
+ loop = g_main_loop_new (NULL, FALSE);
+
+ /* prepare the popup menu */
+ menu = gtk_menu_new ();
+ gtk_menu_set_screen (GTK_MENU (menu), gtk_widget_get_screen (widget));
+ g_signal_connect_swapped (G_OBJECT (menu), "deactivate", G_CALLBACK (g_main_loop_quit), loop);
+
+ /* append the various items */
+ for (n = 0; n < G_N_ELEMENTS (action_items); ++n)
+ if (G_LIKELY ((actions & action_items[n]) != 0))
+ {
+ item = gtk_image_menu_item_new_with_mnemonic (_(action_names[n]));
+ g_object_set_data (G_OBJECT (item), "action", GUINT_TO_POINTER (action_items[n]));
+ g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (action_selected), &action);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
+ /* add image to the menu item */
+ if (G_LIKELY (action_icons[n] != NULL))
+ {
+ image = gtk_image_new_from_icon_name (action_icons[n], GTK_ICON_SIZE_MENU);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
+ gtk_widget_show (image);
+ }
+ }
+
+ /* append the separator */
+ item = gtk_separator_menu_item_new ();
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
+ /* append the cancel item */
+ item = gtk_image_menu_item_new_from_stock (GTK_STOCK_CANCEL, NULL);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
+ /* run the internal loop */
+ gtk_grab_add (menu);
+ gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 3, time);
+ g_main_loop_run (loop);
+ gtk_grab_remove (menu);
+
+ /* clean up */
+ gtk_object_sink (GTK_OBJECT (menu));
+ g_main_loop_unref (loop);
+
+ return action;
+}
+
+
+
+/**
+ * thunar_dnd_perform:
+ * @widget : the #GtkWidget on which the drop was done.
+ * @file : the #ThunarFile on which the @path_list was dropped.
+ * @path_list : the list of #ThunarVfsPath<!---->s that was dropped.
+ * @action : the #GdkDragAction that was performed.
+ * @new_files_closure : a #GClosure to connect to the job's "new-files" signal,
+ * which will be emitted when the job finishes with the
+ * list of #ThunarVfsPath<!---->s created by the job, or
+ * %NULL if you're not interested in the signal.
+ *
+ * Performs the drop of @path_list on @file in @widget, as given in
+ * @action and returns %TRUE if the drop was started successfully
+ * (or even completed successfully), else %FALSE.
+ *
+ * Return value: %TRUE if the DnD operation was started
+ * successfully, else %FALSE.
+ **/
+gboolean
+thunar_dnd_perform (GtkWidget *widget,
+ ThunarFile *file,
+ GList *path_list,
+ GdkDragAction action,
+ GClosure *new_files_closure)
+{
+ ThunarApplication *application;
+ gboolean succeed = TRUE;
+ GError *error = NULL;
+
+ g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
+ g_return_val_if_fail (THUNAR_IS_FILE (file), FALSE);
+ g_return_val_if_fail (GTK_WIDGET_REALIZED (widget), FALSE);
+
+ /* query a reference on the application object */
+ application = thunar_application_get ();
+
+ /* check if the file is a directory */
+ if (thunar_file_is_directory (file))
+ {
+ /* perform the given directory operation */
+ switch (action)
+ {
+ case GDK_ACTION_COPY:
+ thunar_application_copy_into (application, widget, path_list, thunar_file_get_path (file), new_files_closure);
+ break;
+
+ case GDK_ACTION_MOVE:
+ thunar_application_move_into (application, widget, path_list, thunar_file_get_path (file), new_files_closure);
+ break;
+
+ case GDK_ACTION_LINK:
+ thunar_application_link_into (application, widget, path_list, thunar_file_get_path (file), new_files_closure);
+ break;
+
+ default:
+ succeed = FALSE;
+ }
+ }
+ else if (thunar_file_is_executable (file))
+ {
+ succeed = thunar_file_execute (file, gtk_widget_get_screen (widget), path_list, &error);
+ if (G_UNLIKELY (!succeed))
+ {
+ /* display an error to the user */
+ thunar_dialogs_show_error (widget, error, _("Unable to execute file `%s'"), thunar_file_get_display_name (file));
+
+ /* release the error */
+ g_error_free (error);
+ }
+ }
+ else
+ {
+ succeed = FALSE;
+ }
+
+ /* release the application reference */
+ g_object_unref (G_OBJECT (application));
+
+ return succeed;
+}
+
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-dnd.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-dnd.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-dnd.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,39 @@
+/* $Id: thunar-dnd.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_DND_H__
+#define __THUNAR_DND_H__
+
+#include <thunar/thunar-file.h>
+
+G_BEGIN_DECLS;
+
+GdkDragAction thunar_dnd_ask (GtkWidget *widget,
+ guint time,
+ GdkDragAction actions);
+
+gboolean thunar_dnd_perform (GtkWidget *widget,
+ ThunarFile *file,
+ GList *uri_list,
+ GdkDragAction action,
+ GClosure *new_files_closure);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_DND_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-emblem-chooser.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-emblem-chooser.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-emblem-chooser.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,519 @@
+/* $Id: thunar-emblem-chooser.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#include <thunar/thunar-emblem-chooser.h>
+
+
+
+/* Property identifiers */
+enum
+{
+ PROP_0,
+ PROP_FILE,
+};
+
+
+
+static void thunar_emblem_chooser_class_init (ThunarEmblemChooserClass *klass);
+static void thunar_emblem_chooser_init (ThunarEmblemChooser *chooser);
+static void thunar_emblem_chooser_dispose (GObject *object);
+static void thunar_emblem_chooser_finalize (GObject *object);
+static void thunar_emblem_chooser_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void thunar_emblem_chooser_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void thunar_emblem_chooser_realize (GtkWidget *widget);
+static void thunar_emblem_chooser_unrealize (GtkWidget *widget);
+static void thunar_emblem_chooser_button_toggled (GtkToggleButton *button,
+ ThunarEmblemChooser *chooser);
+static void thunar_emblem_chooser_file_changed (ThunarFile *file,
+ ThunarEmblemChooser *chooser);
+static void thunar_emblem_chooser_theme_changed (GtkIconTheme *icon_theme,
+ ThunarEmblemChooser *chooser);
+static void thunar_emblem_chooser_create_buttons (ThunarEmblemChooser *chooser);
+static GtkWidget *thunar_emblem_chooser_create_button (ThunarEmblemChooser *chooser,
+ const gchar *emblem);
+
+
+
+struct _ThunarEmblemChooserClass
+{
+ GtkScrolledWindowClass __parent__;
+};
+
+struct _ThunarEmblemChooser
+{
+ GtkScrolledWindow __parent__;
+
+ GtkIconTheme *icon_theme;
+ GtkSizeGroup *size_group;
+ ThunarFile *file;
+ GtkWidget *table;
+};
+
+
+
+G_DEFINE_TYPE (ThunarEmblemChooser, thunar_emblem_chooser, GTK_TYPE_SCROLLED_WINDOW);
+
+
+
+static void
+thunar_emblem_chooser_class_init (ThunarEmblemChooserClass *klass)
+{
+ GtkWidgetClass *gtkwidget_class;
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->dispose = thunar_emblem_chooser_dispose;
+ gobject_class->finalize = thunar_emblem_chooser_finalize;
+ gobject_class->get_property = thunar_emblem_chooser_get_property;
+ gobject_class->set_property = thunar_emblem_chooser_set_property;
+
+ gtkwidget_class = GTK_WIDGET_CLASS (klass);
+ gtkwidget_class->realize = thunar_emblem_chooser_realize;
+ gtkwidget_class->unrealize = thunar_emblem_chooser_unrealize;
+
+ /**
+ * ThunarEmblemChooser::file:
+ *
+ * The file for which emblems should be choosen.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_FILE,
+ g_param_spec_object ("file",
+ _("File"),
+ _("File"),
+ THUNAR_TYPE_FILE,
+ EXO_PARAM_READWRITE));
+}
+
+
+
+static void
+thunar_emblem_chooser_init (ThunarEmblemChooser *chooser)
+{
+ GtkWidget *viewport;
+
+ /* setup the scrolled window instance */
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (chooser), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+ gtk_scrolled_window_set_hadjustment (GTK_SCROLLED_WINDOW (chooser), NULL);
+ gtk_scrolled_window_set_vadjustment (GTK_SCROLLED_WINDOW (chooser), NULL);
+
+ /* setup the viewport */
+ viewport = gtk_viewport_new (gtk_scrolled_window_get_hadjustment (GTK_SCROLLED_WINDOW (chooser)),
+ gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (chooser)));
+ gtk_viewport_set_shadow_type (GTK_VIEWPORT (viewport), GTK_SHADOW_NONE);
+ gtk_container_add (GTK_CONTAINER (chooser), viewport);
+ gtk_widget_show (viewport);
+
+ /* setup the wrap table */
+ chooser->table = g_object_new (EXO_TYPE_WRAP_TABLE, "border-width", 6, "homogeneous", TRUE, NULL);
+ gtk_container_add (GTK_CONTAINER (viewport), chooser->table);
+ gtk_widget_show (chooser->table);
+
+ /* allocate a size-group for the buttons */
+ chooser->size_group = gtk_size_group_new (GTK_SIZE_GROUP_BOTH);
+}
+
+
+
+static void
+thunar_emblem_chooser_dispose (GObject *object)
+{
+ ThunarEmblemChooser *chooser = THUNAR_EMBLEM_CHOOSER (object);
+
+ /* disconnect from the file */
+ thunar_emblem_chooser_set_file (chooser, NULL);
+
+ (*G_OBJECT_CLASS (thunar_emblem_chooser_parent_class)->dispose) (object);
+}
+
+
+
+static void
+thunar_emblem_chooser_finalize (GObject *object)
+{
+ ThunarEmblemChooser *chooser = THUNAR_EMBLEM_CHOOSER (object);
+
+ /* release the size-group */
+ g_object_unref (G_OBJECT (chooser->size_group));
+
+ (*G_OBJECT_CLASS (thunar_emblem_chooser_parent_class)->finalize) (object);
+}
+
+
+
+static void
+thunar_emblem_chooser_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarEmblemChooser *chooser = THUNAR_EMBLEM_CHOOSER (object);
+
+ switch (prop_id)
+ {
+ case PROP_FILE:
+ g_value_set_object (value, thunar_emblem_chooser_get_file (chooser));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunar_emblem_chooser_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarEmblemChooser *chooser = THUNAR_EMBLEM_CHOOSER (object);
+
+ switch (prop_id)
+ {
+ case PROP_FILE:
+ thunar_emblem_chooser_set_file (chooser, g_value_get_object (value));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunar_emblem_chooser_realize (GtkWidget *widget)
+{
+ ThunarEmblemChooser *chooser = THUNAR_EMBLEM_CHOOSER (widget);
+
+ /* let the GtkWidget class perform the realization */
+ (*GTK_WIDGET_CLASS (thunar_emblem_chooser_parent_class)->realize) (widget);
+
+ /* determine the icon theme for the new screen */
+ chooser->icon_theme = gtk_icon_theme_get_for_screen (gtk_widget_get_screen (widget));
+ g_signal_connect (G_OBJECT (chooser->icon_theme), "changed",
+ G_CALLBACK (thunar_emblem_chooser_theme_changed),
+ chooser);
+ g_object_ref (G_OBJECT (chooser->icon_theme));
+
+ /* create the emblem buttons */
+ thunar_emblem_chooser_create_buttons (chooser);
+}
+
+
+
+static void
+thunar_emblem_chooser_unrealize (GtkWidget *widget)
+{
+ ThunarEmblemChooser *chooser = THUNAR_EMBLEM_CHOOSER (widget);
+
+ /* drop all check buttons */
+ gtk_container_foreach (GTK_CONTAINER (chooser->table), (GtkCallback) gtk_widget_destroy, NULL);
+
+ /* release our reference on the icon theme */
+ g_signal_handlers_disconnect_by_func (G_OBJECT (chooser->icon_theme), thunar_emblem_chooser_theme_changed, chooser);
+ g_object_unref (G_OBJECT (chooser->icon_theme));
+ chooser->icon_theme = NULL;
+
+ /* let the GtkWidget class perform the unrealization */
+ (*GTK_WIDGET_CLASS (thunar_emblem_chooser_parent_class)->unrealize) (widget);
+}
+
+
+
+static void
+thunar_emblem_chooser_button_toggled (GtkToggleButton *button,
+ ThunarEmblemChooser *chooser)
+{
+ const gchar *emblem_name;
+ GList *emblem_names = NULL;
+ GList *children;
+ GList *lp;
+
+ g_return_if_fail (GTK_IS_TOGGLE_BUTTON (button));
+ g_return_if_fail (THUNAR_IS_EMBLEM_CHOOSER (chooser));
+
+ /* we just ignore toggle events if no file is set */
+ if (G_LIKELY (chooser->file == NULL))
+ return;
+
+ /* determine the list of selected emblems */
+ children = gtk_container_get_children (GTK_CONTAINER (chooser->table));
+ for (lp = children; lp != NULL; lp = lp->next)
+ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (lp->data)))
+ {
+ emblem_name = g_object_get_data (G_OBJECT (lp->data), "thunar-emblem");
+ emblem_names = g_list_append (emblem_names, g_strdup (emblem_name));
+ }
+ g_list_free (children);
+
+ /* setup the new emblem name list for the file */
+ thunar_file_set_emblem_names (chooser->file, emblem_names);
+
+ /* release the emblem name list */
+ g_list_foreach (emblem_names, (GFunc) g_free, NULL);
+ g_list_free (emblem_names);
+}
+
+
+
+static void
+thunar_emblem_chooser_file_changed (ThunarFile *file,
+ ThunarEmblemChooser *chooser)
+{
+ const gchar *emblem_name;
+ GList *emblem_names;
+ GList *children;
+ GList *lp;
+
+ g_return_if_fail (THUNAR_IS_FILE (file));
+ g_return_if_fail (THUNAR_IS_EMBLEM_CHOOSER (chooser));
+ g_return_if_fail (chooser->file == file);
+
+ /* temporarily reset the file attribute */
+ chooser->file = NULL;
+
+ /* determine the emblems set for the file */
+ emblem_names = thunar_file_get_emblem_names (file);
+
+ /* toggle the button states appropriately */
+ children = gtk_container_get_children (GTK_CONTAINER (chooser->table));
+ for (lp = children; lp != NULL; lp = lp->next)
+ {
+ emblem_name = g_object_get_data (G_OBJECT (lp->data), "thunar-emblem");
+ if (g_list_find_custom (emblem_names, emblem_name, (GCompareFunc) strcmp) != NULL)
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (lp->data), TRUE);
+ else
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (lp->data), FALSE);
+ }
+ g_list_free (children);
+
+ /* reset the file attribute */
+ chooser->file = file;
+}
+
+
+
+static void
+thunar_emblem_chooser_theme_changed (GtkIconTheme *icon_theme,
+ ThunarEmblemChooser *chooser)
+{
+ g_return_if_fail (GTK_IS_ICON_THEME (icon_theme));
+ g_return_if_fail (THUNAR_IS_EMBLEM_CHOOSER (chooser));
+ g_return_if_fail (chooser->icon_theme == icon_theme);
+
+ /* drop the current buttons */
+ gtk_container_foreach (GTK_CONTAINER (chooser->table), (GtkCallback) gtk_widget_destroy, NULL);
+
+ /* create buttons for the new theme */
+ thunar_emblem_chooser_create_buttons (chooser);
+}
+
+
+
+static void
+thunar_emblem_chooser_create_buttons (ThunarEmblemChooser *chooser)
+{
+ GtkWidget *button;
+ GList *emblems;
+ GList *lp;
+
+ /* determine the emblems for the icon theme */
+ emblems = gtk_icon_theme_list_icons (chooser->icon_theme, "Emblems");
+
+ /* sort the emblem list */
+ emblems = g_list_sort (emblems, (GCompareFunc) g_ascii_strcasecmp);
+
+ /* create buttons for the emblems */
+ for (lp = emblems; lp != NULL; lp = lp->next)
+ {
+ /* skip special emblems, as they cannot be selected */
+ if (strcmp (lp->data, THUNAR_FILE_EMBLEM_NAME_SYMBOLIC_LINK) != 0
+ && strcmp (lp->data, THUNAR_FILE_EMBLEM_NAME_CANT_READ) != 0
+ && strcmp (lp->data, THUNAR_FILE_EMBLEM_NAME_CANT_WRITE) != 0
+ && strcmp (lp->data, THUNAR_FILE_EMBLEM_NAME_DESKTOP) != 0)
+ {
+ /* create a button and add it to the table */
+ button = thunar_emblem_chooser_create_button (chooser, lp->data);
+ if (G_LIKELY (button != NULL))
+ {
+ gtk_container_add (GTK_CONTAINER (chooser->table), button);
+ gtk_widget_show (button);
+ }
+ }
+ g_free (lp->data);
+ }
+ g_list_free (emblems);
+
+ /* be sure to update the buttons according to the selected file */
+ if (G_LIKELY (chooser->file != NULL))
+ thunar_emblem_chooser_file_changed (chooser->file, chooser);
+}
+
+
+
+static GtkWidget*
+thunar_emblem_chooser_create_button (ThunarEmblemChooser *chooser,
+ const gchar *emblem)
+{
+ GtkIconInfo *info;
+ const gchar *name;
+ GtkWidget *button = NULL;
+ GtkWidget *image;
+ GtkWidget *label;
+ GtkWidget *vbox;
+ GdkPixbuf *icon;
+
+ /* lookup the icon info for the emblem */
+ info = gtk_icon_theme_lookup_icon (chooser->icon_theme, emblem, 48, 0);
+ if (G_UNLIKELY (info == NULL))
+ return NULL;
+
+ /* try to load the icon */
+ icon = gtk_icon_info_load_icon (info, NULL);
+ if (G_UNLIKELY (icon == NULL))
+ goto done;
+
+ /* determine the display name for the emblem */
+ name = gtk_icon_info_get_display_name (info);
+ if (G_UNLIKELY (name == NULL))
+ name = (strncmp (emblem, "emblem-", 7) == 0) ? emblem + 7 : emblem;
+
+ /* allocate the button */
+ button = gtk_check_button_new ();
+ GTK_WIDGET_UNSET_FLAGS (button, GTK_CAN_FOCUS);
+ g_object_set_data_full (G_OBJECT (button), "thunar-emblem", g_strdup (emblem), g_free);
+ g_signal_connect (G_OBJECT (button), "toggled", G_CALLBACK (thunar_emblem_chooser_button_toggled), chooser);
+
+ /* allocate the box */
+ vbox = gtk_vbox_new (FALSE, 2);
+ gtk_size_group_add_widget (chooser->size_group, vbox);
+ gtk_container_add (GTK_CONTAINER (button), vbox);
+ gtk_widget_show (vbox);
+
+ /* allocate the image */
+ image = gtk_image_new_from_pixbuf (icon);
+ gtk_box_pack_start (GTK_BOX (vbox), image, TRUE, TRUE, 0);
+ gtk_widget_show (image);
+
+ /* allocate the label */
+ label = gtk_label_new (name);
+ gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
+ gtk_widget_show (label);
+
+ g_object_unref (G_OBJECT (icon));
+done:
+ gtk_icon_info_free (info);
+ return button;
+}
+
+
+
+/**
+ * thunar_emblem_chooser_new:
+ *
+ * Allocates a new #ThunarEmblemChooser.
+ *
+ * Return value: the newly allocated #ThunarEmblemChooser.
+ **/
+GtkWidget*
+thunar_emblem_chooser_new (void)
+{
+ return g_object_new (THUNAR_TYPE_EMBLEM_CHOOSER, NULL);
+}
+
+
+
+/**
+ * thunar_emblem_chooser_get_file:
+ * @chooser : a #ThunarEmblemChooser.
+ *
+ * Returns the #ThunarFile associated with
+ * the @chooser or %NULL.
+ *
+ * Return value: the #ThunarFile associated
+ * with @chooser.
+ **/
+ThunarFile*
+thunar_emblem_chooser_get_file (const ThunarEmblemChooser *chooser)
+{
+ g_return_val_if_fail (THUNAR_IS_EMBLEM_CHOOSER (chooser), NULL);
+ return chooser->file;
+}
+
+
+
+/**
+ * thunar_emblem_chooser_set_file:
+ * @chooser : a #ThunarEmblemChooser.
+ * @file : a #ThunarFile or %NULL.
+ *
+ * Associates @chooser with @file.
+ **/
+void
+thunar_emblem_chooser_set_file (ThunarEmblemChooser *chooser,
+ ThunarFile *file)
+{
+ g_return_if_fail (THUNAR_IS_EMBLEM_CHOOSER (chooser));
+ g_return_if_fail (file == NULL || THUNAR_IS_FILE (file));
+
+ if (G_LIKELY (chooser->file != file))
+ {
+ /* disconnect from the previous file (if any) */
+ if (G_LIKELY (chooser->file != NULL))
+ {
+ g_signal_handlers_disconnect_by_func (G_OBJECT (chooser->file), thunar_emblem_chooser_file_changed, chooser);
+ g_object_unref (G_OBJECT (chooser->file));
+ }
+
+ /* activate the new file */
+ chooser->file = file;
+
+ /* connect to the new file (if any) */
+ if (G_LIKELY (file != NULL))
+ {
+ g_object_ref (G_OBJECT (file));
+ thunar_emblem_chooser_file_changed (file, chooser);
+ g_signal_connect (G_OBJECT (file), "changed", G_CALLBACK (thunar_emblem_chooser_file_changed), chooser);
+ }
+ }
+}
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-emblem-chooser.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-emblem-chooser.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-emblem-chooser.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,47 @@
+/* $Id: thunar-emblem-chooser.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_EMBLEM_CHOOSER_H__
+#define __THUNAR_EMBLEM_CHOOSER_H__
+
+#include <thunar/thunar-file.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarEmblemChooserClass ThunarEmblemChooserClass;
+typedef struct _ThunarEmblemChooser ThunarEmblemChooser;
+
+#define THUNAR_TYPE_EMBLEM_CHOOSER (thunar_emblem_chooser_get_type ())
+#define THUNAR_EMBLEM_CHOOSER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_EMBLEM_CHOOSER, ThunarEmblemChooser))
+#define THUNAR_EMBLEM_CHOOSER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_EMBLEM_CHOOSER, ThunarEmblemChooserClass))
+#define THUNAR_IS_EMBLEM_CHOOSER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_EMBLEM_CHOOSER))
+#define THUNAR_IS_EMBLEM_CHOOSER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_EMBLEM_CHOOSER))
+#define THUNAR_EMBLEM_CHOOSER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_EMBLEM_CHOOSER, ThunarEmblemChooserClass))
+
+GType thunar_emblem_chooser_get_type (void) G_GNUC_CONST;
+
+GtkWidget *thunar_emblem_chooser_new (void) G_GNUC_MALLOC;
+
+ThunarFile *thunar_emblem_chooser_get_file (const ThunarEmblemChooser *chooser);
+void thunar_emblem_chooser_set_file (ThunarEmblemChooser *chooser,
+ ThunarFile *file);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_EMBLEM_CHOOSER_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-extension-manager.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-extension-manager.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-extension-manager.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,488 @@
+/* $Id: thunar-extension-manager.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <gmodule.h>
+
+#include <exo/exo.h>
+
+#include <thunar/thunar-extension-manager.h>
+
+
+
+#define THUNAR_EXTENSIONS_DIRECTORY (LIBDIR G_DIR_SEPARATOR_S "thunarx-" THUNAR_VERSION_API)
+
+
+
+enum
+{
+ PROP_0,
+ PROP_RESIDENT,
+};
+
+
+
+typedef struct _ThunarExtensionClass ThunarExtensionClass;
+typedef struct _ThunarExtension ThunarExtension;
+
+
+
+#define THUNAR_TYPE_EXTENSION (thunar_extension_get_type ())
+#define THUNAR_EXTENSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_EXTENSION, ThunarExtension))
+#define THUNAR_EXTENSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_EXTENSION, ThunarExtensionClass))
+#define THUNAR_IS_EXTENSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_EXTENSION))
+#define THUNAR_IS_EXTENSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_EXTENSION))
+#define THUNAR_EXTENSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_EXTENSION, ThunarExtensionClass))
+
+
+
+static GType thunar_extension_get_type (void) G_GNUC_CONST;
+static void thunar_extension_class_init (ThunarExtensionClass *klass);
+static void thunar_extension_finalize (GObject *object);
+static void thunar_extension_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void thunar_extension_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static gboolean thunar_extension_load (GTypeModule *module);
+static void thunar_extension_unload (GTypeModule *module);
+static void thunar_extension_list_types (ThunarExtension *extension,
+ const GType **types,
+ gint *n_types);
+
+
+
+struct _ThunarExtensionClass
+{
+ GTypeModuleClass __parent__;
+};
+
+struct _ThunarExtension
+{
+ GTypeModule __parent__;
+
+ gchar *path;
+ GModule *module;
+ gboolean resident;
+
+ void (*initialize) (GTypeModule *module);
+ void (*shutdown) (void);
+ void (*list_types) (const GType **types,
+ gint *n_types);
+};
+
+
+
+static GObjectClass *thunar_extension_parent_class;
+
+
+
+static GType
+thunar_extension_get_type (void)
+{
+ static GType type = G_TYPE_INVALID;
+
+ if (G_UNLIKELY (type == G_TYPE_INVALID))
+ {
+ static const GTypeInfo info =
+ {
+ sizeof (ThunarExtensionClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) thunar_extension_class_init,
+ NULL,
+ NULL,
+ sizeof (ThunarExtension),
+ 0,
+ NULL,
+ NULL,
+ };
+
+ type = g_type_register_static (G_TYPE_TYPE_MODULE, "ThunarExtension", &info, 0);
+ }
+
+ return type;
+}
+
+
+
+static void
+thunar_extension_class_init (ThunarExtensionClass *klass)
+{
+ GTypeModuleClass *gtype_module_class;
+ GObjectClass *gobject_class;
+
+ /* determine the parent class */
+ thunar_extension_parent_class = g_type_class_peek_parent (klass);
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_extension_finalize;
+ gobject_class->get_property = thunar_extension_get_property;
+ gobject_class->set_property = thunar_extension_set_property;
+
+ gtype_module_class = G_TYPE_MODULE_CLASS (klass);
+ gtype_module_class->load = thunar_extension_load;
+ gtype_module_class->unload = thunar_extension_unload;
+
+ /**
+ * ThunarExtension::resident:
+ *
+ * Tells whether the extension must reside in memory once loaded
+ * for the first time.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_RESIDENT,
+ g_param_spec_boolean ("resident",
+ _("Resident"),
+ _("Ensures that an extension will never be unloaded."),
+ FALSE,
+ EXO_PARAM_READWRITE));
+}
+
+
+
+static void
+thunar_extension_finalize (GObject *object)
+{
+ ThunarExtension *extension = THUNAR_EXTENSION (object);
+
+ /* free the path to the extension */
+ g_free (extension->path);
+
+ (*G_OBJECT_CLASS (thunar_extension_parent_class)->finalize) (object);
+}
+
+
+
+static void
+thunar_extension_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarExtension *extension = THUNAR_EXTENSION (object);
+
+ switch (prop_id)
+ {
+ case PROP_RESIDENT:
+ g_value_set_boolean (value, extension->resident);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunar_extension_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarExtension *extension = THUNAR_EXTENSION (object);
+
+ switch (prop_id)
+ {
+ case PROP_RESIDENT:
+ extension->resident = g_value_get_boolean (value);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static gboolean
+thunar_extension_load (GTypeModule *module)
+{
+ ThunarExtension *extension = THUNAR_EXTENSION (module);
+
+ /* load the extension using the runtime link editor */
+ extension->module = g_module_open (extension->path, G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL);
+
+ /* check if the load operation was successful */
+ if (G_UNLIKELY (extension->module == NULL))
+ {
+ g_warning ("Failed to load file manager extension from %s: %s", extension->path, g_module_error ());
+ return FALSE;
+ }
+
+ /* verify that all required public symbols are present in the extension's symbol table */
+ if (!g_module_symbol (extension->module, "thunar_extension_shutdown", (gpointer) &extension->shutdown)
+ || !g_module_symbol (extension->module, "thunar_extension_initialize", (gpointer) &extension->initialize)
+ || !g_module_symbol (extension->module, "thunar_extension_list_types", (gpointer) &extension->list_types))
+ {
+ g_warning ("File manager extension loaded from %s lacks required symbols.", extension->path);
+ g_module_close (extension->module);
+ return FALSE;
+ }
+
+ /* initialize the extension */
+ (*extension->initialize) (module);
+
+ /* ensure that the module will never be unloaded
+ * if the extension requests to be kept in memory
+ */
+ if (G_UNLIKELY (extension->resident))
+ g_module_make_resident (extension->module);
+
+ return TRUE;
+}
+
+
+
+static void
+thunar_extension_unload (GTypeModule *module)
+{
+ ThunarExtension *extension = THUNAR_EXTENSION (module);
+
+ /* shutdown the extension */
+ (*extension->shutdown) ();
+
+ /* unload the extension from memory */
+ g_module_close (extension->module);
+
+ /* reset extension state */
+ extension->module = NULL;
+ extension->shutdown = NULL;
+ extension->initialize = NULL;
+ extension->list_types = NULL;
+}
+
+
+
+static void
+thunar_extension_list_types (ThunarExtension *extension,
+ const GType **types,
+ gint *n_types)
+{
+ g_return_if_fail (THUNAR_IS_EXTENSION (extension));
+ g_return_if_fail (n_types != NULL);
+ g_return_if_fail (types != NULL);
+
+ (*extension->list_types) (types, n_types);
+}
+
+
+
+
+static void thunar_extension_manager_class_init (ThunarExtensionManagerClass *klass);
+static void thunar_extension_manager_init (ThunarExtensionManager *manager);
+static void thunar_extension_manager_finalize (GObject *object);
+static void thunar_extension_manager_add (ThunarExtensionManager *manager,
+ ThunarExtension *extension);
+
+
+
+struct _ThunarExtensionManagerClass
+{
+ GObjectClass __parent__;
+};
+
+struct _ThunarExtensionManager
+{
+ GObject __parent__;
+
+ GList *extensions;
+
+ GType *types;
+ gint n_types;
+};
+
+
+
+G_DEFINE_TYPE (ThunarExtensionManager, thunar_extension_manager, G_TYPE_OBJECT);
+
+
+
+static void
+thunar_extension_manager_class_init (ThunarExtensionManagerClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_extension_manager_finalize;
+}
+
+
+
+static void
+thunar_extension_manager_init (ThunarExtensionManager *manager)
+{
+ ThunarExtension *extension;
+ const gchar *name;
+ GDir *dp;
+
+ // FIXME: Perform this in a timer as the extensions aren't required to
+ // be available instantly, maybe even load the files in a separate thread!
+ dp = g_dir_open (THUNAR_EXTENSIONS_DIRECTORY, 0, NULL);
+ if (G_LIKELY (dp != NULL))
+ {
+ /* determine the types for all existing extensions */
+ for (;;)
+ {
+ /* read the next entry from the directory */
+ name = g_dir_read_name (dp);
+ if (G_UNLIKELY (name == NULL))
+ break;
+
+ /* check if this is a valid extension file */
+ if (g_str_has_suffix (name, "." G_MODULE_SUFFIX))
+ {
+ /* generate an extension object for the file */
+ extension = g_object_new (THUNAR_TYPE_EXTENSION, NULL);
+ extension->path = g_build_filename (THUNAR_EXTENSIONS_DIRECTORY, name, NULL);
+
+ /* try to load the extension */
+ if (g_type_module_use (G_TYPE_MODULE (extension)))
+ {
+ /* add the extension to our list of managed extensions */
+ thunar_extension_manager_add (manager, extension);
+
+ /* don't unuse the type plugin if it should be resident in memory */
+ if (G_LIKELY (!extension->resident))
+ g_type_module_unuse (G_TYPE_MODULE (extension));
+ }
+
+ /* drop the reference on the extension */
+ g_object_unref (G_OBJECT (extension));
+ }
+ }
+
+ g_dir_close (dp);
+ }
+}
+
+
+
+static void
+thunar_extension_manager_finalize (GObject *object)
+{
+ ThunarExtensionManager *manager = THUNAR_EXTENSION_MANAGER (object);
+
+ /* release the extensions */
+ g_list_foreach (manager->extensions, (GFunc) g_object_unref, NULL);
+ g_list_free (manager->extensions);
+
+ /* free the types list */
+ g_free (manager->types);
+
+ (*G_OBJECT_CLASS (thunar_extension_manager_parent_class)->finalize) (object);
+}
+
+
+
+static void
+thunar_extension_manager_add (ThunarExtensionManager *manager,
+ ThunarExtension *extension)
+{
+ const GType *types;
+ gint n_types;
+
+ /* add the extension to our internal list */
+ manager->extensions = g_list_prepend (manager->extensions, g_object_ref (G_OBJECT (extension)));
+
+ /* determines the types provided by the extension */
+ thunar_extension_list_types (extension, &types, &n_types);
+
+ /* add the types provided by the extension */
+ manager->types = g_realloc (manager->types, sizeof (GType) * (manager->n_types + n_types));
+ for (; n_types-- > 0; ++types)
+ manager->types[manager->n_types++] = *types;
+}
+
+
+
+/**
+ * thunar_extension_manager_get_default:
+ *
+ * Returns a reference to the default #ThunarExtensionManager
+ * instance.
+ *
+ * The caller is responsible to free the returned object
+ * using g_object_unref() when no longer needed.
+ *
+ * Return value: a reference to the default
+ * #ThunarExtensionManager instance.
+ **/
+ThunarExtensionManager*
+thunar_extension_manager_get_default (void)
+{
+ static ThunarExtensionManager *manager = NULL;
+
+ if (G_UNLIKELY (manager == NULL))
+ manager = g_object_new (THUNAR_TYPE_EXTENSION_MANAGER, NULL);
+
+ g_object_ref (G_OBJECT (manager));
+
+ return manager;
+}
+
+
+
+/**
+ * thunar_extension_manager_list_providers:
+ * @manager : a #ThunarExtensionManager instance.
+ * @type : the provider #GType.
+ *
+ * Returns all providers of the given @type.
+ *
+ * The caller is responsible to release the returned
+ * list of providers using code like this:
+ * <informalexample><programlisting>
+ * g_list_foreach (list, (GFunc) g_object_unref, NULL);
+ * g_list_free (list);
+ * </programlisting></informalexample>
+ *
+ * Return value: the of providers for @type.
+ **/
+GList*
+thunar_extension_manager_list_providers (ThunarExtensionManager *manager,
+ GType type)
+{
+ GObject *provider;
+ GList *providers = NULL;
+ GType *types;
+ gint n;
+
+ for (n = manager->n_types, types = manager->types; n > 0; --n, ++types)
+ if (G_LIKELY (g_type_is_a (*types, type)))
+ {
+ provider = g_object_new (*types, NULL);
+ if (G_LIKELY (provider != NULL))
+ providers = g_list_append (providers, provider);
+ }
+
+ return providers;
+}
+
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-extension-manager.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-extension-manager.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-extension-manager.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,46 @@
+/* $Id: thunar-extension-manager.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_EXTENSION_MANAGER_H__
+#define __THUNAR_EXTENSION_MANAGER_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarExtensionManagerClass ThunarExtensionManagerClass;
+typedef struct _ThunarExtensionManager ThunarExtensionManager;
+
+#define THUNAR_TYPE_EXTENSION_MANAGER (thunar_extension_manager_get_type ())
+#define THUNAR_EXTENSION_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_EXTENSION_MANAGER, ThunarExtensionManager))
+#define THUNAR_EXTENSION_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_EXTENSION_MANAGER, ThunarExtensionManagerClass))
+#define THUNAR_IS_EXTENSION_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_EXTENSION_MANAGER))
+#define THUNAR_IS_EXTENSION_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_EXTENSION_MANAGER))
+#define THUNAR_EXTENSION_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_EXTENSION_MANAGER, ThunarExtensionManagerClass))
+
+GType thunar_extension_manager_get_type (void) G_GNUC_CONST;
+
+ThunarExtensionManager *thunar_extension_manager_get_default (void);
+
+GList *thunar_extension_manager_list_providers (ThunarExtensionManager *manager,
+ GType type);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_EXTENSION_MANAGER_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-fallback-icon.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-fallback-icon.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-fallback-icon.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,370 @@
+#include <thunar/thunar-fallback-icon.h>
+/* GdkPixbuf RGBA C-Source image dump */
+
+#ifdef __SUNPRO_C
+#pragma align 4 (thunar_fallback_icon)
+#endif
+#ifdef __GNUC__
+const guint8 thunar_fallback_icon[] __attribute__ ((__aligned__ (4))) =
+#else
+const guint8 thunar_fallback_icon[] =
+#endif
+{ ""
+ /* Pixbuf magic (0x47646b50) */
+ "GdkP"
+ /* length: header (24) + pixel_data (9216) */
+ "\0\0$\30"
+ /* pixdata_type (0x1010002) */
+ "\1\1\0\2"
+ /* rowstride (192) */
+ "\0\0\0\300"
+ /* width (48) */
+ "\0\0\0""0"
+ /* height (48) */
+ "\0\0\0""0"
+ /* pixel_data: */
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\0"
+ "\0\0\377\214\214\214\377\214\214\214\377\0\0\0\377\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0\377\214\214\214"
+ "\377\252\252\252\377\247\247\246\377\231\231\231\377\22\22\22\377\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\377\0\0\0\377\0\0\0\377\2\2\2\377&&&\377\226\226\226"
+ "\377\265\265\265\377\262\262\262\377\261\261\260\377\257\257\256\377"
+ "\256\256\255\377MML\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\377\0\0\0\377\26\26\26\377\26\26\26\377kkk\377\237\237"
+ "\237\377\271\271\270\377\270\270\267\377\270\270\267\377\266\266\265"
+ "\377\264\264\264\377\262\262\262\377\260\260\260\377\257\257\257\377"
+ "\255\255\254\377\230\230\227\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\30\30\30\377\235\235\235\377\252\252\251\377\254\254\253\377"
+ "\260\260\257\377\270\270\270\377\270\270\270\377\270\270\270\377\267"
+ "\267\267\377\266\266\266\377\265\265\264\377\264\264\263\377\262\262"
+ "\261\377\261\261\260\377\257\257\256\377\255\255\255\377\255\255\255"
+ "\377%%%\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\323\323\323\377zzz\377"
+ "\207\207\207\377\237\237\237\377\250\250\247\377\261\261\260\377\264"
+ "\264\263\377\265\265\265\377\264\264\264\377\264\264\264\377\263\263"
+ "\263\377\262\262\262\377\261\261\261\377\260\260\257\377\256\256\255"
+ "\377\256\256\255\377\255\255\254\377\207\207\206\377\0\0\0\377\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\377\325\325\325\377\341\341\340\377\177\177\177\377kkk\377"
+ "\200\200\200\377\237\237\237\377\253\253\253\377\260\260\260\377\262"
+ "\262\261\377\263\263\262\377\261\261\260\377\262\262\261\377\257\257"
+ "\257\377\260\260\260\377\256\256\256\377\255\255\255\377\255\255\255"
+ "\377\255\255\254\377\255\255\254\377\23\23\23\377\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\240\240"
+ "\240\377\335\335\335\377\333\333\333\377\313\313\313\377ZZY\377xxx\377"
+ "\231\231\230\377\244\244\244\377\254\254\254\377\257\257\257\377\257"
+ "\257\257\377\257\257\257\377\257\257\256\377\257\257\256\377\256\256"
+ "\256\377\255\255\255\377\255\255\255\377\255\255\255\377\254\254\254"
+ "\377\255\255\255\377\206\206\206\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\31\31\31\377\324\324\324\377"
+ "\337\337\337\377\335\335\335\377\323\323\323\377RRR\377rrr\377\220\220"
+ "\220\377\235\235\234\377\246\246\245\377\254\254\254\377\255\255\255"
+ "\377\255\255\255\377\255\255\255\377\255\255\255\377\255\255\255\377"
+ "\255\255\254\377\255\255\254\377\254\254\253\377\255\255\254\377\255"
+ "\255\254\377\255\255\255\377\23\23\23\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\253\253\253\377\344\344\344\377"
+ "\247\247\246\377bba\377MMM\377]]]\377ooo\377\215\215\215\377\230\230"
+ "\230\377\236\236\236\377\245\245\245\377\254\254\253\377\254\254\254"
+ "\377\256\256\255\377\256\256\256\377\255\255\255\377\254\254\254\377"
+ "\253\253\253\377\254\254\254\377\255\255\254\377\256\256\255\377\257"
+ "\257\256\377\207\207\206\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\377ddd\377\\\\\\\377SSS\377RRR\377aaa\377pp"
+ "p\377ttt\377\217\217\217\377\231\231\231\377\235\235\235\377\247\247"
+ "\247\377\254\254\254\377\254\254\254\377\257\257\256\377\257\257\257"
+ "\377\257\257\256\377\256\256\255\377\254\254\254\377\254\254\254\377"
+ "\255\255\255\377\257\257\257\377\260\260\260\377\261\261\261\377\24\24"
+ "\24\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377BBB\377"
+ "\177\177\177\377www\377www\377xxx\377xxx\377\213\213\213\377\222\222"
+ "\222\377\236\236\235\377\244\244\243\377\255\255\254\377\260\260\260"
+ "\377\261\261\261\377\262\262\262\377\263\263\263\377\262\262\262\377"
+ "\260\260\257\377\256\256\255\377\257\257\256\377\260\260\257\377\261"
+ "\261\261\377\262\262\262\377\263\263\263\377\210\210\210\377\0\0\0\377"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\32\32\32\377\216\216"
+ "\216\377\230\230\227\377\202\202\201\377\217\217\217\377\177\177\177"
+ "\377\224\224\224\377\234\234\234\377\247\247\247\377\257\257\257\377"
+ "\261\261\261\377\264\264\263\377\266\266\265\377\265\265\264\377\265"
+ "\265\265\377\264\264\264\377\264\264\264\377\262\262\262\377\262\262"
+ "\262\377\264\264\263\377\265\265\264\377\265\265\264\377\266\266\265"
+ "\377\267\267\266\377'''\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\3\3\3\377\261\261\261\377\250\250\250\377\242\242\242\377\237"
+ "\237\237\377\242\242\241\377\246\246\245\377\252\252\252\377\257\257"
+ "\257\377\262\262\262\377\266\266\266\377\271\271\271\377\272\272\272"
+ "\377\273\273\273\377\273\273\272\377\272\272\271\377\272\272\271\377"
+ "\270\270\270\377\270\270\270\377\270\270\270\377\270\270\270\377\271"
+ "\271\271\377\271\271\270\377\271\271\270\377\217\217\216\377\0\0\0\377"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\274\274\274\377\266"
+ "\266\266\377\264\264\264\377\261\261\261\377\261\261\261\377\260\260"
+ "\260\377\262\262\262\377\266\266\265\377\272\272\271\377\277\277\277"
+ "\377\276\276\276\377\277\277\277\377\300\300\300\377\300\300\300\377"
+ "\277\277\277\377\277\277\277\377\275\275\274\377\275\275\274\377\275"
+ "\275\274\377\274\274\274\377\274\274\274\377\274\274\274\377\273\273"
+ "\273\377\273\273\273\377)))\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\377\273\273\273\377\302\302\302\377\277\277\276\377\273\273"
+ "\273\377\271\271\271\377\270\270\270\377\271\271\271\377\276\276\276"
+ "\377\303\303\303\377\304\304\304\377\306\306\305\377\310\310\307\377"
+ "\307\307\306\377\306\306\306\377\305\305\305\377\304\304\304\377\303"
+ "\303\303\377\302\302\302\377\302\302\302\377\302\302\301\377\300\300"
+ "\277\377\300\300\277\377\277\277\277\377\275\275\275\377\250\250\250"
+ "\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\256\256\256"
+ "\377\315\315\315\377\310\310\310\377\305\305\305\377\304\304\304\377"
+ "\302\302\301\377\300\300\300\377\306\306\306\377\311\311\311\377\312"
+ "\312\312\377\314\314\314\377\314\314\314\377\315\315\315\377\314\314"
+ "\313\377\313\313\312\377\312\312\311\377\310\310\310\377\307\307\307"
+ "\377\306\306\306\377\305\305\305\377\304\304\304\377\304\304\304\377"
+ "\302\302\301\377\301\301\300\377\300\300\277\377}}|\377\0\0\0\377\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\377PPP\377\330\330\330\377\324\324\324\377"
+ "\320\320\320\377\315\315\315\377\316\316\316\377\316\316\316\377\320"
+ "\320\320\377\321\321\320\377\322\322\322\377\322\322\322\377\322\322"
+ "\322\377\321\321\321\377\321\321\321\377\320\320\320\377\320\320\320"
+ "\377\316\316\315\377\315\315\314\377\314\314\313\377\311\311\311\377"
+ "\310\310\310\377\306\306\306\377\305\305\305\377\304\304\304\377\303"
+ "\303\302\377\302\302\301\377\25\25\24\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\377\343\343\343\377\340\340\337\377\333\333\333\377\330\330"
+ "\330\377\330\330\330\377\330\330\330\377\327\327\327\377\330\330\330"
+ "\377\331\331\331\377\331\331\330\377\330\330\327\377\327\327\327\377"
+ "\326\326\326\377\324\324\324\377\324\324\324\377\322\322\322\377\320"
+ "\320\320\377\316\316\316\377\315\315\314\377\314\314\313\377\312\312"
+ "\311\377\310\310\310\377\307\307\307\377\306\306\306\377\304\304\304"
+ "\377\236\236\236\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\335"
+ "\335\335\377\350\350\350\377\346\346\346\377\343\343\343\377\341\341"
+ "\340\377\337\337\337\377\336\336\336\377\335\335\335\377\335\335\335"
+ "\377\334\334\334\377\334\334\334\377\334\334\334\377\333\333\332\377"
+ "\333\333\332\377\331\331\330\377\326\326\326\377\324\324\324\377\322"
+ "\322\322\377\321\321\321\377\317\317\317\377\316\316\316\377\314\314"
+ "\313\377\313\313\312\377\311\311\310\377\306\306\306\377\304\304\304"
+ "\377***\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\311\311\311\377\360\360"
+ "\360\377\354\354\354\377\351\351\351\377\346\346\346\377\344\344\344"
+ "\377\343\343\343\377\342\342\341\377\340\340\340\377\340\340\340\377"
+ "\340\340\340\377\337\337\337\377\337\337\337\377\336\336\336\377\335"
+ "\335\335\377\333\333\332\377\331\331\330\377\327\327\326\377\324\324"
+ "\324\377\322\322\322\377\321\321\321\377\317\317\317\377\315\315\315"
+ "\377\313\313\313\377\311\311\310\377\307\307\306\377\256\256\255\377"
+ "\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377{{{\377\364\364\364\377\361\361\361"
+ "\377\356\356\356\377\353\353\353\377\351\351\351\377\347\347\347\377"
+ "\346\346\346\377\345\345\345\377\345\345\345\377\344\344\343\377\343"
+ "\343\343\377\342\342\342\377\341\341\341\377\340\340\340\377\336\336"
+ "\336\377\334\334\334\377\332\332\332\377\330\330\327\377\326\326\325"
+ "\377\324\324\323\377\321\321\321\377\317\317\317\377\315\315\315\377"
+ "\313\313\313\377\311\311\311\377\307\307\307\377\240\240\237\377\0\0"
+ "\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\34\34\34\377\371\371\371\377\366\366\366\377\363"
+ "\363\363\377\361\361\360\377\355\355\355\377\354\354\354\377\352\352"
+ "\352\377\351\351\351\377\350\350\350\377\347\347\347\377\347\347\347"
+ "\377\346\346\346\377\345\345\344\377\342\342\342\377\340\340\340\377"
+ "\336\336\336\377\334\334\334\377\332\332\332\377\330\330\330\377\326"
+ "\326\326\377\324\324\323\377\322\322\321\377\320\320\317\377\315\315"
+ "\315\377\313\313\313\377\304\304\304\377\220\220\220\377\0\0\0\377\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\377\333\333\333\377\372\372\372\377\367\367\367"
+ "\377\365\365\365\377\363\363\363\377\361\361\361\377\357\357\356\377"
+ "\355\355\355\377\354\354\354\377\353\353\353\377\352\352\352\377\350"
+ "\350\350\377\347\347\347\377\345\345\345\377\343\343\343\377\341\341"
+ "\340\377\337\337\336\377\334\334\334\377\332\332\332\377\330\330\330"
+ "\377\326\326\326\377\324\324\324\377\322\322\322\377\320\320\317\377"
+ "\222\222\222\377\26\26\26\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\377\272\272\272\377\374\374\374\377\373\373\373\377\371\371\371\377"
+ "\367\367\367\377\365\365\365\377\363\363\363\377\362\362\362\377\360"
+ "\360\360\377\357\357\356\377\355\355\355\377\353\353\353\377\351\351"
+ "\351\377\347\347\347\377\345\345\345\377\343\343\343\377\341\341\341"
+ "\377\337\337\337\377\335\335\334\377\333\333\332\377\330\330\330\377"
+ "\326\326\326\377\255\255\255\377\27\27\27\377\0\0\0\377\0\0\0\377\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""888\377\376\376\376\377\375\375"
+ "\375\377\375\375\375\377\372\372\372\377\370\370\370\377\366\366\366"
+ "\377\365\365\365\377\363\363\363\377\362\362\362\377\360\360\360\377"
+ "\356\356\356\377\354\354\353\377\351\351\351\377\347\347\347\377\345"
+ "\345\345\377\343\343\343\377\341\341\341\377\337\337\337\377\335\335"
+ "\335\377\260\260\257\377\27\27\27\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+ "\0\0\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+ "\377\377\377\377\377\377\376\376\376\377\376\376\376\377\374\374\374"
+ "\377\373\373\372\377\370\370\370\377\366\366\366\377\364\364\364\377"
+ "\362\362\362\377\360\360\360\377\356\356\356\377\354\354\354\377\352"
+ "\352\352\377\350\350\347\377\346\346\345\377\325\325\325\377\243\243"
+ "\243\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+ "\0\0\0\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\276\276"
+ "\276\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+ "\377\375\375\375\377\373\373\373\377\371\371\371\377\367\367\366\377"
+ "\364\364\364\377\362\362\362\377\360\360\360\377\356\356\356\377\354"
+ "\354\354\377\306\306\306\377\226\226\226\377\0\0\0\377\0\0\0\377\0\0"
+ "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+ "\0\0\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377}}}\377\377\377\377"
+ "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+ "\375\375\375\377\373\373\373\377\371\371\371\377\367\367\367\377\365"
+ "\365\365\377\363\363\362\377\240\240\240\377444\377\0\0\0\377\0\0\0\377"
+ "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+ "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+ "\377\377\377\377\377\377\377\377\377\377\375\375\375\377\373\373\373"
+ "\377\317\317\317\377\217\217\217\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+ "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+ "\0\0\0\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\377\276\276\276\377\377\377\377\377\377\377\377"
+ "\377\377\377\377\377\377\377\377\377\342\342\342\377\247\247\247\377"
+ "777\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+ "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0""888\377\377\377\377\377\342\342\342\377\273\273\273\377}}}\377"
+ "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+ "\0\0\0\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+ "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"};
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-fallback-icon.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-fallback-icon.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-fallback-icon.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,31 @@
+/* $Id: thunar-fallback-icon.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_FALLBACK_ICON_H__
+#define __THUNAR_FALLBACK_ICON_H__
+
+#include <glib.h>
+
+G_BEGIN_DECLS;
+
+extern const guint8 thunar_fallback_icon[];
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_FALLBACK_ICON_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-fallback-icon.png
===================================================================
(Binary files differ)
Property changes on: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-fallback-icon.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-favourites-model.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-favourites-model.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-favourites-model.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,1404 @@
+/* $Id: thunar-favourites-model.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#include <stdio.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+#include <thunar/thunar-favourites-model.h>
+#include <thunar/thunar-file.h>
+#include <thunar/thunar-icon-factory.h>
+
+
+
+#define THUNAR_FAVOURITE(obj) ((ThunarFavourite *) (obj))
+
+
+
+typedef struct _ThunarFavourite ThunarFavourite;
+
+typedef enum
+{
+ THUNAR_FAVOURITE_SEPARATOR,
+ THUNAR_FAVOURITE_SYSTEM_DEFINED,
+ THUNAR_FAVOURITE_REMOVABLE_MEDIA,
+ THUNAR_FAVOURITE_USER_DEFINED,
+} ThunarFavouriteType;
+
+
+
+static void thunar_favourites_model_class_init (ThunarFavouritesModelClass *klass);
+static void thunar_favourites_model_tree_model_init (GtkTreeModelIface *iface);
+static void thunar_favourites_model_drag_source_init (GtkTreeDragSourceIface *iface);
+static void thunar_favourites_model_init (ThunarFavouritesModel *model);
+static void thunar_favourites_model_finalize (GObject *object);
+static GtkTreeModelFlags thunar_favourites_model_get_flags (GtkTreeModel *tree_model);
+static gint thunar_favourites_model_get_n_columns (GtkTreeModel *tree_model);
+static GType thunar_favourites_model_get_column_type (GtkTreeModel *tree_model,
+ gint index);
+static gboolean thunar_favourites_model_get_iter (GtkTreeModel *tree_model,
+ GtkTreeIter *iter,
+ GtkTreePath *path);
+static GtkTreePath *thunar_favourites_model_get_path (GtkTreeModel *tree_model,
+ GtkTreeIter *iter);
+static void thunar_favourites_model_get_value (GtkTreeModel *tree_model,
+ GtkTreeIter *iter,
+ gint column,
+ GValue *value);
+static gboolean thunar_favourites_model_iter_next (GtkTreeModel *tree_model,
+ GtkTreeIter *iter);
+static gboolean thunar_favourites_model_iter_children (GtkTreeModel *tree_model,
+ GtkTreeIter *iter,
+ GtkTreeIter *parent);
+static gboolean thunar_favourites_model_iter_has_child (GtkTreeModel *tree_model,
+ GtkTreeIter *iter);
+static gint thunar_favourites_model_iter_n_children (GtkTreeModel *tree_model,
+ GtkTreeIter *iter);
+static gboolean thunar_favourites_model_iter_nth_child (GtkTreeModel *tree_model,
+ GtkTreeIter *iter,
+ GtkTreeIter *parent,
+ gint n);
+static gboolean thunar_favourites_model_iter_parent (GtkTreeModel *tree_model,
+ GtkTreeIter *iter,
+ GtkTreeIter *child);
+static gboolean thunar_favourites_model_row_draggable (GtkTreeDragSource *source,
+ GtkTreePath *path);
+static gboolean thunar_favourites_model_drag_data_get (GtkTreeDragSource *source,
+ GtkTreePath *path,
+ GtkSelectionData *selection_data);
+static gboolean thunar_favourites_model_drag_data_delete (GtkTreeDragSource *source,
+ GtkTreePath *path);
+static void thunar_favourites_model_add_favourite (ThunarFavouritesModel *model,
+ ThunarFavourite *favourite,
+ GtkTreePath *path);
+static void thunar_favourites_model_load (ThunarFavouritesModel *model);
+static void thunar_favourites_model_save (ThunarFavouritesModel *model);
+static void thunar_favourites_model_monitor (ThunarVfsMonitor *monitor,
+ ThunarVfsMonitorHandle *handle,
+ ThunarVfsMonitorEvent event,
+ ThunarVfsPath *handle_path,
+ ThunarVfsPath *event_path,
+ gpointer user_data);
+static void thunar_favourites_model_file_changed (ThunarFile *file,
+ ThunarFavouritesModel *model);
+static void thunar_favourites_model_file_destroy (ThunarFile *file,
+ ThunarFavouritesModel *model);
+static void thunar_favourites_model_volume_changed (ThunarVfsVolume *volume,
+ ThunarFavouritesModel *model);
+static void thunar_favourite_free (ThunarFavourite *favourite,
+ ThunarFavouritesModel *model);
+
+
+
+struct _ThunarFavouritesModelClass
+{
+ GObjectClass __parent__;
+};
+
+struct _ThunarFavouritesModel
+{
+ GObject __parent__;
+
+ guint stamp;
+ GList *favourites;
+ GList *hidden_volumes;
+ ThunarVfsVolumeManager *volume_manager;
+
+ ThunarVfsMonitor *monitor;
+ ThunarVfsMonitorHandle *handle;
+};
+
+struct _ThunarFavourite
+{
+ ThunarFavouriteType type;
+
+ gchar *name;
+ ThunarFile *file;
+ ThunarVfsVolume *volume;
+};
+
+
+
+G_DEFINE_TYPE_WITH_CODE (ThunarFavouritesModel,
+ thunar_favourites_model,
+ G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (GTK_TYPE_TREE_MODEL,
+ thunar_favourites_model_tree_model_init)
+ G_IMPLEMENT_INTERFACE (GTK_TYPE_TREE_DRAG_SOURCE,
+ thunar_favourites_model_drag_source_init));
+
+
+
+static void
+thunar_favourites_model_class_init (ThunarFavouritesModelClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_favourites_model_finalize;
+}
+
+
+
+static void
+thunar_favourites_model_tree_model_init (GtkTreeModelIface *iface)
+{
+ iface->get_flags = thunar_favourites_model_get_flags;
+ iface->get_n_columns = thunar_favourites_model_get_n_columns;
+ iface->get_column_type = thunar_favourites_model_get_column_type;
+ iface->get_iter = thunar_favourites_model_get_iter;
+ iface->get_path = thunar_favourites_model_get_path;
+ iface->get_value = thunar_favourites_model_get_value;
+ iface->iter_next = thunar_favourites_model_iter_next;
+ iface->iter_children = thunar_favourites_model_iter_children;
+ iface->iter_has_child = thunar_favourites_model_iter_has_child;
+ iface->iter_n_children = thunar_favourites_model_iter_n_children;
+ iface->iter_nth_child = thunar_favourites_model_iter_nth_child;
+ iface->iter_parent = thunar_favourites_model_iter_parent;
+}
+
+
+
+static void
+thunar_favourites_model_drag_source_init (GtkTreeDragSourceIface *iface)
+{
+ iface->row_draggable = thunar_favourites_model_row_draggable;
+ iface->drag_data_get = thunar_favourites_model_drag_data_get;
+ iface->drag_data_delete = thunar_favourites_model_drag_data_delete;
+}
+
+
+
+static void
+thunar_favourites_model_init (ThunarFavouritesModel *model)
+{
+ ThunarFavourite *favourite;
+ ThunarVfsVolume *volume;
+ ThunarVfsPath *fhome;
+ ThunarVfsPath *fpath;
+ GtkTreePath *path;
+ ThunarFile *file;
+ GList *volumes;
+ GList *lp;
+
+ model->stamp = g_random_int ();
+ model->volume_manager = thunar_vfs_volume_manager_get_default ();
+
+ /* will be used to append the favourites to the list */
+ path = gtk_tree_path_new_from_indices (0, -1);
+
+ /* append the 'Home' favourite */
+ fpath = thunar_vfs_path_get_for_home ();
+ file = thunar_file_get_for_path (fpath, NULL);
+ if (G_LIKELY (file != NULL))
+ {
+ favourite = g_new (ThunarFavourite, 1);
+ favourite->type = THUNAR_FAVOURITE_SYSTEM_DEFINED;
+ favourite->file = file;
+ favourite->name = NULL;
+ favourite->volume = NULL;
+
+ /* append the favourite to the list */
+ thunar_favourites_model_add_favourite (model, favourite, path);
+ gtk_tree_path_next (path);
+ }
+ thunar_vfs_path_unref (fpath);
+
+ /* append the 'Filesystem' favourite */
+ fpath = thunar_vfs_path_get_for_root ();
+ file = thunar_file_get_for_path (fpath, NULL);
+ if (G_LIKELY (file != NULL))
+ {
+ favourite = g_new (ThunarFavourite, 1);
+ favourite->type = THUNAR_FAVOURITE_SYSTEM_DEFINED;
+ favourite->file = file;
+ favourite->name = NULL;
+ favourite->volume = NULL;
+
+ /* append the favourite to the list */
+ thunar_favourites_model_add_favourite (model, favourite, path);
+ gtk_tree_path_next (path);
+ }
+ thunar_vfs_path_unref (fpath);
+
+ /* prepend the removable media volumes */
+ volumes = thunar_vfs_volume_manager_get_volumes (model->volume_manager);
+ for (lp = volumes; lp != NULL; lp = lp->next)
+ {
+ /* we list only removable devices here */
+ volume = THUNAR_VFS_VOLUME (lp->data);
+ if (thunar_vfs_volume_is_removable (volume))
+ {
+ /* monitor the volume for changes */
+ g_object_ref (G_OBJECT (volume));
+ g_signal_connect (G_OBJECT (volume), "changed",
+ G_CALLBACK (thunar_favourites_model_volume_changed), model);
+
+ if (thunar_vfs_volume_is_present (volume))
+ {
+ fpath = thunar_vfs_volume_get_mount_point (volume);
+ file = thunar_file_get_for_path (fpath, NULL);
+ if (G_LIKELY (file != NULL))
+ {
+ /* generate the favourite */
+ favourite = g_new (ThunarFavourite, 1);
+ favourite->type = THUNAR_FAVOURITE_REMOVABLE_MEDIA;
+ favourite->file = file;
+ favourite->name = NULL;
+ favourite->volume = volume;
+
+ /* link the favourite to the list */
+ thunar_favourites_model_add_favourite (model, favourite, path);
+ gtk_tree_path_next (path);
+ continue;
+ }
+ }
+
+ /* schedule the volume for later checking, there's no medium present */
+ model->hidden_volumes = g_list_prepend (model->hidden_volumes, volume);
+ }
+ }
+
+ /* prepend the row separator (only supported with Gtk+ 2.6) */
+#if GTK_CHECK_VERSION(2,6,0)
+ favourite = g_new0 (ThunarFavourite, 1);
+ favourite->type = THUNAR_FAVOURITE_SEPARATOR;
+ thunar_favourites_model_add_favourite (model, favourite, path);
+ gtk_tree_path_next (path);
+#endif
+
+ /* determine the URI to the Gtk+ bookmarks file */
+ fhome = thunar_vfs_path_get_for_home ();
+ fpath = thunar_vfs_path_relative (fhome, ".gtk-bookmarks");
+ thunar_vfs_path_unref (fhome);
+
+ /* register with the alteration monitor for the bookmarks file */
+ model->monitor = thunar_vfs_monitor_get_default ();
+ model->handle = thunar_vfs_monitor_add_file (model->monitor, fpath, thunar_favourites_model_monitor, G_OBJECT (model));
+
+ /* read the Gtk+ bookmarks file */
+ thunar_favourites_model_load (model);
+
+ /* cleanup */
+ thunar_vfs_path_unref (fpath);
+ gtk_tree_path_free (path);
+}
+
+
+
+static void
+thunar_favourites_model_finalize (GObject *object)
+{
+ ThunarFavouritesModel *model = THUNAR_FAVOURITES_MODEL (object);
+
+ g_return_if_fail (THUNAR_IS_FAVOURITES_MODEL (model));
+
+ /* free all favourites */
+ g_list_foreach (model->favourites, (GFunc) thunar_favourite_free, model);
+ g_list_free (model->favourites);
+
+ /* free all hidden volumes */
+ g_list_foreach (model->hidden_volumes, (GFunc) g_object_unref, NULL);
+ g_list_free (model->hidden_volumes);
+
+ /* detach from the VFS monitor */
+ thunar_vfs_monitor_remove (model->monitor, model->handle);
+ g_object_unref (G_OBJECT (model->monitor));
+
+ /* unlink from the volume manager */
+ g_object_unref (G_OBJECT (model->volume_manager));
+
+ (*G_OBJECT_CLASS (thunar_favourites_model_parent_class)->finalize) (object);
+}
+
+
+
+static GtkTreeModelFlags
+thunar_favourites_model_get_flags (GtkTreeModel *tree_model)
+{
+ return GTK_TREE_MODEL_ITERS_PERSIST | GTK_TREE_MODEL_LIST_ONLY;
+}
+
+
+
+static gint
+thunar_favourites_model_get_n_columns (GtkTreeModel *tree_model)
+{
+ return THUNAR_FAVOURITES_MODEL_N_COLUMNS;
+}
+
+
+
+static GType
+thunar_favourites_model_get_column_type (GtkTreeModel *tree_model,
+ gint index)
+{
+ switch (index)
+ {
+ case THUNAR_FAVOURITES_MODEL_COLUMN_NAME:
+ return G_TYPE_STRING;
+
+ case THUNAR_FAVOURITES_MODEL_COLUMN_ICON:
+ return GDK_TYPE_PIXBUF;
+
+ case THUNAR_FAVOURITES_MODEL_COLUMN_MUTABLE:
+ return G_TYPE_BOOLEAN;
+
+ case THUNAR_FAVOURITES_MODEL_COLUMN_SEPARATOR:
+ return G_TYPE_BOOLEAN;
+ }
+
+ g_assert_not_reached ();
+ return G_TYPE_INVALID;
+}
+
+
+
+static gboolean
+thunar_favourites_model_get_iter (GtkTreeModel *tree_model,
+ GtkTreeIter *iter,
+ GtkTreePath *path)
+{
+ ThunarFavouritesModel *model = THUNAR_FAVOURITES_MODEL (tree_model);
+ GList *lp;
+
+ g_return_val_if_fail (THUNAR_IS_FAVOURITES_MODEL (model), FALSE);
+ g_return_val_if_fail (gtk_tree_path_get_depth (path) > 0, FALSE);
+
+ /* determine the list item for the path */
+ lp = g_list_nth (model->favourites, gtk_tree_path_get_indices (path)[0]);
+ if (G_LIKELY (lp != NULL))
+ {
+ iter->stamp = model->stamp;
+ iter->user_data = lp;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+
+
+static GtkTreePath*
+thunar_favourites_model_get_path (GtkTreeModel *tree_model,
+ GtkTreeIter *iter)
+{
+ ThunarFavouritesModel *model = THUNAR_FAVOURITES_MODEL (tree_model);
+ gint index;
+
+ g_return_val_if_fail (THUNAR_IS_FAVOURITES_MODEL (model), NULL);
+ g_return_val_if_fail (iter->stamp == model->stamp, NULL);
+
+ /* lookup the list item in the favourites list */
+ index = g_list_position (model->favourites, iter->user_data);
+ if (G_LIKELY (index >= 0))
+ return gtk_tree_path_new_from_indices (index, -1);
+
+ return NULL;
+}
+
+
+
+static void
+thunar_favourites_model_get_value (GtkTreeModel *tree_model,
+ GtkTreeIter *iter,
+ gint column,
+ GValue *value)
+{
+ ThunarFavouritesModel *model = THUNAR_FAVOURITES_MODEL (tree_model);
+ ThunarIconFactory *icon_factory;
+ ThunarFavourite *favourite;
+ GtkIconTheme *icon_theme;
+ const gchar *icon_name;
+ GdkPixbuf *icon = NULL;
+
+ g_return_if_fail (THUNAR_IS_FAVOURITES_MODEL (model));
+ g_return_if_fail (iter->stamp == model->stamp);
+
+ /* determine the favourite for the list item */
+ favourite = THUNAR_FAVOURITE (((GList *) iter->user_data)->data);
+
+ switch (column)
+ {
+ case THUNAR_FAVOURITES_MODEL_COLUMN_NAME:
+ g_value_init (value, G_TYPE_STRING);
+ if (G_UNLIKELY (favourite->volume != NULL))
+ g_value_set_static_string (value, thunar_vfs_volume_get_name (favourite->volume));
+ else if (favourite->name != NULL)
+ g_value_set_static_string (value, favourite->name);
+ else if (favourite->file != NULL)
+ g_value_set_static_string (value, thunar_file_get_special_name (favourite->file));
+ else
+ g_value_set_static_string (value, "");
+ break;
+
+ case THUNAR_FAVOURITES_MODEL_COLUMN_ICON:
+ g_value_init (value, GDK_TYPE_PIXBUF);
+ icon_factory = thunar_icon_factory_get_default ();
+ icon_theme = thunar_icon_factory_get_icon_theme (icon_factory);
+ if (G_UNLIKELY (favourite->volume != NULL))
+ {
+ icon_name = thunar_vfs_volume_lookup_icon_name (favourite->volume, icon_theme);
+ icon = thunar_icon_factory_load_icon (icon_factory, icon_name, 32, NULL, TRUE);
+ }
+ else if (G_LIKELY (favourite->file != NULL))
+ {
+ icon = thunar_icon_factory_load_file_icon (icon_factory, favourite->file, THUNAR_FILE_ICON_STATE_DEFAULT, 32);
+ }
+ if (G_LIKELY (icon != NULL))
+ g_value_take_object (value, icon);
+ g_object_unref (G_OBJECT (icon_factory));
+ break;
+
+ case THUNAR_FAVOURITES_MODEL_COLUMN_MUTABLE:
+ g_value_init (value, G_TYPE_BOOLEAN);
+ g_value_set_boolean (value, favourite->type == THUNAR_FAVOURITE_USER_DEFINED);
+ break;
+
+ case THUNAR_FAVOURITES_MODEL_COLUMN_SEPARATOR:
+ g_value_init (value, G_TYPE_BOOLEAN);
+ g_value_set_boolean (value, favourite->type == THUNAR_FAVOURITE_SEPARATOR);
+ break;
+
+ default:
+ g_assert_not_reached ();
+ }
+}
+
+
+
+static gboolean
+thunar_favourites_model_iter_next (GtkTreeModel *tree_model,
+ GtkTreeIter *iter)
+{
+ g_return_val_if_fail (THUNAR_IS_FAVOURITES_MODEL (tree_model), FALSE);
+ g_return_val_if_fail (iter->stamp == THUNAR_FAVOURITES_MODEL (tree_model)->stamp, FALSE);
+
+ iter->user_data = g_list_next (iter->user_data);
+ return (iter->user_data != NULL);
+}
+
+
+
+static gboolean
+thunar_favourites_model_iter_children (GtkTreeModel *tree_model,
+ GtkTreeIter *iter,
+ GtkTreeIter *parent)
+{
+ ThunarFavouritesModel *model = THUNAR_FAVOURITES_MODEL (tree_model);
+
+ g_return_val_if_fail (THUNAR_IS_FAVOURITES_MODEL (model), FALSE);
+
+ if (G_LIKELY (parent == NULL && model->favourites != NULL))
+ {
+ iter->stamp = model->stamp;
+ iter->user_data = model->favourites;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+
+
+static gboolean
+thunar_favourites_model_iter_has_child (GtkTreeModel *tree_model,
+ GtkTreeIter *iter)
+{
+ return FALSE;
+}
+
+
+
+static gint
+thunar_favourites_model_iter_n_children (GtkTreeModel *tree_model,
+ GtkTreeIter *iter)
+{
+ ThunarFavouritesModel *model = THUNAR_FAVOURITES_MODEL (tree_model);
+
+ g_return_val_if_fail (THUNAR_IS_FAVOURITES_MODEL (model), FALSE);
+
+ return (iter == NULL) ? g_list_length (model->favourites) : 0;
+}
+
+
+
+static gboolean
+thunar_favourites_model_iter_nth_child (GtkTreeModel *tree_model,
+ GtkTreeIter *iter,
+ GtkTreeIter *parent,
+ gint n)
+{
+ ThunarFavouritesModel *model = THUNAR_FAVOURITES_MODEL (tree_model);
+
+ g_return_val_if_fail (THUNAR_IS_FAVOURITES_MODEL (model), FALSE);
+
+ if (G_LIKELY (parent != NULL))
+ {
+ iter->stamp = model->stamp;
+ iter->user_data = g_list_nth (model->favourites, n);
+ return (iter->user_data != NULL);
+ }
+
+ return FALSE;
+}
+
+
+
+static gboolean
+thunar_favourites_model_iter_parent (GtkTreeModel *tree_model,
+ GtkTreeIter *iter,
+ GtkTreeIter *child)
+{
+ return FALSE;
+}
+
+
+
+static gboolean
+thunar_favourites_model_row_draggable (GtkTreeDragSource *source,
+ GtkTreePath *path)
+{
+ ThunarFavouritesModel *model = THUNAR_FAVOURITES_MODEL (source);
+ ThunarFavourite *favourite;
+
+ g_return_val_if_fail (THUNAR_IS_FAVOURITES_MODEL (model), FALSE);
+ g_return_val_if_fail (gtk_tree_path_get_depth (path) > 0, FALSE);
+
+ /* lookup the ThunarFavourite for the path */
+ favourite = g_list_nth_data (model->favourites, gtk_tree_path_get_indices (path)[0]);
+
+ /* special favourites cannot be reordered */
+ return (favourite != NULL && favourite->type == THUNAR_FAVOURITE_USER_DEFINED);
+}
+
+
+
+static gboolean
+thunar_favourites_model_drag_data_get (GtkTreeDragSource *source,
+ GtkTreePath *path,
+ GtkSelectionData *selection_data)
+{
+ /* we simply return FALSE here, as the drag handling is done in
+ * the ThunarFavouritesView class.
+ */
+ return FALSE;
+}
+
+
+
+static gboolean
+thunar_favourites_model_drag_data_delete (GtkTreeDragSource *source,
+ GtkTreePath *path)
+{
+ /* we simply return FALSE here, as this function can only be
+ * called if the user is re-arranging favourites within the
+ * model, which will be handle by the exchange method.
+ */
+ return FALSE;
+}
+
+
+
+static void
+thunar_favourites_model_add_favourite (ThunarFavouritesModel *model,
+ ThunarFavourite *favourite,
+ GtkTreePath *path)
+{
+ GtkTreeIter iter;
+
+ g_return_if_fail (THUNAR_IS_FAVOURITES_MODEL (model));
+ g_return_if_fail (favourite->file == NULL || THUNAR_IS_FILE (favourite->file));
+ g_return_if_fail (gtk_tree_path_get_depth (path) > 0);
+ g_return_if_fail (gtk_tree_path_get_indices (path)[0] >= 0);
+ g_return_if_fail (gtk_tree_path_get_indices (path)[0] <= g_list_length (model->favourites));
+
+ /* we want to stay informed about changes to the file */
+ if (G_LIKELY (favourite->file != NULL))
+ {
+ /* watch the file for changes */
+ thunar_file_watch (favourite->file);
+
+ /* connect appropriate signals */
+ g_signal_connect (G_OBJECT (favourite->file), "changed",
+ G_CALLBACK (thunar_favourites_model_file_changed), model);
+ g_signal_connect (G_OBJECT (favourite->file), "destroy",
+ G_CALLBACK (thunar_favourites_model_file_destroy), model);
+ }
+
+ /* insert the new favourite to the favourites list */
+ model->favourites = g_list_insert (model->favourites, favourite, gtk_tree_path_get_indices (path)[0]);
+
+ /* tell everybody that we have a new favourite */
+ gtk_tree_model_get_iter (GTK_TREE_MODEL (model), &iter, path);
+ gtk_tree_model_row_inserted (GTK_TREE_MODEL (model), path, &iter);
+}
+
+
+
+static void
+thunar_favourites_model_load (ThunarFavouritesModel *model)
+{
+ ThunarFavourite *favourite;
+ ThunarVfsPath *file_path;
+ GtkTreePath *path;
+ ThunarFile *file;
+ gchar *bookmarks_path;
+ gchar line[2048];
+ gchar *name;
+ FILE *fp;
+
+ /* determine the path to the GTK+ bookmarks file */
+ bookmarks_path = xfce_get_homefile (".gtk-bookmarks", NULL);
+
+ /* append the GTK+ bookmarks (if any) */
+ fp = fopen (bookmarks_path, "r");
+ if (G_LIKELY (fp != NULL))
+ {
+ /* allocate a tree path for appending to the model */
+ path = gtk_tree_path_new_from_indices (g_list_length (model->favourites), -1);
+
+ while (fgets (line, sizeof (line), fp) != NULL)
+ {
+ /* strip leading/trailing whitespace */
+ g_strstrip (line);
+
+ /* skip over the URI */
+ for (name = line; *name != '\0' && !g_ascii_isspace (*name); ++name)
+ ;
+
+ /* zero-terminate the URI */
+ *name++ = '\0';
+
+ /* check if we have a name */
+ for (; g_ascii_isspace (*name); ++name)
+ ;
+
+ /* parse the URI */
+ file_path = thunar_vfs_path_new (line, NULL);
+ if (G_UNLIKELY (file_path == NULL))
+ continue;
+
+ /* try to open the file corresponding to the uri */
+ file = thunar_file_get_for_path (file_path, NULL);
+ thunar_vfs_path_unref (file_path);
+ if (G_UNLIKELY (file == NULL))
+ continue;
+
+ /* make sure the file refers to a directory */
+ if (G_UNLIKELY (!thunar_file_is_directory (file)))
+ {
+ g_object_unref (G_OBJECT (file));
+ continue;
+ }
+
+ /* create the favourite entry */
+ favourite = g_new (ThunarFavourite, 1);
+ favourite->type = THUNAR_FAVOURITE_USER_DEFINED;
+ favourite->file = file;
+ favourite->volume = NULL;
+ favourite->name = (*name != '\0') ? g_strdup (name) : NULL;
+
+ /* append the favourite to the list */
+ thunar_favourites_model_add_favourite (model, favourite, path);
+ gtk_tree_path_next (path);
+ }
+
+ /* clean up */
+ gtk_tree_path_free (path);
+ fclose (fp);
+ }
+
+ /* clean up */
+ g_free (bookmarks_path);
+}
+
+
+
+static void
+thunar_favourites_model_monitor (ThunarVfsMonitor *monitor,
+ ThunarVfsMonitorHandle *handle,
+ ThunarVfsMonitorEvent event,
+ ThunarVfsPath *handle_path,
+ ThunarVfsPath *event_path,
+ gpointer user_data)
+{
+ ThunarFavouritesModel *model = THUNAR_FAVOURITES_MODEL (user_data);
+ ThunarFavourite *favourite;
+ GtkTreePath *path;
+ GList *lp;
+ gint index;
+
+ g_return_if_fail (THUNAR_IS_FAVOURITES_MODEL (model));
+ g_return_if_fail (model->monitor == monitor);
+ g_return_if_fail (model->handle == handle);
+
+ /* drop all existing user-defined favourites from the model */
+ for (index = 0, lp = model->favourites; lp != NULL; )
+ {
+ /* grab the favourite */
+ favourite = THUNAR_FAVOURITE (lp->data);
+
+ /* advance to the next list item */
+ lp = g_list_next (lp);
+
+ /* drop the favourite if it is user-defined */
+ if (favourite->type == THUNAR_FAVOURITE_USER_DEFINED)
+ {
+ /* unlink the favourite from the model */
+ model->favourites = g_list_remove (model->favourites, favourite);
+
+ /* tell everybody that we have lost a favourite */
+ path = gtk_tree_path_new_from_indices (index, -1);
+ gtk_tree_model_row_deleted (GTK_TREE_MODEL (model), path);
+ gtk_tree_path_free (path);
+
+ /* actually free the favourite */
+ thunar_favourite_free (favourite, model);
+ }
+ else
+ {
+ ++index;
+ }
+ }
+
+ /* reload the favourites model */
+ thunar_favourites_model_load (model);
+}
+
+
+
+static void
+thunar_favourites_model_save (ThunarFavouritesModel *model)
+{
+ ThunarFavourite *favourite;
+ gchar *bookmarks_path;
+ gchar *tmp_path;
+ gchar *uri;
+ GList *lp;
+ FILE *fp;
+ gint fd;
+
+ g_return_if_fail (THUNAR_IS_FAVOURITES_MODEL (model));
+
+ /* open a temporary file for writing */
+ tmp_path = xfce_get_homefile (".gtk-bookmarks.XXXXXX", NULL);
+ fd = g_mkstemp (tmp_path);
+ if (G_UNLIKELY (fd < 0))
+ {
+ g_warning ("Failed to open `%s' for writing: %s",
+ tmp_path, g_strerror (errno));
+ g_free (tmp_path);
+ return;
+ }
+
+ /* write the uris of user customizable favourites */
+ fp = fdopen (fd, "w");
+ for (lp = model->favourites; lp != NULL; lp = lp->next)
+ {
+ favourite = THUNAR_FAVOURITE (lp->data);
+ if (favourite->type == THUNAR_FAVOURITE_USER_DEFINED)
+ {
+ uri = thunar_vfs_path_dup_uri (thunar_file_get_path (favourite->file));
+ if (G_LIKELY (favourite->name != NULL))
+ fprintf (fp, "%s %s\n", uri, favourite->name);
+ else
+ fprintf (fp, "%s\n", uri);
+ g_free (uri);
+ }
+ }
+
+ /* we're done writing the temporary file */
+ fclose (fp);
+
+ /* move the temporary file to it's final location (atomic writing) */
+ bookmarks_path = xfce_get_homefile (".gtk-bookmarks", NULL);
+ if (rename (tmp_path, bookmarks_path) < 0)
+ {
+ g_warning ("Failed to write `%s': %s",
+ bookmarks_path, g_strerror (errno));
+ unlink (tmp_path);
+ }
+
+ /* cleanup */
+ g_free (bookmarks_path);
+ g_free (tmp_path);
+}
+
+
+
+static void
+thunar_favourites_model_file_changed (ThunarFile *file,
+ ThunarFavouritesModel *model)
+{
+ ThunarFavourite *favourite;
+ GtkTreePath *path;
+ GtkTreeIter iter;
+ GList *lp;
+ gint index;
+
+ g_return_if_fail (THUNAR_IS_FILE (file));
+ g_return_if_fail (THUNAR_IS_FAVOURITES_MODEL (model));
+
+ /* check if the file still refers to a directory, else we cannot keep
+ * it on the favourites list, and so we'll treat it like the file
+ * was destroyed (and thereby removed)
+ */
+ if (G_UNLIKELY (!thunar_file_is_directory (file)))
+ {
+ thunar_favourites_model_file_destroy (file, model);
+ return;
+ }
+
+ for (index = 0, lp = model->favourites; lp != NULL; ++index, lp = lp->next)
+ {
+ favourite = THUNAR_FAVOURITE (lp->data);
+ if (favourite->file == file)
+ {
+ iter.stamp = model->stamp;
+ iter.user_data = lp;
+
+ path = gtk_tree_path_new_from_indices (index, -1);
+ gtk_tree_model_row_changed (GTK_TREE_MODEL (model), path, &iter);
+ gtk_tree_path_free (path);
+ break;
+ }
+ }
+}
+
+
+
+static void
+thunar_favourites_model_file_destroy (ThunarFile *file,
+ ThunarFavouritesModel *model)
+{
+ ThunarFavourite *favourite = NULL;
+ GtkTreePath *path;
+ GList *lp;
+ gint index;
+
+ g_return_if_fail (THUNAR_IS_FILE (file));
+ g_return_if_fail (THUNAR_IS_FAVOURITES_MODEL (model));
+
+ /* lookup the favourite matching the file */
+ for (index = 0, lp = model->favourites; lp != NULL; ++index, lp = lp->next)
+ {
+ favourite = THUNAR_FAVOURITE (lp->data);
+ if (favourite->file == file)
+ break;
+ }
+
+ /* verify that we actually found a favourite */
+ g_assert (lp != NULL);
+ g_assert (THUNAR_IS_FILE (favourite->file));
+
+ /* unlink the favourite from the model */
+ model->favourites = g_list_delete_link (model->favourites, lp);
+
+ /* tell everybody that we have lost a favourite */
+ path = gtk_tree_path_new_from_indices (index, -1);
+ gtk_tree_model_row_deleted (GTK_TREE_MODEL (model), path);
+ gtk_tree_path_free (path);
+
+ /* actually free the favourite */
+ thunar_favourite_free (favourite, model);
+
+ /* the favourites list was changed, so write the gtk bookmarks file */
+ thunar_favourites_model_save (model);
+}
+
+
+
+static void
+thunar_favourites_model_volume_changed (ThunarVfsVolume *volume,
+ ThunarFavouritesModel *model)
+{
+ ThunarFavourite *favourite = NULL;
+ ThunarVfsPath *fpath;
+ GtkTreePath *path;
+ GtkTreeIter iter;
+ ThunarFile *file;
+ GList *lp;
+ gint index;
+
+ g_return_if_fail (THUNAR_VFS_IS_VOLUME (volume));
+ g_return_if_fail (THUNAR_IS_FAVOURITES_MODEL (model));
+
+ /* check if the volume is on the hidden list */
+ lp = g_list_find (model->hidden_volumes, volume);
+ if (lp != NULL)
+ {
+ /* check if we need to display the volume now */
+ if (thunar_vfs_volume_is_present (volume))
+ {
+ fpath = thunar_vfs_volume_get_mount_point (volume);
+ file = thunar_file_get_for_path (fpath, NULL);
+ if (G_LIKELY (file != NULL))
+ {
+ /* remove the volume from the list of hidden volumes */
+ model->hidden_volumes = g_list_delete_link (model->hidden_volumes, lp);
+
+ /* find the insert position */
+ for (index = 0, lp = model->favourites; lp != NULL; ++index, lp = lp->next)
+ {
+ favourite = THUNAR_FAVOURITE (lp->data);
+ if (favourite->type == THUNAR_FAVOURITE_SEPARATOR
+ || favourite->type == THUNAR_FAVOURITE_USER_DEFINED)
+ break;
+ }
+
+ /* allocate a new favourite */
+ favourite = g_new (ThunarFavourite, 1);
+ favourite->type = THUNAR_FAVOURITE_REMOVABLE_MEDIA;
+ favourite->file = file;
+ favourite->name = NULL;
+ favourite->volume = volume;
+
+ /* the volume is present now, so we have to display it */
+ path = gtk_tree_path_new_from_indices (index, -1);
+ thunar_favourites_model_add_favourite (model, favourite, path);
+ gtk_tree_path_free (path);
+ }
+ }
+ }
+ else
+ {
+ /* lookup the favourite that contains the given volume */
+ for (index = 0, lp = model->favourites; lp != NULL; ++index, lp = lp->next)
+ {
+ favourite = THUNAR_FAVOURITE (lp->data);
+ if (favourite->volume == volume)
+ break;
+ }
+
+ /* verify that we actually found the favourite */
+ g_assert (favourite != NULL);
+ g_assert (favourite->volume == volume);
+
+ /* check if we need to hide the volume now */
+ if (!thunar_vfs_volume_is_present (volume))
+ {
+ /* need to ref here, because the file_destroy() handler will drop the refcount. */
+ g_object_ref (G_OBJECT (volume));
+
+ /* move the volume to the hidden list */
+ model->hidden_volumes = g_list_prepend (model->hidden_volumes, volume);
+
+ /* we misuse the file_destroy handler to get rid of the volume entry */
+ thunar_favourites_model_file_destroy (favourite->file, model);
+
+ /* need to reconnect to the volume, as the file_destroy removes the handler */
+ g_signal_connect (G_OBJECT (volume), "changed",
+ G_CALLBACK (thunar_favourites_model_volume_changed), model);
+ }
+ else
+ {
+ /* tell the view that the volume has changed in some way */
+ iter.stamp = model->stamp;
+ iter.user_data = lp;
+
+ path = gtk_tree_path_new_from_indices (index, -1);
+ gtk_tree_model_row_changed (GTK_TREE_MODEL (model), path, &iter);
+ gtk_tree_path_free (path);
+ }
+ }
+}
+
+
+
+static void
+thunar_favourite_free (ThunarFavourite *favourite,
+ ThunarFavouritesModel *model)
+{
+ if (G_LIKELY (favourite->file != NULL))
+ {
+ /* drop the file watch */
+ thunar_file_unwatch (favourite->file);
+
+ /* unregister from the file */
+ g_signal_handlers_disconnect_matched (G_OBJECT (favourite->file),
+ G_SIGNAL_MATCH_DATA, 0,
+ 0, NULL, NULL, model);
+ g_object_unref (G_OBJECT (favourite->file));
+ }
+
+ if (G_LIKELY (favourite->volume != NULL))
+ {
+ g_signal_handlers_disconnect_matched (G_OBJECT (favourite->volume),
+ G_SIGNAL_MATCH_DATA, 0,
+ 0, NULL, NULL, model);
+ g_object_unref (G_OBJECT (favourite->volume));
+ }
+
+ g_free (favourite->name);
+ g_free (favourite);
+}
+
+
+
+/**
+ * thunar_favourites_model_get_default:
+ *
+ * Returns the default #ThunarFavouritesModel instance shared by
+ * all #ThunarFavouritesView instances.
+ *
+ * Call #g_object_unref() on the returned object when you
+ * don't need it any longer.
+ *
+ * Return value: the default #ThunarFavouritesModel instance.
+ **/
+ThunarFavouritesModel*
+thunar_favourites_model_get_default (void)
+{
+ static ThunarFavouritesModel *model = NULL;
+
+ if (G_UNLIKELY (model == NULL))
+ {
+ model = g_object_new (THUNAR_TYPE_FAVOURITES_MODEL, NULL);
+ g_object_add_weak_pointer (G_OBJECT (model), (gpointer) &model);
+ }
+ else
+ {
+ g_object_ref (G_OBJECT (model));
+ }
+
+ return model;
+}
+
+
+
+/**
+ * thunar_favourites_model_iter_for_file:
+ * @model : a #ThunarFavouritesModel instance.
+ * @file : a #ThunarFile instance.
+ * @iter : pointer to a #GtkTreeIter.
+ *
+ * Tries to lookup the #GtkTreeIter, that belongs to a favourite, which
+ * refers to @file and stores it to @iter. If no such #GtkTreeIter was
+ * found, %FALSE will be returned and @iter won't be changed. Else
+ * %TRUE will be returned and @iter will be set appropriately.
+ *
+ * Return value: %TRUE if @file was found, else %FALSE.
+ **/
+gboolean
+thunar_favourites_model_iter_for_file (ThunarFavouritesModel *model,
+ ThunarFile *file,
+ GtkTreeIter *iter)
+{
+ GList *lp;
+
+ g_return_val_if_fail (THUNAR_IS_FAVOURITES_MODEL (model), FALSE);
+ g_return_val_if_fail (THUNAR_IS_FILE (file), FALSE);
+ g_return_val_if_fail (iter != NULL, FALSE);
+
+ for (lp = model->favourites; lp != NULL; lp = lp->next)
+ if (THUNAR_FAVOURITE (lp->data)->file == file)
+ {
+ iter->stamp = model->stamp;
+ iter->user_data = lp;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+
+
+/**
+ * thunar_favourites_model_file_for_iter:
+ * @model : a #ThunarFavouritesModel instance.
+ * @iter : pointer to a valid #GtkTreeIter.
+ *
+ * Return value: the #ThunarFile matching the given @iter.
+ **/
+ThunarFile*
+thunar_favourites_model_file_for_iter (ThunarFavouritesModel *model,
+ GtkTreeIter *iter)
+{
+ g_return_val_if_fail (THUNAR_IS_FAVOURITES_MODEL (model), NULL);
+ g_return_val_if_fail (iter != NULL && iter->stamp == model->stamp, NULL);
+ return THUNAR_FAVOURITE (((GList *) iter->user_data)->data)->file;
+}
+
+
+
+/**
+ * thunar_favourites_model_drop_possible:
+ * @model : a #ThunarFavouritestModel.
+ * @path : a #GtkTreePath.
+ *
+ * Determines whether a drop is possible before the given @path, at the same depth
+ * as @path. I.e., can we drop data at that location. @path does not have to exist;
+ * the return value will almost certainly be FALSE if the parent of @path doesn't
+ * exist, though.
+ *
+ * Return value: %TRUE if it's possible to drop data before @path, else %FALSE.
+ **/
+gboolean
+thunar_favourites_model_drop_possible (ThunarFavouritesModel *model,
+ GtkTreePath *path)
+{
+ ThunarFavourite *favourite;
+
+ g_return_val_if_fail (THUNAR_IS_FAVOURITES_MODEL (model), FALSE);
+ g_return_val_if_fail (gtk_tree_path_get_depth (path) > 0, FALSE);
+
+ /* determine the list item for the path */
+ favourite = g_list_nth_data (model->favourites, gtk_tree_path_get_indices (path)[0]);
+
+ /* append to the list is always possible */
+ if (G_LIKELY (favourite == NULL))
+ return TRUE;
+
+ /* cannot drop before special favourites! */
+ return (favourite->type == THUNAR_FAVOURITE_USER_DEFINED);
+}
+
+
+
+/**
+ * thunar_favourites_model_add:
+ * @model : a #ThunarFavouritesModel.
+ * @dst_path : the destination path.
+ * @file : the #ThunarFile that should be added to the favourites list.
+ *
+ * Adds the favourite @file to the @model at @dst_path, unless @file is
+ * already present in @model in which case no action is performed.
+ **/
+void
+thunar_favourites_model_add (ThunarFavouritesModel *model,
+ GtkTreePath *dst_path,
+ ThunarFile *file)
+{
+ ThunarFavourite *favourite;
+ GList *lp;
+
+ g_return_if_fail (THUNAR_IS_FAVOURITES_MODEL (model));
+ g_return_if_fail (gtk_tree_path_get_depth (dst_path) > 0);
+ g_return_if_fail (gtk_tree_path_get_indices (dst_path)[0] >= 0);
+ g_return_if_fail (gtk_tree_path_get_indices (dst_path)[0] <= g_list_length (model->favourites));
+ g_return_if_fail (THUNAR_IS_FILE (file));
+
+ /* verify that the file is not already in use as favourite */
+ for (lp = model->favourites; lp != NULL; lp = lp->next)
+ if (THUNAR_FAVOURITE (lp->data)->file == file)
+ return;
+
+ /* create the new favourite that will be inserted */
+ favourite = g_new0 (ThunarFavourite, 1);
+ favourite->type = THUNAR_FAVOURITE_USER_DEFINED;
+ favourite->file = g_object_ref (G_OBJECT (file));
+
+ /* add the favourite to the list at the given position */
+ thunar_favourites_model_add_favourite (model, favourite, dst_path);
+
+ /* the favourites list was changed, so write the gtk bookmarks file */
+ thunar_favourites_model_save (model);
+}
+
+
+
+/**
+ * thunar_favourites_model_move:
+ * @model : a #ThunarFavouritesModel.
+ * @src_path : the source path.
+ * @dst_path : the destination path.
+ *
+ * Moves the favourite at @src_path to @dst_path, adjusting other
+ * favourite's positions as required.
+ **/
+void
+thunar_favourites_model_move (ThunarFavouritesModel *model,
+ GtkTreePath *src_path,
+ GtkTreePath *dst_path)
+{
+ ThunarFavourite *favourite;
+ GtkTreePath *path;
+ GList *lp;
+ gint *order;
+ gint index_src;
+ gint index_dst;
+ gint index;
+
+ g_return_if_fail (THUNAR_IS_FAVOURITES_MODEL (model));
+ g_return_if_fail (gtk_tree_path_get_depth (src_path) > 0);
+ g_return_if_fail (gtk_tree_path_get_depth (dst_path) > 0);
+ g_return_if_fail (gtk_tree_path_get_indices (src_path)[0] >= 0);
+ g_return_if_fail (gtk_tree_path_get_indices (src_path)[0] < g_list_length (model->favourites));
+ g_return_if_fail (gtk_tree_path_get_indices (dst_path)[0] > 0);
+
+ index_src = gtk_tree_path_get_indices (src_path)[0];
+ index_dst = gtk_tree_path_get_indices (dst_path)[0];
+
+ if (G_UNLIKELY (index_src == index_dst))
+ return;
+
+ /* generate the order for the rows prior the dst/src rows */
+ order = g_newa (gint, g_list_length (model->favourites));
+ for (index = 0, lp = model->favourites; index < index_src && index < index_dst; ++index, lp = lp->next)
+ order[index] = index;
+
+ if (index == index_src)
+ {
+ favourite = THUNAR_FAVOURITE (lp->data);
+
+ for (; index < index_dst; ++index, lp = lp->next)
+ {
+ lp->data = lp->next->data;
+ order[index] = index + 1;
+ }
+
+ lp->data = favourite;
+ order[index++] = index_src;
+ }
+ else
+ {
+ for (; index < index_src; ++index, lp = lp->next)
+ ;
+
+ g_assert (index == index_src);
+
+ favourite = THUNAR_FAVOURITE (lp->data);
+
+ for (; index > index_dst; --index, lp = lp->prev)
+ {
+ lp->data = lp->prev->data;
+ order[index] = index - 1;
+ }
+
+ g_assert (index == index_dst);
+
+ lp->data = favourite;
+ order[index] = index_src;
+ index = index_src + 1;
+ }
+
+ /* generate the remaining order */
+ for (; index < g_list_length (model->favourites); ++index)
+ order[index] = index;
+
+ /* tell all listeners about the reordering just performed */
+ path = gtk_tree_path_new ();
+ gtk_tree_model_rows_reordered (GTK_TREE_MODEL (model), path, NULL, order);
+ gtk_tree_path_free (path);
+
+ /* the favourites list was changed, so write the gtk bookmarks file */
+ thunar_favourites_model_save (model);
+}
+
+
+
+/**
+ * thunar_favourites_model_remove:
+ * @model : a #ThunarFavouritesModel.
+ * @path : the #GtkTreePath of the favourite to remove.
+ *
+ * Removes the favourite at @path from the @model and syncs to
+ * on-disk storage. @path must refer to a valid, user-defined
+ * favourite, as you cannot remove system-defined entities (they
+ * are managed internally).
+ **/
+void
+thunar_favourites_model_remove (ThunarFavouritesModel *model,
+ GtkTreePath *path)
+{
+ ThunarFavourite *favourite;
+
+ g_return_if_fail (THUNAR_IS_FAVOURITES_MODEL (model));
+ g_return_if_fail (gtk_tree_path_get_depth (path) > 0);
+ g_return_if_fail (gtk_tree_path_get_indices (path)[0] >= 0);
+ g_return_if_fail (gtk_tree_path_get_indices (path)[0] < g_list_length (model->favourites));
+
+ /* lookup the favourite for the given path */
+ favourite = g_list_nth_data (model->favourites, gtk_tree_path_get_indices (path)[0]);
+
+ /* verify that the favourite is removable */
+ g_assert (favourite->type == THUNAR_FAVOURITE_USER_DEFINED);
+ g_assert (THUNAR_IS_FILE (favourite->file));
+
+ /* remove the favourite (using the file destroy handler) */
+ thunar_favourites_model_file_destroy (favourite->file, model);
+}
+
+
+
+/**
+ * thunar_favourites_model_rename:
+ * @model : a #ThunarFavouritesModel.
+ * @path : the #GtkTreePath which refers to the favourite that
+ * should be renamed to @name.
+ * @name : the new name for the favourite at @path or %NULL to
+ * return to the default name.
+ *
+ * Renames the favourite at @path to the new @name in @model.
+ *
+ * @name may be %NULL or an empty to reset the favourite to
+ * its default name.
+ **/
+void
+thunar_favourites_model_rename (ThunarFavouritesModel *model,
+ GtkTreePath *path,
+ const gchar *name)
+{
+ ThunarFavourite *favourite;
+ GtkTreeIter iter;
+ GList *lp;
+
+ g_return_if_fail (THUNAR_IS_FAVOURITES_MODEL (model));
+ g_return_if_fail (gtk_tree_path_get_depth (path) > 0);
+ g_return_if_fail (gtk_tree_path_get_indices (path)[0] >= 0);
+ g_return_if_fail (gtk_tree_path_get_indices (path)[0] < g_list_length (model->favourites));
+ g_return_if_fail (name == NULL || g_utf8_validate (name, -1, NULL));
+
+ /* lookup the favourite for the given path */
+ lp = g_list_nth (model->favourites, gtk_tree_path_get_indices (path)[0]);
+ favourite = THUNAR_FAVOURITE (lp->data);
+
+ /* verify the favourite */
+ g_assert (favourite->type == THUNAR_FAVOURITE_USER_DEFINED);
+ g_assert (THUNAR_IS_FILE (favourite->file));
+
+ /* perform the rename */
+ if (G_UNLIKELY (favourite->name != NULL))
+ g_free (favourite->name);
+ if (G_UNLIKELY (name == NULL || *name == '\0'))
+ favourite->name = NULL;
+ else
+ favourite->name = g_strdup (name);
+
+ /* notify the views about the change */
+ iter.stamp = model->stamp;
+ iter.user_data = lp;
+ gtk_tree_model_row_changed (GTK_TREE_MODEL (model), path, &iter);
+
+ /* save the changes to the model */
+ thunar_favourites_model_save (model);
+}
+
+
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-favourites-model.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-favourites-model.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-favourites-model.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,83 @@
+/* $Id: thunar-favourites-model.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_FAVOURITES_MODEL_H__
+#define __THUNAR_FAVOURITES_MODEL_H__
+
+#include <thunar/thunar-file.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarFavouritesModelClass ThunarFavouritesModelClass;
+typedef struct _ThunarFavouritesModel ThunarFavouritesModel;
+
+#define THUNAR_TYPE_FAVOURITES_MODEL (thunar_favourites_model_get_type ())
+#define THUNAR_FAVOURITES_MODEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_FAVOURITES_MODEL, ThunarFavouritesModel))
+#define THUNAR_FAVOURITES_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_FAVOURITES_MODEL, ThunarFavouritesModelClass))
+#define THUNAR_IS_FAVOURITES_MODEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_FAVOURITES_MODEL))
+#define THUNAR_IS_FAVOURITES_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_FAVOURITES_MODEL))
+#define THUNAR_FAVOURITES_MODEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_MODEL_FAVOURITES_MODEL, ThunarFavouritesModelClass))
+
+/**
+ * ThunarFavouritesModelColumn:
+ * @THUNAR_FAVOURITES_MODEL_COLUMN_NAME : the index of the name column.
+ * @THUNAR_FAVOURITES_MODEL_COLUMN_ICON : the index of the icon column.
+ * @THUNAR_FAVOURITES_MODEL_COLUMN_MUTABLE : tells whether a row is mutable.
+ * @THUNAR_FAVOURITES_MODEL_COLUMN_SEPARATOR : tells whether a row is a separator.
+ *
+ * Columns exported by #ThunarFavouritesModel using the
+ * #GtkTreeModel interface.
+ **/
+typedef enum
+{
+ THUNAR_FAVOURITES_MODEL_COLUMN_NAME,
+ THUNAR_FAVOURITES_MODEL_COLUMN_ICON,
+ THUNAR_FAVOURITES_MODEL_COLUMN_MUTABLE,
+ THUNAR_FAVOURITES_MODEL_COLUMN_SEPARATOR,
+ THUNAR_FAVOURITES_MODEL_N_COLUMNS,
+} ThunarFavouritesModelColumn;
+
+GType thunar_favourites_model_get_type (void) G_GNUC_CONST;
+
+ThunarFavouritesModel *thunar_favourites_model_get_default (void);
+
+gboolean thunar_favourites_model_iter_for_file (ThunarFavouritesModel *model,
+ ThunarFile *file,
+ GtkTreeIter *iter);
+ThunarFile *thunar_favourites_model_file_for_iter (ThunarFavouritesModel *model,
+ GtkTreeIter *iter);
+
+gboolean thunar_favourites_model_drop_possible (ThunarFavouritesModel *model,
+ GtkTreePath *path);
+
+void thunar_favourites_model_add (ThunarFavouritesModel *model,
+ GtkTreePath *dst_path,
+ ThunarFile *file);
+void thunar_favourites_model_move (ThunarFavouritesModel *model,
+ GtkTreePath *src_path,
+ GtkTreePath *dst_path);
+void thunar_favourites_model_remove (ThunarFavouritesModel *model,
+ GtkTreePath *path);
+void thunar_favourites_model_rename (ThunarFavouritesModel *model,
+ GtkTreePath *path,
+ const gchar *name);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_FAVOURITES_MODEL_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-favourites-pane.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-favourites-pane.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-favourites-pane.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,244 @@
+/* $Id: thunar-favourites-pane.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <thunar/thunar-favourites-pane.h>
+#include <thunar/thunar-favourites-view.h>
+#include <thunar/thunar-side-pane.h>
+
+
+
+enum
+{
+ PROP_0,
+ PROP_CURRENT_DIRECTORY,
+};
+
+
+
+static void thunar_favourites_pane_class_init (ThunarFavouritesPaneClass *klass);
+static void thunar_favourites_pane_navigator_init (ThunarNavigatorIface *iface);
+static void thunar_favourites_pane_side_pane_init (ThunarSidePaneIface *iface);
+static void thunar_favourites_pane_init (ThunarFavouritesPane *pane);
+static void thunar_favourites_pane_dispose (GObject *object);
+static void thunar_favourites_pane_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void thunar_favourites_pane_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static ThunarFile *thunar_favourites_pane_get_current_directory (ThunarNavigator *navigator);
+static void thunar_favourites_pane_set_current_directory (ThunarNavigator *navigator,
+ ThunarFile *current_directory);
+
+
+
+struct _ThunarFavouritesPaneClass
+{
+ GtkScrolledWindowClass __parent__;
+};
+
+struct _ThunarFavouritesPane
+{
+ GtkScrolledWindow __parent__;
+ ThunarFile *current_directory;
+ GtkWidget *view;
+};
+
+
+
+G_DEFINE_TYPE_WITH_CODE (ThunarFavouritesPane,
+ thunar_favourites_pane,
+ GTK_TYPE_SCROLLED_WINDOW,
+ G_IMPLEMENT_INTERFACE (THUNAR_TYPE_NAVIGATOR,
+ thunar_favourites_pane_navigator_init)
+ G_IMPLEMENT_INTERFACE (THUNAR_TYPE_SIDE_PANE,
+ thunar_favourites_pane_side_pane_init));
+
+
+
+static void
+thunar_favourites_pane_class_init (ThunarFavouritesPaneClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->dispose = thunar_favourites_pane_dispose;
+ gobject_class->get_property = thunar_favourites_pane_get_property;
+ gobject_class->set_property = thunar_favourites_pane_set_property;
+
+ g_object_class_override_property (gobject_class,
+ PROP_CURRENT_DIRECTORY,
+ "current-directory");
+}
+
+
+
+static void
+thunar_favourites_pane_navigator_init (ThunarNavigatorIface *iface)
+{
+ iface->get_current_directory = thunar_favourites_pane_get_current_directory;
+ iface->set_current_directory = thunar_favourites_pane_set_current_directory;
+}
+
+
+
+static void
+thunar_favourites_pane_side_pane_init (ThunarSidePaneIface *iface)
+{
+}
+
+
+
+static void
+thunar_favourites_pane_init (ThunarFavouritesPane *pane)
+{
+ /* configure the GtkScrolledWindow */
+ gtk_scrolled_window_set_hadjustment (GTK_SCROLLED_WINDOW (pane), NULL);
+ gtk_scrolled_window_set_vadjustment (GTK_SCROLLED_WINDOW (pane), NULL);
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (pane),
+ GTK_POLICY_NEVER,
+ GTK_POLICY_AUTOMATIC);
+ gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (pane),
+ GTK_SHADOW_IN);
+
+ /* allocate the favourites view */
+ pane->view = thunar_favourites_view_new ();
+ gtk_container_add (GTK_CONTAINER (pane), pane->view);
+ gtk_widget_show (pane->view);
+
+ /* connect the "favourite-activated" signal */
+ g_signal_connect_swapped (G_OBJECT (pane->view), "favourite-activated",
+ G_CALLBACK (thunar_navigator_change_directory), pane);
+}
+
+
+
+static void
+thunar_favourites_pane_dispose (GObject *object)
+{
+ ThunarNavigator *navigator = THUNAR_NAVIGATOR (object);
+ thunar_navigator_set_current_directory (navigator, NULL);
+ G_OBJECT_CLASS (thunar_favourites_pane_parent_class)->dispose (object);
+}
+
+
+
+static void
+thunar_favourites_pane_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarNavigator *navigator = THUNAR_NAVIGATOR (object);
+
+ switch (prop_id)
+ {
+ case PROP_CURRENT_DIRECTORY:
+ g_value_set_object (value, thunar_navigator_get_current_directory (navigator));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunar_favourites_pane_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarNavigator *navigator = THUNAR_NAVIGATOR (object);
+
+ switch (prop_id)
+ {
+ case PROP_CURRENT_DIRECTORY:
+ thunar_navigator_set_current_directory (navigator, g_value_get_object (value));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static ThunarFile*
+thunar_favourites_pane_get_current_directory (ThunarNavigator *navigator)
+{
+ g_return_val_if_fail (THUNAR_IS_FAVOURITES_PANE (navigator), NULL);
+ return THUNAR_FAVOURITES_PANE (navigator)->current_directory;
+}
+
+
+
+static void
+thunar_favourites_pane_set_current_directory (ThunarNavigator *navigator,
+ ThunarFile *current_directory)
+{
+ ThunarFavouritesPane *pane = THUNAR_FAVOURITES_PANE (navigator);
+
+ g_return_if_fail (THUNAR_IS_FAVOURITES_PANE (pane));
+
+ /* disconnect from the previously set current directory */
+ if (G_LIKELY (pane->current_directory != NULL))
+ g_object_unref (G_OBJECT (pane->current_directory));
+
+ pane->current_directory = current_directory;
+
+ if (G_LIKELY (current_directory != NULL))
+ {
+ /* take a reference on the new directory */
+ g_object_ref (G_OBJECT (current_directory));
+
+ /* select the file in the view (if possible) */
+ thunar_favourites_view_select_by_file (THUNAR_FAVOURITES_VIEW (pane->view),
+ pane->current_directory);
+ }
+
+ g_object_notify (G_OBJECT (pane), "current-directory");
+}
+
+
+
+/**
+ * thunar_favourites_pane_new:
+ *
+ * Allocates a new #ThunarFavouritesPane instance.
+ *
+ * Return value: the newly allocated #ThunarFavouritesPane instance.
+ **/
+GtkWidget*
+thunar_favourites_pane_new (void)
+{
+ return g_object_new (THUNAR_TYPE_FAVOURITES_PANE, NULL);
+}
+
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-favourites-pane.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-favourites-pane.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-favourites-pane.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,43 @@
+/* $Id: thunar-favourites-pane.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_FAVOURITES_PANE_H__
+#define __THUNAR_FAVOURITES_PANE_H__
+
+#include <thunar/thunar-side-pane.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarFavouritesPaneClass ThunarFavouritesPaneClass;
+typedef struct _ThunarFavouritesPane ThunarFavouritesPane;
+
+#define THUNAR_TYPE_FAVOURITES_PANE (thunar_favourites_pane_get_type ())
+#define THUNAR_FAVOURITES_PANE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_FAVOURITES_PANE, ThunarFavouritesPane))
+#define THUNAR_FAVOURITES_PANE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_FAVOURITES_PANE, ThunarFavouritesPaneClass))
+#define THUNAR_IS_FAVOURITES_PANE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_FAVOURITES_PANE))
+#define THUNAR_IS_FAVOURITES_PANE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_FAVOURITES_PANE))
+#define THUNAR_FAVOURITES_PANE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_FAVOURITES_PANE, ThunarFavouritesPaneClass))
+
+GType thunar_favourites_pane_get_type (void) G_GNUC_CONST;
+
+GtkWidget *thunar_favourites_pane_new (void);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_FAVOURITES_PANE_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-favourites-view.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-favourites-view.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-favourites-view.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,723 @@
+/* $Id: thunar-favourites-view.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * Inspired by the shortcuts list as found in the GtkFileChooser, which was
+ * developed for Gtk+ by Red Hat, Inc.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <thunar/thunar-dialogs.h>
+#include <thunar/thunar-favourites-model.h>
+#include <thunar/thunar-favourites-view.h>
+
+
+
+/* Identifiers for signals */
+enum
+{
+ FAVOURITE_ACTIVATED,
+ LAST_SIGNAL,
+};
+
+/* Identifiers for DnD target types */
+enum
+{
+ GTK_TREE_MODEL_ROW,
+ TEXT_URI_LIST,
+};
+
+
+
+static void thunar_favourites_view_class_init (ThunarFavouritesViewClass *klass);
+static void thunar_favourites_view_init (ThunarFavouritesView *view);
+static gboolean thunar_favourites_view_button_press_event (GtkWidget *widget,
+ GdkEventButton *event);
+static void thunar_favourites_view_drag_data_received (GtkWidget *widget,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ GtkSelectionData *selection_data,
+ guint info,
+ guint time);
+static gboolean thunar_favourites_view_drag_drop (GtkWidget *widget,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ guint time);
+static gboolean thunar_favourites_view_drag_motion (GtkWidget *widget,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ guint time);
+static void thunar_favourites_view_row_activated (GtkTreeView *tree_view,
+ GtkTreePath *path,
+ GtkTreeViewColumn *column);
+static void thunar_favourites_view_remove_activated (GtkWidget *item,
+ ThunarFavouritesView *view);
+static void thunar_favourites_view_rename_activated (GtkWidget *item,
+ ThunarFavouritesView *view);
+static void thunar_favourites_view_rename_canceled (GtkCellRenderer *renderer,
+ ThunarFavouritesView *view);
+static void thunar_favourites_view_renamed (GtkCellRenderer *renderer,
+ const gchar *path_string,
+ const gchar *text,
+ ThunarFavouritesView *view);
+static GtkTreePath *thunar_favourites_view_compute_drop_position (ThunarFavouritesView *view,
+ gint x,
+ gint y);
+static void thunar_favourites_view_drop_uri_list (ThunarFavouritesView *view,
+ const gchar *uri_list,
+ GtkTreePath *dst_path);
+#if GTK_CHECK_VERSION(2,6,0)
+static gboolean thunar_favourites_view_separator_func (GtkTreeModel *model,
+ GtkTreeIter *iter,
+ gpointer user_data);
+#endif
+
+
+
+struct _ThunarFavouritesViewClass
+{
+ GtkTreeViewClass __parent__;
+
+ /* signals */
+ void (*favourite_activated) (ThunarFavouritesView *view,
+ ThunarFile *file);
+};
+
+struct _ThunarFavouritesView
+{
+ GtkTreeView __parent__;
+};
+
+
+
+static guint view_signals[LAST_SIGNAL];
+
+/* Target types for dragging from the favourites view */
+static const GtkTargetEntry drag_targets[] = {
+ { "GTK_TREE_MODEL_ROW", GTK_TARGET_SAME_WIDGET, GTK_TREE_MODEL_ROW },
+};
+
+/* Target types for dropping into the favourites view */
+static const GtkTargetEntry drop_targets[] = {
+ { "GTK_TREE_MODEL_ROW", GTK_TARGET_SAME_WIDGET, GTK_TREE_MODEL_ROW },
+ { "text/uri-list", 0, TEXT_URI_LIST },
+};
+
+
+
+G_DEFINE_TYPE (ThunarFavouritesView, thunar_favourites_view, GTK_TYPE_TREE_VIEW);
+
+
+
+static void
+thunar_favourites_view_class_init (ThunarFavouritesViewClass *klass)
+{
+ GtkTreeViewClass *gtktree_view_class;
+ GtkWidgetClass *gtkwidget_class;
+
+ gtkwidget_class = GTK_WIDGET_CLASS (klass);
+ gtkwidget_class->button_press_event = thunar_favourites_view_button_press_event;
+ gtkwidget_class->drag_data_received = thunar_favourites_view_drag_data_received;
+ gtkwidget_class->drag_drop = thunar_favourites_view_drag_drop;
+ gtkwidget_class->drag_motion = thunar_favourites_view_drag_motion;
+
+ gtktree_view_class = GTK_TREE_VIEW_CLASS (klass);
+ gtktree_view_class->row_activated = thunar_favourites_view_row_activated;
+
+ /**
+ * ThunarFavouritesView:favourite-activated:
+ *
+ * Invoked whenever a favourite is activated by the user.
+ **/
+ view_signals[FAVOURITE_ACTIVATED] =
+ g_signal_new ("favourite-activated",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (ThunarFavouritesViewClass, favourite_activated),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__OBJECT,
+ G_TYPE_NONE, 1, THUNAR_TYPE_FILE);
+}
+
+
+
+static void
+thunar_favourites_view_init (ThunarFavouritesView *view)
+{
+ GtkTreeViewColumn *column;
+ GtkTreeSelection *selection;
+ GtkCellRenderer *renderer;
+
+ gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (view), FALSE);
+
+ column = g_object_new (GTK_TYPE_TREE_VIEW_COLUMN,
+ "reorderable", FALSE,
+ "resizable", FALSE,
+ "sizing", GTK_TREE_VIEW_COLUMN_AUTOSIZE,
+ NULL);
+ renderer = gtk_cell_renderer_pixbuf_new ();
+ gtk_tree_view_column_pack_start (column, renderer, FALSE);
+ gtk_tree_view_column_set_attributes (column, renderer,
+ "pixbuf", THUNAR_FAVOURITES_MODEL_COLUMN_ICON,
+ NULL);
+ renderer = gtk_cell_renderer_text_new ();
+ g_signal_connect (G_OBJECT (renderer), "edited", G_CALLBACK (thunar_favourites_view_renamed), view);
+ g_signal_connect (G_OBJECT (renderer), "editing-canceled", G_CALLBACK (thunar_favourites_view_rename_canceled), view);
+ gtk_tree_view_column_pack_start (column, renderer, TRUE);
+ gtk_tree_view_column_set_attributes (column, renderer,
+ "text", THUNAR_FAVOURITES_MODEL_COLUMN_NAME,
+ NULL);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (view), column);
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view));
+ gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
+
+ /* enable drag support for the favourites view (actually used to support reordering) */
+ gtk_tree_view_enable_model_drag_source (GTK_TREE_VIEW (view), GDK_BUTTON1_MASK, drag_targets,
+ G_N_ELEMENTS (drag_targets), GDK_ACTION_MOVE);
+
+ /* enable drop support for the favourites view (both internal reordering
+ * and adding new favourites from other widgets)
+ */
+ gtk_drag_dest_set (GTK_WIDGET (view), GTK_DEST_DEFAULT_ALL,
+ drop_targets, G_N_ELEMENTS (drop_targets),
+ GDK_ACTION_COPY | GDK_ACTION_LINK | GDK_ACTION_MOVE);
+
+#if GTK_CHECK_VERSION(2,6,0)
+ gtk_tree_view_set_row_separator_func (GTK_TREE_VIEW (view), thunar_favourites_view_separator_func, NULL, NULL);
+#endif
+}
+
+
+
+static gboolean
+thunar_favourites_view_button_press_event (GtkWidget *widget,
+ GdkEventButton *event)
+{
+ GtkTreeModel *model;
+ GtkTreePath *path;
+ GtkTreeIter iter;
+ ThunarFile *file;
+ GtkWidget *window;
+ GtkWidget *image;
+ GtkWidget *menu;
+ GtkWidget *item;
+ GMainLoop *loop;
+ gboolean mutable;
+ gboolean result;
+ GList *actions;
+ GList *lp;
+
+ /* let the widget process the event first (handles focussing and scrolling) */
+ result = GTK_WIDGET_CLASS (thunar_favourites_view_parent_class)->button_press_event (widget, event);
+
+ /* check if we have a right-click event */
+ if (G_LIKELY (event->button != 3))
+ return result;
+
+ /* resolve the path to the cursor position */
+ if (gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (widget), event->x, event->y, &path, NULL, NULL, NULL))
+ {
+ /* determine the iterator for the selected row */
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (widget));
+ gtk_tree_model_get_iter (model, &iter, path);
+
+ /* check whether the favourite at the given path is mutable */
+ gtk_tree_model_get (model, &iter, THUNAR_FAVOURITES_MODEL_COLUMN_MUTABLE, &mutable, -1);
+
+ /* determine the file for the given path */
+ file = thunar_favourites_model_file_for_iter (THUNAR_FAVOURITES_MODEL (model), &iter);
+
+ /* prepare the internal loop */
+ loop = g_main_loop_new (NULL, FALSE);
+
+ /* prepare the popup menu */
+ menu = gtk_menu_new ();
+ gtk_menu_set_screen (GTK_MENU (menu), gtk_widget_get_screen (widget));
+ g_signal_connect_swapped (G_OBJECT (menu), "deactivate", G_CALLBACK (g_main_loop_quit), loop);
+
+ /* prepend the custom actions for the selected file (if any) */
+ if (G_LIKELY (file != NULL))
+ {
+ /* determine the toplevel window */
+ window = gtk_widget_get_toplevel (widget);
+
+ /* determine the actions for the selected file */
+ actions = thunar_file_get_actions (file, window);
+
+ /* check if we have any actions */
+ if (G_LIKELY (actions != NULL))
+ {
+ /* append the actions */
+ for (lp = actions; lp != NULL; lp = lp->next)
+ {
+ /* append the menu item */
+ item = gtk_action_create_menu_item (GTK_ACTION (lp->data));
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
+ /* release the reference on the action */
+ g_object_unref (G_OBJECT (lp->data));
+ }
+ g_list_free (actions);
+
+ /* append a menu separator */
+ item = gtk_separator_menu_item_new ();
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+ }
+ }
+
+ /* append the remove menu item */
+ item = gtk_image_menu_item_new_with_mnemonic (_("_Remove Favourite"));
+ g_object_set_data_full (G_OBJECT (item), "thunar-favourites-row",
+ gtk_tree_row_reference_new (model, path),
+ (GDestroyNotify) gtk_tree_row_reference_free);
+ g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (thunar_favourites_view_remove_activated), widget);
+ gtk_widget_set_sensitive (item, mutable);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
+ /* set the remove stock icon */
+ image = gtk_image_new_from_stock (GTK_STOCK_REMOVE, GTK_ICON_SIZE_MENU);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
+ gtk_widget_show (image);
+
+ /* append the rename menu item */
+ item = gtk_image_menu_item_new_with_mnemonic (_("Re_name Favourite"));
+ g_object_set_data_full (G_OBJECT (item), "thunar-favourites-row",
+ gtk_tree_row_reference_new (model, path),
+ (GDestroyNotify) gtk_tree_row_reference_free);
+ g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (thunar_favourites_view_rename_activated), widget);
+ gtk_widget_set_sensitive (item, mutable);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
+ /* run the internal loop */
+ gtk_grab_add (menu);
+ gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 0, event->time);
+ g_main_loop_run (loop);
+ gtk_grab_remove (menu);
+
+ /* clean up */
+ gtk_object_sink (GTK_OBJECT (menu));
+ gtk_tree_path_free (path);
+ g_main_loop_unref (loop);
+
+ /* we effectively handled the event */
+ return TRUE;
+ }
+
+ return result;
+}
+
+
+
+static void
+thunar_favourites_view_drag_data_received (GtkWidget *widget,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ GtkSelectionData *selection_data,
+ guint info,
+ guint time)
+{
+ ThunarFavouritesView *view = THUNAR_FAVOURITES_VIEW (widget);
+ GtkTreeSelection *selection;
+ GtkTreeModel *model;
+ GtkTreePath *dst_path;
+ GtkTreePath *src_path;
+ GtkTreeIter iter;
+
+ g_return_if_fail (THUNAR_IS_FAVOURITES_VIEW (view));
+
+ /* compute the drop position */
+ dst_path = thunar_favourites_view_compute_drop_position (view, x, y);
+
+ if (selection_data->target == gdk_atom_intern ("text/uri-list", FALSE))
+ {
+ thunar_favourites_view_drop_uri_list (view, (gchar *) selection_data->data, dst_path);
+ }
+ else if (selection_data->target == gdk_atom_intern ("GTK_TREE_MODEL_ROW", FALSE))
+ {
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view));
+ if (gtk_tree_selection_get_selected (selection, &model, &iter))
+ {
+ /* we need to adjust the destination path here, because the path returned by
+ * the drop position computation effectively points after the insert position,
+ * which can led to unexpected results.
+ */
+ gtk_tree_path_prev (dst_path);
+ if (!thunar_favourites_model_drop_possible (THUNAR_FAVOURITES_MODEL (model), dst_path))
+ gtk_tree_path_next (dst_path);
+
+ /* perform the move */
+ src_path = gtk_tree_model_get_path (model, &iter);
+ thunar_favourites_model_move (THUNAR_FAVOURITES_MODEL (model), src_path, dst_path);
+ gtk_tree_path_free (src_path);
+ }
+ }
+
+ gtk_tree_path_free (dst_path);
+}
+
+
+
+static gboolean
+thunar_favourites_view_drag_drop (GtkWidget *widget,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ guint time)
+{
+ g_return_val_if_fail (THUNAR_IS_FAVOURITES_VIEW (widget), FALSE);
+ return TRUE;
+}
+
+
+
+static gboolean
+thunar_favourites_view_drag_motion (GtkWidget *widget,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ guint time)
+{
+ GtkTreeViewDropPosition position = GTK_TREE_VIEW_DROP_BEFORE;
+ ThunarFavouritesView *view = THUNAR_FAVOURITES_VIEW (widget);
+ GdkDragAction action;
+ GtkTreeModel *model;
+ GtkTreePath *path;
+
+ /* check the action that should be performed */
+ if (context->suggested_action == GDK_ACTION_LINK || (context->actions & GDK_ACTION_LINK) != 0)
+ action = GDK_ACTION_LINK;
+ else if (context->suggested_action == GDK_ACTION_COPY || (context->actions & GDK_ACTION_COPY) != 0)
+ action = GDK_ACTION_COPY;
+ else if (context->suggested_action == GDK_ACTION_MOVE || (context->actions & GDK_ACTION_MOVE) != 0)
+ action = GDK_ACTION_MOVE;
+ else
+ return FALSE;
+
+ /* compute the drop position for the coordinates */
+ path = thunar_favourites_view_compute_drop_position (view, x, y);
+
+ /* check if path is about to append to the model */
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (view));
+ if (gtk_tree_path_get_indices (path)[0] >= gtk_tree_model_iter_n_children (model, NULL))
+ {
+ /* set the position to "after" and move the path to
+ * point to the previous row instead; required to
+ * get the highlighting in GtkTreeView correct.
+ */
+ position = GTK_TREE_VIEW_DROP_AFTER;
+ gtk_tree_path_prev (path);
+ }
+
+ /* highlight the appropriate row */
+ gtk_tree_view_set_drag_dest_row (GTK_TREE_VIEW (view), path, position);
+ gtk_tree_path_free (path);
+
+ gdk_drag_status (context, action, time);
+ return TRUE;
+}
+
+
+
+static void
+thunar_favourites_view_row_activated (GtkTreeView *tree_view,
+ GtkTreePath *path,
+ GtkTreeViewColumn *column)
+{
+ ThunarFavouritesView *view = THUNAR_FAVOURITES_VIEW (tree_view);
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ ThunarFile *file;
+
+ g_return_if_fail (THUNAR_IS_FAVOURITES_VIEW (view));
+ g_return_if_fail (path != NULL);
+
+ /* determine the iter for the path */
+ model = gtk_tree_view_get_model (tree_view);
+ gtk_tree_model_get_iter (model, &iter, path);
+
+ /* determine the file for the favourite and invoke the signal */
+ file = thunar_favourites_model_file_for_iter (THUNAR_FAVOURITES_MODEL (model), &iter);
+ if (G_LIKELY (file != NULL))
+ g_signal_emit (G_OBJECT (view), view_signals[FAVOURITE_ACTIVATED], 0, file);
+
+ /* call the row-activated method in the parent class */
+ if (GTK_TREE_VIEW_CLASS (thunar_favourites_view_parent_class)->row_activated != NULL)
+ (*GTK_TREE_VIEW_CLASS (thunar_favourites_view_parent_class)->row_activated) (tree_view, path, column);
+}
+
+
+
+static void
+thunar_favourites_view_remove_activated (GtkWidget *item,
+ ThunarFavouritesView *view)
+{
+ GtkTreeRowReference *row;
+ GtkTreeModel *model;
+ GtkTreePath *path;
+
+ row = g_object_get_data (G_OBJECT (item), "thunar-favourites-row");
+ path = gtk_tree_row_reference_get_path (row);
+ if (G_LIKELY (path != NULL))
+ {
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (view));
+ thunar_favourites_model_remove (THUNAR_FAVOURITES_MODEL (model), path);
+ gtk_tree_path_free (path);
+ }
+}
+
+
+
+static void
+thunar_favourites_view_rename_activated (GtkWidget *item,
+ ThunarFavouritesView *view)
+{
+ GtkTreeRowReference *row;
+ GtkTreeViewColumn *column;
+ GtkCellRenderer *renderer;
+ GtkTreePath *path;
+ GList *renderers;
+
+ row = g_object_get_data (G_OBJECT (item), "thunar-favourites-row");
+ path = gtk_tree_row_reference_get_path (row);
+ if (G_LIKELY (path != NULL))
+ {
+ column = gtk_tree_view_get_column (GTK_TREE_VIEW (view), 0);
+ renderers = gtk_tree_view_column_get_cell_renderers (column);
+ renderer = g_list_nth_data (renderers, 1);
+ g_object_set (G_OBJECT (renderer), "editable", TRUE, NULL);
+ gtk_tree_view_set_cursor_on_cell (GTK_TREE_VIEW (view), path, column, renderer, TRUE);
+ gtk_tree_path_free (path);
+ g_list_free (renderers);
+ }
+}
+
+
+
+static void
+thunar_favourites_view_rename_canceled (GtkCellRenderer *renderer,
+ ThunarFavouritesView *view)
+{
+ /* disable the editing support on the name cell again */
+ g_object_set (G_OBJECT (renderer), "editable", FALSE, NULL);
+}
+
+
+
+static void
+thunar_favourites_view_renamed (GtkCellRenderer *renderer,
+ const gchar *path_string,
+ const gchar *text,
+ ThunarFavouritesView *view)
+{
+ GtkTreeModel *model;
+ GtkTreePath *path;
+
+ /* disable the editing support on the name cell again */
+ g_object_set (G_OBJECT (renderer), "editable", FALSE, NULL);
+
+ /* perform the rename */
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (view));
+ path = gtk_tree_path_new_from_string (path_string);
+ thunar_favourites_model_rename (THUNAR_FAVOURITES_MODEL (model), path, text);
+ gtk_tree_path_free (path);
+}
+
+
+
+static GtkTreePath*
+thunar_favourites_view_compute_drop_position (ThunarFavouritesView *view,
+ gint x,
+ gint y)
+{
+ GtkTreeViewColumn *column;
+ GtkTreeModel *model;
+ GdkRectangle area;
+ GtkTreePath *path;
+ gint n_rows;
+
+ g_return_val_if_fail (gtk_tree_view_get_model (GTK_TREE_VIEW (view)) != NULL, NULL);
+ g_return_val_if_fail (THUNAR_IS_FAVOURITES_VIEW (view), NULL);
+
+ /* query the number of rows in the model */
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (view));
+ n_rows = gtk_tree_model_iter_n_children (model, NULL);
+
+ if (gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (view), x, y,
+ &path, &column, &x, &y))
+ {
+ /* determine the exact path of the row the user is trying to drop
+ * (taking into account the relative y position)
+ */
+ gtk_tree_view_get_background_area (GTK_TREE_VIEW (view), path, column, &area);
+ if (y >= area.height / 2)
+ gtk_tree_path_next (path);
+
+ /* find a suitable drop path (we cannot drop into the default favourites list) */
+ for (; gtk_tree_path_get_indices (path)[0] < n_rows; gtk_tree_path_next (path))
+ if (thunar_favourites_model_drop_possible (THUNAR_FAVOURITES_MODEL (model), path))
+ return path;
+ }
+ else
+ {
+ /* we'll append to the favourites list */
+ path = gtk_tree_path_new_from_indices (n_rows, -1);
+ }
+
+ return path;
+}
+
+
+
+static void
+thunar_favourites_view_drop_uri_list (ThunarFavouritesView *view,
+ const gchar *uri_list,
+ GtkTreePath *dst_path)
+{
+ GtkTreeModel *model;
+ ThunarFile *file;
+ GError *error = NULL;
+ gchar *display_string;
+ gchar *uri_string;
+ GList *path_list;
+ GList *lp;
+
+ path_list = thunar_vfs_path_list_from_string (uri_list, &error);
+ if (G_LIKELY (error == NULL))
+ {
+ /* process the URIs one-by-one and stop on error */
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (view));
+ for (lp = path_list; lp != NULL; lp = lp->next)
+ {
+ file = thunar_file_get_for_path (lp->data, &error);
+ if (G_UNLIKELY (file == NULL))
+ break;
+
+ /* make sure, that only directories gets added to the favourites list */
+ if (G_UNLIKELY (!thunar_file_is_directory (file)))
+ {
+ uri_string = thunar_vfs_path_dup_string (lp->data);
+ display_string = g_filename_display_name (uri_string);
+ g_set_error (&error, G_FILE_ERROR, G_FILE_ERROR_NOTDIR,
+ _("The path '%s' does not refer to a directory"),
+ display_string);
+ g_object_unref (G_OBJECT (file));
+ g_free (display_string);
+ g_free (uri_string);
+ break;
+ }
+
+ thunar_favourites_model_add (THUNAR_FAVOURITES_MODEL (model), dst_path, file);
+ g_object_unref (G_OBJECT (file));
+ gtk_tree_path_next (dst_path);
+ }
+
+ thunar_vfs_path_list_free (path_list);
+ }
+
+ if (G_UNLIKELY (error != NULL))
+ {
+ /* display an error message to the user */
+ thunar_dialogs_show_error (GTK_WIDGET (view), error, _("Failed to add new favourite"));
+
+ /* release the error */
+ g_error_free (error);
+ }
+}
+
+
+
+#if GTK_CHECK_VERSION(2,6,0)
+static gboolean
+thunar_favourites_view_separator_func (GtkTreeModel *model,
+ GtkTreeIter *iter,
+ gpointer user_data)
+{
+ gboolean separator;
+ gtk_tree_model_get (model, iter, THUNAR_FAVOURITES_MODEL_COLUMN_SEPARATOR, &separator, -1);
+ return separator;
+}
+#endif
+
+
+
+/**
+ * thunar_favourites_view_new:
+ *
+ * Allocates a new #ThunarFavouritesView instance and associates
+ * it with the default #ThunarFavouritesModel instance.
+ *
+ * Return value: the newly allocated #ThunarFavouritesView instance.
+ **/
+GtkWidget*
+thunar_favourites_view_new (void)
+{
+ ThunarFavouritesModel *model;
+ GtkWidget *view;
+
+ model = thunar_favourites_model_get_default ();
+ view = g_object_new (THUNAR_TYPE_FAVOURITES_VIEW,
+ "model", model, NULL);
+ g_object_unref (G_OBJECT (model));
+
+ return view;
+}
+
+
+
+/**
+ * thunar_favourites_view_select_by_file:
+ * @view : a #ThunarFavouritesView instance.
+ * @file : a #ThunarFile instance.
+ *
+ * Looks up the first favourite that refers to @file in @view and selects it.
+ * If @file is not present in the underlying #ThunarFavouritesModel, no
+ * favourite will be selected afterwards.
+ **/
+void
+thunar_favourites_view_select_by_file (ThunarFavouritesView *view,
+ ThunarFile *file)
+{
+ GtkTreeSelection *selection;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+
+ g_return_if_fail (THUNAR_IS_FAVOURITES_VIEW (view));
+ g_return_if_fail (THUNAR_IS_FILE (file));
+
+ /* clear the selection */
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view));
+ gtk_tree_selection_unselect_all (selection);
+
+ /* try to lookup a tree iter for the given file */
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (view));
+ if (thunar_favourites_model_iter_for_file (THUNAR_FAVOURITES_MODEL (model), file, &iter))
+ gtk_tree_selection_select_iter (selection, &iter);
+}
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-favourites-view.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-favourites-view.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-favourites-view.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,46 @@
+/* $Id: thunar-favourites-view.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_FAVOURITES_VIEW_H__
+#define __THUNAR_FAVOURITES_VIEW_H__
+
+#include <thunar/thunar-file.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarFavouritesViewClass ThunarFavouritesViewClass;
+typedef struct _ThunarFavouritesView ThunarFavouritesView;
+
+#define THUNAR_TYPE_FAVOURITES_VIEW (thunar_favourites_view_get_type ())
+#define THUNAR_FAVOURITES_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_FAVOURITES_VIEW, ThunarFavouritesView))
+#define THUNAR_FAVOURITES_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_FAVOURITES_VIEW, ThunarFavouritesViewClass))
+#define THUNAR_IS_FAVOURITES_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_FAVOURITES_VIEW))
+#define THUNAR_IS_FAVOURITES_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_FAVOURITES_VIEW))
+#define THUNAR_FAVOURITES_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_FAVOURITES_VIEW, ThunarFavouritesViewClass))
+
+GType thunar_favourites_view_get_type (void) G_GNUC_CONST;
+
+GtkWidget *thunar_favourites_view_new (void);
+
+void thunar_favourites_view_select_by_file (ThunarFavouritesView *view,
+ ThunarFile *file);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_FAVOURITES_VIEW_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-file.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-file.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-file.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,1739 @@
+/* $Id: thunar-file.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_TIME_H
+#include <time.h>
+#endif
+
+#include <thunar/thunar-file.h>
+
+#include <thunarx/thunarx.h>
+
+
+
+/* Additional flags associated with a ThunarFile */
+#define THUNAR_FILE_IN_DESTRUCTION 0x04
+#define THUNAR_FILE_OWNS_METAFILE_REFERENCE 0x08
+#define THUNAR_FILE_OWNS_EMBLEM_NAMES 0x10
+
+
+/* the watch count is stored in the GObject data
+ * list, as it is needed only for a very few
+ * files.
+ */
+#define THUNAR_FILE_GET_WATCH_COUNT(file) (GPOINTER_TO_INT (g_object_get_qdata (G_OBJECT ((file)), thunar_file_watch_count_quark)))
+#define THUNAR_FILE_SET_WATCH_COUNT(file, count) (g_object_set_qdata (G_OBJECT ((file)), thunar_file_watch_count_quark, GINT_TO_POINTER ((count))))
+
+
+
+enum
+{
+ CHANGED,
+ DESTROY,
+ RENAMED,
+ LAST_SIGNAL,
+};
+
+
+
+static void thunar_file_class_init (ThunarFileClass *klass);
+static void thunar_file_info_init (ThunarxFileInfoIface *iface);
+static void thunar_file_dispose (GObject *object);
+static void thunar_file_finalize (GObject *object);
+static gchar *thunar_file_info_get_name (ThunarxFileInfo *file_info);
+static gchar *thunar_file_info_get_uri (ThunarxFileInfo *file_info);
+static gchar *thunar_file_info_get_parent_uri (ThunarxFileInfo *file_info);
+static gchar *thunar_file_info_get_uri_scheme (ThunarxFileInfo *file_info);
+static gchar *thunar_file_info_get_mime_type (ThunarxFileInfo *file_info);
+static gboolean thunar_file_info_has_mime_type (ThunarxFileInfo *file_info,
+ const gchar *mime_type);
+static gboolean thunar_file_info_is_directory (ThunarxFileInfo *file_info);
+static void thunar_file_real_changed (ThunarFile *file);
+static gboolean thunar_file_denies_access_permission (const ThunarFile *file,
+ ThunarVfsFileMode usr_permissions,
+ ThunarVfsFileMode grp_permissions,
+ ThunarVfsFileMode oth_permissions);
+static ThunarMetafile *thunar_file_get_metafile (ThunarFile *file);
+static void thunar_file_monitor (ThunarVfsMonitor *monitor,
+ ThunarVfsMonitorHandle *handle,
+ ThunarVfsMonitorEvent event,
+ ThunarVfsPath *handle_path,
+ ThunarVfsPath *event_path,
+ gpointer user_data);
+static void thunar_file_watch_free (gpointer data);
+
+
+
+static ThunarVfsUserManager *user_manager;
+static ThunarVfsMonitor *monitor;
+static ThunarMetafile *metafile;
+static GObjectClass *thunar_file_parent_class;
+static GHashTable *file_cache;
+static GQuark thunar_file_thumb_path_quark;
+static GQuark thunar_file_watch_count_quark;
+static GQuark thunar_file_watch_handle_quark;
+static GQuark thunar_file_emblem_names_quark;
+static guint file_signals[LAST_SIGNAL];
+
+
+
+GType
+thunar_file_get_type (void)
+{
+ static GType type = G_TYPE_INVALID;
+
+ if (G_UNLIKELY (type == G_TYPE_INVALID))
+ {
+ static const GTypeInfo info =
+ {
+ sizeof (ThunarFileClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) thunar_file_class_init,
+ NULL,
+ NULL,
+ sizeof (ThunarFile),
+ 0,
+ NULL,
+ NULL,
+ };
+
+ static const GInterfaceInfo file_info_info =
+ {
+ (GInterfaceInitFunc) thunar_file_info_init,
+ NULL,
+ NULL,
+ };
+
+ type = g_type_register_static (G_TYPE_OBJECT, "ThunarFile", &info, 0);
+
+ g_type_add_interface_static (type, THUNARX_TYPE_FILE_INFO, &file_info_info);
+ }
+
+ return type;
+}
+
+
+
+#ifndef G_DISABLE_CHECKS
+static gboolean thunar_file_atexit_registered = FALSE;
+
+static void
+thunar_file_atexit_foreach (gpointer key,
+ gpointer value,
+ gpointer user_data)
+{
+ gchar *s;
+
+ s = thunar_vfs_path_dup_string (key);
+ g_print ("--> %s (%u)\n", s, G_OBJECT (value)->ref_count);
+ g_free (s);
+}
+
+static void
+thunar_file_atexit (void)
+{
+ if (file_cache == NULL || g_hash_table_size (file_cache) == 0)
+ return;
+
+ g_print ("--- Leaked a total of %u ThunarFile objects:\n",
+ g_hash_table_size (file_cache));
+
+ g_hash_table_foreach (file_cache, thunar_file_atexit_foreach, NULL);
+
+ g_print ("\n");
+}
+#endif
+
+
+
+static void
+thunar_file_class_init (ThunarFileClass *klass)
+{
+ GObjectClass *gobject_class;
+
+#ifndef G_DISABLE_CHECKS
+ if (G_UNLIKELY (!thunar_file_atexit_registered))
+ {
+ g_atexit (thunar_file_atexit);
+ thunar_file_atexit_registered = TRUE;
+ }
+#endif
+
+ /* pre-allocate the required quarks */
+ thunar_file_thumb_path_quark = g_quark_from_static_string ("thunar-file-thumb-path");
+ thunar_file_watch_count_quark = g_quark_from_static_string ("thunar-file-watch-count");
+ thunar_file_watch_handle_quark = g_quark_from_static_string ("thunar-file-watch-handle");
+ thunar_file_emblem_names_quark = g_quark_from_static_string ("thunar-file-emblem-names");
+
+ /* determine the parent class */
+ thunar_file_parent_class = g_type_class_peek_parent (klass);
+
+ /* grab a reference on the user manager */
+ user_manager = thunar_vfs_user_manager_get_default ();
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->dispose = thunar_file_dispose;
+ gobject_class->finalize = thunar_file_finalize;
+
+ klass->changed = thunar_file_real_changed;
+
+ /**
+ * ThunarFile::changed:
+ * @file : the #ThunarFile instance.
+ *
+ * Emitted whenever the system notices a change to @file.
+ **/
+ file_signals[CHANGED] =
+ g_signal_new ("changed",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (ThunarFileClass, changed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ /**
+ * ThunarFile::destroy:
+ * @file : the #ThunarFile instance.
+ *
+ * Emitted when the system notices that the @file
+ * was destroyed.
+ **/
+ file_signals[DESTROY] =
+ g_signal_new ("destroy",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_CLEANUP | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS,
+ G_STRUCT_OFFSET (ThunarFileClass, destroy),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ /**
+ * ThunarFile::renamed:
+ * @file : the #ThunarFile instance.
+ *
+ * Emitted when the @file is renamed to another
+ * name. #ThunarFolder uses this signal to
+ * reregister it's VFS directory monitor.
+ **/
+ file_signals[RENAMED] =
+ g_signal_new ("renamed",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (ThunarFileClass, renamed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+}
+
+
+
+static void
+thunar_file_info_init (ThunarxFileInfoIface *iface)
+{
+ iface->get_name = thunar_file_info_get_name;
+ iface->get_uri = thunar_file_info_get_uri;
+ iface->get_parent_uri = thunar_file_info_get_parent_uri;
+ iface->get_uri_scheme = thunar_file_info_get_uri_scheme;
+ iface->get_mime_type = thunar_file_info_get_mime_type;
+ iface->has_mime_type = thunar_file_info_has_mime_type;
+ iface->is_directory = thunar_file_info_is_directory;
+}
+
+
+
+static void
+thunar_file_dispose (GObject *object)
+{
+ ThunarFile *file = THUNAR_FILE (object);
+
+ /* check that we don't recurse here */
+ if (G_LIKELY ((file->flags & THUNAR_FILE_IN_DESTRUCTION) == 0))
+ {
+ /* emit the "destroy" signal */
+ file->flags |= THUNAR_FILE_IN_DESTRUCTION;
+ g_signal_emit (object, file_signals[DESTROY], 0);
+ file->flags &= ~THUNAR_FILE_IN_DESTRUCTION;
+ }
+
+ /* drop the entry from the cache */
+ g_hash_table_remove (file_cache, file->info->path);
+
+ (*G_OBJECT_CLASS (thunar_file_parent_class)->dispose) (object);
+}
+
+
+
+static void
+thunar_file_finalize (GObject *object)
+{
+ ThunarFile *file = THUNAR_FILE (object);
+
+ /* verify that nobody's watching the file anymore */
+#ifndef G_DISABLE_CHECKS
+ if (G_UNLIKELY (THUNAR_FILE_GET_WATCH_COUNT (file) != 0))
+ {
+ g_error ("Attempt to finalize a ThunarFile, which has an active "
+ "watch count of %d", THUNAR_FILE_GET_WATCH_COUNT (file));
+ }
+#endif
+
+ /* drop a reference on the metadata if we own one */
+ if ((file->flags & THUNAR_FILE_OWNS_METAFILE_REFERENCE) != 0)
+ g_object_unref (G_OBJECT (metafile));
+
+ /* release the file info */
+ thunar_vfs_info_unref (file->info);
+
+ (*G_OBJECT_CLASS (thunar_file_parent_class)->finalize) (object);
+}
+
+
+
+static gchar*
+thunar_file_info_get_name (ThunarxFileInfo *file_info)
+{
+ return g_strdup (thunar_vfs_path_get_name (THUNAR_FILE (file_info)->info->path));
+}
+
+
+
+static gchar*
+thunar_file_info_get_uri (ThunarxFileInfo *file_info)
+{
+ return thunar_vfs_path_dup_uri (THUNAR_FILE (file_info)->info->path);
+}
+
+
+
+static gchar*
+thunar_file_info_get_parent_uri (ThunarxFileInfo *file_info)
+{
+ ThunarVfsPath *parent;
+
+ parent = thunar_vfs_path_get_parent (THUNAR_FILE (file_info)->info->path);
+ if (G_LIKELY (parent != NULL))
+ return thunar_vfs_path_dup_uri (parent);
+
+ return NULL;
+}
+
+
+
+static gchar*
+thunar_file_info_get_uri_scheme (ThunarxFileInfo *file_info)
+{
+ return g_strdup ("file");
+}
+
+
+
+static gchar*
+thunar_file_info_get_mime_type (ThunarxFileInfo *file_info)
+{
+ ThunarVfsMimeInfo *mime_info;
+ gchar *mime_type = NULL;
+
+ /* determine the mime info for the file */
+ mime_info = thunar_file_get_mime_info (THUNAR_FILE (file_info));
+ if (G_LIKELY (mime_info != NULL))
+ mime_type = g_strdup (thunar_vfs_mime_info_get_name (mime_info));
+
+ return mime_type;
+}
+
+
+
+static gboolean
+thunar_file_info_has_mime_type (ThunarxFileInfo *file_info,
+ const gchar *mime_type)
+{
+ ThunarVfsMimeDatabase *mime_database;
+ ThunarVfsMimeInfo *mime_info;
+ gboolean valid = FALSE;
+ GList *mime_infos;
+ GList *lp;
+
+ /* determine the mime info for the file */
+ mime_info = thunar_file_get_mime_info (THUNAR_FILE (file_info));
+ if (G_UNLIKELY (mime_info == NULL))
+ return FALSE;
+
+ /* check the related mime types for the file's mime info */
+ mime_database = thunar_vfs_mime_database_get_default ();
+ mime_infos = thunar_vfs_mime_database_get_infos_for_info (mime_database, mime_info);
+ for (lp = mime_infos; lp != NULL && !valid; lp = lp->next)
+ valid = (strcmp (thunar_vfs_mime_info_get_name (lp->data), mime_type) == 0);
+ g_object_unref (G_OBJECT (mime_database));
+ thunar_vfs_mime_info_list_free (mime_infos);
+
+ return valid;
+}
+
+
+
+static gboolean
+thunar_file_info_is_directory (ThunarxFileInfo *file_info)
+{
+ return thunar_file_is_directory (THUNAR_FILE (file_info));
+}
+
+
+
+static void
+thunar_file_real_changed (ThunarFile *file)
+{
+ /* reset the thumbnail state, so the next thunar_icon_factory_load_file_icon()
+ * invokation will recheck the thumbnail.
+ */
+ thunar_file_set_thumb_state (file, THUNAR_FILE_THUMB_STATE_UNKNOWN);
+}
+
+
+
+static gboolean
+thunar_file_denies_access_permission (const ThunarFile *file,
+ ThunarVfsFileMode usr_permissions,
+ ThunarVfsFileMode grp_permissions,
+ ThunarVfsFileMode oth_permissions)
+{
+ ThunarVfsFileMode mode;
+ ThunarVfsGroup *group;
+ ThunarVfsUser *user;
+ gboolean result;
+ GList *groups;
+ GList *lp;
+
+ /* query the file mode */
+ mode = thunar_file_get_mode (file);
+
+ /* query the owner of the file, if we cannot determine
+ * the owner, we can't tell if we're denied to access
+ * the file, so we simply return FALSE then.
+ */
+ user = thunar_file_get_user (file);
+ if (G_UNLIKELY (user == NULL))
+ return FALSE;
+
+ // FIXME: We should add a superuser check here!
+
+ if (thunar_vfs_user_is_me (user))
+ {
+ /* we're the owner, so the usr permissions must be granted */
+ result = ((mode & usr_permissions) == 0);
+ }
+ else
+ {
+ group = thunar_file_get_group (file);
+ if (G_LIKELY (group != NULL))
+ {
+ /* check the group permissions */
+ groups = thunar_vfs_user_get_groups (user);
+ for (lp = groups; lp != NULL; lp = lp->next)
+ if (THUNAR_VFS_GROUP (lp->data) == group)
+ {
+ g_object_unref (G_OBJECT (user));
+ g_object_unref (G_OBJECT (group));
+ return ((mode & grp_permissions) == 0);
+ }
+
+ g_object_unref (G_OBJECT (group));
+ }
+
+ /* check other permissions */
+ result = ((mode & oth_permissions) == 0);
+ }
+
+ g_object_unref (G_OBJECT (user));
+
+ return result;
+}
+
+
+
+static ThunarMetafile*
+thunar_file_get_metafile (ThunarFile *file)
+{
+ if ((file->flags & THUNAR_FILE_OWNS_METAFILE_REFERENCE) == 0)
+ {
+ /* take a reference on the metafile for this file */
+ if (G_UNLIKELY (metafile == NULL))
+ {
+ metafile = thunar_metafile_get_default ();
+ g_object_add_weak_pointer (G_OBJECT (metafile), (gpointer) &metafile);
+ }
+ else
+ {
+ g_object_ref (G_OBJECT (metafile));
+ }
+
+ /* remember that we own a reference now */
+ file->flags |= THUNAR_FILE_OWNS_METAFILE_REFERENCE;
+ }
+
+ return metafile;
+}
+
+
+
+static void
+thunar_file_monitor (ThunarVfsMonitor *monitor,
+ ThunarVfsMonitorHandle *handle,
+ ThunarVfsMonitorEvent event,
+ ThunarVfsPath *handle_path,
+ ThunarVfsPath *event_path,
+ gpointer user_data)
+{
+ ThunarFile *file = THUNAR_FILE (user_data);
+
+ g_return_if_fail (THUNAR_VFS_IS_MONITOR (monitor));
+ g_return_if_fail (THUNAR_IS_FILE (file));
+ g_return_if_fail (thunar_vfs_path_equal (file->info->path, event_path));
+
+ /* just to be sure... */
+ if (G_UNLIKELY (!thunar_vfs_path_equal (handle_path, event_path)))
+ return;
+
+ switch (event)
+ {
+ case THUNAR_VFS_MONITOR_EVENT_CHANGED:
+ case THUNAR_VFS_MONITOR_EVENT_CREATED:
+ thunar_file_reload (file);
+ break;
+
+ case THUNAR_VFS_MONITOR_EVENT_DELETED:
+ thunar_file_destroy (file);
+ break;
+ }
+}
+
+
+
+static void
+thunar_file_watch_free (gpointer data)
+{
+ /* remove the watch from the VFS monitor */
+ thunar_vfs_monitor_remove (monitor, data);
+
+ /* release our reference on the VFS monitor */
+ g_object_unref (G_OBJECT (monitor));
+}
+
+
+
+/**
+ * thunar_file_get_for_info:
+ * @info : a #ThunarVfsInfo.
+ *
+ * Looks up the #ThunarFile corresponding to @info. Use
+ * this function if want to specify the #ThunarVfsInfo
+ * to use for a #ThunarFile instead of thunar_file_get_for_path(),
+ * which would determine the #ThunarVfsInfo once again.
+ *
+ * The caller is responsible to call g_object_unref()
+ * when done with the returned object.
+ *
+ * Return value: the #ThunarFile for @info.
+ **/
+ThunarFile*
+thunar_file_get_for_info (ThunarVfsInfo *info)
+{
+ ThunarFile *file;
+
+ g_return_val_if_fail (info != NULL, NULL);
+
+ /* check if we already have a cached version of that file */
+ file = thunar_file_cache_lookup (info->path);
+ if (G_UNLIKELY (file != NULL))
+ {
+ /* take a reference for the caller */
+ g_object_ref (G_OBJECT (file));
+
+ /* apply the new info */
+ if (!thunar_vfs_info_matches (file->info, info))
+ {
+ thunar_vfs_info_unref (file->info);
+ file->info = thunar_vfs_info_ref (info);
+ g_signal_emit (G_OBJECT (file), file_signals[CHANGED], 0);
+ }
+ }
+ else
+ {
+ /* allocate a new object */
+ file = g_object_new (THUNAR_TYPE_FILE, NULL);
+ file->info = thunar_vfs_info_ref (info);
+
+ /* insert the file into the cache */
+ g_hash_table_insert (file_cache, thunar_vfs_path_ref (info->path), file);
+ }
+
+ return file;
+}
+
+
+
+/**
+ * thunar_file_get_for_path:
+ * @path : a #ThunarVfsPath.
+ * @error : error return location.
+ *
+ * Tries to query the file referred to by @path. Returns %NULL
+ * if the file could not be queried and @error will point
+ * to an error describing the problem, else the #ThunarFile
+ * instance will be returned, which needs to freed using
+ * g_object_unref() when no longer needed.
+ *
+ * Note that this function is not thread-safe and may only
+ * be called from the main thread.
+ *
+ * Return value: the #ThunarFile instance or %NULL on error.
+ **/
+ThunarFile*
+thunar_file_get_for_path (ThunarVfsPath *path,
+ GError **error)
+{
+ ThunarVfsInfo *info;
+ ThunarFile *file;
+
+ g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+ /* see if we have the corresponding file cached already */
+ file = thunar_file_cache_lookup (path);
+ if (file == NULL)
+ {
+ /* determine the file info */
+ info = thunar_vfs_info_new_for_path (path, error);
+ if (G_UNLIKELY (info == NULL))
+ return NULL;
+
+ /* allocate the new file object */
+ file = thunar_file_get_for_info (info);
+
+ /* release our reference to the info */
+ thunar_vfs_info_unref (info);
+ }
+ else
+ {
+ /* take another reference on the cached file */
+ g_object_ref (G_OBJECT (file));
+ }
+
+ return file;
+}
+
+
+
+/**
+ * thunar_file_get_parent:
+ * @file : a #ThunarFile instance.
+ * @error : return location for errors.
+ *
+ * Determines the parent #ThunarFile for @file. If @file has no parent or
+ * the user is not allowed to open the parent folder of @file, %NULL will
+ * be returned and @error will be set to point to a #GError that
+ * describes the cause. Else, the #ThunarFile will be returned, and
+ * the caller must call g_object_unref() on it.
+ *
+ * You may want to call thunar_file_has_parent() first to
+ * determine whether @file has a parent.
+ *
+ * Return value: the parent #ThunarFile or %NULL.
+ **/
+ThunarFile*
+thunar_file_get_parent (const ThunarFile *file,
+ GError **error)
+{
+ g_return_val_if_fail (THUNAR_IS_FILE (file), NULL);
+ g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+ if (!thunar_file_has_parent (file))
+ {
+ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_NOENT, _("The root folder has no parent"));
+ return NULL;
+ }
+
+ return thunar_file_get_for_path (thunar_vfs_path_get_parent (file->info->path), error);
+}
+
+
+
+/**
+ * thunar_file_execute:
+ * @file : a #ThunarFile instance.
+ * @screen : a #GdkScreen.
+ * @path_list : the list of #ThunarVfsPath<!---->s to supply to @file on
+ * execution.
+ * @error : return location for errors or %NULL.
+ *
+ * Tries to execute @file on the specified @screen. If @file is executable
+ * and could have been spawned successfully, %TRUE is returned, else %FALSE
+ * will be returned and @error will be set to point to the error location.
+ *
+ * Return value: %TRUE on success, else %FALSE.
+ **/
+gboolean
+thunar_file_execute (ThunarFile *file,
+ GdkScreen *screen,
+ GList *path_list,
+ GError **error)
+{
+ g_return_val_if_fail (THUNAR_IS_FILE (file), FALSE);
+ g_return_val_if_fail (GDK_IS_SCREEN (screen), FALSE);
+ g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+ return thunar_vfs_info_execute (file->info, screen, path_list, error);
+}
+
+
+
+/**
+ * thunar_file_rename:
+ * @file : a #ThunarFile instance.
+ * @name : the new file name in UTF-8 encoding.
+ * @error : return location for errors or %NULL.
+ *
+ * Tries to rename @file to the new @name. If @file cannot be renamed,
+ * %FALSE will be returned and @error will be accordingly. Else, if
+ * the operation succeeds, %TRUE will be returned, and @file will have
+ * a new URI and a new display name.
+ *
+ * When offering a rename action in the user interface, the implementation
+ * should first check whether the file is available, using the
+ * thunar_file_is_renameable() method.
+ *
+ * Return value: %TRUE on success, else %FALSE.
+ **/
+gboolean
+thunar_file_rename (ThunarFile *file,
+ const gchar *name,
+ GError **error)
+{
+ ThunarVfsPath *previous_path;
+ gboolean succeed;
+ gint watch_count;;
+
+ g_return_val_if_fail (THUNAR_IS_FILE (file), FALSE);
+ g_return_val_if_fail (g_utf8_validate (name, -1, NULL), FALSE);
+ g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+
+ /* remember the previous path */
+ previous_path = thunar_vfs_path_ref (file->info->path);
+
+ /* try to rename the file */
+ succeed = thunar_vfs_info_rename (file->info, name, error);
+ if (G_LIKELY (succeed))
+ {
+ /* need to re-register the monitor handle for the new uri */
+ watch_count = THUNAR_FILE_GET_WATCH_COUNT (file);
+ if (G_LIKELY (watch_count > 0))
+ {
+ /* drop the watch_count temporary */
+ THUNAR_FILE_SET_WATCH_COUNT (file, 1);
+
+ /* drop the previous handle (with the old path) */
+ thunar_file_unwatch (file);
+
+ /* register the new handle (with the new path) */
+ thunar_file_watch (file);
+
+ /* reset the watch count */
+ THUNAR_FILE_SET_WATCH_COUNT (file, watch_count);
+ }
+
+ /* drop the previous entry from the cache */
+ g_hash_table_remove (file_cache, previous_path);
+
+ /* insert the new entry */
+ g_hash_table_insert (file_cache, thunar_vfs_path_ref (file->info->path), file);
+
+ /* tell the associated folder that the file was renamed */
+ g_signal_emit (G_OBJECT (file), file_signals[RENAMED], 0);
+
+ /* emit the file changed signal */
+ thunar_file_changed (file);
+ }
+
+ /* drop the reference on the previous path */
+ thunar_vfs_path_unref (previous_path);
+
+ return succeed;
+}
+
+
+
+/**
+ * thunar_file_accepts_drop:
+ * @file : a #ThunarFile instance.
+ * @path_list : the list of #ThunarVfsPath<!---->s that will be droppped.
+ * @actions : the #GdkDragAction<!---->s provided by the drag source.
+ *
+ * Checks whether @file can accept @path_list for the given @actions and
+ * returns the #GdkDragAction<!---->s that can be used or 0 if no
+ * actions apply.
+ *
+ * Return value: the #GdkDragAction<!---->s supported for the drop or
+ * 0 if no drop is possible.
+ **/
+GdkDragAction
+thunar_file_accepts_drop (ThunarFile *file,
+ GList *path_list,
+ GdkDragAction actions)
+{
+ ThunarVfsPath *parent_path;
+ ThunarVfsPath *path;
+ GList *lp;
+ guint n;
+
+ g_return_val_if_fail (THUNAR_IS_FILE (file), FALSE);
+
+ /* we can never drop an empty list */
+ if (G_UNLIKELY (path_list == NULL))
+ return 0;
+
+ /* check if we have a writable directory here or an executable file */
+ if (thunar_file_is_directory (file) && thunar_file_is_writable (file))
+ actions &= GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK | GDK_ACTION_ASK;
+ else if (thunar_file_is_executable (file))
+ actions &= GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK | GDK_ACTION_PRIVATE;
+ else
+ return 0;
+
+ /* determine the path of the file */
+ path = thunar_file_get_path (file);
+
+ /* check up to 500 of the paths (just in case somebody tries to
+ * drag around his music collection with 5000 files).
+ */
+ for (lp = path_list, n = 0; actions != 0 && lp != NULL && n < 500; lp = lp->next, ++n)
+ {
+ /* we cannot drop a file on itself */
+ if (G_UNLIKELY (thunar_vfs_path_equal (path, lp->data)))
+ return 0;
+
+ /* check whether source and destination are the same */
+ parent_path = thunar_vfs_path_get_parent (lp->data);
+ if (G_LIKELY (parent_path != NULL))
+ {
+ if (thunar_vfs_path_equal (path, parent_path))
+ return 0;
+ }
+ }
+
+ /* check if we can drop */
+ return actions;
+}
+
+
+
+/**
+ * thunar_file_get_display_name:
+ * @file : a #ThunarFile instance.
+ *
+ * Returns the @file name in the UTF-8 encoding, which is
+ * suitable for displaying the file name in the GUI.
+ *
+ * Return value: the @file name suitable for display.
+ **/
+const gchar*
+thunar_file_get_display_name (const ThunarFile *file)
+{
+ g_return_val_if_fail (THUNAR_IS_FILE (file), NULL);
+
+ /* root directory is always displayed as 'Filesystem' */
+ if (thunar_file_is_root (file))
+ return _("Filesystem");
+
+ return file->info->display_name;
+}
+
+
+
+/**
+ * thunar_file_get_special_name:
+ * @file : a #ThunarFile instance.
+ *
+ * Returns the special name for the @file, e.g. "Filesystem" for the #ThunarFile
+ * referring to "/" and so on. If there's no special name for this @file, the
+ * value of the "display-name" property will be returned instead.
+ *
+ * Return value: the special name of @file.
+ **/
+const gchar*
+thunar_file_get_special_name (const ThunarFile *file)
+{
+ g_return_val_if_fail (THUNAR_IS_FILE (file), NULL);
+
+ /* home dir has special name, root dir is handled in get_display_name() */
+ if (thunar_file_is_home (file))
+ return _("Home");
+
+ return thunar_file_get_display_name (file);
+}
+
+
+
+/**
+ * thunar_file_get_date:
+ * @file : a #ThunarFile instance.
+ * @date_type : the kind of date you are interested in.
+ *
+ * Queries the given @date_type from @file and returns the result.
+ *
+ * Return value: the time for @file of the given @date_type.
+ **/
+ThunarVfsFileTime
+thunar_file_get_date (const ThunarFile *file,
+ ThunarFileDateType date_type)
+{
+ g_return_val_if_fail (THUNAR_IS_FILE (file), FALSE);
+
+ switch (date_type)
+ {
+ case THUNAR_FILE_DATE_ACCESSED: return file->info->atime;
+ case THUNAR_FILE_DATE_CHANGED: return file->info->ctime;
+ case THUNAR_FILE_DATE_MODIFIED: return file->info->mtime;
+ default: g_assert_not_reached ();
+ }
+
+ return (ThunarVfsFileTime) -1;
+}
+
+
+
+/**
+ * thunar_file_get_date_string:
+ * @file : a #ThunarFile instance.
+ * @date_type : the kind of date you are interested to know about @file.
+ *
+ * Tries to determine the @date_type of @file, and if @file supports the
+ * given @date_type, it'll be formatted as string and returned. The
+ * caller is responsible for freeing the string using the g_free()
+ * function.
+ *
+ * Return value: the @date_type of @file formatted as string.
+ **/
+gchar*
+thunar_file_get_date_string (const ThunarFile *file,
+ ThunarFileDateType date_type)
+{
+ ThunarVfsFileTime time;
+#ifdef HAVE_LOCALTIME_R
+ struct tm tmbuf;
+#endif
+ struct tm *tm;
+ gchar *result;
+
+ g_return_val_if_fail (THUNAR_IS_FILE (file), NULL);
+
+ /* query the date on the given file */
+ time = thunar_file_get_date (file, date_type);
+
+ /* convert to local time */
+#ifdef HAVE_LOCALTIME_R
+ tm = localtime_r (&time, &tmbuf);
+#else
+ tm = localtime (&time);
+#endif
+
+ /* convert to string */
+ result = g_new (gchar, 20);
+ strftime (result, 20, "%Y-%m-%d %H:%M:%S", tm);
+
+ return result;
+}
+
+
+
+/**
+ * thunar_file_get_mode_string:
+ * @file : a #ThunarFile instance.
+ *
+ * Returns the mode of @file as text. You'll need to free
+ * the result using g_free() when you're done with it.
+ *
+ * Return value: the mode of @file as string.
+ **/
+gchar*
+thunar_file_get_mode_string (const ThunarFile *file)
+{
+ ThunarVfsFileType kind;
+ ThunarVfsFileMode mode;
+ gchar *text;
+
+ g_return_val_if_fail (THUNAR_IS_FILE (file), NULL);
+
+ kind = thunar_file_get_kind (file);
+ mode = thunar_file_get_mode (file);
+ text = g_new (gchar, 11);
+
+ /* file type */
+ switch (kind)
+ {
+ case THUNAR_VFS_FILE_TYPE_SOCKET: text[0] = 's'; break;
+ case THUNAR_VFS_FILE_TYPE_SYMLINK: text[0] = 'l'; break;
+ case THUNAR_VFS_FILE_TYPE_REGULAR: text[0] = '-'; break;
+ case THUNAR_VFS_FILE_TYPE_BLOCKDEV: text[0] = 'b'; break;
+ case THUNAR_VFS_FILE_TYPE_DIRECTORY: text[0] = 'd'; break;
+ case THUNAR_VFS_FILE_TYPE_CHARDEV: text[0] = 'c'; break;
+ case THUNAR_VFS_FILE_TYPE_FIFO: text[0] = 'f'; break;
+ case THUNAR_VFS_FILE_TYPE_UNKNOWN: text[0] = ' '; break;
+ default: g_assert_not_reached ();
+ }
+
+ /* permission flags */
+ text[1] = (mode & THUNAR_VFS_FILE_MODE_USR_READ) ? 'r' : '-';
+ text[2] = (mode & THUNAR_VFS_FILE_MODE_USR_WRITE) ? 'w' : '-';
+ text[3] = (mode & THUNAR_VFS_FILE_MODE_USR_EXEC) ? 'x' : '-';
+ text[4] = (mode & THUNAR_VFS_FILE_MODE_GRP_READ) ? 'r' : '-';
+ text[5] = (mode & THUNAR_VFS_FILE_MODE_GRP_WRITE) ? 'w' : '-';
+ text[6] = (mode & THUNAR_VFS_FILE_MODE_GRP_EXEC) ? 'x' : '-';
+ text[7] = (mode & THUNAR_VFS_FILE_MODE_OTH_READ) ? 'r' : '-';
+ text[8] = (mode & THUNAR_VFS_FILE_MODE_OTH_WRITE) ? 'w' : '-';
+ text[9] = (mode & THUNAR_VFS_FILE_MODE_OTH_EXEC) ? 'x' : '-';
+
+ /* special flags */
+ if (G_UNLIKELY (mode & THUNAR_VFS_FILE_MODE_SUID))
+ text[3] = 's';
+ if (G_UNLIKELY (mode & THUNAR_VFS_FILE_MODE_SGID))
+ text[6] = 's';
+ if (G_UNLIKELY (mode & THUNAR_VFS_FILE_MODE_STICKY))
+ text[9] = 't';
+
+ text[10] = '\0';
+
+ return text;
+}
+
+
+
+/**
+ * thunar_file_get_size_string:
+ * @file : a #ThunarFile instance.
+ *
+ * Returns the size of the file as text in a human readable
+ * format. You'll need to free the result using g_free()
+ * if you're done with it.
+ *
+ * Return value: the size of @file in a human readable
+ * format.
+ **/
+gchar*
+thunar_file_get_size_string (const ThunarFile *file)
+{
+ ThunarVfsFileSize size;
+
+ g_return_val_if_fail (THUNAR_IS_FILE (file), NULL);
+
+ size = thunar_file_get_size (file);
+
+ return thunar_vfs_humanize_size (size, NULL, 0);
+}
+
+
+
+/**
+ * thunar_file_get_volume:
+ * @file : a #ThunarFile instance.
+ * @volume_manager : the #ThunarVfsVolumeManager to use for the volume lookup.
+ *
+ * Attempts to determine the #ThunarVfsVolume on which @file is located
+ * using the given @volume_manager. If @file cannot determine it's volume,
+ * then %NULL will be returned. Else a #ThunarVfsVolume instance is returned,
+ * which is owned by @volume_manager and thereby the caller must not free
+ * the returned object.
+ *
+ * Return value: the #ThunarVfsVolume for @file in @volume_manager or %NULL.
+ **/
+ThunarVfsVolume*
+thunar_file_get_volume (const ThunarFile *file,
+ ThunarVfsVolumeManager *volume_manager)
+{
+ g_return_val_if_fail (THUNAR_IS_FILE (file), NULL);
+ g_return_val_if_fail (THUNAR_VFS_IS_VOLUME_MANAGER (volume_manager), NULL);
+ return thunar_vfs_volume_manager_get_volume_by_info (volume_manager, file->info);
+}
+
+
+
+/**
+ * thunar_file_get_group:
+ * @file : a #ThunarFile instance.
+ *
+ * Determines the #ThunarVfsGroup for @file. If there's no
+ * group associated with @file or if the system is unable to
+ * determine the group, %NULL will be returned.
+ *
+ * The caller is responsible for freeing the returned object
+ * using g_object_unref().
+ *
+ * Return value: the #ThunarVfsGroup for @file or %NULL.
+ **/
+ThunarVfsGroup*
+thunar_file_get_group (const ThunarFile *file)
+{
+ g_return_val_if_fail (THUNAR_IS_FILE (file), NULL);
+ return thunar_vfs_user_manager_get_group_by_id (user_manager, file->info->gid);
+}
+
+
+
+/**
+ * thunar_file_get_user:
+ * @file : a #ThunarFile instance.
+ *
+ * Determines the #ThunarVfsUser for @file. If there's no
+ * user associated with @file or if the system is unable
+ * to determine the user, %NULL will be returned.
+ *
+ * The caller is responsible for freeing the returned object
+ * using g_object_unref().
+ *
+ * Return value: the #ThunarVfsUser for @file or %NULL.
+ **/
+ThunarVfsUser*
+thunar_file_get_user (const ThunarFile *file)
+{
+ g_return_val_if_fail (THUNAR_IS_FILE (file), NULL);
+ return thunar_vfs_user_manager_get_user_by_id (user_manager, file->info->uid);
+}
+
+
+
+/**
+ * thunar_file_is_executable:
+ * @file : a #ThunarFile instance.
+ *
+ * Determines whether the owner of the current process is allowed
+ * to execute the @file (or enter the directory refered to by
+ * @file).
+ *
+ * Return value: %TRUE if @file can be executed.
+ **/
+gboolean
+thunar_file_is_executable (const ThunarFile *file)
+{
+ g_return_val_if_fail (THUNAR_IS_FILE (file), FALSE);
+ return ((file->info->flags & THUNAR_VFS_FILE_FLAGS_EXECUTABLE) != 0);
+}
+
+
+
+/**
+ * thunar_file_is_readable:
+ * @file : a #ThunarFile instance.
+ *
+ * Determines whether the owner of the current process is allowed
+ * to read the @file.
+ *
+ * Return value: %TRUE if @file can be read.
+ **/
+gboolean
+thunar_file_is_readable (const ThunarFile *file)
+{
+ g_return_val_if_fail (THUNAR_IS_FILE (file), FALSE);
+ return !thunar_file_denies_access_permission (file,
+ THUNAR_VFS_FILE_MODE_USR_READ,
+ THUNAR_VFS_FILE_MODE_GRP_READ,
+ THUNAR_VFS_FILE_MODE_OTH_READ);
+}
+
+
+
+/**
+ * thunar_file_is_renameable:
+ * @file : a #ThunarFile instance.
+ *
+ * Determines whether @file can be renamed using
+ * #thunar_file_rename(). Note that the return
+ * value is just a guess and #thunar_file_rename()
+ * may fail even if this method returns %TRUE.
+ *
+ * Return value: %TRUE if @file can be renamed.
+ **/
+gboolean
+thunar_file_is_renameable (const ThunarFile *file)
+{
+ gboolean renameable = FALSE;
+
+ g_return_val_if_fail (THUNAR_IS_FILE (file), FALSE);
+
+ /* we cannot rename root nodes */
+ if (G_LIKELY (!thunar_file_is_root (file)))
+ {
+ /* we just do a guess here, by checking whether the folder is writable */
+ file = thunar_file_get_parent (file, NULL);
+ if (G_LIKELY (file != NULL))
+ {
+ renameable = thunar_file_is_writable (file);
+ g_object_unref (G_OBJECT (file));
+ }
+ }
+
+ return renameable;
+}
+
+
+
+/**
+ * thunar_file_is_writable:
+ * @file : a #ThunarFile instance.
+ *
+ * Determines whether the owner of the current process is allowed
+ * to write the @file.
+ *
+ * Return value: %TRUE if @file can be read.
+ **/
+gboolean
+thunar_file_is_writable (const ThunarFile *file)
+{
+ g_return_val_if_fail (THUNAR_IS_FILE (file), FALSE);
+ return !thunar_file_denies_access_permission (file,
+ THUNAR_VFS_FILE_MODE_USR_WRITE,
+ THUNAR_VFS_FILE_MODE_GRP_WRITE,
+ THUNAR_VFS_FILE_MODE_OTH_WRITE);
+
+
+}
+
+
+
+/**
+ * thunar_file_get_actions:
+ * @file : a #ThunarFile instance.
+ * @window : a #GdkWindow instance.
+ *
+ * Returns additional #GtkAction<!---->s for @file.
+ *
+ * The caller is responsible to free the returned list
+ * using
+ * <informalexample><programlisting>
+ * g_list_foreach (list, (GFunc) g_object_unref, NULL);
+ * g_list_free (list);
+ * </programlisting></informalexample>
+ *
+ * Return value: additional #GtkAction<!---->s for @file.
+ **/
+GList*
+thunar_file_get_actions (ThunarFile *file,
+ GtkWidget *window)
+{
+ g_return_val_if_fail (THUNAR_IS_FILE (file), NULL);
+ g_return_val_if_fail (GTK_IS_WINDOW (window), NULL);
+ return NULL;
+}
+
+
+
+/**
+ * thunar_file_get_emblem_names:
+ * @file : a #ThunarFile instance.
+ *
+ * Determines the names of the emblems that should be displayed for
+ * @file. The returned list is owned by the caller, but the list
+ * items - the name strings - are owned by @file. So the caller
+ * must call g_list_free(), but don't g_free() the list items.
+ *
+ * Note that the strings contained in the returned list are
+ * not garantied to exist over the next iteration of the main
+ * loop. So in case you need the list of emblem names for
+ * a longer time, you'll need to take a copy of the strings.
+ *
+ * Return value: the names of the emblems for @file.
+ **/
+GList*
+thunar_file_get_emblem_names (ThunarFile *file)
+{
+ const ThunarVfsInfo *info = file->info;
+ const ThunarVfsPath *parent;
+ const gchar *emblem_string;
+ gchar **emblem_names;
+ GList *emblems = NULL;
+
+ g_return_val_if_fail (THUNAR_IS_FILE (file), NULL);
+
+ /* check if we need to load the emblems_list from the metafile */
+ if (G_UNLIKELY ((file->flags & THUNAR_FILE_OWNS_EMBLEM_NAMES) == 0))
+ {
+ emblem_string = thunar_file_get_metadata (file, THUNAR_METAFILE_KEY_EMBLEMS, "");
+ if (G_UNLIKELY (*emblem_string != '\0'))
+ {
+ emblem_names = g_strsplit (emblem_string, ";", -1);
+ g_object_set_qdata_full (G_OBJECT (file), thunar_file_emblem_names_quark,
+ emblem_names, (GDestroyNotify) g_strfreev);
+ }
+ file->flags |= THUNAR_FILE_OWNS_EMBLEM_NAMES;
+ }
+
+ /* determine the custom emblems */
+ emblem_names = g_object_get_qdata (G_OBJECT (file), thunar_file_emblem_names_quark);
+ if (G_UNLIKELY (emblem_names != NULL))
+ {
+ for (; *emblem_names != NULL; ++emblem_names)
+ emblems = g_list_append (emblems, *emblem_names);
+ }
+
+ if (G_UNLIKELY (strcmp (info->display_name, "Desktop") == 0))
+ {
+ parent = thunar_vfs_path_get_parent (info->path);
+ if (G_LIKELY (parent != NULL) && thunar_vfs_path_is_home (parent))
+ emblems = g_list_prepend (emblems, THUNAR_FILE_EMBLEM_NAME_DESKTOP);
+ }
+
+ if ((info->flags & THUNAR_VFS_FILE_FLAGS_SYMLINK) != 0)
+ emblems = g_list_prepend (emblems, THUNAR_FILE_EMBLEM_NAME_SYMBOLIC_LINK);
+
+ if (!thunar_file_is_readable (file))
+ emblems = g_list_prepend (emblems, THUNAR_FILE_EMBLEM_NAME_CANT_READ);
+
+ return emblems;
+}
+
+
+
+/**
+ * thunar_file_set_emblem_names:
+ * @file : a #ThunarFile instance.
+ * @emblem_names : a #GList of emblem names.
+ *
+ * Sets the custom emblem name list of @file to @emblem_names
+ * and stores them in the @file<!---->s metadata.
+ **/
+void
+thunar_file_set_emblem_names (ThunarFile *file,
+ GList *emblem_names)
+{
+ GList *lp;
+ gchar **emblems;
+ gchar *emblems_string;
+ gint n;
+
+ g_return_if_fail (THUNAR_IS_FILE (file));
+
+ /* allocate a zero-terminated array for the emblem names */
+ emblems = g_new0 (gchar *, g_list_length (emblem_names) + 1);
+
+ /* turn the emblem_names list into a zero terminated array */
+ for (lp = emblem_names, n = 0; lp != NULL; lp = lp->next)
+ {
+ /* skip special emblems */
+ if (strcmp (lp->data, THUNAR_FILE_EMBLEM_NAME_SYMBOLIC_LINK) == 0
+ || strcmp (lp->data, THUNAR_FILE_EMBLEM_NAME_CANT_READ) == 0
+ || strcmp (lp->data, THUNAR_FILE_EMBLEM_NAME_CANT_WRITE) == 0
+ || strcmp (lp->data, THUNAR_FILE_EMBLEM_NAME_DESKTOP) == 0)
+ continue;
+
+ /* add the emblem to our list */
+ emblems[n++] = g_strdup (lp->data);
+ }
+
+ /* associate the emblems with the file */
+ file->flags |= THUNAR_FILE_OWNS_EMBLEM_NAMES;
+ g_object_set_qdata_full (G_OBJECT (file), thunar_file_emblem_names_quark,
+ emblems, (GDestroyNotify) g_strfreev);
+
+ /* store the emblem list in the file's metadata */
+ emblems_string = g_strjoinv (";", emblems);
+ thunar_file_set_metadata (file, THUNAR_METAFILE_KEY_EMBLEMS, emblems_string, "");
+ g_free (emblems_string);
+
+ /* tell everybody that we have changed */
+ thunar_file_changed (file);
+}
+
+
+
+/**
+ * thunar_file_get_icon_name:
+ * @file : a #ThunarFile instance.
+ * @icon_state : the state of the @file<!---->s icon we are interested in.
+ * @icon_theme : the #GtkIconTheme on which to lookup up the icon name.
+ *
+ * Returns the name of the icon that can be used to present @file, based
+ * on the given @icon_state and @icon_theme.
+ *
+ * Return value: the icon name for @file in @icon_theme.
+ **/
+const gchar*
+thunar_file_get_icon_name (const ThunarFile *file,
+ ThunarFileIconState icon_state,
+ GtkIconTheme *icon_theme)
+{
+ const gchar *icon_name;
+
+ g_return_val_if_fail (THUNAR_IS_FILE (file), NULL);
+ g_return_val_if_fail (GTK_IS_ICON_THEME (icon_theme), NULL);
+
+ /* special icon for the root node */
+ if (G_UNLIKELY (thunar_file_is_root (file))
+ && gtk_icon_theme_has_icon (icon_theme, "gnome-dev-harddisk"))
+ {
+ return "gnome-dev-harddisk";
+ }
+
+ /* special icon for the home node */
+ if (G_UNLIKELY (thunar_file_is_home (file))
+ && gtk_icon_theme_has_icon (icon_theme, "gnome-fs-home"))
+ {
+ return "gnome-fs-home";
+ }
+
+ /* try to be smart when determining icons for executable files
+ * in that we use the name of the file as icon name (which will
+ * work for quite a lot of binaries, e.g. 'Terminal', 'mousepad',
+ * 'Thunar', 'xfmedia', etc.).
+ */
+ if (G_UNLIKELY (thunar_file_is_executable (file)))
+ {
+ icon_name = thunar_vfs_path_get_name (file->info->path);
+ if (G_UNLIKELY (gtk_icon_theme_has_icon (icon_theme, icon_name)))
+ return icon_name;
+ }
+
+ /* default is the mime type icon */
+ icon_name = thunar_vfs_mime_info_lookup_icon_name (file->info->mime_info, icon_theme);
+
+ /* check if we have an accept icon for the icon we found */
+ if (icon_state == THUNAR_FILE_ICON_STATE_DROP && strcmp (icon_name, "gnome-fs-directory") == 0
+ && gtk_icon_theme_has_icon (icon_theme, "gnome-fs-directory-accept"))
+ {
+ return "gnome-fs-directory-accept";
+ }
+
+ return icon_name;
+}
+
+
+
+/**
+ * thunar_file_get_metadata:
+ * @file : a #ThunarFile instance.
+ * @key : a #ThunarMetaFileKey.
+ * @default_value : the default value for @key in @file
+ * which is returned when @key isn't
+ * explicitly set for @file (may be
+ * %NULL).
+ *
+ * Returns the metadata available for @key in @file.
+ *
+ * The returned string is owned by the @file and uses
+ * an internal buffer that will be overridden on the
+ * next call to any of the metadata retrieval methods.
+ *
+ * Return value: the metadata available for @key in @file
+ * or @default_value if @key is not set for
+ * @file.
+ **/
+const gchar*
+thunar_file_get_metadata (ThunarFile *file,
+ ThunarMetafileKey key,
+ const gchar *default_value)
+{
+ g_return_val_if_fail (THUNAR_IS_FILE (file), NULL);
+ g_return_val_if_fail (key < THUNAR_METAFILE_N_KEYS, NULL);
+
+ return thunar_metafile_fetch (thunar_file_get_metafile (file),
+ file->info->path, key,
+ default_value);
+}
+
+
+
+/**
+ * thunar_file_set_metadata:
+ * @file : a #ThunarFile instance.
+ * @key : a #ThunarMetafileKey.
+ * @value : the new value for @key on @file.
+ * @default_value : the default for @key on @file.
+ *
+ * Sets the metadata available for @key in @file to
+ * the given @value.
+ **/
+void
+thunar_file_set_metadata (ThunarFile *file,
+ ThunarMetafileKey key,
+ const gchar *value,
+ const gchar *default_value)
+{
+ g_return_if_fail (THUNAR_IS_FILE (file));
+ g_return_if_fail (key < THUNAR_METAFILE_N_KEYS);
+ g_return_if_fail (default_value != NULL);
+ g_return_if_fail (value != NULL);
+
+ thunar_metafile_store (thunar_file_get_metafile (file),
+ file->info->path, key, value,
+ default_value);
+}
+
+
+
+/**
+ * thunar_file_watch:
+ * @file : a #ThunarFile instance.
+ *
+ * Tells @file to watch itself for changes. Not all #ThunarFile
+ * implementations must support this, but if a #ThunarFile
+ * implementation implements the thunar_file_watch() method,
+ * it must also implement the thunar_file_unwatch() method.
+ *
+ * The #ThunarFile base class implements automatic "ref
+ * counting" for watches, that says, you can call thunar_file_watch()
+ * multiple times, but the virtual method will be invoked only
+ * once. This also means that you MUST call thunar_file_unwatch()
+ * for every thunar_file_watch() invokation, else the application
+ * will abort.
+ **/
+void
+thunar_file_watch (ThunarFile *file)
+{
+ ThunarVfsMonitorHandle *handle;
+ gint watch_count;
+
+ g_return_if_fail (THUNAR_IS_FILE (file));
+ g_return_if_fail (THUNAR_FILE_GET_WATCH_COUNT (file) >= 0);
+
+ watch_count = THUNAR_FILE_GET_WATCH_COUNT (file);
+
+ if (++watch_count == 1)
+ {
+ /* take a reference on the VFS monitor for this instance */
+ if (G_LIKELY (monitor == NULL))
+ {
+ monitor = thunar_vfs_monitor_get_default ();
+ g_object_add_weak_pointer (G_OBJECT (monitor), (gpointer) &monitor);
+ }
+ else
+ {
+ g_object_ref (G_OBJECT (monitor));
+ }
+
+ /* add us to the file monitor */
+ handle = thunar_vfs_monitor_add_file (monitor, file->info->path, thunar_file_monitor, file);
+ g_object_set_qdata_full (G_OBJECT (file), thunar_file_watch_handle_quark, handle, thunar_file_watch_free);
+ }
+
+ THUNAR_FILE_SET_WATCH_COUNT (file, watch_count);
+}
+
+
+
+/**
+ * thunar_file_unwatch:
+ * @file : a #ThunarFile instance.
+ *
+ * See thunar_file_watch() for a description of how watching
+ * #ThunarFile<!---->s works.
+ **/
+void
+thunar_file_unwatch (ThunarFile *file)
+{
+ gint watch_count;
+
+ g_return_if_fail (THUNAR_IS_FILE (file));
+ g_return_if_fail (THUNAR_FILE_GET_WATCH_COUNT (file) > 0);
+
+ watch_count = THUNAR_FILE_GET_WATCH_COUNT (file);
+
+ if (--watch_count == 0)
+ {
+ /* just unset the watch handle */
+ g_object_set_qdata (G_OBJECT (file), thunar_file_watch_handle_quark, NULL);
+ }
+
+ THUNAR_FILE_SET_WATCH_COUNT (file, watch_count);
+}
+
+
+
+/**
+ * thunar_file_reload:
+ * @file : a #ThunarFile instance.
+ *
+ * Tells @file to reload its internal state, e.g. by reacquiring
+ * the file info from the underlying media.
+ *
+ * You must be able to handle the case that @file is
+ * destroyed during the reload call.
+ **/
+void
+thunar_file_reload (ThunarFile *file)
+{
+ ThunarVfsInfo *info;
+
+ g_return_if_fail (THUNAR_IS_FILE (file));
+
+ /* re-query the file info */
+ info = thunar_vfs_info_new_for_path (file->info->path, NULL);
+ if (G_UNLIKELY (info == NULL))
+ {
+ /* the file is no longer present */
+ thunar_file_destroy (file);
+ }
+ else
+ {
+ /* apply the new info... */
+ thunar_vfs_info_unref (file->info);
+ file->info = info;
+
+ /* ... and tell others */
+ thunar_file_changed (file);
+ }
+}
+
+
+
+/**
+ * thunar_file_changed:
+ * @file : a #ThunarFile instance.
+ *
+ * Emits the ::changed signal on @file. This function is meant to be called
+ * by derived classes whenever they notice changes to the @file.
+ **/
+void
+thunar_file_changed (ThunarFile *file)
+{
+ g_return_if_fail (THUNAR_IS_FILE (file));
+ g_signal_emit (G_OBJECT (file), file_signals[CHANGED], 0);
+}
+
+
+
+/**
+ * thunar_file_destroy:
+ * @file : a #ThunarFile instance.
+ *
+ * Emits the ::destroy signal notifying all reference holders
+ * that they should release their references to the @file.
+ *
+ * This method is very similar to what gtk_object_destroy()
+ * does for #GtkObject<!---->s.
+ **/
+void
+thunar_file_destroy (ThunarFile *file)
+{
+ g_return_if_fail (THUNAR_IS_FILE (file));
+
+ if (G_LIKELY ((file->flags & THUNAR_FILE_IN_DESTRUCTION) == 0))
+ g_object_run_dispose (G_OBJECT (file));
+}
+
+
+
+/**
+ * thunar_file_is_hidden:
+ * @file : a #ThunarFile instance.
+ *
+ * Checks whether @file can be considered a hidden file.
+ *
+ * Return value: %TRUE if @file is a hidden file, else %FALSE.
+ **/
+gboolean
+thunar_file_is_hidden (const ThunarFile *file)
+{
+ const gchar *p;
+
+ g_return_val_if_fail (THUNAR_IS_FILE (file), FALSE);
+
+ p = file->info->display_name;
+ if (*p != '.' && *p != '\0')
+ {
+ for (; p[1] != '\0'; ++p)
+ ;
+ return (*p == '~');
+ }
+
+ return TRUE;
+}
+
+
+
+/**
+ * thunar_file_cache_lookup:
+ * @path : a #ThunarVfsPath.
+ *
+ * Looks up the #ThunarFile for @path in the internal file
+ * cache and returns the file present for @path in the
+ * cache or %NULL if no #ThunarFile is cached for @path.
+ *
+ * Note that no reference is taken for the caller.
+ *
+ * This method should not be used but in very rare cases.
+ * Consider using thunar_file_get_for_path() instead.
+ *
+ * Return value: the #ThunarFile for @path in the internal
+ * cache, or %NULL.
+ **/
+ThunarFile*
+thunar_file_cache_lookup (const ThunarVfsPath *path)
+{
+ /* allocate the ThunarFile cache on-demand */
+ if (G_UNLIKELY (file_cache == NULL))
+ file_cache = g_hash_table_new_full (thunar_vfs_path_hash, thunar_vfs_path_equal, (GDestroyNotify) thunar_vfs_path_unref, NULL);
+
+ return g_hash_table_lookup (file_cache, path);
+}
+
+
+
+/**
+ * thunar_file_list_copy:
+ * @file_list : a list of #ThunarFile<!---->s.
+ *
+ * Returns a deep-copy of @file_list, which must be
+ * freed using thunar_file_list_free().
+ *
+ * Return value: a deep copy of @file_list.
+ **/
+GList*
+thunar_file_list_copy (const GList *file_list)
+{
+ GList *list = g_list_copy ((GList *) file_list);
+ g_list_foreach (list, (GFunc) g_object_ref, NULL);
+ return list;
+}
+
+
+
+/**
+ * thunar_file_list_free:
+ * @file_list : a list of #ThunarFile<!---->s.
+ *
+ * Unrefs the #ThunarFile<!---->s contained in @file_list
+ * and frees the list itself.
+ **/
+void
+thunar_file_list_free (GList *file_list)
+{
+ g_list_foreach (file_list, (GFunc) g_object_unref, NULL);
+ g_list_free (file_list);
+}
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-file.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-file.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-file.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,520 @@
+/* $Id: thunar-file.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_FILE_H__
+#define __THUNAR_FILE_H__
+
+#include <thunar/thunar-metafile.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarFileClass ThunarFileClass;
+typedef struct _ThunarFile ThunarFile;
+
+#define THUNAR_TYPE_FILE (thunar_file_get_type ())
+#define THUNAR_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_FILE, ThunarFile))
+#define THUNAR_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_FILE, ThunarFileClass))
+#define THUNAR_IS_FILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_FILE))
+#define THUNAR_IS_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_FILE))
+#define THUNAR_FILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_FILE, ThunarFileClass))
+
+/**
+ * ThunarFileDateType:
+ * @THUNAR_FILE_DATE_ACCESSED : date of last access to the file.
+ * @THUNAR_FILE_DATE_CHANGED : date of last change to the file meta data or the content.
+ * @THUNAR_FILE_DATE_MODIFIED : date of last modification of the file's content.
+ *
+ * The various dates that can be queried about a #ThunarFile. Note, that not all
+ * #ThunarFile implementations support all types listed above. See the documentation
+ * of the thunar_file_get_date() method for details.
+ **/
+typedef enum
+{
+ THUNAR_FILE_DATE_ACCESSED,
+ THUNAR_FILE_DATE_CHANGED,
+ THUNAR_FILE_DATE_MODIFIED,
+} ThunarFileDateType;
+
+/**
+ * ThunarFileIconState:
+ * @THUNAR_FILE_ICON_STATE_DEFAULT : the default icon for the file.
+ * @THUNAR_FILE_ICON_STATE_DROP : the drop accept icon for the file.
+ *
+ * The various file icon states that are used within the file manager
+ * views.
+ **/
+typedef enum /*< flags >*/
+{
+ THUNAR_FILE_ICON_STATE_DEFAULT,
+ THUNAR_FILE_ICON_STATE_DROP,
+} ThunarFileIconState;
+
+/**
+ * ThunarFileThumbState:
+ * @THUNAR_FILE_THUMB_STATE_MASK : the mask to extract the thumbnail state.
+ * @THUNAR_FILE_THUMB_STATE_UNKNOWN : unknown whether there's a thumbnail.
+ * @THUNAR_FILE_THUMB_STATE_NONE : no thumbnail is available.
+ * @THUNAR_FILE_THUMB_STATE_READY : a thumbnail is available.
+ * @THUNAR_FILE_THUMB_STATE_LOADING : a thumbnail is being generated.
+ *
+ * The state of the thumbnailing for a given #ThunarFile.
+ **/
+typedef enum /*< flags >*/
+{
+ THUNAR_FILE_THUMB_STATE_MASK = 0x03,
+ THUNAR_FILE_THUMB_STATE_UNKNOWN = 0x00,
+ THUNAR_FILE_THUMB_STATE_NONE = 0x01,
+ THUNAR_FILE_THUMB_STATE_READY = 0x02,
+ THUNAR_FILE_THUMB_STATE_LOADING = 0x03,
+} ThunarFileThumbState;
+
+#define THUNAR_FILE_EMBLEM_NAME_SYMBOLIC_LINK "emblem-symbolic-link"
+#define THUNAR_FILE_EMBLEM_NAME_CANT_READ "emblem-noread"
+#define THUNAR_FILE_EMBLEM_NAME_CANT_WRITE "emblem-nowrite"
+#define THUNAR_FILE_EMBLEM_NAME_DESKTOP "emblem-desktop"
+
+struct _ThunarFileClass
+{
+ GObjectClass __parent__;
+
+ /* signals */
+ void (*changed) (ThunarFile *file);
+ void (*destroy) (ThunarFile *file);
+ void (*renamed) (ThunarFile *file);
+};
+
+struct _ThunarFile
+{
+ GObject __parent__;
+
+ /*< private >*/
+ ThunarVfsInfo *info;
+ guint flags;
+};
+
+GType thunar_file_get_type (void) G_GNUC_CONST;
+
+ThunarFile *thunar_file_get_for_info (ThunarVfsInfo *info);
+ThunarFile *thunar_file_get_for_path (ThunarVfsPath *path,
+ GError **error);
+
+static inline gboolean thunar_file_has_parent (const ThunarFile *file);
+ThunarFile *thunar_file_get_parent (const ThunarFile *file,
+ GError **error);
+
+gboolean thunar_file_execute (ThunarFile *file,
+ GdkScreen *screen,
+ GList *path_list,
+ GError **error);
+
+gboolean thunar_file_rename (ThunarFile *file,
+ const gchar *name,
+ GError **error);
+
+GdkDragAction thunar_file_accepts_drop (ThunarFile *file,
+ GList *path_list,
+ GdkDragAction actions);
+
+const gchar *thunar_file_get_display_name (const ThunarFile *file);
+const gchar *thunar_file_get_special_name (const ThunarFile *file);
+
+static inline ThunarVfsInfo *thunar_file_get_info (const ThunarFile *file);
+static inline ThunarVfsPath *thunar_file_get_path (const ThunarFile *file);
+static inline ThunarVfsMimeInfo *thunar_file_get_mime_info (const ThunarFile *file);
+ThunarVfsFileTime thunar_file_get_date (const ThunarFile *file,
+ ThunarFileDateType date_type);
+static inline ThunarVfsFileType thunar_file_get_kind (const ThunarFile *file);
+static inline ThunarVfsFileMode thunar_file_get_mode (const ThunarFile *file);
+static inline ThunarVfsFileSize thunar_file_get_size (const ThunarFile *file);
+
+gchar *thunar_file_get_date_string (const ThunarFile *file,
+ ThunarFileDateType date_type);
+gchar *thunar_file_get_mode_string (const ThunarFile *file);
+gchar *thunar_file_get_size_string (const ThunarFile *file);
+
+ThunarVfsVolume *thunar_file_get_volume (const ThunarFile *file,
+ ThunarVfsVolumeManager *volume_manager);
+
+ThunarVfsGroup *thunar_file_get_group (const ThunarFile *file);
+ThunarVfsUser *thunar_file_get_user (const ThunarFile *file);
+
+gboolean thunar_file_is_executable (const ThunarFile *file);
+gboolean thunar_file_is_readable (const ThunarFile *file);
+gboolean thunar_file_is_renameable (const ThunarFile *file);
+gboolean thunar_file_is_writable (const ThunarFile *file);
+
+GList *thunar_file_get_actions (ThunarFile *file,
+ GtkWidget *window);
+
+GList *thunar_file_get_emblem_names (ThunarFile *file);
+void thunar_file_set_emblem_names (ThunarFile *file,
+ GList *emblem_names);
+
+static inline const gchar *thunar_file_get_custom_icon (const ThunarFile *file);
+const gchar *thunar_file_get_icon_name (const ThunarFile *file,
+ ThunarFileIconState icon_state,
+ GtkIconTheme *icon_theme);
+
+const gchar *thunar_file_get_metadata (ThunarFile *file,
+ ThunarMetafileKey key,
+ const gchar *default_value);
+void thunar_file_set_metadata (ThunarFile *file,
+ ThunarMetafileKey key,
+ const gchar *value,
+ const gchar *default_value);
+static inline gboolean thunar_file_get_boolean_metadata (ThunarFile *file,
+ ThunarMetafileKey key,
+ gboolean default_value);
+static inline void thunar_file_set_boolean_metadata (ThunarFile *file,
+ ThunarMetafileKey key,
+ gboolean value,
+ gboolean default_value);
+
+void thunar_file_watch (ThunarFile *file);
+void thunar_file_unwatch (ThunarFile *file);
+
+void thunar_file_reload (ThunarFile *file);
+
+void thunar_file_changed (ThunarFile *file);
+void thunar_file_destroy (ThunarFile *file);
+
+static inline gboolean thunar_file_is_directory (const ThunarFile *file);
+static inline gboolean thunar_file_is_home (const ThunarFile *file);
+gboolean thunar_file_is_hidden (const ThunarFile *file);
+static inline gboolean thunar_file_is_regular (const ThunarFile *file);
+static inline gboolean thunar_file_is_root (const ThunarFile *file);
+static inline gboolean thunar_file_is_symlink (const ThunarFile *file);
+
+
+ThunarFile *thunar_file_cache_lookup (const ThunarVfsPath *path);
+
+
+/* these methods are provided for ThunarIconFactory */
+static inline ThunarFileThumbState thunar_file_get_thumb_state (const ThunarFile *file);
+static inline void thunar_file_set_thumb_state (ThunarFile *file,
+ ThunarFileThumbState thumb_state);
+
+
+GList *thunar_file_list_copy (const GList *file_list);
+void thunar_file_list_free (GList *file_list);
+
+
+/**
+ * thunar_file_has_parent:
+ * @file : a #ThunarFile instance.
+ *
+ * Checks whether it is possible to determine the parent #ThunarFile
+ * for @file.
+ *
+ * Return value: whether @file has a parent.
+ **/
+static inline gboolean
+thunar_file_has_parent (const ThunarFile *file)
+{
+ g_return_val_if_fail (THUNAR_IS_FILE (file), FALSE);
+ return !thunar_file_is_root (file);
+}
+
+/**
+ * thunar_file_get_info:
+ * @file : a #ThunarFile instance.
+ *
+ * Returns the #ThunarVfsInfo for @file.
+ *
+ * Note, that there's no reference taken for the caller on the
+ * returned #ThunarVfsInfo, so if you need the object for a longer
+ * perioud, you'll need to take a reference yourself using the
+ * thunar_vfs_info_ref() method.
+ *
+ * Return value: the #ThunarVfsInfo for @file.
+ **/
+static inline ThunarVfsInfo*
+thunar_file_get_info (const ThunarFile *file)
+{
+ g_return_val_if_fail (THUNAR_IS_FILE (file), NULL);
+ return file->info;
+}
+
+/**
+ * thunar_file_get_path:
+ * @file : a #ThunarFile instance.
+ *
+ * Returns the #ThunarVfsPath, that refers to the location of the @file.
+ *
+ * Note, that there's no reference taken for the caller on the
+ * returned #ThunarVfsPath, so if you need the object for a longer
+ * period, you'll need to take a reference yourself using the
+ * thunar_vfs_path_ref() function.
+ *
+ * Return value: the path to the @file.
+ **/
+static inline ThunarVfsPath*
+thunar_file_get_path (const ThunarFile *file)
+{
+ g_return_val_if_fail (THUNAR_IS_FILE (file), NULL);
+ return file->info->path;
+}
+
+/**
+ * thunar_file_get_mime_info:
+ * @file : a #ThunarFile instance.
+ *
+ * Returns the MIME type information for the given @file object. This
+ * function is garantied to always return a valid #ThunarVfsMimeInfo.
+ *
+ * Note, that there's no reference taken for the caller on the
+ * returned #ThunarVfsMimeInfo, so if you need the object for a
+ * longer period, you'll need to take a reference yourself using
+ * the thunar_vfs_mime_info_ref() function.
+ *
+ * Return value: the MIME type.
+ **/
+static inline ThunarVfsMimeInfo*
+thunar_file_get_mime_info (const ThunarFile *file)
+{
+ g_return_val_if_fail (THUNAR_IS_FILE (file), NULL);
+ return file->info->mime_info;
+}
+
+/**
+ * thunar_file_get_kind:
+ * @file : a #ThunarFile instance.
+ *
+ * Returns the kind of @file.
+ *
+ * Return value: the kind of @file.
+ **/
+static inline ThunarVfsFileType
+thunar_file_get_kind (const ThunarFile *file)
+{
+ g_return_val_if_fail (THUNAR_IS_FILE (file), THUNAR_VFS_FILE_TYPE_UNKNOWN);
+ return file->info->type;
+}
+
+/**
+ * thunar_file_get_mode:
+ * @file : a #ThunarFile instance.
+ *
+ * Returns the permission bits of @file.
+ *
+ * Return value: the permission bits of @file.
+ **/
+static inline ThunarVfsFileMode
+thunar_file_get_mode (const ThunarFile *file)
+{
+ g_return_val_if_fail (THUNAR_IS_FILE (file), 0);
+ return file->info->mode;
+}
+
+/**
+ * thunar_file_get_size:
+ * @file : a #ThunarFile instance.
+ *
+ * Tries to determine the size of @file in bytes and
+ * returns the size.
+ *
+ * Return value: the size of @file in bytes.
+ **/
+static inline ThunarVfsFileSize
+thunar_file_get_size (const ThunarFile *file)
+{
+ g_return_val_if_fail (THUNAR_IS_FILE (file), FALSE);
+ return file->info->size;
+}
+
+/**
+ * thunar_file_get_custom_icon:
+ * @file : a #ThunarFile instance.
+ *
+ * Queries the custom icon from @file if any,
+ * else %NULL is returned. The custom icon
+ * can be either a themed icon name or an
+ * absolute path to an icon file in the local
+ * file system.
+ *
+ * Return value: the custom icon for @file
+ * or %NULL.
+ **/
+static inline const gchar*
+thunar_file_get_custom_icon (const ThunarFile *file)
+{
+ g_return_val_if_fail (THUNAR_IS_FILE (file), NULL);
+ return thunar_vfs_info_get_custom_icon (file->info);
+}
+
+/**
+ * thunar_file_get_boolean_metadata:
+ * @file : a #ThunarFile instance.
+ * @key : a #ThunarMetafileKey.
+ * @default_value : the default value.
+ *
+ * Specialized version of thunar_file_get_metadata()
+ * for boolean metadata values.
+ *
+ * Return value: the metadata for @key in @file if @key
+ * exists, or @default_value.
+ **/
+static inline gboolean
+thunar_file_get_boolean_metadata (ThunarFile *file,
+ ThunarMetafileKey key,
+ gboolean default_value)
+{
+ const gchar *value;
+ value = thunar_file_get_metadata (file, key, default_value ? "true" : "false");
+ return (value[0] == 't' && value[1] == 'r'
+ && value[2] == 'u' && value[3] == 'e'
+ && value[4] == '\0');
+}
+
+
+
+/**
+ * thunar_file_set_boolean_metadata:
+ * @file : a #ThunarFile instance.
+ * @key : a #ThunarMetafileKey.
+ * @value : the new value.
+ * @default_value : the default value for @key.
+ *
+ * Specialized version of thunar_file_set_metadata()
+ * for boolean metadata values.
+ **/
+static inline void
+thunar_file_set_boolean_metadata (ThunarFile *file,
+ ThunarMetafileKey key,
+ gboolean value,
+ gboolean default_value)
+{
+ thunar_file_set_metadata (file, key, value ? "true" : "false",
+ default_value ? "true" : "false");
+}
+
+
+
+/**
+ * thunar_file_is_directory:
+ * @file : a #ThunarFile instance.
+ *
+ * Checks whether @file refers to a directory.
+ *
+ * Return value: %TRUE if @file is a directory.
+ **/
+static inline gboolean
+thunar_file_is_directory (const ThunarFile *file)
+{
+ g_return_val_if_fail (THUNAR_IS_FILE (file), FALSE);
+ return (file->info->type == THUNAR_VFS_FILE_TYPE_DIRECTORY);
+}
+
+/**
+ * thunar_file_is_home:
+ * @file : a #ThunarFile.
+ *
+ * Checks whether @file refers to the users home directory.
+ *
+ * Return value: %TRUE if @file is the users home directory.
+ **/
+static inline gboolean
+thunar_file_is_home (const ThunarFile *file)
+{
+ g_return_val_if_fail (THUNAR_IS_FILE (file), FALSE);
+ return thunar_vfs_path_is_home (file->info->path);
+}
+
+/**
+ * thunar_file_is_regular:
+ * @file : a #ThunarFile.
+ *
+ * Checks whether @file refers to a regular file.
+ *
+ * Return value: %TRUE if @file is a regular file.
+ **/
+static inline gboolean
+thunar_file_is_regular (const ThunarFile *file)
+{
+ g_return_val_if_fail (THUNAR_IS_FILE (file), FALSE);
+ return (file->info->type == THUNAR_VFS_FILE_TYPE_REGULAR);
+}
+
+/**
+ * thunar_file_is_root:
+ * @file : a #ThunarFile.
+ *
+ * Checks whether @file refers to the root directory.
+ *
+ * Return value: %TRUE if @file is the root directory.
+ **/
+static inline gboolean
+thunar_file_is_root (const ThunarFile *file)
+{
+ g_return_val_if_fail (THUNAR_IS_FILE (file), FALSE);
+ return thunar_vfs_path_is_root (file->info->path);
+}
+
+/**
+ * thunar_file_is_symlink:
+ * @file : a #ThunarFile.
+ *
+ * Returns %TRUE if @file is a symbolic link.
+ *
+ * Return value: %TRUE if @file is a symbolic link.
+ **/
+static inline gboolean
+thunar_file_is_symlink (const ThunarFile *file)
+{
+ g_return_val_if_fail (THUNAR_IS_FILE (file), FALSE);
+ return ((file->info->flags & THUNAR_VFS_FILE_FLAGS_SYMLINK) != 0);
+}
+
+
+
+/**
+ * thunar_file_get_thumb_state:
+ * @file : a #ThunarFile.
+ *
+ * Returns the current #ThunarFileThumbState for @file.
+ *
+ * Return value: the #ThunarFileThumbState for @file.
+ **/
+static inline ThunarFileThumbState
+thunar_file_get_thumb_state (const ThunarFile *file)
+{
+ g_return_val_if_fail (THUNAR_IS_FILE (file), THUNAR_FILE_THUMB_STATE_NONE);
+ return (file->flags & THUNAR_FILE_THUMB_STATE_MASK);
+}
+
+/**
+ * thunar_file_set_thumb_state:
+ * @file : a #ThunarFile.
+ * @thumb_state : the new #ThunarFileThumbState.
+ *
+ * Sets the #ThunarFileThumbState for @file
+ * to @thumb_state.
+ **/
+static inline void
+thunar_file_set_thumb_state (ThunarFile *file,
+ ThunarFileThumbState thumb_state)
+{
+ g_return_if_fail (THUNAR_IS_FILE (file));
+ file->flags = (file->flags & ~THUNAR_FILE_THUMB_STATE_MASK) | thumb_state;
+}
+
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_FILE_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-folder.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-folder.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-folder.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,595 @@
+/* $Id: thunar-folder.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <thunar/thunar-folder.h>
+
+
+
+/* property identifiers */
+enum
+{
+ PROP_0,
+ PROP_LOADING,
+};
+
+/* signal identifiers */
+enum
+{
+ ERROR,
+ FILES_ADDED,
+ FILES_REMOVED,
+ LAST_SIGNAL,
+};
+
+
+
+static void thunar_folder_class_init (ThunarFolderClass *klass);
+static void thunar_folder_init (ThunarFolder *folder);
+static void thunar_folder_finalize (GObject *object);
+static void thunar_folder_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void thunar_folder_error (ThunarVfsJob *job,
+ GError *error,
+ ThunarFolder *folder);
+static void thunar_folder_infos_ready (ThunarVfsJob *job,
+ GList *infos,
+ ThunarFolder *folder);
+static void thunar_folder_finished (ThunarVfsJob *job,
+ ThunarFolder *folder);
+static void thunar_folder_corresponding_file_destroy (ThunarFile *file,
+ ThunarFolder *folder);
+static void thunar_folder_corresponding_file_renamed (ThunarFile *file,
+ ThunarFolder *folder);
+static void thunar_folder_file_destroy (ThunarFile *file,
+ ThunarFolder *folder);
+static void thunar_folder_monitor (ThunarVfsMonitor *monitor,
+ ThunarVfsMonitorHandle *handle,
+ ThunarVfsMonitorEvent event,
+ ThunarVfsPath *handle_path,
+ ThunarVfsPath *event_path,
+ gpointer user_data);
+
+
+
+struct _ThunarFolderClass
+{
+ GtkObjectClass __parent__;
+
+ /* signals */
+ void (*error) (ThunarFolder *folder,
+ const GError *error);
+ void (*files_added) (ThunarFolder *folder,
+ GList *files);
+ void (*files_removed) (ThunarFolder *folder,
+ GList *files);
+};
+
+struct _ThunarFolder
+{
+ GtkObject __parent__;
+
+ ThunarVfsJob *job;
+
+ ThunarFile *corresponding_file;
+ GList *files;
+
+ GClosure *file_destroy_closure;
+ gint file_destroy_id;
+
+ ThunarVfsMonitor *monitor;
+ ThunarVfsMonitorHandle *handle;
+};
+
+
+
+static guint folder_signals[LAST_SIGNAL];
+static GQuark thunar_folder_quark;
+
+
+
+G_DEFINE_TYPE (ThunarFolder, thunar_folder, GTK_TYPE_OBJECT);
+
+
+
+static void
+thunar_folder_class_init (ThunarFolderClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_folder_finalize;
+ gobject_class->get_property = thunar_folder_get_property;
+
+ /**
+ * ThunarFolder::loading:
+ *
+ * Tells whether the contents of the #ThunarFolder are
+ * currently being loaded.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_LOADING,
+ g_param_spec_boolean ("loading",
+ _("Loading"),
+ _("Whether the contents of the folder are currently being loaded"),
+ FALSE,
+ EXO_PARAM_READABLE));
+
+ /**
+ * ThunarFolder::error:
+ * @folder : a #ThunarFolder.
+ * @error : the #GError describing the problem.
+ *
+ * Emitted when the #ThunarFolder fails to completly
+ * load the directory content because of an error.
+ **/
+ folder_signals[ERROR] =
+ g_signal_new ("error",
+ G_TYPE_FROM_CLASS (gobject_class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (ThunarFolderClass, error),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1, G_TYPE_POINTER);
+
+ /**
+ * ThunarFolder::files-added:
+ *
+ * Emitted by the #ThunarFolder whenever new files have
+ * been added to a particular folder.
+ **/
+ folder_signals[FILES_ADDED] =
+ g_signal_new ("files-added",
+ G_TYPE_FROM_CLASS (gobject_class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (ThunarFolderClass, files_added),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1, G_TYPE_POINTER);
+
+ /**
+ * ThunarFolder::files-removed:
+ *
+ * Emitted by the #ThunarFolder whenever a bunch of files
+ * is removed from the folder, which means they are not
+ * necessarily deleted from disk. This can be used to implement
+ * the reload of folders, which take longer to load.
+ **/
+ folder_signals[FILES_REMOVED] =
+ g_signal_new ("files-removed",
+ G_TYPE_FROM_CLASS (gobject_class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (ThunarFolderClass, files_removed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1, G_TYPE_POINTER);
+}
+
+
+
+static void
+thunar_folder_init (ThunarFolder *folder)
+{
+ /* lookup the id for the "destroy" signal of ThunarFile's */
+ folder->file_destroy_id = g_signal_lookup ("destroy", THUNAR_TYPE_FILE);
+
+ /* generate the closure to connect to the "destroy" signal of all files */
+ folder->file_destroy_closure = g_cclosure_new (G_CALLBACK (thunar_folder_file_destroy), folder, NULL);
+ g_closure_ref (folder->file_destroy_closure);
+ g_closure_sink (folder->file_destroy_closure);
+
+ /* connect to the file alteration monitor */
+ folder->monitor = thunar_vfs_monitor_get_default ();
+}
+
+
+
+static void
+thunar_folder_finalize (GObject *object)
+{
+ ThunarFolder *folder = THUNAR_FOLDER (object);
+ GList *lp;
+
+ /* disconnect from the file alteration monitor */
+ if (G_LIKELY (folder->handle != NULL))
+ thunar_vfs_monitor_remove (folder->monitor, folder->handle);
+ g_object_unref (G_OBJECT (folder->monitor));
+
+ /* cancel the pending job (if any) */
+ if (G_UNLIKELY (folder->job != NULL))
+ {
+ g_signal_handlers_disconnect_matched (folder->job, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, folder);
+ thunar_vfs_job_cancel (folder->job);
+ g_object_unref (G_OBJECT (folder->job));
+ }
+
+ /* disconnect from the corresponding file */
+ if (G_LIKELY (folder->corresponding_file != NULL))
+ {
+ /* drop the reference */
+ g_signal_handlers_disconnect_matched (G_OBJECT (folder->corresponding_file), G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, folder);
+ g_object_set_qdata (G_OBJECT (folder->corresponding_file), thunar_folder_quark, NULL);
+ g_object_unref (G_OBJECT (folder->corresponding_file));
+ }
+
+ /* release references to the files */
+ for (lp = folder->files; lp != NULL; lp = lp->next)
+ {
+ g_signal_handlers_disconnect_matched (G_OBJECT (lp->data), G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_CLOSURE,
+ folder->file_destroy_id, 0, folder->file_destroy_closure, NULL, NULL);
+ g_object_unref (G_OBJECT (lp->data));
+ }
+ g_list_free (folder->files);
+
+ /* drop the "destroy" closure */
+ g_closure_unref (folder->file_destroy_closure);
+
+ (*G_OBJECT_CLASS (thunar_folder_parent_class)->finalize) (object);
+}
+
+
+
+static void
+thunar_folder_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarFolder *folder = THUNAR_FOLDER (object);
+
+ switch (prop_id)
+ {
+ case PROP_LOADING:
+ g_value_set_boolean (value, thunar_folder_get_loading (folder));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunar_folder_error (ThunarVfsJob *job,
+ GError *error,
+ ThunarFolder *folder)
+{
+ g_return_if_fail (THUNAR_IS_FOLDER (folder));
+ g_return_if_fail (THUNAR_VFS_IS_JOB (job));
+ g_return_if_fail (folder->job == job);
+
+ /* tell the consumer about the problem */
+ g_signal_emit (G_OBJECT (folder), folder_signals[ERROR], 0, error);
+}
+
+
+
+static void
+thunar_folder_infos_ready (ThunarVfsJob *job,
+ GList *infos,
+ ThunarFolder *folder)
+{
+ ThunarFile *file;
+ GList *nfiles = NULL;
+ GList *lp;
+
+ g_return_if_fail (THUNAR_IS_FOLDER (folder));
+ g_return_if_fail (THUNAR_VFS_IS_JOB (job));
+ g_return_if_fail (folder->handle == NULL);
+ g_return_if_fail (folder->job == job);
+
+ /* add the new files to our temporary list of new files */
+ for (lp = infos; lp != NULL; lp = lp->next)
+ {
+ /* get the file corresponding to the info */
+ file = thunar_file_get_for_info (lp->data);
+
+ /* add the file to the temporary list of new files */
+ nfiles = g_list_prepend (nfiles, file);
+
+ /* connect the "destroy" signal */
+ g_signal_connect_closure_by_id (G_OBJECT (file), folder->file_destroy_id,
+ 0, folder->file_destroy_closure, TRUE);
+ }
+
+ /* check if we have any new files */
+ if (G_LIKELY (nfiles != NULL))
+ {
+ /* add the new files to our existing list of files */
+ folder->files = g_list_concat (folder->files, nfiles);
+
+ /* tell the consumers that we have new files */
+ g_signal_emit (G_OBJECT (folder), folder_signals[FILES_ADDED], 0, nfiles);
+ }
+}
+
+
+
+static void
+thunar_folder_finished (ThunarVfsJob *job,
+ ThunarFolder *folder)
+{
+ g_return_if_fail (THUNAR_IS_FOLDER (folder));
+ g_return_if_fail (THUNAR_VFS_IS_JOB (job));
+ g_return_if_fail (THUNAR_IS_FILE (folder->corresponding_file));
+ g_return_if_fail (folder->handle == NULL);
+ g_return_if_fail (folder->job == job);
+
+ /* we did it, the folder is loaded */
+ g_signal_handlers_disconnect_matched (folder->job, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, folder);
+ g_object_unref (G_OBJECT (folder->job));
+ folder->job = NULL;
+
+ /* tell the consumers that we have loaded the directory */
+ g_object_notify (G_OBJECT (folder), "loading");
+
+ /* add us to the file alteration monitor */
+ folder->handle = thunar_vfs_monitor_add_directory (folder->monitor, thunar_file_get_path (folder->corresponding_file),
+ thunar_folder_monitor, folder);
+}
+
+
+
+static void
+thunar_folder_corresponding_file_destroy (ThunarFile *file,
+ ThunarFolder *folder)
+{
+ g_return_if_fail (THUNAR_IS_FILE (file));
+ g_return_if_fail (THUNAR_IS_FOLDER (folder));
+ g_return_if_fail (folder->corresponding_file == file);
+
+ /* the folder is useless now */
+ gtk_object_destroy (GTK_OBJECT (folder));
+}
+
+
+
+static void
+thunar_folder_corresponding_file_renamed (ThunarFile *file,
+ ThunarFolder *folder)
+{
+ g_return_if_fail (THUNAR_IS_FILE (file));
+ g_return_if_fail (THUNAR_IS_FOLDER (folder));
+ g_return_if_fail (folder->corresponding_file == file);
+
+ /* re-register the VFS monitor handle if already connected */
+ if (G_LIKELY (folder->handle != NULL))
+ {
+ thunar_vfs_monitor_remove (folder->monitor, folder->handle);
+ folder->handle = thunar_vfs_monitor_add_directory (folder->monitor, thunar_file_get_path (file),
+ thunar_folder_monitor, folder);
+ }
+}
+
+
+
+static void
+thunar_folder_file_destroy (ThunarFile *file,
+ ThunarFolder *folder)
+{
+ GList files;
+
+ g_return_if_fail (THUNAR_IS_FILE (file));
+ g_return_if_fail (THUNAR_IS_FOLDER (folder));
+ g_return_if_fail (g_list_find (folder->files, file) != NULL);
+
+ /* disconnect from the file */
+ g_signal_handlers_disconnect_matched (G_OBJECT (file), G_SIGNAL_MATCH_CLOSURE, 0, 0, folder->file_destroy_closure, NULL, NULL);
+ folder->files = g_list_remove (folder->files, file);
+
+ /* tell everybody that the file is gone */
+ files.data = file; files.next = files.prev = NULL;
+ g_signal_emit (G_OBJECT (folder), folder_signals[FILES_REMOVED], 0, &files);
+
+ /* drop our reference to the file */
+ g_object_unref (G_OBJECT (file));
+}
+
+
+
+static void
+thunar_folder_monitor (ThunarVfsMonitor *monitor,
+ ThunarVfsMonitorHandle *handle,
+ ThunarVfsMonitorEvent event,
+ ThunarVfsPath *handle_path,
+ ThunarVfsPath *event_path,
+ gpointer user_data)
+{
+ ThunarFolder *folder = THUNAR_FOLDER (user_data);
+ ThunarFile *file;
+ GList *lp;
+ GList list;
+
+ g_return_if_fail (THUNAR_VFS_IS_MONITOR (monitor));
+ g_return_if_fail (THUNAR_IS_FOLDER (folder));
+ g_return_if_fail (folder->monitor == monitor);
+ g_return_if_fail (folder->handle == handle);
+ g_return_if_fail (folder->job == NULL);
+
+ /* check on which file the event occurred */
+ if (!thunar_vfs_path_equal (event_path, thunar_file_get_path (folder->corresponding_file)))
+ {
+ /* check if we already ship the file */
+ for (lp = folder->files; lp != NULL; lp = lp->next)
+ if (thunar_vfs_path_equal (event_path, thunar_file_get_path (lp->data)))
+ break;
+
+ /* if we don't have it, add it if the event is not an "deleted" event */
+ if (G_UNLIKELY (lp == NULL && event != THUNAR_VFS_MONITOR_EVENT_DELETED))
+ {
+ /* allocate a file for the path */
+ file = thunar_file_get_for_path (event_path, NULL);
+ if (G_UNLIKELY (file == NULL))
+ return;
+
+ /* prepend it to our internal list */
+ g_signal_connect_closure_by_id (G_OBJECT (file), folder->file_destroy_id, 0, folder->file_destroy_closure, TRUE);
+ folder->files = g_list_prepend (folder->files, file);
+
+ /* tell others about the new file */
+ list.data = file; list.next = list.prev = NULL;
+ g_signal_emit (G_OBJECT (folder), folder_signals[FILES_ADDED], 0, &list);
+ }
+ else if (lp != NULL)
+ {
+ /* update/destroy the file */
+ if (event == THUNAR_VFS_MONITOR_EVENT_DELETED)
+ thunar_file_destroy (lp->data);
+ else
+ thunar_file_reload (lp->data);
+ }
+ }
+ else
+ {
+ /* update/destroy the corresponding file */
+ if (event == THUNAR_VFS_MONITOR_EVENT_DELETED)
+ thunar_file_destroy (folder->corresponding_file);
+ else
+ thunar_file_reload (folder->corresponding_file);
+ }
+}
+
+
+
+/**
+ * thunar_folder_get_for_file:
+ * @file : a #ThunarFile.
+ *
+ * Opens the specified @file as #ThunarFolder and
+ * returns a reference to the folder.
+ *
+ * The caller is responsible to free the returned
+ * object using g_object_unref() when no longer
+ * needed.
+ *
+ * Return value: the #ThunarFolder which corresponds
+ * to @file.
+ **/
+ThunarFolder*
+thunar_folder_get_for_file (ThunarFile *file)
+{
+ ThunarFolder *folder;
+
+ g_return_val_if_fail (THUNAR_IS_FILE (file), NULL);
+ g_return_val_if_fail (thunar_file_is_directory (file), NULL);
+
+ /* determine the "thunar-folder" quark on-demand */
+ if (G_UNLIKELY (thunar_folder_quark == 0))
+ thunar_folder_quark = g_quark_from_static_string ("thunar-folder");
+
+ /* check if we already know that folder */
+ folder = g_object_get_qdata (G_OBJECT (file), thunar_folder_quark);
+ if (G_UNLIKELY (folder != NULL))
+ {
+ g_object_ref (G_OBJECT (folder));
+ }
+ else
+ {
+ /* allocate the new instance */
+ folder = g_object_new (THUNAR_TYPE_FOLDER, NULL);
+ folder->corresponding_file = file;
+ g_object_ref (G_OBJECT (file));
+
+ /* drop the floating reference */
+ g_assert (GTK_OBJECT_FLOATING (folder));
+ g_object_ref (G_OBJECT (folder));
+ gtk_object_sink (GTK_OBJECT (folder));
+
+ g_signal_connect (G_OBJECT (file), "destroy", G_CALLBACK (thunar_folder_corresponding_file_destroy), folder);
+ g_signal_connect (G_OBJECT (file), "renamed", G_CALLBACK (thunar_folder_corresponding_file_renamed), folder);
+
+ g_object_set_qdata (G_OBJECT (file), thunar_folder_quark, folder);
+
+ /* schedule the loading of the folder */
+ folder->job = thunar_vfs_listdir (thunar_file_get_path (file), NULL);
+ g_signal_connect (folder->job, "error", G_CALLBACK (thunar_folder_error), folder);
+ g_signal_connect (folder->job, "finished", G_CALLBACK (thunar_folder_finished), folder);
+ g_signal_connect (folder->job, "infos-ready", G_CALLBACK (thunar_folder_infos_ready), folder);
+ }
+
+ return folder;
+}
+
+
+
+/**
+ * thunar_folder_get_corresponding_file:
+ * @folder : a #ThunarFolder instance.
+ *
+ * Returns the #ThunarFile corresponding to this @folder.
+ *
+ * No reference is taken on the returned #ThunarFile for
+ * the caller, so if you need a persistent reference to
+ * the file, you'll have to call g_object_ref() yourself.
+ *
+ * Return value: the #ThunarFile corresponding to @folder.
+ **/
+ThunarFile*
+thunar_folder_get_corresponding_file (const ThunarFolder *folder)
+{
+ g_return_val_if_fail (THUNAR_IS_FOLDER (folder), NULL);
+ return folder->corresponding_file;
+}
+
+
+
+/**
+ * thunar_folder_get_files:
+ * @folder : a #ThunarFolder instance.
+ *
+ * Returns the list of files currently known for @folder.
+ * The returned list is owned by @folder and may not be freed!
+ *
+ * Return value: the list of #ThunarFiles for @folder.
+ **/
+GList*
+thunar_folder_get_files (const ThunarFolder *folder)
+{
+ g_return_val_if_fail (THUNAR_IS_FOLDER (folder), NULL);
+ return folder->files;
+}
+
+
+
+/**
+ * thunar_folder_get_loading:
+ * @folder : a #ThunarFolder instance.
+ *
+ * Tells whether the contents of the @folder are currently
+ * being loaded.
+ *
+ * Return value: %TRUE if @folder is loading, else %FALSE.
+ **/
+gboolean
+thunar_folder_get_loading (const ThunarFolder *folder)
+{
+ g_return_val_if_fail (THUNAR_IS_FOLDER (folder), FALSE);
+ return (folder->job != NULL);
+}
+
+
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-folder.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-folder.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-folder.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,47 @@
+/* $Id: thunar-folder.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_FOLDER_H__
+#define __THUNAR_FOLDER_H__
+
+#include <thunar/thunar-file.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarFolderClass ThunarFolderClass;
+typedef struct _ThunarFolder ThunarFolder;
+
+#define THUNAR_TYPE_FOLDER (thunar_folder_get_type ())
+#define THUNAR_FOLDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_FOLDER, ThunarFolder))
+#define THUNAR_FOLDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_FOLDER, ThunarFolderClass))
+#define THUNAR_IS_FOLDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_FOLDER))
+#define THUNAR_IS_FOLDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_FOLDER))
+#define THUNAR_FOLDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_FOLDER, ThunarFolderClass))
+
+GType thunar_folder_get_type (void) G_GNUC_CONST;
+
+ThunarFolder *thunar_folder_get_for_file (ThunarFile *file);
+
+ThunarFile *thunar_folder_get_corresponding_file (const ThunarFolder *folder);
+GList *thunar_folder_get_files (const ThunarFolder *folder);
+gboolean thunar_folder_get_loading (const ThunarFolder *folder);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_FOLDER_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-gdk-pixbuf-extensions.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-gdk-pixbuf-extensions.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-gdk-pixbuf-extensions.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,493 @@
+/* $Id: thunar-gdk-pixbuf-extensions.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * Based on code originally written by Eazel, Inc. for the eel utility
+ * library.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_MMINTRIN_H
+#include <mmintrin.h>
+#endif
+
+#include <thunar/thunar-gdk-pixbuf-extensions.h>
+
+
+
+/**
+ * thunar_gdk_pixbuf_colorize:
+ * @src : the source #GdkPixbuf.
+ * @color : the new color.
+ *
+ * Creates a new #GdkPixbuf based on @src, which is
+ * colorized to @color.
+ *
+ * Return value: the colorized #GdkPixbuf.
+ **/
+GdkPixbuf*
+thunar_gdk_pixbuf_colorize (const GdkPixbuf *src,
+ const GdkColor *color)
+{
+ GdkPixbuf *dst;
+ gboolean has_alpha;
+ gint dst_row_stride;
+ gint src_row_stride;
+ gint width;
+ gint height;
+ gint i;
+
+ /* determine source parameters */
+ width = gdk_pixbuf_get_width (src);
+ height = gdk_pixbuf_get_height (src);
+ has_alpha = gdk_pixbuf_get_has_alpha (src);
+
+ /* allocate the destination pixbuf */
+ dst = gdk_pixbuf_new (gdk_pixbuf_get_colorspace (src), has_alpha, gdk_pixbuf_get_bits_per_sample (src), width, height);
+
+ /* determine row strides on src/dst */
+ dst_row_stride = gdk_pixbuf_get_rowstride (dst);
+ src_row_stride = gdk_pixbuf_get_rowstride (src);
+
+#if defined(__GNUC__) && defined(__MMX__)
+ /* check if there's a good reason to use MMX */
+ if (G_LIKELY (has_alpha && dst_row_stride == width * 4 && src_row_stride == width * 4 && (width * height) % 2 == 0))
+ {
+ __m64 *pixdst = (__m64 *) gdk_pixbuf_get_pixels (dst);
+ __m64 *pixsrc = (__m64 *) gdk_pixbuf_get_pixels (src);
+ __m64 alpha_mask = _mm_set_pi8 (0xff, 0, 0, 0, 0xff, 0, 0, 0);
+ __m64 color_factor = _mm_set_pi16 (0, color->blue, color->green, color->red);
+ __m64 zero = _mm_setzero_si64 ();
+ __m64 src, alpha, hi, lo;
+
+ /* divide color components by 256 */
+ color_factor = _mm_srli_pi16 (color_factor, 8);
+
+ for (i = (width * height) >> 1; i > 0; --i)
+ {
+ /* read the source pixel */
+ src = *pixsrc;
+
+ /* remember the two alpha values */
+ alpha = _mm_and_si64 (alpha_mask, src);
+
+ /* extract the hi pixel */
+ hi = _mm_unpackhi_pi8 (src, zero);
+ hi = _mm_mullo_pi16 (hi, color_factor);
+
+ /* extract the lo pixel */
+ lo = _mm_unpacklo_pi8 (src, zero);
+ lo = _mm_mullo_pi16 (lo, color_factor);
+
+ /* prefetch the next two pixels */
+ __builtin_prefetch (++pixsrc, 0, 1);
+
+ /* divide by 256 */
+ hi = _mm_srli_pi16 (hi, 8);
+ lo = _mm_srli_pi16 (lo, 8);
+
+ /* combine the 2 pixels again */
+ src = _mm_packs_pu16 (lo, hi);
+
+ /* write back the calculated color together with the alpha */
+ *pixdst = _mm_or_si64 (alpha, src);
+
+ /* advance the dest pointer */
+ ++pixdst;
+ }
+
+ _mm_empty ();
+ }
+ else
+#endif
+ {
+ guchar *dst_pixels = gdk_pixbuf_get_pixels (dst);
+ guchar *src_pixels = gdk_pixbuf_get_pixels (src);
+ guchar *pixdst;
+ guchar *pixsrc;
+ gint red_value = color->red / 255.0;
+ gint green_value = color->green / 255.0;
+ gint blue_value = color->blue / 255.0;
+ gint j;
+
+ for (i = height; --i >= 0; )
+ {
+ pixdst = dst_pixels + i * dst_row_stride;
+ pixsrc = src_pixels + i * src_row_stride;
+
+ for (j = width; j > 0; --j)
+ {
+ *pixdst++ = (*pixsrc++ * red_value) >> 8;
+ *pixdst++ = (*pixsrc++ * green_value) >> 8;
+ *pixdst++ = (*pixsrc++ * blue_value) >> 8;
+
+ if (has_alpha)
+ *pixdst++ = *pixsrc++;
+ }
+ }
+ }
+
+ return dst;
+}
+
+
+
+static void
+draw_frame_row (GdkPixbuf *frame_image,
+ gint target_width,
+ gint source_width,
+ gint source_v_position,
+ gint dest_v_position,
+ GdkPixbuf *result_pixbuf,
+ gint left_offset,
+ gint height)
+{
+ gint remaining_width;
+ gint slab_width;
+ gint h_offset;
+
+ for (h_offset = 0, remaining_width = target_width; remaining_width > 0; h_offset += slab_width, remaining_width -= slab_width)
+ {
+ slab_width = remaining_width > source_width ? source_width : remaining_width;
+ gdk_pixbuf_copy_area (frame_image, left_offset, source_v_position, slab_width, height, result_pixbuf, left_offset + h_offset, dest_v_position);
+ }
+}
+
+
+
+static void
+draw_frame_column (GdkPixbuf *frame_image,
+ gint target_height,
+ gint source_height,
+ gint source_h_position,
+ gint dest_h_position,
+ GdkPixbuf *result_pixbuf,
+ gint top_offset,
+ gint width)
+{
+ gint remaining_height;
+ gint slab_height;
+ gint v_offset;
+
+ for (v_offset = 0, remaining_height = target_height; remaining_height > 0; v_offset += slab_height, remaining_height -= slab_height)
+ {
+ slab_height = remaining_height > source_height ? source_height : remaining_height;
+ gdk_pixbuf_copy_area (frame_image, source_h_position, top_offset, width, slab_height, result_pixbuf, dest_h_position, top_offset + v_offset);
+ }
+}
+
+
+
+/**
+ * thunar_gdk_pixbuf_frame:
+ * @src : the source #GdkPixbuf.
+ * @frame : the frame #GdkPixbuf.
+ * @left_offset : the left frame offset.
+ * @top_offset : the top frame offset.
+ * @right_offset : the right frame offset.
+ * @bottom_offset : the bottom frame offset.
+ *
+ * Embeds @src in @frame and returns the result as
+ * new #GdkPixbuf.
+ *
+ * The caller is responsible to free the returned
+ * #GdkPixbuf using g_object_unref().
+ *
+ * Return value: the framed version of @src.
+ **/
+GdkPixbuf*
+thunar_gdk_pixbuf_frame (GdkPixbuf *src,
+ GdkPixbuf *frame,
+ gint left_offset,
+ gint top_offset,
+ gint right_offset,
+ gint bottom_offset)
+{
+ GdkPixbuf *dst;
+ gint dst_width;
+ gint dst_height;
+ gint frame_width;
+ gint frame_height;
+ gint src_width;
+ gint src_height;
+
+ g_return_val_if_fail (GDK_IS_PIXBUF (src), NULL);
+ g_return_val_if_fail (GDK_IS_PIXBUF (frame), NULL);
+
+ src_width = gdk_pixbuf_get_width (src);
+ src_height = gdk_pixbuf_get_height (src);
+
+ frame_width = gdk_pixbuf_get_width (frame);
+ frame_height = gdk_pixbuf_get_height (frame);
+
+ dst_width = src_width + left_offset + right_offset;
+ dst_height = src_height + top_offset + bottom_offset;
+
+ dst = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, dst_width, dst_height);
+
+ /* fill the destination if the source has an alpha channel */
+ if (G_UNLIKELY (gdk_pixbuf_get_has_alpha (src)))
+ gdk_pixbuf_fill (dst, 0xffffffff);
+
+ /* draw the left top cornder and top row */
+ gdk_pixbuf_copy_area (frame, 0, 0, left_offset, top_offset, dst, 0, 0);
+ draw_frame_row (frame, src_width, frame_width - left_offset - right_offset, 0, 0, dst, left_offset, top_offset);
+
+ /* draw the right top corner and left column */
+ gdk_pixbuf_copy_area (frame, frame_width - right_offset, 0, right_offset, top_offset, dst, dst_width - right_offset, 0);
+ draw_frame_column (frame, src_height, frame_height - top_offset - bottom_offset, 0, 0, dst, top_offset, left_offset);
+
+ /* draw the bottom right corner and bottom row */
+ gdk_pixbuf_copy_area (frame, frame_width - right_offset, frame_height - bottom_offset, right_offset,
+ bottom_offset, dst, dst_width - right_offset, dst_height - bottom_offset);
+ draw_frame_row (frame, src_width, frame_width - left_offset - right_offset, frame_height - bottom_offset,
+ dst_height - bottom_offset, dst, left_offset, bottom_offset);
+
+ /* draw the bottom left corner and the right column */
+ gdk_pixbuf_copy_area (frame, 0, frame_height - bottom_offset, left_offset, bottom_offset, dst, 0, dst_height - bottom_offset);
+ draw_frame_column (frame, src_height, frame_height - top_offset - bottom_offset, frame_width - right_offset,
+ dst_width - right_offset, dst, top_offset, right_offset);
+
+ /* copy the source pixbuf into the framed area */
+ gdk_pixbuf_copy_area (src, 0, 0, src_width, src_height, dst, left_offset, top_offset);
+
+ return dst;
+}
+
+
+
+/**
+ * thunar_gdk_pixbuf_lucent:
+ * @src : the source #GdkPixbuf.
+ * @percent : the percentage of translucency.
+ *
+ * Returns a version of @src, whose pixels translucency is
+ * @percent of the original @src pixels.
+ *
+ * The caller is responsible to free the returned object
+ * using g_object_unref() when no longer needed.
+ *
+ * Return value: a translucent version of @src.
+ **/
+GdkPixbuf*
+thunar_gdk_pixbuf_lucent (const GdkPixbuf *src,
+ guint percent)
+{
+ GdkPixbuf *dst;
+ guchar *dst_pixels;
+ guchar *src_pixels;
+ guchar *pixdst;
+ guchar *pixsrc;
+ gint dst_row_stride;
+ gint src_row_stride;
+ gint width;
+ gint height;
+ gint i, j;
+
+ g_return_val_if_fail (GDK_IS_PIXBUF (src), NULL);
+ g_return_val_if_fail (percent >= 0 && percent <= 100, NULL);
+
+ /* determine source parameters */
+ width = gdk_pixbuf_get_width (src);
+ height = gdk_pixbuf_get_height (src);
+
+ /* allocate the destination pixbuf */
+ dst = gdk_pixbuf_new (gdk_pixbuf_get_colorspace (src), TRUE, gdk_pixbuf_get_bits_per_sample (src), width, height);
+
+ /* determine row strides on src/dst */
+ dst_row_stride = gdk_pixbuf_get_rowstride (dst);
+ src_row_stride = gdk_pixbuf_get_rowstride (src);
+
+ /* determine pixels on src/dst */
+ dst_pixels = gdk_pixbuf_get_pixels (dst);
+ src_pixels = gdk_pixbuf_get_pixels (src);
+
+ /* check if the source already contains an alpha channel */
+ if (G_LIKELY (gdk_pixbuf_get_has_alpha (src)))
+ {
+ for (i = height; --i >= 0; )
+ {
+ pixdst = dst_pixels + i * dst_row_stride;
+ pixsrc = src_pixels + i * src_row_stride;
+
+ for (j = width; --j >= 0; )
+ {
+ *pixdst++ = *pixsrc++;
+ *pixdst++ = *pixsrc++;
+ *pixdst++ = *pixsrc++;
+ *pixdst++ = ((guint) *pixsrc++ * percent) / 100u;
+ }
+ }
+ }
+ else
+ {
+ /* pre-calculate the alpha value */
+ percent = (255u * percent) / 100u;
+
+ for (i = height; --i >= 0; )
+ {
+ pixdst = dst_pixels + i * dst_row_stride;
+ pixsrc = src_pixels + i * src_row_stride;
+
+ for (j = width; --j >= 0; )
+ {
+ *pixdst++ = *pixsrc++;
+ *pixdst++ = *pixsrc++;
+ *pixdst++ = *pixsrc++;
+ *pixdst++ = percent;
+ }
+ }
+ }
+
+ return dst;
+}
+
+
+
+static guchar
+lighten_channel (guchar cur_value)
+{
+ gint new_value = cur_value;
+
+ new_value += 24 + (new_value >> 3);
+ if (G_UNLIKELY (new_value > 255))
+ new_value = 255;
+
+ return (guchar) new_value;
+}
+
+
+
+/**
+ * thunar_gdk_pixbuf_spotlight:
+ * @src : the source #GdkPixbuf.
+ *
+ * Creates a lightened version of @src, suitable for
+ * prelit state display of icons.
+ *
+ * The caller is responsible to free the returned
+ * pixbuf using #g_object_unref().
+ *
+ * Return value: the lightened version of @src.
+ **/
+GdkPixbuf*
+thunar_gdk_pixbuf_spotlight (const GdkPixbuf *src)
+{
+ GdkPixbuf *dst;
+ gboolean has_alpha;
+ gint dst_row_stride;
+ gint src_row_stride;
+ gint width;
+ gint height;
+ gint i;
+
+ /* determine source parameters */
+ width = gdk_pixbuf_get_width (src);
+ height = gdk_pixbuf_get_height (src);
+ has_alpha = gdk_pixbuf_get_has_alpha (src);
+
+ /* allocate the destination pixbuf */
+ dst = gdk_pixbuf_new (gdk_pixbuf_get_colorspace (src), has_alpha, gdk_pixbuf_get_bits_per_sample (src), width, height);
+
+ /* determine src/dst row strides */
+ dst_row_stride = gdk_pixbuf_get_rowstride (dst);
+ src_row_stride = gdk_pixbuf_get_rowstride (src);
+
+#if defined(__GNUC__) && defined(__MMX__)
+ /* check if there's a good reason to use MMX */
+ if (G_LIKELY (has_alpha && dst_row_stride == width * 4 && src_row_stride == width * 4 && (width * height) % 2 == 0))
+ {
+ __m64 *pixdst = (__m64 *) gdk_pixbuf_get_pixels (dst);
+ __m64 *pixsrc = (__m64 *) gdk_pixbuf_get_pixels (src);
+ __m64 alpha_mask = _mm_set_pi8 (0xff, 0, 0, 0, 0xff, 0, 0, 0);
+ __m64 twentyfour = _mm_set_pi8 (0, 24, 24, 24, 0, 24, 24, 24);
+ __m64 zero = _mm_setzero_si64 ();
+
+ for (i = (width * height) >> 1; i > 0; --i)
+ {
+ /* read the source pixel */
+ __m64 src = *pixsrc;
+
+ /* remember the two alpha values */
+ __m64 alpha = _mm_and_si64 (alpha_mask, src);
+
+ /* extract the hi pixel */
+ __m64 hi = _mm_unpackhi_pi8 (src, zero);
+
+ /* extract the lo pixel */
+ __m64 lo = _mm_unpacklo_pi8 (src, zero);
+
+ /* add (x >> 3) to x */
+ hi = _mm_adds_pu16 (hi, _mm_srli_pi16 (hi, 3));
+ lo = _mm_adds_pu16 (lo, _mm_srli_pi16 (lo, 3));
+
+ /* prefetch next value */
+ __builtin_prefetch (++pixsrc, 0, 1);
+
+ /* combine the two pixels again */
+ src = _mm_packs_pu16 (lo, hi);
+
+ /* add 24 (with saturation) */
+ src = _mm_adds_pu8 (src, twentyfour);
+
+ /* drop the alpha channel from the temp color */
+ src = _mm_andnot_si64 (alpha_mask, src);
+
+ /* write back the calculated color */
+ *pixdst = _mm_or_si64 (alpha, src);
+
+ /* advance the dest pointer */
+ ++pixdst;
+ }
+
+ _mm_empty ();
+ }
+ else
+#endif
+ {
+ guchar *dst_pixels = gdk_pixbuf_get_pixels (dst);
+ guchar *src_pixels = gdk_pixbuf_get_pixels (src);
+ guchar *pixdst;
+ guchar *pixsrc;
+ gint j;
+
+ for (i = height; --i >= 0; )
+ {
+ pixdst = dst_pixels + i * dst_row_stride;
+ pixsrc = src_pixels + i * src_row_stride;
+
+ for (j = width; j > 0; --j)
+ {
+ *pixdst++ = lighten_channel (*pixsrc++);
+ *pixdst++ = lighten_channel (*pixsrc++);
+ *pixdst++ = lighten_channel (*pixsrc++);
+
+ if (G_LIKELY (has_alpha))
+ *pixdst++ = *pixsrc++;
+ }
+ }
+ }
+
+ return dst;
+}
+
+
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-gdk-pixbuf-extensions.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-gdk-pixbuf-extensions.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-gdk-pixbuf-extensions.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,44 @@
+/* $Id: thunar-gdk-pixbuf-extensions.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_GDK_PIXBUF_EXTENSIONS_H__
+#define __THUNAR_GDK_PIXBUF_EXTENSIONS_H__
+
+#include <gdk/gdk.h>
+
+G_BEGIN_DECLS;
+
+GdkPixbuf *thunar_gdk_pixbuf_colorize (const GdkPixbuf *src,
+ const GdkColor *color);
+
+GdkPixbuf *thunar_gdk_pixbuf_frame (GdkPixbuf *src,
+ GdkPixbuf *frame,
+ gint left_offset,
+ gint top_offset,
+ gint right_offset,
+ gint bottom_offset);
+
+GdkPixbuf *thunar_gdk_pixbuf_lucent (const GdkPixbuf *src,
+ guint percent);
+
+GdkPixbuf *thunar_gdk_pixbuf_spotlight (const GdkPixbuf *src);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_GDK_PIXBUF_EXTENSIONS_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-gobject-extensions.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-gobject-extensions.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-gobject-extensions.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,64 @@
+/* $Id: thunar-gobject-extensions.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2004-2005 os-cillation e.K.
+ *
+ * Written by Benedikt Meurer <benny at xfce.org>.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#include <glib-object.h>
+
+#include <thunar/thunar-gobject-extensions.h>
+
+
+
+static void transform_string_to_boolean (const GValue *src, GValue *dst);
+
+
+
+static void
+transform_string_to_boolean (const GValue *src,
+ GValue *dst)
+{
+ g_value_set_boolean (dst, strcmp (g_value_get_string (src), "FALSE") != 0);
+}
+
+
+
+/**
+ * thunar_g_initialize_transformations:
+ *
+ * Registers various transformation functions to the
+ * GLib Type System, which are used by g_value_transform()
+ * to transform between different kinds of values.
+ **/
+void
+thunar_g_initialize_transformations (void)
+{
+ if (!g_value_type_transformable (G_TYPE_STRING, G_TYPE_BOOLEAN))
+ g_value_register_transform_func (G_TYPE_STRING, G_TYPE_BOOLEAN, transform_string_to_boolean);
+}
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-gobject-extensions.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-gobject-extensions.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-gobject-extensions.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,31 @@
+/* $Id: thunar-gobject-extensions.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2004-2005 os-cillation e.K.
+ *
+ * Written by Benedikt Meurer <benny at xfce.org>.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_GOBJECT_EXTENSIONS_H__
+#define __THUNAR_GOBJECT_EXTENSIONS_H__
+
+G_BEGIN_DECLS;
+
+void thunar_g_initialize_transformations (void) G_GNUC_INTERNAL;
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_GOBJECT_EXTENSIONS_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-gtk-extensions.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-gtk-extensions.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-gtk-extensions.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,58 @@
+/* $Id: thunar-gtk-extensions.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <thunar/thunar-gtk-extensions.h>
+
+
+
+/**
+ * thunar_gtk_action_group_set_action_sensitive:
+ * @action_group : a #GtkActionGroup.
+ * @action_name : the name of a #GtkAction in @action_group.
+ * @sensitive : the new sensitivity.
+ *
+ * Convenience function to change the sensitivity of an action
+ * in @action_group (whose name is @action_name) to @sensitive.
+ **/
+void
+thunar_gtk_action_group_set_action_sensitive (GtkActionGroup *action_group,
+ const gchar *action_name,
+ gboolean sensitive)
+{
+ GtkAction *action;
+
+ g_return_if_fail (GTK_IS_ACTION_GROUP (action_group));
+ g_return_if_fail (action_name != NULL && *action_name != '\0');
+
+ /* query the action from the group */
+ action = gtk_action_group_get_action (action_group, action_name);
+
+ /* apply the sensitivity to the action */
+#if GTK_CHECK_VERSION(2,6,0)
+ gtk_action_set_sensitive (action, sensitive);
+#else
+ g_object_set (G_OBJECT (action), "sensitive", sensitive, NULL);
+#endif
+}
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-gtk-extensions.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-gtk-extensions.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-gtk-extensions.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,33 @@
+/* $Id: thunar-gtk-extensions.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_GTK_EXTENSIONS_H__
+#define __THUNAR_GTK_EXTENSIONS_H__
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS;
+
+void thunar_gtk_action_group_set_action_sensitive (GtkActionGroup *action_group,
+ const gchar *action_name,
+ gboolean sensitive);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_GTK_EXTENSIONS_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-history.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-history.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-history.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,443 @@
+/* $Id: thunar-history.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <thunar/thunar-history.h>
+#include <thunar/thunar-navigator.h>
+
+
+
+/* Property identifiers */
+enum
+{
+ PROP_0,
+ PROP_ACTION_GROUP,
+ PROP_CURRENT_DIRECTORY,
+};
+
+
+
+static void thunar_history_class_init (ThunarHistoryClass *klass);
+static void thunar_history_navigator_init (ThunarNavigatorIface *iface);
+static void thunar_history_init (ThunarHistory *history);
+static void thunar_history_dispose (GObject *object);
+static void thunar_history_finalize (GObject *object);
+static void thunar_history_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void thunar_history_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static ThunarFile *thunar_history_get_current_directory (ThunarNavigator *navigator);
+static void thunar_history_set_current_directory (ThunarNavigator *navigator,
+ ThunarFile *current_directory);
+static void thunar_history_action_back (GtkAction *action,
+ ThunarHistory *history);
+static void thunar_history_action_forward (GtkAction *action,
+ ThunarHistory *history);
+
+
+
+struct _ThunarHistoryClass
+{
+ GObjectClass __parent__;
+};
+
+struct _ThunarHistory
+{
+ GObject __parent__;
+
+ ThunarFile *current_directory;
+
+ GtkActionGroup *action_group;
+
+ GtkAction *action_back;
+ GtkAction *action_forward;
+
+ GList *back_list;
+ GList *forward_list;
+};
+
+
+
+G_DEFINE_TYPE_WITH_CODE (ThunarHistory,
+ thunar_history,
+ G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (THUNAR_TYPE_NAVIGATOR,
+ thunar_history_navigator_init));
+
+
+
+static void
+thunar_history_class_init (ThunarHistoryClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->dispose = thunar_history_dispose;
+ gobject_class->finalize = thunar_history_finalize;
+ gobject_class->get_property = thunar_history_get_property;
+ gobject_class->set_property = thunar_history_set_property;
+
+ /**
+ * ThunarHistory::action-group:
+ *
+ * The #GtkActionGroup to which the #ThunarHistory<!---->s
+ * actions "back" and "forward" should be connected.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_ACTION_GROUP,
+ g_param_spec_object ("action-group",
+ _("Action group"),
+ _("Action group"),
+ GTK_TYPE_ACTION_GROUP,
+ EXO_PARAM_READWRITE));
+
+ /**
+ * ThunarHistory::current-directory:
+ *
+ * Inherited from #ThunarNavigator.
+ **/
+ g_object_class_override_property (gobject_class,
+ PROP_CURRENT_DIRECTORY,
+ "current-directory");
+}
+
+
+
+static void
+thunar_history_navigator_init (ThunarNavigatorIface *iface)
+{
+ iface->get_current_directory = thunar_history_get_current_directory;
+ iface->set_current_directory = thunar_history_set_current_directory;
+}
+
+
+
+static void
+thunar_history_init (ThunarHistory *history)
+{
+ /* create the "back" action */
+ history->action_back = gtk_action_new ("back", _("Back"), _("Go to the previous visited folder"), GTK_STOCK_GO_BACK);
+ g_signal_connect (G_OBJECT (history->action_back), "activate", G_CALLBACK (thunar_history_action_back), history);
+ gtk_action_set_sensitive (history->action_back, FALSE);
+
+ /* create the "forward" action */
+ history->action_forward = gtk_action_new ("forward", _("Forward"), _("Go to the next visited folder"), GTK_STOCK_GO_FORWARD);
+ g_signal_connect (G_OBJECT (history->action_forward), "activate", G_CALLBACK (thunar_history_action_forward), history);
+ gtk_action_set_sensitive (history->action_forward, FALSE);
+}
+
+
+
+static void
+thunar_history_dispose (GObject *object)
+{
+ ThunarHistory *history = THUNAR_HISTORY (object);
+
+ /* disconnect from the current directory */
+ thunar_navigator_set_current_directory (THUNAR_NAVIGATOR (history), NULL);
+
+ /* disconnect from the action group */
+ thunar_history_set_action_group (history, NULL);
+
+ (*G_OBJECT_CLASS (thunar_history_parent_class)->dispose) (object);
+}
+
+
+
+static void
+thunar_history_finalize (GObject *object)
+{
+ ThunarHistory *history = THUNAR_HISTORY (object);
+
+ /* disconnect from the "forward" action */
+ g_signal_handlers_disconnect_by_func (G_OBJECT (history->action_forward), thunar_history_action_forward, history);
+ g_object_unref (G_OBJECT (history->action_forward));
+
+ /* disconnect from the "back" action */
+ g_signal_handlers_disconnect_by_func (G_OBJECT (history->action_back), thunar_history_action_back, history);
+ g_object_unref (G_OBJECT (history->action_back));
+
+ /* release the "forward" and "back" lists */
+ thunar_file_list_free (history->forward_list);
+ thunar_file_list_free (history->back_list);
+
+ (*G_OBJECT_CLASS (thunar_history_parent_class)->finalize) (object);
+}
+
+
+
+static void
+thunar_history_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarHistory *history = THUNAR_HISTORY (object);
+
+ switch (prop_id)
+ {
+ case PROP_ACTION_GROUP:
+ g_value_set_object (value, thunar_history_get_action_group (history));
+ break;
+
+ case PROP_CURRENT_DIRECTORY:
+ g_value_set_object (value, thunar_navigator_get_current_directory (THUNAR_NAVIGATOR (history)));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunar_history_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarHistory *history = THUNAR_HISTORY (object);
+
+ switch (prop_id)
+ {
+ case PROP_ACTION_GROUP:
+ thunar_history_set_action_group (history, g_value_get_object (value));
+ break;
+
+ case PROP_CURRENT_DIRECTORY:
+ thunar_navigator_set_current_directory (THUNAR_NAVIGATOR (history), g_value_get_object (value));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static ThunarFile*
+thunar_history_get_current_directory (ThunarNavigator *navigator)
+{
+ ThunarHistory *history = THUNAR_HISTORY (navigator);
+ return history->current_directory;
+}
+
+
+
+static void
+thunar_history_set_current_directory (ThunarNavigator *navigator,
+ ThunarFile *current_directory)
+{
+ ThunarHistory *history = THUNAR_HISTORY (navigator);
+
+ /* verify that we don't already use that directory */
+ if (G_UNLIKELY (current_directory == history->current_directory))
+ return;
+
+ /* we try to be smart and check if the new current directory
+ * is the first element on either "back" or "forward" and if
+ * so, perform the appropriate operation.
+ */
+ if (history->back_list != NULL && history->back_list->data == current_directory)
+ {
+ thunar_history_action_back (history->action_back, history);
+ }
+ else if (history->forward_list != NULL && history->forward_list->data == current_directory)
+ {
+ thunar_history_action_forward (history->action_forward, history);
+ }
+ else
+ {
+ /* clear the "forward" list */
+ gtk_action_set_sensitive (history->action_forward, FALSE);
+ thunar_file_list_free (history->forward_list);
+ history->forward_list = NULL;
+
+ /* prepend the previous current directory to the "back" list */
+ if (G_LIKELY (history->current_directory != NULL))
+ {
+ history->back_list = g_list_prepend (history->back_list, history->current_directory);
+ gtk_action_set_sensitive (history->action_back, TRUE);
+ }
+
+ /* activate the new current directory */
+ history->current_directory = current_directory;
+
+ /* connect to the new current directory */
+ if (G_LIKELY (current_directory != NULL))
+ g_object_ref (G_OBJECT (current_directory));
+ }
+
+ /* notify listeners */
+ g_object_notify (G_OBJECT (history), "current-directory");
+}
+
+
+
+static void
+thunar_history_action_back (GtkAction *action,
+ ThunarHistory *history)
+{
+ g_return_if_fail (GTK_IS_ACTION (action));
+ g_return_if_fail (THUNAR_IS_HISTORY (history));
+
+ /* make sure the "back" list isn't empty */
+ if (G_UNLIKELY (history->back_list == NULL))
+ return;
+
+ /* prepend the previous current directory to the "forward" list */
+ if (G_LIKELY (history->current_directory != NULL))
+ {
+ history->forward_list = g_list_prepend (history->forward_list, history->current_directory);
+ gtk_action_set_sensitive (history->action_forward, TRUE);
+ }
+
+ /* remove the first directory from the "back" list
+ * and make it the current directory.
+ */
+ history->current_directory = history->back_list->data;
+ history->back_list = g_list_delete_link (history->back_list, history->back_list);
+ gtk_action_set_sensitive (history->action_back, (history->back_list != NULL));
+
+ /* tell the other modules to change the current directory */
+ thunar_navigator_change_directory (THUNAR_NAVIGATOR (history), history->current_directory);
+}
+
+
+
+static void
+thunar_history_action_forward (GtkAction *action,
+ ThunarHistory *history)
+{
+ g_return_if_fail (GTK_IS_ACTION (action));
+ g_return_if_fail (THUNAR_IS_HISTORY (history));
+
+ /* make sure the "forward" list isn't empty */
+ if (G_UNLIKELY (history->forward_list == NULL))
+ return;
+
+ /* prepend the previous current directory to the "back" list */
+ if (G_LIKELY (history->current_directory != NULL))
+ {
+ history->back_list = g_list_prepend (history->back_list, history->current_directory);
+ gtk_action_set_sensitive (history->action_back, TRUE);
+ }
+
+ /* remove the first directory from the "forward" list
+ * and make it the current directory.
+ */
+ history->current_directory = history->forward_list->data;
+ history->forward_list = g_list_delete_link (history->forward_list, history->forward_list);
+ gtk_action_set_sensitive (history->action_forward, (history->forward_list != NULL));
+
+ /* tell the other modules to change the current directory */
+ thunar_navigator_change_directory (THUNAR_NAVIGATOR (history), history->current_directory);
+}
+
+
+
+/**
+ * thunar_history_new:
+ *
+ * Allocates a new #ThunarHistory object.
+ *
+ * Return value: the newly allocated #ThunarHistory object.
+ **/
+ThunarHistory*
+thunar_history_new (void)
+{
+ return g_object_new (THUNAR_TYPE_HISTORY, NULL);
+}
+
+
+
+/**
+ * thunar_history_get_action_group:
+ * @history : a #ThunarHistory.
+ *
+ * Returns the #GtkActionGroup to which @history
+ * is currently attached, or %NULL if @history is
+ * not attached to any #GtkActionGroup right now.
+ *
+ * Return value: the #GtkActionGroup to which
+ * @history is currently attached.
+ **/
+GtkActionGroup*
+thunar_history_get_action_group (const ThunarHistory *history)
+{
+ g_return_val_if_fail (THUNAR_IS_HISTORY (history), NULL);
+ return history->action_group;
+}
+
+
+
+/**
+ * thunar_history_set_action_group:
+ * @history : a #ThunarHistory.
+ * @action_group : a #GtkActionGroup or %NULL.
+ *
+ * Attaches @history to the specified @action_group,
+ * and thereby registers the actions "back" and
+ * "forward" provided by @history on the given
+ * @action_group.
+ **/
+void
+thunar_history_set_action_group (ThunarHistory *history,
+ GtkActionGroup *action_group)
+{
+ g_return_if_fail (THUNAR_IS_HISTORY (history));
+ g_return_if_fail (action_group == NULL || GTK_IS_ACTION_GROUP (action_group));
+
+ /* verify that we don't already use that action group */
+ if (G_UNLIKELY (history->action_group == action_group))
+ return;
+
+ /* disconnect from the previous action group */
+ if (G_UNLIKELY (history->action_group != NULL))
+ {
+ gtk_action_group_remove_action (history->action_group, history->action_back);
+ gtk_action_group_remove_action (history->action_group, history->action_forward);
+ g_object_unref (G_OBJECT (history->action_group));
+ }
+
+ /* activate the new action group */
+ history->action_group = action_group;
+
+ /* connect to the new action group */
+ if (G_LIKELY (action_group != NULL))
+ {
+ g_object_ref (G_OBJECT (action_group));
+ gtk_action_group_add_action_with_accel (action_group, history->action_back, "<alt>Left");
+ gtk_action_group_add_action_with_accel (action_group, history->action_forward, "<alt>Right");
+ }
+
+ /* notify listeners */
+ g_object_notify (G_OBJECT (history), "action-group");
+}
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-history.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-history.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-history.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,47 @@
+/* $Id: thunar-history.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_HISTORY_H__
+#define __THUNAR_HISTORY_H__
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarHistoryClass ThunarHistoryClass;
+typedef struct _ThunarHistory ThunarHistory;
+
+#define THUNAR_TYPE_HISTORY (thunar_history_get_type ())
+#define THUNAR_HISTORY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_HISTORY, ThunarHistory))
+#define THUNAR_HISTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_HISTORY, ThunarHistoryClass))
+#define THUNAR_IS_HISTORY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_HISTORY))
+#define THUNAR_IS_HISTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_HISTORY))
+#define THUNAR_HISTORY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_HISTORY, ThunarHistoryClass))
+
+GType thunar_history_get_type (void) G_GNUC_CONST;
+
+ThunarHistory *thunar_history_new (void) G_GNUC_MALLOC;
+
+GtkActionGroup *thunar_history_get_action_group (const ThunarHistory *history);
+void thunar_history_set_action_group (ThunarHistory *history,
+ GtkActionGroup *action_group);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_HISTORY_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-icon-factory.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-icon-factory.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-icon-factory.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,872 @@
+/* $Id: thunar-icon-factory.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * The basic idea for the icon factory implementation was borrowed from
+ * Nautilus initially, but the implementation is very different from
+ * what Nautilus does.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#include <exo/exo.h>
+
+#include <thunar/thunar-fallback-icon.h>
+#include <thunar/thunar-gdk-pixbuf-extensions.h>
+#include <thunar/thunar-icon-factory.h>
+#include <thunar/thunar-thumbnail-frame.h>
+#include <thunar/thunar-thumbnail-generator.h>
+
+
+
+/* the timeout until the sweeper is run (in ms) */
+#define THUNAR_ICON_FACTORY_SWEEP_TIMEOUT (30 * 1000)
+
+/* the maximum length of the recently used list */
+#define MAX_RECENTLY (128u)
+
+enum
+{
+ PROP_0,
+ PROP_ICON_THEME,
+};
+
+
+
+typedef struct _ThunarIconKey ThunarIconKey;
+
+
+
+static void thunar_icon_factory_class_init (ThunarIconFactoryClass *klass);
+static void thunar_icon_factory_init (ThunarIconFactory *factory);
+static void thunar_icon_factory_dispose (GObject *object);
+static void thunar_icon_factory_finalize (GObject *object);
+static void thunar_icon_factory_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void thunar_icon_factory_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static gboolean thunar_icon_factory_changed (GSignalInvocationHint *ihint,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer user_data);
+static gboolean thunar_icon_factory_sweep_timer (gpointer user_data);
+static void thunar_icon_factory_sweep_timer_destroy (gpointer user_data);
+static GdkPixbuf *thunar_icon_factory_load_from_file (ThunarIconFactory *factory,
+ const gchar *path,
+ gint size);
+static GdkPixbuf *thunar_icon_factory_lookup_icon (ThunarIconFactory *factory,
+ const gchar *name,
+ gint size,
+ gboolean wants_default);
+static void thunar_icon_factory_mark_recently_used (ThunarIconFactory *factory,
+ GdkPixbuf *pixbuf);
+static guint thunar_icon_key_hash (gconstpointer data);
+static gboolean thunar_icon_key_equal (gconstpointer a,
+ gconstpointer b);
+
+
+
+struct _ThunarIconFactoryClass
+{
+ GObjectClass __parent__;
+};
+
+struct _ThunarIconFactory
+{
+ GObject __parent__;
+
+ ThunarThumbnailGenerator *thumbnail_generator;
+ ThunarVfsThumbFactory *thumbnail_factory;
+ GdkPixbuf *thumbnail_frame;
+
+ GdkPixbuf *recently[MAX_RECENTLY]; /* ring buffer */
+ guint recently_pos; /* insert position */
+
+ GHashTable *icon_cache;
+
+ GtkIconTheme *icon_theme;
+ GdkPixbuf *fallback_icon;
+
+ gint changed_idle_id;
+ gint sweep_timer_id;
+
+ gulong changed_hook_id;
+};
+
+struct _ThunarIconKey
+{
+ gchar *name;
+ gint size;
+};
+
+
+
+static GQuark thunar_icon_factory_quark = 0;
+static GQuark thunar_file_thumb_path_quark = 0;
+
+
+
+G_DEFINE_TYPE (ThunarIconFactory, thunar_icon_factory, G_TYPE_OBJECT);
+
+
+
+static void
+thunar_icon_factory_class_init (ThunarIconFactoryClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ /* setup the thunar-file-thumb-path quark */
+ thunar_file_thumb_path_quark = g_quark_from_static_string ("thunar-file-thumb-path");
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->dispose = thunar_icon_factory_dispose;
+ gobject_class->finalize = thunar_icon_factory_finalize;
+ gobject_class->get_property = thunar_icon_factory_get_property;
+ gobject_class->set_property = thunar_icon_factory_set_property;
+
+ /**
+ * ThunarIconFactory:icon-theme:
+ *
+ * The #GtkIconTheme on which the given #ThunarIconFactory instance operates
+ * on.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_ICON_THEME,
+ g_param_spec_object ("icon-theme",
+ _("Icon theme"),
+ _("The icon theme used by the icon factory"),
+ GTK_TYPE_ICON_THEME,
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
+}
+
+
+
+static void
+thunar_icon_factory_init (ThunarIconFactory *factory)
+{
+ /* initialize GSource ids */
+ factory->changed_idle_id = -1;
+ factory->sweep_timer_id = -1;
+
+ /* connect emission hook for the "changed" signal on the GtkIconTheme class. We use the emission
+ * hook way here, because that way we can make sure that the icon cache is definetly cleared
+ * before any other part of the application gets notified about the icon theme change.
+ */
+ factory->changed_hook_id = g_signal_add_emission_hook (g_signal_lookup ("changed", GTK_TYPE_ICON_THEME),
+ 0, thunar_icon_factory_changed, factory, NULL);
+
+ /* load the fallback icon */
+ factory->fallback_icon = gdk_pixbuf_new_from_inline (-1, thunar_fallback_icon, FALSE, NULL);
+
+ /* allocate the hash table for the icon cache */
+ factory->icon_cache = g_hash_table_new_full (thunar_icon_key_hash, thunar_icon_key_equal, g_free, g_object_unref);
+
+ /* allocate the thumbnail factory */
+ factory->thumbnail_factory = thunar_vfs_thumb_factory_new ((THUNAR_THUMBNAIL_SIZE > 128)
+ ? THUNAR_VFS_THUMB_SIZE_LARGE
+ : THUNAR_VFS_THUMB_SIZE_NORMAL);
+
+ /* allocate the thumbnail generator */
+ factory->thumbnail_generator = thunar_thumbnail_generator_new (factory->thumbnail_factory);
+
+ /* load the thumbnail frame */
+ factory->thumbnail_frame = gdk_pixbuf_new_from_inline (-1, thunar_thumbnail_frame, FALSE, NULL);
+}
+
+
+
+static void
+thunar_icon_factory_dispose (GObject *object)
+{
+ ThunarIconFactory *factory = THUNAR_ICON_FACTORY (object);
+
+ g_return_if_fail (THUNAR_IS_ICON_FACTORY (factory));
+
+ if (G_UNLIKELY (factory->changed_idle_id >= 0))
+ g_source_remove (factory->changed_idle_id);
+
+ if (G_UNLIKELY (factory->sweep_timer_id >= 0))
+ g_source_remove (factory->sweep_timer_id);
+
+ (*G_OBJECT_CLASS (thunar_icon_factory_parent_class)->dispose) (object);
+}
+
+
+
+static void
+thunar_icon_factory_finalize (GObject *object)
+{
+ ThunarIconFactory *factory = THUNAR_ICON_FACTORY (object);
+ guint n;
+
+ g_return_if_fail (THUNAR_IS_ICON_FACTORY (factory));
+
+ /* clear the recently used list */
+ for (n = 0; n < MAX_RECENTLY; ++n)
+ if (G_LIKELY (factory->recently[n] != NULL))
+ g_object_unref (G_OBJECT (factory->recently[n]));
+
+ /* clear the icon cache hash table */
+ g_hash_table_destroy (factory->icon_cache);
+
+ /* drop the fallback icon reference */
+ g_object_unref (G_OBJECT (factory->fallback_icon));
+
+ /* release the thumbnail frame */
+ g_object_unref (G_OBJECT (factory->thumbnail_frame));
+
+ /* disconnect from the thumbnail factory */
+ g_object_unref (G_OBJECT (factory->thumbnail_factory));
+
+ /* disconnect from the thumbnail generator */
+ g_object_unref (G_OBJECT (factory->thumbnail_generator));
+
+ /* remove the "changed" emission hook from the GtkIconTheme class */
+ g_signal_remove_emission_hook (g_signal_lookup ("changed", GTK_TYPE_ICON_THEME), factory->changed_hook_id);
+
+ /* disconnect from the associated icon theme (if any) */
+ if (G_LIKELY (factory->icon_theme != NULL))
+ {
+ g_object_set_qdata (G_OBJECT (factory->icon_theme), thunar_icon_factory_quark, NULL);
+ g_object_unref (G_OBJECT (factory->icon_theme));
+ }
+
+ (*G_OBJECT_CLASS (thunar_icon_factory_parent_class)->finalize) (object);
+}
+
+
+
+static void
+thunar_icon_factory_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarIconFactory *factory = THUNAR_ICON_FACTORY (object);
+
+ switch (prop_id)
+ {
+ case PROP_ICON_THEME:
+ g_value_set_object (value, factory->icon_theme);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunar_icon_factory_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarIconFactory *factory = THUNAR_ICON_FACTORY (object);
+
+ g_return_if_fail (factory->icon_theme == NULL);
+ g_return_if_fail (thunar_icon_factory_quark != 0);
+
+ switch (prop_id)
+ {
+ case PROP_ICON_THEME:
+ /* connect to the icon-theme */
+ factory->icon_theme = g_value_get_object (value);
+ g_object_ref (G_OBJECT (factory->icon_theme));
+ g_object_set_qdata (G_OBJECT (factory->icon_theme),
+ thunar_icon_factory_quark,
+ factory);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static gboolean
+thunar_icon_factory_changed (GSignalInvocationHint *ihint,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer user_data)
+{
+ ThunarIconFactory *factory = THUNAR_ICON_FACTORY (user_data);
+ guint n;
+
+ /* drop all items from the recently used list */
+ for (n = 0; n < MAX_RECENTLY; ++n)
+ if (G_LIKELY (factory->recently[n] != NULL))
+ {
+ g_object_unref (G_OBJECT (factory->recently[n]));
+ factory->recently[n] = NULL;
+ }
+
+ /* drop all items from the icon cache */
+ g_hash_table_foreach_remove (factory->icon_cache, (GHRFunc) exo_noop_true, NULL);
+
+ /* keep the emission hook alive */
+ return TRUE;
+}
+
+
+
+static gboolean
+thunar_icon_check_sweep (ThunarIconKey *key,
+ GdkPixbuf *pixbuf)
+{
+ return (G_OBJECT (pixbuf)->ref_count == 1);
+}
+
+
+
+static gboolean
+thunar_icon_factory_sweep_timer (gpointer user_data)
+{
+ ThunarIconFactory *factory = THUNAR_ICON_FACTORY (user_data);
+
+ g_return_val_if_fail (THUNAR_IS_ICON_FACTORY (factory), FALSE);
+
+ GDK_THREADS_ENTER ();
+
+ /* ditch all icons whose ref_count is 1 */
+ g_hash_table_foreach_remove (factory->icon_cache, (GHRFunc) thunar_icon_check_sweep, factory);
+
+ GDK_THREADS_LEAVE ();
+
+ return FALSE;
+}
+
+
+
+static void
+thunar_icon_factory_sweep_timer_destroy (gpointer user_data)
+{
+ THUNAR_ICON_FACTORY (user_data)->sweep_timer_id = -1;
+}
+
+
+
+static inline gboolean
+thumbnail_needs_frame (const GdkPixbuf *thumbnail,
+ gint width,
+ gint height)
+{
+ const guchar *pixels;
+ gint rowstride;
+ gint n;
+
+ /* don't add frames to small thumbnails */
+ if (width < THUNAR_THUMBNAIL_SIZE && height < THUNAR_THUMBNAIL_SIZE)
+ return FALSE;
+
+ /* always add a frame to thumbnails w/o alpha channel */
+ if (G_LIKELY (!gdk_pixbuf_get_has_alpha (thumbnail)))
+ return TRUE;
+
+ /* get a pointer to the thumbnail data */
+ pixels = gdk_pixbuf_get_pixels (thumbnail);
+
+ /* check if we have a transparent pixel on the first row */
+ for (n = width * 4; n > 0; n -= 4)
+ if (pixels[n - 1] < 255u)
+ return FALSE;
+
+ /* determine the rowstride */
+ rowstride = gdk_pixbuf_get_rowstride (thumbnail);
+
+ /* skip the first row */
+ pixels += rowstride;
+
+ /* check if we have a transparent pixel in the first or last column */
+ for (n = height - 2; n > 0; --n, pixels += rowstride)
+ if (pixels[3] < 255u || pixels[width * 4 - 1] < 255u)
+ return FALSE;
+
+ /* check if we have a transparent pixel on the last row */
+ for (n = width * 4; n > 0; n -= 4)
+ if (pixels[n - 1] < 255u)
+ return FALSE;
+
+ return TRUE;
+}
+
+
+
+static GdkPixbuf*
+thunar_icon_factory_load_from_file (ThunarIconFactory *factory,
+ const gchar *path,
+ gint size)
+{
+ GdkPixbuf *pixbuf;
+ GdkPixbuf *tmp;
+ gint width;
+ gint height;
+
+ /* try to load the image from the file */
+ pixbuf = gdk_pixbuf_new_from_file (path, NULL);
+ if (G_LIKELY (pixbuf != NULL))
+ {
+ /* determine the dimensions of the pixbuf */
+ width = gdk_pixbuf_get_width (pixbuf);
+ height = gdk_pixbuf_get_height (pixbuf);
+
+ /* add a frame around thumbnail (large) images */
+ if (strstr (path, G_DIR_SEPARATOR_S ".thumbnails" G_DIR_SEPARATOR_S) != NULL
+ && thumbnail_needs_frame (pixbuf, width, height))
+ {
+ /* perform the scaling first (if required) */
+ if (G_LIKELY (width > size || height > size))
+ {
+ tmp = exo_gdk_pixbuf_scale_ratio (pixbuf, size);
+ g_object_unref (G_OBJECT (pixbuf));
+ pixbuf = tmp;
+ }
+
+ /* add the frame */
+ tmp = thunar_gdk_pixbuf_frame (pixbuf, factory->thumbnail_frame, 3, 3, 6, 6);
+ g_object_unref (G_OBJECT (pixbuf));
+ pixbuf = tmp;
+ }
+ else if (G_LIKELY (width > size || height > size))
+ {
+ /* scale down the non-thumbnailed icon */
+ tmp = exo_gdk_pixbuf_scale_ratio (pixbuf, size);
+ g_object_unref (G_OBJECT (pixbuf));
+ pixbuf = tmp;
+ }
+ }
+
+ return pixbuf;
+}
+
+
+
+static GdkPixbuf*
+thunar_icon_factory_lookup_icon (ThunarIconFactory *factory,
+ const gchar *name,
+ gint size,
+ gboolean wants_default)
+{
+ ThunarIconKey lookup_key;
+ ThunarIconKey *key;
+ GtkIconInfo *icon_info;
+ GdkPixbuf *pixbuf = NULL;
+
+ g_return_val_if_fail (THUNAR_IS_ICON_FACTORY (factory), NULL);
+ g_return_val_if_fail (name != NULL && *name != '\0', NULL);
+ g_return_val_if_fail (size > 0, NULL);
+
+ /* prepare the lookup key */
+ lookup_key.name = (gchar *) name;
+ lookup_key.size = size;
+
+ /* check if we already have a cached version of the icon */
+ if (!g_hash_table_lookup_extended (factory->icon_cache, &lookup_key, NULL, (gpointer) &pixbuf))
+ {
+ /* check if we have to load a file instead of a themed icon */
+ if (G_UNLIKELY (g_path_is_absolute (name)))
+ {
+ pixbuf = thunar_icon_factory_load_from_file (factory, name, size);
+ }
+ else
+ {
+ /* check if the icon theme contains an icon of that name */
+ icon_info = gtk_icon_theme_lookup_icon (factory->icon_theme, name, size, 0);
+ if (G_LIKELY (icon_info != NULL))
+ {
+ /* try to load the icon returned from the icon theme */
+ pixbuf = gtk_icon_info_load_icon (icon_info, NULL);
+ gtk_icon_info_free (icon_info);
+ }
+ }
+
+ /* use fallback icon if no pixbuf could be loaded */
+ if (G_UNLIKELY (pixbuf == NULL))
+ {
+ /* check if we are allowed to return the fallback icon */
+ if (!wants_default)
+ return NULL;
+
+ /* already have the fallback icon loaded at 48x48 */
+ if (G_LIKELY (size == 48))
+ return g_object_ref (G_OBJECT (factory->fallback_icon));
+
+ /* return a scaled version of the fallback icon */
+ return exo_gdk_pixbuf_scale_ratio (factory->fallback_icon, size);
+ }
+
+ /* generate a key for the new cached icon */
+ key = g_malloc (sizeof (ThunarIconKey) + strlen (name) + 1);
+ key->name = ((gchar *) key) + sizeof (ThunarIconKey);
+ key->size = size;
+ strcpy (key->name, name);
+
+ /* insert the new icon into the cache */
+ g_hash_table_insert (factory->icon_cache, key, pixbuf);
+ }
+
+ /* add the icon to the recently used list */
+ thunar_icon_factory_mark_recently_used (factory, pixbuf);
+
+ return g_object_ref (G_OBJECT (pixbuf));
+}
+
+
+
+static void
+thunar_icon_factory_mark_recently_used (ThunarIconFactory *factory,
+ GdkPixbuf *pixbuf)
+{
+ guint n;
+
+ g_return_if_fail (THUNAR_IS_ICON_FACTORY (factory));
+ g_return_if_fail (GDK_IS_PIXBUF (pixbuf));
+
+ /* check if the icon is already on the list */
+ for (n = 0; n < MAX_RECENTLY; ++n)
+ if (G_UNLIKELY (factory->recently[n] == pixbuf))
+ return;
+
+ /* ditch the previous item on the current insert position,
+ * which - if present - is the oldest item in the list.
+ */
+ if (G_LIKELY (factory->recently[factory->recently_pos] != NULL))
+ g_object_unref (G_OBJECT (factory->recently[factory->recently_pos]));
+
+ /* insert the new pixbuf into the list */
+ factory->recently[factory->recently_pos] = pixbuf;
+ g_object_ref (G_OBJECT (pixbuf));
+
+ /* advance the insert position */
+ factory->recently_pos = (factory->recently_pos + 1) % MAX_RECENTLY;
+
+ /* schedule the sweeper */
+ if (G_UNLIKELY (factory->sweep_timer_id < 0))
+ {
+ factory->sweep_timer_id = g_timeout_add_full (G_PRIORITY_LOW, THUNAR_ICON_FACTORY_SWEEP_TIMEOUT,
+ thunar_icon_factory_sweep_timer, factory,
+ thunar_icon_factory_sweep_timer_destroy);
+ }
+}
+
+
+
+static guint
+thunar_icon_key_hash (gconstpointer data)
+{
+ const ThunarIconKey *key = data;
+ const gchar *p;
+ guint h;
+
+ h = (guint) key->size << 5;
+
+ for (p = key->name; *p != '\0'; ++p)
+ h = (h << 5) - h + *p;
+
+ return h;
+}
+
+
+
+static gboolean
+thunar_icon_key_equal (gconstpointer a,
+ gconstpointer b)
+{
+ const ThunarIconKey *a_key = a;
+ const ThunarIconKey *b_key = b;
+
+ /* compare sizes first */
+ if (a_key->size != b_key->size)
+ return FALSE;
+
+ /* do a full string comparison on the names */
+ return (strcmp (a_key->name, b_key->name) == 0);
+}
+
+
+
+/**
+ * thunar_icon_factory_get_default:
+ *
+ * Returns the #ThunarIconFactory that operates on the default #GtkIconTheme.
+ * The default #ThunarIconFactory instance will be around for the time the
+ * programs runs, starting with the first call to this function.
+ *
+ * The caller is responsible to free the returned object using
+ * g_object_unref() when no longer needed.
+ *
+ * Return value: the #ThunarIconFactory for the default icon theme.
+ **/
+ThunarIconFactory*
+thunar_icon_factory_get_default (void)
+{
+ static ThunarIconFactory *factory = NULL;
+
+ if (G_UNLIKELY (factory == NULL))
+ {
+ factory = thunar_icon_factory_get_for_icon_theme (gtk_icon_theme_get_default ());
+ g_object_add_weak_pointer (G_OBJECT (factory), (gpointer) &factory);
+ }
+ else
+ {
+ g_object_ref (G_OBJECT (factory));
+ }
+
+ return factory;
+}
+
+
+
+/**
+ * thunar_icon_factory_get_for_icon_theme:
+ * @icon_theme : a #GtkIconTheme instance.
+ *
+ * Determines the proper #ThunarIconFactory to be used with the specified
+ * @icon_theme and returns it.
+ *
+ * You need to explicitly free the returned #ThunarIconFactory object
+ * using #g_object_unref() when you are done with it.
+ *
+ * Return value: the #ThunarIconFactory for @icon_theme.
+ **/
+ThunarIconFactory*
+thunar_icon_factory_get_for_icon_theme (GtkIconTheme *icon_theme)
+{
+ ThunarIconFactory *factory;
+
+ g_return_val_if_fail (GTK_IS_ICON_THEME (icon_theme), NULL);
+
+ /* generate the quark on-demand */
+ if (G_UNLIKELY (thunar_icon_factory_quark == 0))
+ thunar_icon_factory_quark = g_quark_from_static_string ("thunar-icon-factory");
+
+ /* check if the given icon theme already knows about an icon factory */
+ factory = g_object_get_qdata (G_OBJECT (icon_theme), thunar_icon_factory_quark);
+ if (G_UNLIKELY (factory == NULL))
+ {
+ factory = g_object_new (THUNAR_TYPE_ICON_FACTORY,
+ "icon-theme", icon_theme,
+ NULL);
+ }
+ else
+ {
+ g_object_ref (G_OBJECT (factory));
+ }
+
+ return factory;
+}
+
+
+
+/**
+ * thunar_icon_factory_get_icon_theme:
+ * @factory : a #ThunarIconFactory instance.
+ *
+ * Returns the #GtkIconTheme associated with @factory.
+ *
+ * Return value: the #GtkIconTheme associated with @factory.
+ **/
+GtkIconTheme*
+thunar_icon_factory_get_icon_theme (const ThunarIconFactory *factory)
+{
+ g_return_val_if_fail (THUNAR_IS_ICON_FACTORY (factory), NULL);
+ return factory->icon_theme;
+}
+
+
+
+/**
+ * thunar_icon_factory_load_icon:
+ * @factory : a #ThunarIconFactory instance.
+ * @name : name of the icon to load.
+ * @size : desired icon size.
+ * @attach_points : location to store the attach points to or %NULL.
+ * @wants_default : %TRUE to return the fallback icon if no icon of @name
+ * is found in the @factory.
+ *
+ * Looks up the icon named @name in the icon theme associated with @factory
+ * and returns a pixbuf for the icon at the given @size. This function will
+ * return a default fallback icon if the requested icon could not be found
+ * and @wants_default is %TRUE, else %NULL will be returned in that case.
+ *
+ * Call g_object_unref() on the returned pixbuf when you are
+ * done with it.
+ *
+ * Return value: the pixbuf for the icon named @name at @size.
+ **/
+GdkPixbuf*
+thunar_icon_factory_load_icon (ThunarIconFactory *factory,
+ const gchar *name,
+ gint size,
+ ThunarEmblemAttachPoints *attach_points,
+ gboolean wants_default)
+{
+ g_return_val_if_fail (THUNAR_IS_ICON_FACTORY (factory), NULL);
+ g_return_val_if_fail (size > 0, NULL);
+
+ /* cannot happen unless there's no XSETTINGS manager
+ * for the default screen, but just in case...
+ */
+ if (G_UNLIKELY (name == NULL || *name == '\0'))
+ {
+ /* check if the caller will happly accept the fallback icon */
+ if (G_LIKELY (wants_default))
+ {
+ if (G_LIKELY (size == 48))
+ return g_object_ref (G_OBJECT (factory->fallback_icon));
+ else
+ return exo_gdk_pixbuf_scale_ratio (factory->fallback_icon, size);
+ }
+ else
+ {
+ return NULL;
+ }
+ }
+
+ /* lookup the icon */
+ return thunar_icon_factory_lookup_icon (factory, name, size, wants_default);
+}
+
+
+
+/**
+ * thunar_icon_factory_load_file_icon:
+ * @factory : a #ThunarIconFactory instance.
+ * @file : a #ThunarFile.
+ * @icon_state : the desired icon state.
+ * @icon_size : the desired icon size.
+ *
+ * The caller is responsible to free the returned object using
+ * g_object_unref() when no longer needed.
+ *
+ * Return value: the #GdkPixbuf icon.
+ **/
+GdkPixbuf*
+thunar_icon_factory_load_file_icon (ThunarIconFactory *factory,
+ ThunarFile *file,
+ ThunarFileIconState icon_state,
+ gint icon_size)
+{
+ ThunarFileThumbState thumb_state;
+ ThunarVfsInfo *info;
+ const gchar *icon_name;
+ GdkPixbuf *icon;
+ gchar *thumb_path;
+
+ g_return_val_if_fail (THUNAR_IS_ICON_FACTORY (factory), NULL);
+ g_return_val_if_fail (THUNAR_IS_FILE (file), NULL);
+ g_return_val_if_fail (icon_size > 0, NULL);
+
+ /* check if there's a custom icon for the file */
+ icon_name = thunar_file_get_custom_icon (file);
+ if (G_UNLIKELY (icon_name != NULL))
+ {
+ /* try to load the icon */
+ icon = thunar_icon_factory_lookup_icon (factory, icon_name, icon_size, FALSE);
+ if (G_LIKELY (icon != NULL))
+ return icon;
+ }
+
+ /* check if we can display a thumbnail */
+ if (thunar_file_is_regular (file))
+ {
+ /* determine the thumbnail state */
+ thumb_state = thunar_file_get_thumb_state (file);
+
+ /* check if we haven't yet determine the thumbnail state */
+ if (thumb_state == THUNAR_FILE_THUMB_STATE_UNKNOWN)
+ {
+ /* determine the ThunarVfsInfo for the file */
+ info = thunar_file_get_info (file);
+
+ /* try to load an existing thumbnail for the file */
+ thumb_path = thunar_vfs_thumb_factory_lookup_thumbnail (factory->thumbnail_factory, info);
+
+ /* check if we can generate a thumbnail in case there's none yet */
+ if (G_UNLIKELY (thumb_path == NULL && thunar_vfs_thumb_factory_can_thumbnail (factory->thumbnail_factory, info)))
+ {
+ /* schedule the thumbnail loading for the file */
+ thunar_thumbnail_generator_enqueue (factory->thumbnail_generator, file);
+
+ /* set the thumbnail state to "loading" */
+ thumb_state = THUNAR_FILE_THUMB_STATE_LOADING;
+ }
+
+ if (G_LIKELY (thumb_path != NULL))
+ {
+ thumb_state = THUNAR_FILE_THUMB_STATE_READY;
+ g_object_set_qdata_full (G_OBJECT (file), thunar_file_thumb_path_quark, thumb_path, g_free);
+ }
+ else if (thumb_state != THUNAR_FILE_THUMB_STATE_LOADING)
+ {
+ thumb_state = THUNAR_FILE_THUMB_STATE_NONE;
+ }
+
+ /* apply the new state */
+ thunar_file_set_thumb_state (file, thumb_state);
+ }
+
+ /* check if we have a thumbnail path loaded */
+ if (thumb_state == THUNAR_FILE_THUMB_STATE_READY)
+ {
+ thumb_path = g_object_get_qdata (G_OBJECT (file), thunar_file_thumb_path_quark);
+ if (G_LIKELY (thumb_path != NULL))
+ {
+ // FIXME: Check mtime and URI for the returned icon
+ icon = thunar_icon_factory_lookup_icon (factory, thumb_path, icon_size, FALSE);
+ if (G_LIKELY (icon != NULL))
+ return icon;
+ }
+ }
+
+ /* check if we are currently loading a thumbnail */
+ if (G_UNLIKELY (thumb_state == THUNAR_FILE_THUMB_STATE_LOADING))
+ {
+ /* check if the icon theme supports the loading icon */
+ icon = thunar_icon_factory_lookup_icon (factory, "gnome-fs-loading-icon", icon_size, FALSE);
+ if (G_LIKELY (icon != NULL))
+ return icon;
+ }
+ }
+
+ /* lookup the icon name for the icon in the given state */
+ icon_name = thunar_file_get_icon_name (file, icon_state, factory->icon_theme);
+
+ /* load the icon of the given name */
+ return thunar_icon_factory_load_icon (factory, icon_name, icon_size, NULL, TRUE);
+}
+
+
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-icon-factory.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-icon-factory.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-icon-factory.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,85 @@
+/* $Id: thunar-icon-factory.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_ICON_FACTORY_H__
+#define __THUNAR_ICON_FACTORY_H__
+
+#include <thunar/thunar-file.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarIconFactoryClass ThunarIconFactoryClass;
+typedef struct _ThunarIconFactory ThunarIconFactory;
+
+#define THUNAR_TYPE_ICON_FACTORY (thunar_icon_factory_get_type ())
+#define THUNAR_ICON_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_ICON_FACTORY, ThunarIconFactory))
+#define THUNAR_ICON_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_ICON_FACTORY, ThunarIconFactoryClass))
+#define THUNAR_IS_ICON_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_ICON_FACTORY))
+#define THUNAR_IS_ICON_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_ICON_FACTORY))
+#define THUNAR_ICON_FACTORY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_ICON_FACTORY, ThunarIconFactoryClass))
+
+/**
+ * THUNAR_THUMBNAIL_SIZE:
+ * The icon size which is used for loading and storing
+ * thumbnails in Thunar.
+ **/
+#define THUNAR_THUMBNAIL_SIZE (128)
+
+/**
+ * THUNAR_EMBLEM_MAX_ATTACH_POINTS:
+ * The maximum number of attach points for icons managed
+ * by the #ThunarIconFactory.
+ **/
+#define THUNAR_EMBLEM_MAX_ATTACH_POINTS (12)
+
+/**
+ * ThunarEmblemAttachPoints:
+ * Holds the emblem attach points for a given icon.
+ */
+typedef struct
+{
+ gint num_points;
+ GdkPoint points[THUNAR_EMBLEM_MAX_ATTACH_POINTS];
+} ThunarEmblemAttachPoints;
+
+GType thunar_icon_factory_get_type (void) G_GNUC_CONST;
+
+ThunarIconFactory *thunar_icon_factory_get_default (void);
+ThunarIconFactory *thunar_icon_factory_get_for_icon_theme (GtkIconTheme *icon_theme);
+
+GtkIconTheme *thunar_icon_factory_get_icon_theme (const ThunarIconFactory *factory);
+
+#if 0
+ThunarVfsThumbFactory *thunar_icon_factory_get_thumb_factory (const ThunarIconFactory *factory);
+#endif
+
+GdkPixbuf *thunar_icon_factory_load_icon (ThunarIconFactory *factory,
+ const gchar *name,
+ gint size,
+ ThunarEmblemAttachPoints *attach_points,
+ gboolean wants_default);
+
+GdkPixbuf *thunar_icon_factory_load_file_icon (ThunarIconFactory *factory,
+ ThunarFile *file,
+ ThunarFileIconState icon_state,
+ gint icon_size);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_ICON_FACTORY_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-icon-renderer.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-icon-renderer.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-icon-renderer.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,528 @@
+/* $Id: thunar-icon-renderer.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <thunar/thunar-clipboard-manager.h>
+#include <thunar/thunar-file.h>
+#include <thunar/thunar-gdk-pixbuf-extensions.h>
+#include <thunar/thunar-icon-factory.h>
+#include <thunar/thunar-icon-renderer.h>
+
+
+
+enum
+{
+ PROP_0,
+ PROP_DROP_FILE,
+ PROP_FILE,
+ PROP_FOLLOW_STATE,
+ PROP_SIZE,
+};
+
+
+
+static void thunar_icon_renderer_class_init (ThunarIconRendererClass *klass);
+static void thunar_icon_renderer_init (ThunarIconRenderer *icon_renderer);
+static void thunar_icon_renderer_finalize (GObject *object);
+static void thunar_icon_renderer_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void thunar_icon_renderer_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void thunar_icon_renderer_get_size (GtkCellRenderer *renderer,
+ GtkWidget *widget,
+ GdkRectangle *rectangle,
+ gint *x_offset,
+ gint *y_offset,
+ gint *width,
+ gint *height);
+static void thunar_icon_renderer_render (GtkCellRenderer *renderer,
+ GdkWindow *window,
+ GtkWidget *widget,
+ GdkRectangle *background_area,
+ GdkRectangle *cell_area,
+ GdkRectangle *expose_area,
+ GtkCellRendererState flags);
+
+
+
+struct _ThunarIconRendererClass
+{
+ GtkCellRendererClass __parent__;
+};
+
+struct _ThunarIconRenderer
+{
+ GtkCellRenderer __parent__;
+
+ ThunarFile *drop_file;
+ ThunarFile *file;
+ gboolean follow_state;
+ gint size;
+};
+
+
+
+G_DEFINE_TYPE (ThunarIconRenderer, thunar_icon_renderer, GTK_TYPE_CELL_RENDERER);
+
+
+
+static void
+thunar_icon_renderer_class_init (ThunarIconRendererClass *klass)
+{
+ GtkCellRendererClass *gtkcell_renderer_class;
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_icon_renderer_finalize;
+ gobject_class->get_property = thunar_icon_renderer_get_property;
+ gobject_class->set_property = thunar_icon_renderer_set_property;
+
+ gtkcell_renderer_class = GTK_CELL_RENDERER_CLASS (klass);
+ gtkcell_renderer_class->get_size = thunar_icon_renderer_get_size;
+ gtkcell_renderer_class->render = thunar_icon_renderer_render;
+
+ /**
+ * ThunarIconRenderer:drop-file:
+ *
+ * The file which should be rendered in the drop
+ * accept state.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_DROP_FILE,
+ g_param_spec_object ("drop-file",
+ _("Drop file"),
+ _("The file which should be rendered in as drop acceptor"),
+ THUNAR_TYPE_FILE,
+ EXO_PARAM_READWRITE));
+
+ /**
+ * ThunarIconRenderer:file:
+ *
+ * The file whose icon to render.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_FILE,
+ g_param_spec_object ("file",
+ _("File"),
+ _("The file whose icon to render"),
+ THUNAR_TYPE_FILE,
+ EXO_PARAM_READWRITE));
+
+ /**
+ * ThunarIconRenderer::follow-state:
+ *
+ * Specifies whether the icon renderer should render icons
+ * based on the selection state of the items. This is necessary
+ * for #ExoIconView, which doesn't draw any item state indicators
+ * itself.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_FOLLOW_STATE,
+ g_param_spec_boolean ("follow-state",
+ _("Follow state"),
+ _("Follow state"),
+ FALSE,
+ EXO_PARAM_READWRITE));
+
+ /**
+ * ThunarIconRenderer:icon-size:
+ *
+ * The icon size in pixels.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_SIZE,
+ g_param_spec_int ("size",
+ _("Icon size"),
+ _("The icon size in pixels"),
+ 1, G_MAXINT, 24,
+ EXO_PARAM_READWRITE));
+}
+
+
+
+static void
+thunar_icon_renderer_init (ThunarIconRenderer *icon_renderer)
+{
+ icon_renderer->size = 24;
+}
+
+
+
+static void
+thunar_icon_renderer_finalize (GObject *object)
+{
+ ThunarIconRenderer *icon_renderer = THUNAR_ICON_RENDERER (object);
+
+ /* free the icon data */
+ if (G_UNLIKELY (icon_renderer->drop_file != NULL))
+ g_object_unref (G_OBJECT (icon_renderer->drop_file));
+ if (G_LIKELY (icon_renderer->file != NULL))
+ g_object_unref (G_OBJECT (icon_renderer->file));
+
+ (*G_OBJECT_CLASS (thunar_icon_renderer_parent_class)->finalize) (object);
+}
+
+
+
+static void
+thunar_icon_renderer_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarIconRenderer *icon_renderer = THUNAR_ICON_RENDERER (object);
+
+ switch (prop_id)
+ {
+ case PROP_DROP_FILE:
+ g_value_set_object (value, icon_renderer->drop_file);
+ break;
+
+ case PROP_FILE:
+ g_value_set_object (value, icon_renderer->file);
+ break;
+
+ case PROP_FOLLOW_STATE:
+ g_value_set_boolean (value, icon_renderer->follow_state);
+ break;
+
+ case PROP_SIZE:
+ g_value_set_int (value, icon_renderer->size);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunar_icon_renderer_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarIconRenderer *icon_renderer = THUNAR_ICON_RENDERER (object);
+
+ switch (prop_id)
+ {
+ case PROP_DROP_FILE:
+ if (G_LIKELY (icon_renderer->drop_file != NULL))
+ g_object_unref (G_OBJECT (icon_renderer->drop_file));
+ icon_renderer->drop_file = g_value_get_object (value);
+ if (G_LIKELY (icon_renderer->drop_file != NULL))
+ g_object_ref (G_OBJECT (icon_renderer->drop_file));
+ break;
+
+ case PROP_FILE:
+ if (G_LIKELY (icon_renderer->file != NULL))
+ g_object_unref (G_OBJECT (icon_renderer->file));
+ icon_renderer->file = g_value_get_object (value);
+ if (G_LIKELY (icon_renderer->file != NULL))
+ g_object_ref (G_OBJECT (icon_renderer->file));
+ break;
+
+ case PROP_FOLLOW_STATE:
+ icon_renderer->follow_state = g_value_get_boolean (value);
+ break;
+
+ case PROP_SIZE:
+ icon_renderer->size = g_value_get_int (value);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+
+static void
+thunar_icon_renderer_get_size (GtkCellRenderer *renderer,
+ GtkWidget *widget,
+ GdkRectangle *rectangle,
+ gint *x_offset,
+ gint *y_offset,
+ gint *width,
+ gint *height)
+{
+ ThunarIconRenderer *icon_renderer = THUNAR_ICON_RENDERER (renderer);
+
+ if (rectangle != NULL)
+ {
+ if (x_offset != NULL)
+ {
+ *x_offset = ((gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) ? 1.0 - renderer->xalign : renderer->xalign)
+ * (rectangle->width - icon_renderer->size);
+ *x_offset = MAX (*x_offset, 0) + renderer->xpad;
+ }
+
+ if (y_offset != NULL)
+ {
+ *y_offset = renderer->yalign * (rectangle->height - icon_renderer->size);
+ *y_offset = MAX (*y_offset, 0) + renderer->ypad;
+ }
+ }
+ else
+ {
+ if (x_offset != NULL)
+ *x_offset = 0;
+
+ if (y_offset != NULL)
+ *y_offset = 0;
+ }
+
+ if (G_LIKELY (width != NULL))
+ *width = (gint) renderer->xpad * 2 + icon_renderer->size;
+
+ if (G_LIKELY (height != NULL))
+ *height = (gint) renderer->ypad * 2 + icon_renderer->size;
+}
+
+
+
+static void
+thunar_icon_renderer_render (GtkCellRenderer *renderer,
+ GdkWindow *window,
+ GtkWidget *widget,
+ GdkRectangle *background_area,
+ GdkRectangle *cell_area,
+ GdkRectangle *expose_area,
+ GtkCellRendererState flags)
+{
+ ThunarClipboardManager *clipboard;
+ ThunarFileIconState icon_state;
+ ThunarIconRenderer *icon_renderer = THUNAR_ICON_RENDERER (renderer);
+ ThunarIconFactory *icon_factory;
+ GtkIconTheme *icon_theme;
+ GdkRectangle emblem_area;
+ GdkRectangle icon_area;
+ GdkRectangle draw_area;
+ GtkStateType state;
+ GdkPixbuf *emblem;
+ GdkPixbuf *icon;
+ GdkPixbuf *temp;
+ GList *emblems;
+ GList *lp;
+ gint max_emblems;
+ gint position;
+
+ if (G_UNLIKELY (icon_renderer->file == NULL))
+ return;
+
+ /* determine the icon state */
+ icon_state = (icon_renderer->drop_file != icon_renderer->file)
+ ? THUNAR_FILE_ICON_STATE_DEFAULT
+ : THUNAR_FILE_ICON_STATE_DROP;
+
+ /* load the main icon */
+ icon_theme = gtk_icon_theme_get_for_screen (gdk_drawable_get_screen (window));
+ icon_factory = thunar_icon_factory_get_for_icon_theme (icon_theme);
+ icon = thunar_icon_factory_load_file_icon (icon_factory, icon_renderer->file, icon_state, icon_renderer->size);
+ if (G_UNLIKELY (icon == NULL))
+ {
+ g_object_unref (G_OBJECT (icon_factory));
+ return;
+ }
+
+ /* pre-light the item if we're dragging about it */
+ if (G_UNLIKELY (icon_state == THUNAR_FILE_ICON_STATE_DROP))
+ flags |= GTK_CELL_RENDERER_PRELIT;
+
+ /* determine the real icon size */
+ icon_area.width = gdk_pixbuf_get_width (icon);
+ icon_area.height = gdk_pixbuf_get_height (icon);
+
+ /* scale down the icon on-demand */
+ if (G_UNLIKELY (icon_area.width > cell_area->width || icon_area.height > cell_area->height))
+ {
+ temp = exo_gdk_pixbuf_scale_ratio (icon, icon_renderer->size);
+ g_object_unref (G_OBJECT (icon));
+ icon = temp;
+
+ icon_area.width = gdk_pixbuf_get_width (icon);
+ icon_area.height = gdk_pixbuf_get_height (icon);
+ }
+
+ icon_area.x = cell_area->x + (cell_area->width - icon_area.width) / 2;
+ icon_area.y = cell_area->y + (cell_area->height - icon_area.height) / 2;
+
+ /* check whether the icon is affected by the expose event */
+ if (gdk_rectangle_intersect (expose_area, &icon_area, &draw_area))
+ {
+ /* use a translucent icon to represent cutted files to the user */
+ clipboard = thunar_clipboard_manager_get_for_display (gtk_widget_get_display (widget));
+ if (thunar_clipboard_manager_has_cutted_file (clipboard, icon_renderer->file))
+ {
+ temp = thunar_gdk_pixbuf_lucent (icon, 50);
+ g_object_unref (G_OBJECT (icon));
+ icon = temp;
+ }
+ g_object_unref (G_OBJECT (clipboard));
+
+ /* colorize the icon if we should follow the selection state */
+ if ((flags & (GTK_CELL_RENDERER_SELECTED | GTK_CELL_RENDERER_PRELIT)) != 0 && icon_renderer->follow_state)
+ {
+ if ((flags & GTK_CELL_RENDERER_SELECTED) != 0)
+ {
+ state = GTK_WIDGET_HAS_FOCUS (widget) ? GTK_STATE_SELECTED : GTK_STATE_ACTIVE;
+ temp = thunar_gdk_pixbuf_colorize (icon, &widget->style->base[state]);
+ g_object_unref (G_OBJECT (icon));
+ icon = temp;
+ }
+
+ if ((flags & GTK_CELL_RENDERER_PRELIT) != 0)
+ {
+ temp = thunar_gdk_pixbuf_spotlight (icon);
+ g_object_unref (G_OBJECT (icon));
+ icon = temp;
+ }
+ }
+
+ /* render the invalid parts of the icon */
+ gdk_draw_pixbuf (window, widget->style->black_gc, icon,
+ draw_area.x - icon_area.x, draw_area.y - icon_area.y,
+ draw_area.x, draw_area.y, draw_area.width, draw_area.height,
+ GDK_RGB_DITHER_NORMAL, 0, 0);
+ }
+
+ /* release the file's icon */
+ g_object_unref (G_OBJECT (icon));
+
+ /* display the primary emblem as well (if any) */
+ emblems = thunar_file_get_emblem_names (icon_renderer->file);
+ if (G_UNLIKELY (emblems != NULL))
+ {
+ /* render up to four emblems for sizes from 48 onwards, else up to 2 emblems */
+ max_emblems = (icon_renderer->size < 48) ? 2 : 4;
+
+ /* render the emblems */
+ for (lp = emblems, position = 0; lp != NULL && position < max_emblems; lp = lp->next)
+ {
+ /* check if we have the emblem in the icon theme */
+ emblem = thunar_icon_factory_load_icon (icon_factory, lp->data, icon_renderer->size, NULL, FALSE);
+ if (G_UNLIKELY (emblem == NULL))
+ continue;
+
+ /* determine the dimensions of the emblem */
+ emblem_area.width = gdk_pixbuf_get_width (emblem);
+ emblem_area.height = gdk_pixbuf_get_height (emblem);
+
+ /* shrink insane emblems */
+ if (G_UNLIKELY (MAX (emblem_area.width, emblem_area.height) > (2 * icon_renderer->size) / 3))
+ {
+ /* scale down the emblem */
+ temp = exo_gdk_pixbuf_scale_ratio (emblem, (2 * icon_renderer->size) / 3);
+ g_object_unref (G_OBJECT (emblem));
+ emblem = temp;
+
+ /* determine the size again */
+ emblem_area.width = gdk_pixbuf_get_width (emblem);
+ emblem_area.height = gdk_pixbuf_get_height (emblem);
+ }
+
+ /* determine a good position for the emblem, depending on the position index */
+ switch (position)
+ {
+ case 0: /* right/bottom */
+ emblem_area.x = MIN (icon_area.x + icon_area.width - emblem_area.width / 2,
+ cell_area->x + cell_area->width - emblem_area.width);
+ emblem_area.y = MIN (icon_area.y + icon_area.height - emblem_area.height / 2,
+ cell_area->y + cell_area->height -emblem_area.height);
+ break;
+
+ case 1: /* left/bottom */
+ emblem_area.x = MAX (icon_area.x - emblem_area.width / 2,
+ cell_area->x);
+ emblem_area.y = MIN (icon_area.y + icon_area.height - emblem_area.height / 2,
+ cell_area->y + cell_area->height -emblem_area.height);
+ break;
+
+ case 2: /* left/top */
+ emblem_area.x = MAX (icon_area.x - emblem_area.width / 2,
+ cell_area->x);
+ emblem_area.y = MAX (icon_area.y - emblem_area.height / 2,
+ cell_area->y);
+ break;
+
+ case 3: /* right/top */
+ emblem_area.x = MIN (icon_area.x + icon_area.width - emblem_area.width / 2,
+ cell_area->x + cell_area->width - emblem_area.width);
+ emblem_area.y = MAX (icon_area.y - emblem_area.height / 2,
+ cell_area->y);
+ break;
+
+ default:
+ g_assert_not_reached ();
+ }
+
+ /* render the emblem */
+ if (gdk_rectangle_intersect (expose_area, &emblem_area, &draw_area))
+ {
+ gdk_draw_pixbuf (window, widget->style->black_gc, emblem,
+ draw_area.x - emblem_area.x, draw_area.y - emblem_area.y,
+ draw_area.x, draw_area.y, draw_area.width, draw_area.height,
+ GDK_RGB_DITHER_NORMAL, 0, 0);
+ }
+
+ /* release the emblem */
+ g_object_unref (G_OBJECT (emblem));
+
+ /* advance the position index */
+ ++position;
+ }
+
+ /* release the emblem name list */
+ g_list_free (emblems);
+ }
+
+ /* release our reference on the icon factory */
+ g_object_unref (G_OBJECT (icon_factory));
+}
+
+
+
+/**
+ * thunar_icon_renderer_new:
+ *
+ * Creates a new #ThunarIconRenderer. Adjust rendering
+ * parameters using object properties. Object properties can be
+ * set globally with #g_object_set. Also, with #GtkTreeViewColumn,
+ * you can bind a property to a value in a #GtkTreeModel.
+ *
+ * Return value: the newly allocated #ThunarIconRenderer.
+ **/
+GtkCellRenderer*
+thunar_icon_renderer_new (void)
+{
+ return g_object_new (THUNAR_TYPE_ICON_RENDERER, NULL);
+}
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-icon-renderer.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-icon-renderer.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-icon-renderer.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,43 @@
+/* $Id: thunar-icon-renderer.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_ICON_RENDERER_H__
+#define __THUNAR_ICON_RENDERER_H__
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarIconRendererClass ThunarIconRendererClass;
+typedef struct _ThunarIconRenderer ThunarIconRenderer;
+
+#define THUNAR_TYPE_ICON_RENDERER (thunar_icon_renderer_get_type ())
+#define THUNAR_ICON_RENDERER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_ICON_RENDERER, ThunarIconRenderer))
+#define THUNAR_ICON_RENDERER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_ICON_RENDERER, ThunarIconRendererClass))
+#define THUNAR_IS_ICON_RENDERER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_ICON_RENDERER))
+#define THUNAR_IS_ICON_RENDERER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_ICON_RENDERER))
+#define THUNAR_ICON_RENDERER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_ICON_RENDERER, ThunarIconRendererClass))
+
+GType thunar_icon_renderer_get_type (void) G_GNUC_CONST;
+
+GtkCellRenderer *thunar_icon_renderer_new (void) G_GNUC_MALLOC;
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_ICON_RENDERER_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-icon-view-ui.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-icon-view-ui.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-icon-view-ui.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,40 @@
+/* automatically generated from ./thunar-icon-view-ui.xml */
+static const unsigned thunar_icon_view_ui_length = 1725u;
+#ifdef __SUNPRO_C
+#pragma align 4 (thunar_icon_view_ui)
+#endif
+#ifdef __GNUC__
+static const char thunar_icon_view_ui[] __attribute__ ((__aligned__ (4))) =
+#else
+static const char thunar_icon_view_ui[] =
+#endif
+{
+ "<ui>\n\n <!--\n $Id: thunar-icon-view-ui.xml 17033 2005-08-19 23:18"
+ ":46Z benny $\n\n Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>"
+ "\n\n Thunar icon view user interface description file. Do NOT\n s"
+ "imply edit this file if you don\'t know how the whole system\n works"
+ ", because it\'s too easy to break something.\n -->\n\n <menubar name="
+ "\"main-menu\">\n <menu action=\"view-menu\" name=\"view-menu\">\n "
+ " <placeholder name=\"placeholder-view-items-actions\">\n <menu"
+ " action=\"arrange-items-menu\" name=\"arrange-items-menu\">\n "
+ "<menuitem action=\"sort-by-name\" name=\"sort-by-name\" />\n <"
+ "menuitem action=\"sort-by-size\" name=\"sort-by-size\" />\n <m"
+ "enuitem action=\"sort-by-type\" name=\"sort-by-type\" />\n <me"
+ "nuitem action=\"sort-by-mtime\" name=\"sort-by-mtime\" />\n <s"
+ "eparator />\n <menuitem action=\"sort-ascending\" name=\"sort-"
+ "ascending\" />\n <menuitem action=\"sort-descending\" name=\"s"
+ "ort-descending\" />\n </menu>\n </placeholder>\n </menu>"
+ "\n </menubar>\n\n <popup action=\"folder-context-menu\" name=\"folder"
+ "-context-menu\">\n <placeholder name=\"placeholder-view-items-action"
+ "s\">\n <menu action=\"arrange-items-menu\" name=\"arrange-items-me"
+ "nu\">\n <menuitem action=\"sort-by-name\" name=\"sort-by-name\" "
+ "/>\n <menuitem action=\"sort-by-size\" name=\"sort-by-size\" />\n"
+ " <menuitem action=\"sort-by-type\" name=\"sort-by-type\" />\n "
+ " <menuitem action=\"sort-by-mtime\" name=\"sort-by-mtime\" />\n "
+ " <separator />\n <menuitem action=\"sort-ascending\" name=\"s"
+ "ort-ascending\" />\n <menuitem action=\"sort-descending\" name=\""
+ "sort-descending\" />\n </menu>\n </placeholder>\n </popup>\n\n"
+ "</ui>\n\n<!-- vi: set ts=2 sw=2 et ai nocindent syntax=xml: -->\n"
+};
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-icon-view-ui.xml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-icon-view-ui.xml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-icon-view-ui.xml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,45 @@
+<ui>
+
+ <!--
+ $Id: thunar-icon-view-ui.xml 17033 2005-08-19 23:18:46Z benny $
+
+ Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+
+ Thunar icon view user interface description file. Do NOT
+ simply edit this file if you don't know how the whole system
+ works, because it's too easy to break something.
+ -->
+
+ <menubar name="main-menu">
+ <menu action="view-menu" name="view-menu">
+ <placeholder name="placeholder-view-items-actions">
+ <menu action="arrange-items-menu" name="arrange-items-menu">
+ <menuitem action="sort-by-name" name="sort-by-name" />
+ <menuitem action="sort-by-size" name="sort-by-size" />
+ <menuitem action="sort-by-type" name="sort-by-type" />
+ <menuitem action="sort-by-mtime" name="sort-by-mtime" />
+ <separator />
+ <menuitem action="sort-ascending" name="sort-ascending" />
+ <menuitem action="sort-descending" name="sort-descending" />
+ </menu>
+ </placeholder>
+ </menu>
+ </menubar>
+
+ <popup action="folder-context-menu" name="folder-context-menu">
+ <placeholder name="placeholder-view-items-actions">
+ <menu action="arrange-items-menu" name="arrange-items-menu">
+ <menuitem action="sort-by-name" name="sort-by-name" />
+ <menuitem action="sort-by-size" name="sort-by-size" />
+ <menuitem action="sort-by-type" name="sort-by-type" />
+ <menuitem action="sort-by-mtime" name="sort-by-mtime" />
+ <separator />
+ <menuitem action="sort-ascending" name="sort-ascending" />
+ <menuitem action="sort-descending" name="sort-descending" />
+ </menu>
+ </placeholder>
+ </popup>
+
+</ui>
+
+<!-- vi: set ts=2 sw=2 et ai nocindent syntax=xml: -->
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-icon-view.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-icon-view.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-icon-view.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,752 @@
+/* $Id: thunar-icon-view.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <gdk/gdkkeysyms.h>
+
+#include <thunar/thunar-icon-view.h>
+#include <thunar/thunar-icon-view-ui.h>
+
+#if !GTK_CHECK_VERSION(2,7,1) && defined(GDK_WINDOWING_X11) && defined(HAVE_CAIRO)
+#include <cairo/cairo-xlib.h>
+#include <gdk/gdkx.h>
+#endif
+
+
+
+static void thunar_icon_view_class_init (ThunarIconViewClass *klass);
+static void thunar_icon_view_init (ThunarIconView *icon_view);
+static AtkObject *thunar_icon_view_get_accessible (GtkWidget *widget);
+static void thunar_icon_view_connect_ui_manager (ThunarStandardView *standard_view,
+ GtkUIManager *ui_manager);
+static void thunar_icon_view_disconnect_ui_manager (ThunarStandardView *standard_view,
+ GtkUIManager *ui_manager);
+static GList *thunar_icon_view_get_selected_items (ThunarStandardView *standard_view);
+static void thunar_icon_view_select_all (ThunarStandardView *standard_view);
+static void thunar_icon_view_unselect_all (ThunarStandardView *standard_view);
+static void thunar_icon_view_select_path (ThunarStandardView *standard_view,
+ GtkTreePath *path);
+static void thunar_icon_view_set_cursor (ThunarStandardView *standard_view,
+ GtkTreePath *path,
+ gboolean start_editing);
+static void thunar_icon_view_scroll_to_path (ThunarStandardView *standard_view,
+ GtkTreePath *path);
+static GtkTreePath *thunar_icon_view_get_path_at_pos (ThunarStandardView *standard_view,
+ gint x,
+ gint y);
+static void thunar_icon_view_highlight_path (ThunarStandardView *standard_view,
+ GtkTreePath *path);
+static GtkAction *thunar_icon_view_gesture_action (ThunarIconView *icon_view);
+static void thunar_icon_view_action_sort (GtkAction *action,
+ GtkAction *current,
+ ThunarStandardView *standard_view);
+static gboolean thunar_icon_view_button_press_event (ExoIconView *view,
+ GdkEventButton *event,
+ ThunarIconView *icon_view);
+static gboolean thunar_icon_view_button_release_event (ExoIconView *view,
+ GdkEventButton *event,
+ ThunarIconView *icon_view);
+static gboolean thunar_icon_view_expose_event (ExoIconView *view,
+ GdkEventExpose *event,
+ ThunarIconView *icon_view);
+static gboolean thunar_icon_view_key_press_event (ExoIconView *view,
+ GdkEventKey *event,
+ ThunarIconView *icon_view);
+static gboolean thunar_icon_view_motion_notify_event (ExoIconView *view,
+ GdkEventMotion *event,
+ ThunarIconView *icon_view);
+static void thunar_icon_view_item_activated (ExoIconView *view,
+ GtkTreePath *path,
+ ThunarIconView *icon_view);
+static void thunar_icon_view_sort_column_changed (GtkTreeSortable *sortable,
+ ThunarIconView *icon_view);
+
+
+
+struct _ThunarIconViewClass
+{
+ ThunarStandardViewClass __parent__;
+};
+
+struct _ThunarIconView
+{
+ ThunarStandardView __parent__;
+
+ /* the UI manager merge id for the icon view */
+ gint ui_merge_id;
+
+ /* mouse gesture support */
+ gint gesture_start_x;
+ gint gesture_start_y;
+ gint gesture_current_x;
+ gint gesture_current_y;
+ gint gesture_expose_id;
+ gint gesture_motion_id;
+ gint gesture_release_id;
+};
+
+
+
+static const GtkActionEntry action_entries[] =
+{
+ { "arrange-items-menu", NULL, N_ ("Arran_ge Items"), NULL, NULL, NULL, },
+};
+
+static const GtkRadioActionEntry column_action_entries[] =
+{
+ { "sort-by-name", NULL, N_ ("Sort By _Name"), NULL, N_ ("Keep items sorted by their name in rows"), THUNAR_LIST_MODEL_COLUMN_NAME, },
+ { "sort-by-size", NULL, N_ ("Sort By _Size"), NULL, N_ ("Keep items sorted by their size in rows"), THUNAR_LIST_MODEL_COLUMN_SIZE, },
+ { "sort-by-type", NULL, N_ ("Sort By _Type"), NULL, N_ ("Keep items sorted by their type in rows"), THUNAR_LIST_MODEL_COLUMN_TYPE, },
+ { "sort-by-mtime", NULL, N_ ("Sort By Modification _Date"), NULL, N_ ("Keep items sorted by their modification date in rows"), THUNAR_LIST_MODEL_COLUMN_DATE_MODIFIED, },
+};
+
+static const GtkRadioActionEntry order_action_entries[] =
+{
+ { "sort-ascending", NULL, N_ ("_Ascending"), NULL, N_ ("Sort items in ascending order"), GTK_SORT_ASCENDING, },
+ { "sort-descending", NULL, N_ ("_Descending"), NULL, N_ ("Sort items in descending order"), GTK_SORT_DESCENDING, },
+};
+
+
+
+G_DEFINE_TYPE (ThunarIconView, thunar_icon_view, THUNAR_TYPE_STANDARD_VIEW);
+
+
+
+static void
+thunar_icon_view_class_init (ThunarIconViewClass *klass)
+{
+ ThunarStandardViewClass *thunarstandard_view_class;
+ GtkWidgetClass *gtkwidget_class;
+
+ gtkwidget_class = GTK_WIDGET_CLASS (klass);
+ gtkwidget_class->get_accessible = thunar_icon_view_get_accessible;
+
+ thunarstandard_view_class = THUNAR_STANDARD_VIEW_CLASS (klass);
+ thunarstandard_view_class->connect_ui_manager = thunar_icon_view_connect_ui_manager;
+ thunarstandard_view_class->disconnect_ui_manager = thunar_icon_view_disconnect_ui_manager;
+ thunarstandard_view_class->get_selected_items = thunar_icon_view_get_selected_items;
+ thunarstandard_view_class->select_all = thunar_icon_view_select_all;
+ thunarstandard_view_class->unselect_all = thunar_icon_view_unselect_all;
+ thunarstandard_view_class->select_path = thunar_icon_view_select_path;
+ thunarstandard_view_class->set_cursor = thunar_icon_view_set_cursor;
+ thunarstandard_view_class->scroll_to_path = thunar_icon_view_scroll_to_path;
+ thunarstandard_view_class->get_path_at_pos = thunar_icon_view_get_path_at_pos;
+ thunarstandard_view_class->highlight_path = thunar_icon_view_highlight_path;
+}
+
+
+
+static void
+thunar_icon_view_init (ThunarIconView *icon_view)
+{
+ GtkWidget *view;
+
+ /* create the real view */
+ view = exo_icon_view_new ();
+ g_signal_connect (G_OBJECT (view), "button-press-event", G_CALLBACK (thunar_icon_view_button_press_event), icon_view);
+ g_signal_connect (G_OBJECT (view), "key-press-event", G_CALLBACK (thunar_icon_view_key_press_event), icon_view);
+ g_signal_connect (G_OBJECT (view), "item-activated", G_CALLBACK (thunar_icon_view_item_activated), icon_view);
+ g_signal_connect_swapped (G_OBJECT (view), "selection-changed", G_CALLBACK (thunar_standard_view_selection_changed), icon_view);
+ gtk_container_add (GTK_CONTAINER (icon_view), view);
+ gtk_widget_show (view);
+
+ /* initialize the icon view properties */
+ exo_icon_view_set_selection_mode (EXO_ICON_VIEW (view), GTK_SELECTION_MULTIPLE);
+
+ /* add the icon renderer */
+ g_object_set (G_OBJECT (THUNAR_STANDARD_VIEW (icon_view)->icon_renderer),
+ "follow-state", TRUE,
+ "size", 48,
+ "ypad", 3u,
+ NULL);
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (view), THUNAR_STANDARD_VIEW (icon_view)->icon_renderer, FALSE);
+ gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (view), THUNAR_STANDARD_VIEW (icon_view)->icon_renderer,
+ "file", THUNAR_LIST_MODEL_COLUMN_FILE);
+
+ /* add the name renderer */
+ g_object_set (G_OBJECT (THUNAR_STANDARD_VIEW (icon_view)->name_renderer),
+ "follow-state", TRUE,
+ "wrap-mode", PANGO_WRAP_WORD_CHAR,
+ "wrap-width", 128,
+ "yalign", 0.0f,
+ NULL);
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (view), THUNAR_STANDARD_VIEW (icon_view)->name_renderer, TRUE);
+ gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (view), THUNAR_STANDARD_VIEW (icon_view)->name_renderer,
+ "text", THUNAR_LIST_MODEL_COLUMN_NAME);
+
+ /* setup the icon view actions */
+ gtk_action_group_add_actions (THUNAR_STANDARD_VIEW (icon_view)->action_group,
+ action_entries, G_N_ELEMENTS (action_entries),
+ GTK_WIDGET (icon_view));
+ gtk_action_group_add_radio_actions (THUNAR_STANDARD_VIEW (icon_view)->action_group, column_action_entries,
+ G_N_ELEMENTS (column_action_entries), THUNAR_LIST_MODEL_COLUMN_NAME,
+ G_CALLBACK (thunar_icon_view_action_sort), icon_view);
+ gtk_action_group_add_radio_actions (THUNAR_STANDARD_VIEW (icon_view)->action_group, order_action_entries,
+ G_N_ELEMENTS (order_action_entries), GTK_SORT_ASCENDING,
+ G_CALLBACK (thunar_icon_view_action_sort), icon_view);
+
+ /* we need to listen to sort column changes to sync the menu items */
+ g_signal_connect (G_OBJECT (THUNAR_STANDARD_VIEW (icon_view)->model), "sort-column-changed",
+ G_CALLBACK (thunar_icon_view_sort_column_changed), icon_view);
+ thunar_icon_view_sort_column_changed (GTK_TREE_SORTABLE (THUNAR_STANDARD_VIEW (icon_view)->model), icon_view);
+}
+
+
+
+static AtkObject*
+thunar_icon_view_get_accessible (GtkWidget *widget)
+{
+ AtkObject *object;
+
+ /* query the atk object for the icon view class */
+ object = GTK_WIDGET_CLASS (thunar_icon_view_parent_class)->get_accessible (widget);
+
+ /* set custom Atk properties for the icon view */
+ if (G_LIKELY (object != NULL))
+ {
+ atk_object_set_name (object, _("Icon view"));
+ atk_object_set_description (object, _("Icon based directory listing"));
+ }
+
+ return object;
+}
+
+
+
+static void
+thunar_icon_view_connect_ui_manager (ThunarStandardView *standard_view,
+ GtkUIManager *ui_manager)
+{
+ ThunarIconView *icon_view = THUNAR_ICON_VIEW (standard_view);
+ GError *error = NULL;
+
+ icon_view->ui_merge_id = gtk_ui_manager_add_ui_from_string (ui_manager, thunar_icon_view_ui,
+ thunar_icon_view_ui_length, &error);
+ if (G_UNLIKELY (icon_view->ui_merge_id == 0))
+ {
+ g_error ("Failed to merge ThunarIconView menus: %s", error->message);
+ g_error_free (error);
+ }
+}
+
+
+
+static void
+thunar_icon_view_disconnect_ui_manager (ThunarStandardView *standard_view,
+ GtkUIManager *ui_manager)
+{
+ gtk_ui_manager_remove_ui (ui_manager, THUNAR_ICON_VIEW (standard_view)->ui_merge_id);
+}
+
+
+
+static GList*
+thunar_icon_view_get_selected_items (ThunarStandardView *standard_view)
+{
+ return exo_icon_view_get_selected_items (EXO_ICON_VIEW (GTK_BIN (standard_view)->child));
+}
+
+
+
+static void
+thunar_icon_view_select_all (ThunarStandardView *standard_view)
+{
+ g_return_if_fail (THUNAR_IS_ICON_VIEW (standard_view));
+ exo_icon_view_select_all (EXO_ICON_VIEW (GTK_BIN (standard_view)->child));
+}
+
+
+
+static void
+thunar_icon_view_unselect_all (ThunarStandardView *standard_view)
+{
+ g_return_if_fail (THUNAR_IS_ICON_VIEW (standard_view));
+ exo_icon_view_unselect_all (EXO_ICON_VIEW (GTK_BIN (standard_view)->child));
+}
+
+
+
+static void
+thunar_icon_view_select_path (ThunarStandardView *standard_view,
+ GtkTreePath *path)
+{
+ g_return_if_fail (THUNAR_IS_ICON_VIEW (standard_view));
+ exo_icon_view_select_path (EXO_ICON_VIEW (GTK_BIN (standard_view)->child), path);
+}
+
+
+
+static void
+thunar_icon_view_set_cursor (ThunarStandardView *standard_view,
+ GtkTreePath *path,
+ gboolean start_editing)
+{
+ GtkCellRendererMode mode;
+
+ g_return_if_fail (THUNAR_IS_ICON_VIEW (standard_view));
+
+ /* make sure the name renderer is editable */
+ mode = standard_view->name_renderer->mode;
+ standard_view->name_renderer->mode = GTK_CELL_RENDERER_MODE_EDITABLE;
+
+ /* tell the icon view to start editing the given item */
+ exo_icon_view_set_cursor (EXO_ICON_VIEW (GTK_BIN (standard_view)->child), path, standard_view->name_renderer, start_editing);
+
+ /* reset the name renderer mode */
+ standard_view->name_renderer->mode = mode;
+}
+
+
+
+static void
+thunar_icon_view_scroll_to_path (ThunarStandardView *standard_view,
+ GtkTreePath *path)
+{
+ g_return_if_fail (THUNAR_IS_ICON_VIEW (standard_view));
+ exo_icon_view_scroll_to_path (EXO_ICON_VIEW (GTK_BIN (standard_view)->child), path, FALSE, 0.0f, 0.0f);
+}
+
+
+
+static GtkTreePath*
+thunar_icon_view_get_path_at_pos (ThunarStandardView *standard_view,
+ gint x,
+ gint y)
+{
+ g_return_val_if_fail (THUNAR_IS_ICON_VIEW (standard_view), NULL);
+ return exo_icon_view_get_path_at_pos (EXO_ICON_VIEW (GTK_BIN (standard_view)->child), x, y);
+}
+
+
+
+static void
+thunar_icon_view_highlight_path (ThunarStandardView *standard_view,
+ GtkTreePath *path)
+{
+ g_return_if_fail (THUNAR_IS_ICON_VIEW (standard_view));
+ exo_icon_view_set_drag_dest_item (EXO_ICON_VIEW (GTK_BIN (standard_view)->child), path, EXO_ICON_VIEW_DROP_INTO);
+}
+
+
+
+static GtkAction*
+thunar_icon_view_gesture_action (ThunarIconView *icon_view)
+{
+ if (icon_view->gesture_start_y - icon_view->gesture_current_y > 40
+ && ABS (icon_view->gesture_start_x - icon_view->gesture_current_x) < 40)
+ {
+ return gtk_ui_manager_get_action (THUNAR_STANDARD_VIEW (icon_view)->ui_manager, "/main-menu/go-menu/open-parent");
+ }
+ else if (icon_view->gesture_start_x - icon_view->gesture_current_x > 40
+ && ABS (icon_view->gesture_start_y - icon_view->gesture_current_y) < 40)
+ {
+ return gtk_ui_manager_get_action (THUNAR_STANDARD_VIEW (icon_view)->ui_manager, "/main-menu/go-menu/back");
+ }
+ else if (icon_view->gesture_current_x - icon_view->gesture_start_x > 40
+ && ABS (icon_view->gesture_start_y - icon_view->gesture_current_y) < 40)
+ {
+ return gtk_ui_manager_get_action (THUNAR_STANDARD_VIEW (icon_view)->ui_manager, "/main-menu/go-menu/forward");
+ }
+
+ return NULL;
+}
+
+
+
+static void
+thunar_icon_view_action_sort (GtkAction *action,
+ GtkAction *current,
+ ThunarStandardView *standard_view)
+{
+ GtkSortType order;
+ gint column;
+
+ /* query the new sort column id */
+ action = gtk_action_group_get_action (standard_view->action_group, "sort-by-name");
+ column = gtk_radio_action_get_current_value (GTK_RADIO_ACTION (action));
+
+ /* query the new sort order */
+ action = gtk_action_group_get_action (standard_view->action_group, "sort-ascending");
+ order = gtk_radio_action_get_current_value (GTK_RADIO_ACTION (action));
+
+ /* apply the new settings */
+ gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (standard_view->model), column, order);
+}
+
+
+
+static gboolean
+thunar_icon_view_button_press_event (ExoIconView *view,
+ GdkEventButton *event,
+ ThunarIconView *icon_view)
+{
+ GtkTreePath *path;
+ GtkTreeIter iter;
+ ThunarFile *file;
+ GtkAction *action;
+
+ if (event->type == GDK_BUTTON_PRESS && event->button == 3)
+ {
+ /* open the context menu on right clicks */
+ if (exo_icon_view_get_item_at_pos (view, event->x, event->y, &path, NULL))
+ {
+ /* select the path on which the user clicked if not selected yet */
+ if (!exo_icon_view_path_is_selected (view, path))
+ {
+ /* we don't unselect all other items if Control is active */
+ if ((event->state & GDK_CONTROL_MASK) == 0)
+ exo_icon_view_unselect_all (view);
+ exo_icon_view_select_path (view, path);
+ }
+ gtk_tree_path_free (path);
+
+ /* queue the menu popup */
+ thunar_standard_view_queue_popup (THUNAR_STANDARD_VIEW (icon_view), event);
+ }
+ else if ((event->state & gtk_accelerator_get_default_mod_mask ()) == 0)
+ {
+ /* user clicked on an empty area, so we unselect everything
+ * to make sure that the folder context menu is opened.
+ */
+ exo_icon_view_unselect_all (view);
+
+ /* open the context menu */
+ thunar_standard_view_context_menu (THUNAR_STANDARD_VIEW (icon_view), event->button, event->time);
+ }
+
+ return TRUE;
+ }
+ else if ((event->type == GDK_BUTTON_PRESS || event->type == GDK_2BUTTON_PRESS) && event->button == 2)
+ {
+ /* unselect all currently selected items */
+ exo_icon_view_unselect_all (view);
+
+ /* determine the path to the item that was middle-clicked */
+ if (exo_icon_view_get_item_at_pos (view, event->x, event->y, &path, NULL))
+ {
+ /* select only the path to the item on which the user clicked */
+ exo_icon_view_select_path (view, path);
+
+ /* if the event was a double-click, then we'll open the file or folder (folder's are opened in new windows) */
+ if (G_LIKELY (event->type == GDK_2BUTTON_PRESS))
+ {
+ /* determine the file for the path */
+ gtk_tree_model_get_iter (GTK_TREE_MODEL (THUNAR_STANDARD_VIEW (icon_view)->model), &iter, path);
+ file = thunar_list_model_get_file (THUNAR_STANDARD_VIEW (icon_view)->model, &iter);
+ if (G_LIKELY (file != NULL))
+ {
+ /* determine the action to perform depending on the type of the file */
+ action = gtk_action_group_get_action (THUNAR_STANDARD_VIEW (icon_view)->action_group,
+ thunar_file_is_directory (file) ? "open-in-new-window" : "open");
+
+ /* emit the action */
+ if (G_LIKELY (action != NULL))
+ gtk_action_activate (action);
+
+ /* release the file reference */
+ g_object_unref (G_OBJECT (file));
+ }
+ }
+
+ /* cleanup */
+ gtk_tree_path_free (path);
+ }
+ else if (event->type == GDK_BUTTON_PRESS)
+ {
+ icon_view->gesture_start_x = icon_view->gesture_current_x = event->x;
+ icon_view->gesture_start_y = icon_view->gesture_current_y = event->y;
+ icon_view->gesture_expose_id = g_signal_connect_after (G_OBJECT (view), "expose-event",
+ G_CALLBACK (thunar_icon_view_expose_event),
+ G_OBJECT (icon_view));
+ icon_view->gesture_motion_id = g_signal_connect (G_OBJECT (view), "motion-notify-event",
+ G_CALLBACK (thunar_icon_view_motion_notify_event),
+ G_OBJECT (icon_view));
+ icon_view->gesture_release_id = g_signal_connect (G_OBJECT (view), "button-release-event",
+ G_CALLBACK (thunar_icon_view_button_release_event),
+ G_OBJECT (icon_view));
+ }
+
+ /* don't run the default handler here */
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+
+
+static gboolean
+thunar_icon_view_button_release_event (ExoIconView *view,
+ GdkEventButton *event,
+ ThunarIconView *icon_view)
+{
+ GtkAction *action;
+
+ g_return_val_if_fail (EXO_IS_ICON_VIEW (view), FALSE);
+ g_return_val_if_fail (THUNAR_IS_ICON_VIEW (icon_view), FALSE);
+ g_return_val_if_fail (icon_view->gesture_expose_id > 0, FALSE);
+ g_return_val_if_fail (icon_view->gesture_motion_id > 0, FALSE);
+ g_return_val_if_fail (icon_view->gesture_release_id > 0, FALSE);
+
+ /* run the selected action (if any) */
+ action = thunar_icon_view_gesture_action (icon_view);
+ if (G_LIKELY (action != NULL))
+ gtk_action_activate (action);
+
+ /* unregister the "expose-event" handler */
+ g_signal_handler_disconnect (G_OBJECT (view), icon_view->gesture_expose_id);
+ icon_view->gesture_expose_id = 0;
+
+ /* unregister the "motion-notify-event" handler */
+ g_signal_handler_disconnect (G_OBJECT (view), icon_view->gesture_motion_id);
+ icon_view->gesture_motion_id = 0;
+
+ /* unregister the "button-release-event" handler */
+ g_signal_handler_disconnect (G_OBJECT (view), icon_view->gesture_release_id);
+ icon_view->gesture_release_id = 0;
+
+ /* redraw the icon view */
+ gtk_widget_queue_draw (GTK_WIDGET (view));
+
+ return FALSE;
+}
+
+
+
+#if GTK_CHECK_VERSION(2,7,1)
+static cairo_t*
+get_cairo_context (GdkWindow *window)
+{
+ return gdk_cairo_create (window);
+}
+#elif defined(GDK_WINDOWING_X11) && defined(HAVE_CAIRO)
+static cairo_t*
+get_cairo_context (GdkWindow *window)
+{
+ cairo_surface_t *surface;
+ GdkDrawable *drawable;
+ cairo_t *cr;
+ gint w;
+ gint h;
+ gint x;
+ gint y;
+
+ gdk_window_get_internal_paint_info (window, &drawable, &x, &y);
+ gdk_drawable_get_size (drawable, &w, &h);
+
+ surface = cairo_xlib_surface_create (GDK_DRAWABLE_XDISPLAY (drawable), GDK_DRAWABLE_XID (drawable),
+ gdk_x11_visual_get_xvisual (gdk_drawable_get_visual (drawable)), w, h);
+ cr = cairo_create (surface);
+ cairo_surface_destroy (surface);
+
+ cairo_translate (cr, -x, -y);
+
+ return cr;
+}
+#endif
+
+
+
+static gboolean
+thunar_icon_view_expose_event (ExoIconView *view,
+ GdkEventExpose *event,
+ ThunarIconView *icon_view)
+{
+ GtkIconSet *stock_icon_set;
+ GtkAction *action = NULL;
+ GdkPixbuf *stock_icon = NULL;
+ gchar *stock_id;
+#if GTK_CHECK_VERSION(2,7,1) || (defined(GDK_WINDOWING_X11) && defined(HAVE_CAIRO))
+ GdkColor bg;
+ cairo_t *cr;
+#endif
+
+ g_return_val_if_fail (EXO_IS_ICON_VIEW (view), FALSE);
+ g_return_val_if_fail (THUNAR_IS_ICON_VIEW (icon_view), FALSE);
+ g_return_val_if_fail (icon_view->gesture_expose_id > 0, FALSE);
+ g_return_val_if_fail (icon_view->gesture_motion_id > 0, FALSE);
+ g_return_val_if_fail (icon_view->gesture_release_id > 0, FALSE);
+
+ /* shade the icon view content while performing mouse gestures */
+#if GTK_CHECK_VERSION(2,7,1) || (defined(GDK_WINDOWING_X11) && defined(HAVE_CAIRO))
+ cr = get_cairo_context (event->window);
+ bg = GTK_WIDGET (view)->style->base[GTK_STATE_NORMAL];
+ cairo_set_source_rgba (cr, bg.red / 65535.0, bg.green / 65535.0, bg.blue / 65535.0, 0.7);
+ cairo_rectangle (cr, event->area.x, event->area.y, event->area.width, event->area.height);
+ cairo_clip (cr);
+ cairo_paint (cr);
+ cairo_destroy (cr);
+#endif
+
+ /* determine the gesture action */
+ action = thunar_icon_view_gesture_action (icon_view);
+ if (G_LIKELY (action != NULL))
+ {
+ /* determine the stock icon for the action */
+ g_object_get (G_OBJECT (action), "stock-id", &stock_id, NULL);
+
+ /* lookup the icon set for the stock icon */
+ stock_icon_set = gtk_style_lookup_icon_set (GTK_WIDGET (view)->style, stock_id);
+ if (G_LIKELY (stock_icon_set != NULL))
+ {
+ stock_icon = gtk_icon_set_render_icon (stock_icon_set, GTK_WIDGET (view)->style,
+ gtk_widget_get_direction (GTK_WIDGET (view)),
+ gtk_action_is_sensitive (action) ? 0 : GTK_STATE_INSENSITIVE,
+ GTK_ICON_SIZE_DND, GTK_WIDGET (view), NULL);
+ }
+
+ /* draw the rendered icon */
+ if (G_LIKELY (stock_icon != NULL))
+ {
+ /* render the stock icon into the icon view window */
+ gdk_draw_pixbuf (event->window, NULL, stock_icon, 0, 0,
+ icon_view->gesture_start_x - gdk_pixbuf_get_width (stock_icon) / 2,
+ icon_view->gesture_start_y - gdk_pixbuf_get_height (stock_icon) / 2,
+ gdk_pixbuf_get_width (stock_icon), gdk_pixbuf_get_height (stock_icon),
+ GDK_RGB_DITHER_NONE, 0, 0);
+
+ /* release the stock icon */
+ g_object_unref (G_OBJECT (stock_icon));
+ }
+
+ /* release the stock id */
+ g_free (stock_id);
+ }
+
+ return FALSE;
+}
+
+
+
+static gboolean
+thunar_icon_view_key_press_event (ExoIconView *view,
+ GdkEventKey *event,
+ ThunarIconView *icon_view)
+{
+ /* popup context menu if "Menu" or "<Shift>F10" is pressed */
+ if (event->keyval == GDK_Menu || ((event->state & GDK_SHIFT_MASK) != 0 && event->keyval == GDK_F10))
+ {
+ thunar_standard_view_context_menu (THUNAR_STANDARD_VIEW (icon_view), 0, event->time);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+
+
+static gboolean
+thunar_icon_view_motion_notify_event (ExoIconView *view,
+ GdkEventMotion *event,
+ ThunarIconView *icon_view)
+{
+ GdkRectangle area;
+
+ g_return_val_if_fail (EXO_IS_ICON_VIEW (view), FALSE);
+ g_return_val_if_fail (THUNAR_IS_ICON_VIEW (icon_view), FALSE);
+ g_return_val_if_fail (icon_view->gesture_expose_id > 0, FALSE);
+ g_return_val_if_fail (icon_view->gesture_motion_id > 0, FALSE);
+ g_return_val_if_fail (icon_view->gesture_release_id > 0, FALSE);
+
+ /* schedule a complete redraw on the first motion event */
+ if (icon_view->gesture_current_x == icon_view->gesture_start_x
+ && icon_view->gesture_current_y == icon_view->gesture_start_y)
+ {
+ gtk_widget_queue_draw (GTK_WIDGET (view));
+ }
+ else
+ {
+ /* otherwise, just redraw the action icon area */
+ gtk_icon_size_lookup (GTK_ICON_SIZE_DND, &area.width, &area.height);
+ area.x = icon_view->gesture_start_x - area.width / 2;
+ area.y = icon_view->gesture_start_y - area.height / 2;
+ gdk_window_invalidate_rect (event->window, &area, TRUE);
+ }
+
+ /* update the current gesture position */
+ icon_view->gesture_current_x = event->x;
+ icon_view->gesture_current_y = event->y;
+
+ /* don't execute the default motion notify handler */
+ return TRUE;
+}
+
+
+
+static void
+thunar_icon_view_item_activated (ExoIconView *view,
+ GtkTreePath *path,
+ ThunarIconView *icon_view)
+{
+ GtkAction *action;
+
+ g_return_if_fail (THUNAR_IS_ICON_VIEW (icon_view));
+
+ /* be sure to have only the double clicked item selected */
+ exo_icon_view_unselect_all (view);
+ exo_icon_view_select_path (view, path);
+
+ /* emit the "open" action */
+ action = gtk_action_group_get_action (THUNAR_STANDARD_VIEW (icon_view)->action_group, "open");
+ if (G_LIKELY (action != NULL))
+ gtk_action_activate (action);
+}
+
+
+
+static void
+thunar_icon_view_sort_column_changed (GtkTreeSortable *sortable,
+ ThunarIconView *icon_view)
+{
+ GtkSortType order;
+ GtkAction *action;
+ gint column;
+
+ if (gtk_tree_sortable_get_sort_column_id (sortable, &column, &order))
+ {
+ /* apply the new sort column */
+ action = gtk_action_group_get_action (THUNAR_STANDARD_VIEW (icon_view)->action_group, "sort-by-name");
+ exo_gtk_radio_action_set_current_value (GTK_RADIO_ACTION (action), column);
+
+ /* apply the new sort order */
+ action = gtk_action_group_get_action (THUNAR_STANDARD_VIEW (icon_view)->action_group, "sort-ascending");
+ exo_gtk_radio_action_set_current_value (GTK_RADIO_ACTION (action), order);
+ }
+}
+
+
+
+/**
+ * thunar_icon_view_new:
+ *
+ * Allocates a new #ThunarIconView instance, which is not
+ * associated with any #ThunarListModel yet.
+ *
+ * Return value: the newly allocated #ThunarIconView instance.
+ **/
+GtkWidget*
+thunar_icon_view_new (void)
+{
+ return g_object_new (THUNAR_TYPE_ICON_VIEW, NULL);
+}
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-icon-view.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-icon-view.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-icon-view.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,43 @@
+/* $Id: thunar-icon-view.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_ICON_VIEW_H__
+#define __THUNAR_ICON_VIEW_H__
+
+#include <thunar/thunar-standard-view.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarIconViewClass ThunarIconViewClass;
+typedef struct _ThunarIconView ThunarIconView;
+
+#define THUNAR_TYPE_ICON_VIEW (thunar_icon_view_get_type ())
+#define THUNAR_ICON_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_ICON_VIEW, ThunarIconView))
+#define THUNAR_ICON_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_ICON_VIEW, ThunarIconViewClass))
+#define THUNAR_IS_ICON_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_ICON_VIEW))
+#define THUNAR_IS_ICON_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), THUNAR_TYPE_ICON_VIEW))
+#define THUNAR_ICON_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_ICON_VIEW, ThunarIconViewClass))
+
+GType thunar_icon_view_get_type (void) G_GNUC_CONST;
+
+GtkWidget *thunar_icon_view_new (void);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_ICON_VIEW_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-launcher.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-launcher.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-launcher.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,842 @@
+/* $Id: thunar-launcher.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <thunar/thunar-application.h>
+#include <thunar/thunar-chooser-dialog.h>
+#include <thunar/thunar-dialogs.h>
+#include <thunar/thunar-launcher.h>
+#include <thunar/thunar-open-with-action.h>
+
+
+
+enum
+{
+ PROP_0,
+ PROP_ACTION_GROUP,
+ PROP_SELECTED_FILES,
+ PROP_WIDGET,
+};
+
+enum
+{
+ OPEN_DIRECTORY,
+ LAST_SIGNAL,
+};
+
+
+
+static void thunar_launcher_class_init (ThunarLauncherClass *klass);
+static void thunar_launcher_init (ThunarLauncher *launcher);
+static void thunar_launcher_dispose (GObject *object);
+static void thunar_launcher_finalize (GObject *object);
+static void thunar_launcher_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void thunar_launcher_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void thunar_launcher_execute_files (ThunarLauncher *launcher,
+ GList *files);
+static void thunar_launcher_open_paths (ThunarVfsMimeApplication *application,
+ GList *path_list,
+ ThunarLauncher *launcher);
+static void thunar_launcher_open_files (ThunarLauncher *launcher,
+ GList *files);
+static void thunar_launcher_open_new_windows (ThunarLauncher *launcher,
+ GList *directories);
+static void thunar_launcher_update (ThunarLauncher *launcher);
+static void thunar_launcher_action_open (GtkAction *action,
+ ThunarLauncher *launcher);
+static void thunar_launcher_action_open_with (GtkAction *action,
+ ThunarLauncher *launcher);
+static void thunar_launcher_action_open_application (GtkAction *action,
+ ThunarVfsMimeApplication *application,
+ GList *path_list,
+ ThunarLauncher *launcher);
+static void thunar_launcher_action_open_in_new_window (GtkAction *action,
+ ThunarLauncher *launcher);
+
+
+
+struct _ThunarLauncherClass
+{
+ GObjectClass __parent__;
+
+ void (*open_directory) (ThunarLauncher *launcher,
+ ThunarFile *directory);
+};
+
+struct _ThunarLauncher
+{
+ GObject __parent__;
+
+ GtkActionGroup *action_group;
+ GList *selected_files;
+ GtkWidget *widget;
+
+ GtkAction *action_open;
+ GtkAction *action_open_in_new_window;
+ GtkAction *action_open_with;
+};
+
+
+
+static guint launcher_signals[LAST_SIGNAL];
+
+
+
+G_DEFINE_TYPE (ThunarLauncher, thunar_launcher, G_TYPE_OBJECT);
+
+
+
+static void
+thunar_launcher_class_init (ThunarLauncherClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->dispose = thunar_launcher_dispose;
+ gobject_class->finalize = thunar_launcher_finalize;
+ gobject_class->get_property = thunar_launcher_get_property;
+ gobject_class->set_property = thunar_launcher_set_property;
+
+ /**
+ * ThunarLauncher:action-group:
+ *
+ * The #GtkActionGroup to which this launcher should
+ * add its #GtkActions.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_ACTION_GROUP,
+ g_param_spec_object ("action-group",
+ _("Action group"),
+ _("Action group"),
+ GTK_TYPE_ACTION_GROUP,
+ EXO_PARAM_READWRITE));
+
+ /**
+ * ThunarLauncher:selected-files:
+ *
+ * The list of selected #ThunarFile<!---->s.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_SELECTED_FILES,
+ g_param_spec_pointer ("selected-files",
+ _("Selected files"),
+ _("Selected files"),
+ EXO_PARAM_READWRITE));
+
+ /**
+ * ThunarLauncher:widget:
+ *
+ * The #GtkWidget with which this launcher is
+ * associated.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_WIDGET,
+ g_param_spec_object ("widget",
+ _("Widget"),
+ _("Widget"),
+ GTK_TYPE_WIDGET,
+ EXO_PARAM_READWRITE));
+
+ /**
+ * ThunarLauncher::open-directory:
+ * @launcher : a #ThunarLauncher.
+ * @directory : a #ThunarFile referring to the new directory.
+ *
+ * Invoked whenever the user requests to open a new @directory
+ * based on the @launcher in the current window (if possible).
+ **/
+ launcher_signals[OPEN_DIRECTORY] =
+ g_signal_new ("open-directory",
+ G_TYPE_FROM_CLASS (gobject_class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (ThunarLauncherClass, open_directory),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__OBJECT,
+ G_TYPE_NONE, 1, THUNAR_TYPE_FILE);
+}
+
+
+
+static void
+thunar_launcher_init (ThunarLauncher *launcher)
+{
+ /* the "Open" action */
+ launcher->action_open = gtk_action_new ("open", _("_Open"), _("Open the selected items"), GTK_STOCK_OPEN);
+ g_signal_connect (G_OBJECT (launcher->action_open), "activate", G_CALLBACK (thunar_launcher_action_open), launcher);
+
+ /* the "Open in New Window" action */
+ launcher->action_open_in_new_window = gtk_action_new ("open-in-new-window", _("Open in New Window"), _("Open the selected directories in new Thunar windows"), NULL);
+ g_signal_connect (G_OBJECT (launcher->action_open_in_new_window), "activate", G_CALLBACK (thunar_launcher_action_open_in_new_window), launcher);
+
+ /* the "Open with" action */
+ launcher->action_open_with = thunar_open_with_action_new ("open-with", _("Open With"));
+ g_signal_connect (G_OBJECT (launcher->action_open_with), "open-application", G_CALLBACK (thunar_launcher_action_open_application), launcher);
+ g_signal_connect (G_OBJECT (launcher->action_open_with), "activate", G_CALLBACK (thunar_launcher_action_open_with), launcher);
+}
+
+
+
+static void
+thunar_launcher_dispose (GObject *object)
+{
+ ThunarLauncher *launcher = THUNAR_LAUNCHER (object);
+
+ thunar_launcher_set_action_group (launcher, NULL);
+ thunar_launcher_set_selected_files (launcher, NULL);
+ thunar_launcher_set_widget (launcher, NULL);
+
+ (*G_OBJECT_CLASS (thunar_launcher_parent_class)->dispose) (object);
+}
+
+
+
+static void
+thunar_launcher_finalize (GObject *object)
+{
+ ThunarLauncher *launcher = THUNAR_LAUNCHER (object);
+
+ /* drop all actions */
+ g_object_unref (G_OBJECT (launcher->action_open));
+ g_object_unref (G_OBJECT (launcher->action_open_in_new_window));
+ g_object_unref (G_OBJECT (launcher->action_open_with));
+
+ (*G_OBJECT_CLASS (thunar_launcher_parent_class)->finalize) (object);
+}
+
+
+
+static void
+thunar_launcher_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarLauncher *launcher = THUNAR_LAUNCHER (object);
+
+ switch (prop_id)
+ {
+ case PROP_ACTION_GROUP:
+ g_value_set_object (value, thunar_launcher_get_action_group (launcher));
+ break;
+
+ case PROP_SELECTED_FILES:
+ g_value_set_pointer (value, thunar_launcher_get_selected_files (launcher));
+ break;
+
+ case PROP_WIDGET:
+ g_value_set_object (value, thunar_launcher_get_widget (launcher));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunar_launcher_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarLauncher *launcher = THUNAR_LAUNCHER (object);
+
+ switch (prop_id)
+ {
+ case PROP_ACTION_GROUP:
+ thunar_launcher_set_action_group (launcher, g_value_get_object (value));
+ break;
+
+ case PROP_SELECTED_FILES:
+ thunar_launcher_set_selected_files (launcher, g_value_get_pointer (value));
+ break;
+
+ case PROP_WIDGET:
+ thunar_launcher_set_widget (launcher, g_value_get_object (value));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunar_launcher_execute_files (ThunarLauncher *launcher,
+ GList *files)
+{
+ ThunarFile *file;
+ GdkScreen *screen;
+ GError *error = NULL;
+ GList *lp;
+
+ /* determine the screen on which to run the file(s) */
+ screen = (launcher->widget != NULL)
+ ? gtk_widget_get_screen (launcher->widget)
+ : gdk_screen_get_default ();
+
+ /* execute all selected files */
+ for (lp = files; lp != NULL; lp = lp->next)
+ {
+ file = THUNAR_FILE (lp->data);
+ if (!thunar_file_execute (file, screen, NULL, &error))
+ {
+ /* display an error message to the user */
+ thunar_dialogs_show_error (launcher->widget, error, _("Unable to execute file `%s'"), thunar_file_get_display_name (file));
+
+ /* release the error */
+ g_error_free (error);
+ break;
+ }
+ }
+}
+
+
+
+static void
+thunar_launcher_open_paths (ThunarVfsMimeApplication *application,
+ GList *path_list,
+ ThunarLauncher *launcher)
+{
+ GdkScreen *screen;
+ GError *error = NULL;
+ gchar *name;
+ gchar *text;
+ guint n;
+
+ /* determine the screen on which to launch the application */
+ screen = (launcher->widget != NULL) ? gtk_widget_get_screen (launcher->widget) : NULL;
+
+ /* try to execute the application with the given URIs */
+ if (!thunar_vfs_mime_application_exec (application, screen, path_list, &error))
+ {
+ /* figure out the appropriate error message */
+ n = g_list_length (path_list);
+ if (G_LIKELY (n == 1))
+ {
+ name = g_filename_display_name (thunar_vfs_path_get_name (path_list->data));
+ text = g_strdup_printf (_("Unable to open \"%s\"."), name);
+ g_free (name);
+ }
+ else
+ {
+ text = g_strdup_printf (ngettext ("Unable to open %d file.", "Unable to open %d files.", n), n);
+ }
+
+ /* display an error dialog */
+ thunar_dialogs_show_error (launcher->widget, error, text);
+
+ /* release the error */
+ g_error_free (error);
+ }
+}
+
+
+
+static void
+thunar_launcher_open_files (ThunarLauncher *launcher,
+ GList *files)
+{
+ ThunarVfsMimeApplication *application;
+ ThunarVfsMimeDatabase *database;
+ ThunarVfsMimeInfo *info;
+ GHashTable *applications;
+ GtkWidget *window;
+ GtkWidget *dialog;
+ GList *path_list;
+ GList *lp;
+
+ /* allocate a hash table to associate applications to URIs */
+ applications = g_hash_table_new_full (thunar_vfs_mime_application_hash,
+ thunar_vfs_mime_application_equal,
+ (GDestroyNotify) thunar_vfs_mime_application_unref,
+ (GDestroyNotify) thunar_vfs_path_list_free);
+
+ /* take a reference on the mime database */
+ database = thunar_vfs_mime_database_get_default ();
+
+ for (lp = files; lp != NULL; lp = lp->next)
+ {
+ /* determine the default application for the MIME type */
+ info = thunar_file_get_mime_info (lp->data);
+ application = thunar_vfs_mime_database_get_default_application (database, info);
+
+ /* check if we have an application here */
+ if (G_LIKELY (application != NULL))
+ {
+ /* check if we have that application already */
+ path_list = g_hash_table_lookup (applications, application);
+ if (G_LIKELY (path_list != NULL))
+ {
+ /* take a copy of the list as the old one will be dropped by the insert */
+ path_list = thunar_vfs_path_list_copy (path_list);
+ }
+
+ /* append our new URI to the list */
+ path_list = thunar_vfs_path_list_append (path_list, thunar_file_get_path (lp->data));
+
+ /* (re)insert the URI list for the application */
+ g_hash_table_insert (applications, application, path_list);
+ }
+ else
+ {
+ window = (launcher->widget != NULL) ? gtk_widget_get_toplevel (launcher->widget) : NULL;
+ dialog = thunar_chooser_dialog_new ((GtkWindow *) window, lp->data, TRUE);
+ gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
+ break;
+ }
+ }
+
+ /* run all collected applications */
+ g_hash_table_foreach (applications, (GHFunc) thunar_launcher_open_paths, launcher);
+
+ /* release the reference on the mime database */
+ g_object_unref (G_OBJECT (database));
+
+ /* drop the applications hash table */
+ g_hash_table_destroy (applications);
+}
+
+
+
+static void
+thunar_launcher_open_new_windows (ThunarLauncher *launcher,
+ GList *directories)
+{
+ ThunarApplication *application;
+ GtkWidget *message;
+ GtkWidget *window;
+ GdkScreen *screen;
+ GList *lp;
+ gint response = GTK_RESPONSE_YES;
+ gint n;
+
+ /* query the application object */
+ application = thunar_application_get ();
+
+ /* ask the user if we would open more than one new window */
+ n = g_list_length (directories);
+ if (G_UNLIKELY (n > 1))
+ {
+ /* open a message dialog */
+ window = (launcher->widget != NULL) ? gtk_widget_get_toplevel (launcher->widget) : NULL;
+ message = gtk_message_dialog_new ((GtkWindow *) window,
+ GTK_DIALOG_DESTROY_WITH_PARENT
+ | GTK_DIALOG_MODAL,
+ GTK_MESSAGE_QUESTION,
+ GTK_BUTTONS_YES_NO,
+ _("Are you sure you want to open all folders?"));
+ gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (message),
+ ngettext ("This will open %d separate window.",
+ "This will open %d separate windows.",
+ n),
+ n);
+ response = gtk_dialog_run (GTK_DIALOG (message));
+ gtk_widget_destroy (message);
+ }
+
+ /* open n new windows if the user approved it */
+ if (G_LIKELY (response == GTK_RESPONSE_YES))
+ {
+ /* determine the screen on which to open the new windows */
+ screen = (launcher->widget != NULL) ? gtk_widget_get_screen (launcher->widget) : NULL;
+
+ /* open all requested windows */
+ for (lp = directories; lp != NULL; lp = lp->next)
+ thunar_application_open_window (application, lp->data, screen);
+ }
+
+ /* release the application object */
+ g_object_unref (G_OBJECT (application));
+}
+
+
+
+static void
+thunar_launcher_update (ThunarLauncher *launcher)
+{
+ GList *items;
+ GList *lp;
+ gchar text[256];
+ gint n_directories = 0;
+ gint n_executables = 0;
+ gint n_files = 0;
+ gint n_items;
+
+ /* determine the number of selected items */
+ items = launcher->selected_files;
+ n_items = g_list_length (items);
+
+ /* determine the number of files/directories */
+ for (lp = items; lp != NULL; lp = lp->next)
+ {
+ if (thunar_file_is_directory (lp->data))
+ {
+ ++n_directories;
+ }
+ else
+ {
+ if (thunar_file_is_executable (lp->data))
+ ++n_executables;
+ ++n_files;
+ }
+ }
+
+ if (G_UNLIKELY (n_directories == n_items))
+ {
+ /* we turn the "Open" label into "Open in n New Windows" if we have only directories */
+ if (n_directories > 1)
+ g_snprintf (text, sizeof (text), ngettext ("Open in %d New Window", "Open in %d New Windows", n_directories), n_directories);
+ else
+ g_strlcpy (text, _("_Open"), sizeof (text));
+
+ g_object_set (G_OBJECT (launcher->action_open_in_new_window),
+ "sensitive", (n_directories > 0),
+ "visible", (n_directories <= 1),
+ NULL);
+
+ g_object_set (G_OBJECT (launcher->action_open),
+ "label", text,
+ "sensitive", (n_directories > 0),
+ NULL);
+ }
+ else
+ {
+ /* we turn the "Open" label into "Execute" if we have only one executable file */
+ if (G_UNLIKELY (n_executables == 1 && n_items == 1))
+ g_object_set (G_OBJECT (launcher->action_open), "label", _("_Execute"), NULL);
+ else
+ g_object_set (G_OBJECT (launcher->action_open), "label", _("_Open"), NULL);
+
+#if GTK_CHECK_VERSION(2,6,0)
+ gtk_action_set_sensitive (launcher->action_open, (n_items > 0));
+ gtk_action_set_visible (launcher->action_open_in_new_window, FALSE);
+#else
+ g_object_set (G_OBJECT (launcher->action_open), "sensitive", (n_items > 0), NULL);
+ g_object_set (G_OBJECT (launcher->action_open_in_new_window), "visible", FALSE, NULL);
+#endif
+ }
+
+ /* update the "Open With" action */
+ thunar_open_with_action_set_file (THUNAR_OPEN_WITH_ACTION (launcher->action_open_with),
+ (n_items == 1) ? THUNAR_FILE (items->data) : NULL);
+}
+
+
+
+static void
+thunar_launcher_action_open (GtkAction *action,
+ ThunarLauncher *launcher)
+{
+ GList *directories = NULL;
+ GList *files = NULL;
+ GList *lp;
+ gint n_selected_files;
+
+ g_return_if_fail (GTK_IS_ACTION (action));
+ g_return_if_fail (THUNAR_IS_LAUNCHER (launcher));
+
+ /* separate files and directories */
+ n_selected_files = g_list_length (launcher->selected_files);
+ for (lp = launcher->selected_files; lp != NULL; lp = lp->next)
+ {
+ if (thunar_file_is_directory (lp->data))
+ directories = g_list_append (directories, g_object_ref (lp->data));
+ else
+ files = g_list_append (files, g_object_ref (lp->data));
+ }
+
+ /* open the directories */
+ if (directories != NULL)
+ {
+ /* open new windows if we have more than one selected item */
+ if (G_UNLIKELY (n_selected_files == 1))
+ g_signal_emit (G_OBJECT (launcher), launcher_signals[OPEN_DIRECTORY], 0, directories->data);
+ else
+ thunar_launcher_open_new_windows (launcher, directories);
+ thunar_file_list_free (directories);
+ }
+
+ /* open the files */
+ if (files != NULL)
+ {
+ if (g_list_length (files) == 1 && thunar_file_is_executable (files->data))
+ thunar_launcher_execute_files (launcher, files);
+ else
+ thunar_launcher_open_files (launcher, files);
+ thunar_file_list_free (files);
+ }
+}
+
+
+
+static void
+thunar_launcher_action_open_with (GtkAction *action,
+ ThunarLauncher *launcher)
+{
+ ThunarFile *file;
+ GtkWidget *dialog;
+ GtkWindow *window;
+
+ g_return_if_fail (GTK_IS_ACTION (action));
+ g_return_if_fail (THUNAR_IS_LAUNCHER (launcher));
+
+ /* determine the first selected file */
+ file = g_list_nth_data (launcher->selected_files, 0);
+ if (G_UNLIKELY (file == NULL))
+ return;
+
+ window = (launcher->widget != NULL) ? (GtkWindow *) gtk_widget_get_toplevel (launcher->widget) : NULL;
+ dialog = thunar_chooser_dialog_new (window, file, TRUE);
+ gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
+}
+
+
+
+static void
+thunar_launcher_action_open_application (GtkAction *action,
+ ThunarVfsMimeApplication *application,
+ GList *path_list,
+ ThunarLauncher *launcher)
+{
+ g_return_if_fail (GTK_IS_ACTION (action));
+ g_return_if_fail (THUNAR_IS_LAUNCHER (launcher));
+
+ /* open the URIs (if any) using the given application */
+ if (G_LIKELY (path_list != NULL))
+ thunar_launcher_open_paths (application, path_list, launcher);
+}
+
+
+
+static void
+thunar_launcher_action_open_in_new_window (GtkAction *action,
+ ThunarLauncher *launcher)
+{
+ GList *directories;
+
+ g_return_if_fail (GTK_IS_ACTION (action));
+ g_return_if_fail (THUNAR_IS_LAUNCHER (launcher));
+
+ /* take an additional reference on the launcher to make sure we don't get destroyed in the meantime */
+ g_object_ref (G_OBJECT (launcher));
+
+ /* open the directories */
+ directories = thunar_file_list_copy (launcher->selected_files);
+ thunar_launcher_open_new_windows (launcher, directories);
+ thunar_file_list_free (directories);
+
+ /* release the additional reference */
+ g_object_unref (G_OBJECT (launcher));
+}
+
+
+
+/**
+ * thunar_launcher_new:
+ *
+ * Allocates a new #ThunarLauncher instance and
+ * returns it.
+ *
+ * Return value: the newly allocated #ThunarLauncher instance.
+ **/
+ThunarLauncher*
+thunar_launcher_new (void)
+{
+ return g_object_new (THUNAR_TYPE_LAUNCHER, NULL);
+}
+
+
+
+/**
+ * thunar_launcher_get_action_group:
+ * @launcher : a #ThunarLauncher.
+ *
+ * Returns the #GtkActionGroup for the @launcher.
+ *
+ * Return value: the #GtkActionGroup for @launcher.
+ **/
+GtkActionGroup*
+thunar_launcher_get_action_group (const ThunarLauncher *launcher)
+{
+ g_return_val_if_fail (THUNAR_IS_LAUNCHER (launcher), NULL);
+ return launcher->action_group;
+}
+
+
+
+/**
+ * thunar_launcher_set_action_group:
+ * @launcher : a #ThunarLauncher.
+ * @action_group : a #GtkActionGroup or %NULL.
+ *
+ * Disconnects @launcher from any previously set
+ * #GtkActionGroup. If @action_group is a valid
+ * #GtkActionGroup, then @launcher will connect
+ * its actions ("open", "open-in-new-window" and
+ * "open-with") to @action_group.
+ **/
+void
+thunar_launcher_set_action_group (ThunarLauncher *launcher,
+ GtkActionGroup *action_group)
+{
+ g_return_if_fail (THUNAR_IS_LAUNCHER (launcher));
+ g_return_if_fail (action_group == NULL || GTK_IS_ACTION_GROUP (action_group));
+
+ /* disconnect from the previous action group */
+ if (G_UNLIKELY (launcher->action_group != NULL))
+ {
+ gtk_action_group_remove_action (launcher->action_group, launcher->action_open);
+ gtk_action_group_remove_action (launcher->action_group, launcher->action_open_in_new_window);
+ gtk_action_group_remove_action (launcher->action_group, launcher->action_open_with);
+ g_object_unref (G_OBJECT (launcher->action_group));
+ }
+
+ /* activate the new action group */
+ launcher->action_group = action_group;
+
+ /* connect to the new action group */
+ if (G_LIKELY (action_group != NULL))
+ {
+ g_object_ref (G_OBJECT (action_group));
+ gtk_action_group_add_action_with_accel (action_group, launcher->action_open, "<control>O");
+ gtk_action_group_add_action_with_accel (action_group, launcher->action_open_in_new_window, "<shift><control>O");
+ gtk_action_group_add_action (action_group, launcher->action_open_with);
+ }
+
+ /* notify listeners */
+ g_object_notify (G_OBJECT (launcher), "action-group");
+}
+
+
+
+/**
+ * thunar_launcher_get_selected_files:
+ * @launcher : a #ThunarLauncher.
+ *
+ * Returns the selected files currently set for @launcher.
+ *
+ * Return value: the list of selected #ThunarFile<!---->s
+ * for @launcher.
+ **/
+GList*
+thunar_launcher_get_selected_files (const ThunarLauncher *launcher)
+{
+ g_return_val_if_fail (THUNAR_IS_LAUNCHER (launcher), NULL);
+ return launcher->selected_files;
+}
+
+
+
+/**
+ * thunar_launcher_set_selected_files:
+ * @launcher : a #ThunarLauncher.
+ * @selected_files : a list of selected #ThunarFile<!---->s.
+ *
+ * Installs @selected_files for @launcher.
+ **/
+void
+thunar_launcher_set_selected_files (ThunarLauncher *launcher,
+ GList *selected_files)
+{
+ g_return_if_fail (THUNAR_IS_LAUNCHER (launcher));
+
+ /* disconnect from the previously selected files */
+ if (G_LIKELY (launcher->selected_files != NULL))
+ thunar_file_list_free (launcher->selected_files);
+
+ /* activate the new selected files list */
+ launcher->selected_files = thunar_file_list_copy (selected_files);
+
+ /* update the user interface */
+ thunar_launcher_update (launcher);
+
+ /* notify interested parties */
+ g_object_notify (G_OBJECT (launcher), "selected-files");
+}
+
+
+
+/**
+ * thunar_launcher_get_widget:
+ * @launcher : a #ThunarLauncher.
+ *
+ * Returns the #GtkWidget with which @launcher is associated
+ * currently or %NULL.
+ *
+ * Return value: the #GtkWidget associated with @launcher or %NULL.
+ **/
+GtkWidget*
+thunar_launcher_get_widget (const ThunarLauncher *launcher)
+{
+ g_return_val_if_fail (THUNAR_IS_LAUNCHER (launcher), NULL);
+ return launcher->widget;
+}
+
+
+
+/**
+ * thunar_launcher_set_widget:
+ * @launcher : a #ThunarLauncher.
+ * @widget : a #GtkWidget or %NULL.
+ *
+ * Tells @launcher to use @widget to determine the screen on
+ * which to launch applications and such.
+ **/
+void
+thunar_launcher_set_widget (ThunarLauncher *launcher,
+ GtkWidget *widget)
+{
+ g_return_if_fail (THUNAR_IS_LAUNCHER (launcher));
+ g_return_if_fail (widget == NULL || GTK_IS_WIDGET (widget));
+
+ /* verify that the widgets differ */
+ if (G_UNLIKELY (launcher->widget == widget))
+ return;
+
+ /* disconnect from the previously set widget */
+ if (G_UNLIKELY (launcher->widget != NULL))
+ g_object_unref (G_OBJECT (launcher->widget));
+
+ /* activate the new widget */
+ launcher->widget = widget;
+
+ /* connect to the new widget */
+ if (G_LIKELY (widget != NULL))
+ g_object_ref (G_OBJECT (widget));
+
+ /* notify listeners */
+ g_object_notify (G_OBJECT (launcher), "widget");
+}
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-launcher.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-launcher.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-launcher.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,55 @@
+/* $Id: thunar-launcher.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_LAUNCHER_H__
+#define __THUNAR_LAUNCHER_H__
+
+#include <thunar/thunar-file.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarLauncherClass ThunarLauncherClass;
+typedef struct _ThunarLauncher ThunarLauncher;
+
+#define THUNAR_TYPE_LAUNCHER (thunar_launcher_get_type ())
+#define THUNAR_LAUNCHER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_LAUNCHER, ThunarLauncher))
+#define THUNAR_LAUNCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_LAUNCHER, ThunarLauncherClass))
+#define THUNAR_IS_LAUNCHER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_LAUNCHER))
+#define THUNAR_IS_LAUNCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_LAUNCHER))
+#define THUNAR_LAUNCHER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_LAUNCHER, ThunarLauncherClass))
+
+GType thunar_launcher_get_type (void) G_GNUC_CONST;
+
+ThunarLauncher *thunar_launcher_new (void) G_GNUC_MALLOC;
+
+GtkActionGroup *thunar_launcher_get_action_group (const ThunarLauncher *launcher);
+void thunar_launcher_set_action_group (ThunarLauncher *launcher,
+ GtkActionGroup *action_group);
+
+GList *thunar_launcher_get_selected_files (const ThunarLauncher *launcher);
+void thunar_launcher_set_selected_files (ThunarLauncher *launcher,
+ GList *selected_files);
+
+GtkWidget *thunar_launcher_get_widget (const ThunarLauncher *launcher);
+void thunar_launcher_set_widget (ThunarLauncher *launcher,
+ GtkWidget *widget);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_LAUNCHER_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-list-model.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-list-model.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-list-model.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,1985 @@
+/* $Id: thunar-list-model.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2004-2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#include <thunar/thunar-list-model.h>
+
+
+
+/* Property identifiers */
+enum
+{
+ PROP_0,
+ PROP_FOLDER,
+ PROP_FOLDERS_FIRST,
+ PROP_NUM_FILES,
+ PROP_SHOW_HIDDEN,
+};
+
+/* Signal identifiers */
+enum
+{
+ ERROR,
+ LAST_SIGNAL,
+};
+
+
+
+typedef struct _Row Row;
+typedef struct _SortTuple SortTuple;
+
+
+
+static void thunar_list_model_init (ThunarListModel *store);
+static void thunar_list_model_class_init (ThunarListModelClass *klass);
+static void thunar_list_model_tree_model_init (GtkTreeModelIface *iface);
+static void thunar_list_model_drag_dest_init (GtkTreeDragDestIface *iface);
+static void thunar_list_model_sortable_init (GtkTreeSortableIface *iface);
+static void thunar_list_model_finalize (GObject *object);
+static void thunar_list_model_dispose (GObject *object);
+static void thunar_list_model_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void thunar_list_model_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static GtkTreeModelFlags thunar_list_model_get_flags (GtkTreeModel *model);
+static gint thunar_list_model_get_n_columns (GtkTreeModel *model);
+static GType thunar_list_model_get_column_type (GtkTreeModel *model,
+ gint index);
+static gboolean thunar_list_model_get_iter (GtkTreeModel *model,
+ GtkTreeIter *iter,
+ GtkTreePath *path);
+static GtkTreePath *thunar_list_model_get_path (GtkTreeModel *model,
+ GtkTreeIter *iter);
+static void thunar_list_model_get_value (GtkTreeModel *model,
+ GtkTreeIter *iter,
+ gint column,
+ GValue *value);
+static gboolean thunar_list_model_iter_next (GtkTreeModel *model,
+ GtkTreeIter *iter);
+static gboolean thunar_list_model_iter_children (GtkTreeModel *model,
+ GtkTreeIter *iter,
+ GtkTreeIter *parent);
+static gboolean thunar_list_model_iter_has_child (GtkTreeModel *model,
+ GtkTreeIter *iter);
+static gint thunar_list_model_iter_n_children (GtkTreeModel *model,
+ GtkTreeIter *iter);
+static gboolean thunar_list_model_iter_nth_child (GtkTreeModel *model,
+ GtkTreeIter *iter,
+ GtkTreeIter *parent,
+ gint n);
+static gboolean thunar_list_model_iter_parent (GtkTreeModel *model,
+ GtkTreeIter *iter,
+ GtkTreeIter *child);
+static gboolean thunar_list_model_drag_data_received (GtkTreeDragDest *dest,
+ GtkTreePath *path,
+ GtkSelectionData *data);
+static gboolean thunar_list_model_row_drop_possible (GtkTreeDragDest *dest,
+ GtkTreePath *path,
+ GtkSelectionData *data);
+static gboolean thunar_list_model_get_sort_column_id (GtkTreeSortable *sortable,
+ gint *sort_column_id,
+ GtkSortType *order);
+static void thunar_list_model_set_sort_column_id (GtkTreeSortable *sortable,
+ gint sort_column_id,
+ GtkSortType order);
+static void thunar_list_model_set_default_sort_func (GtkTreeSortable *sortable,
+ GtkTreeIterCompareFunc func,
+ gpointer data,
+ GtkDestroyNotify destroy);
+static void thunar_list_model_set_sort_func (GtkTreeSortable *sortable,
+ gint sort_column_id,
+ GtkTreeIterCompareFunc func,
+ gpointer data,
+ GtkDestroyNotify destroy);
+static gboolean thunar_list_model_has_default_sort_func (GtkTreeSortable *sortable);
+static gint thunar_list_model_cmp (ThunarListModel *store,
+ ThunarFile *a,
+ ThunarFile *b);
+static gint thunar_list_model_cmp_array (gconstpointer a,
+ gconstpointer b,
+ gpointer user_data);
+static gint thunar_list_model_cmp_list (gconstpointer a,
+ gconstpointer b,
+ gpointer user_data);
+static gboolean thunar_list_model_remove (ThunarListModel *store,
+ GtkTreeIter *iter,
+ gboolean silently);
+static void thunar_list_model_sort (ThunarListModel *store);
+static void thunar_list_model_file_changed (ThunarFile *file,
+ ThunarListModel *store);
+static void thunar_list_model_folder_destroy (ThunarFolder *folder,
+ ThunarListModel *store);
+static void thunar_list_model_folder_error (ThunarFolder *folder,
+ const GError *error,
+ ThunarListModel *store);
+static void thunar_list_model_files_added (ThunarFolder *folder,
+ GList *files,
+ ThunarListModel *store);
+static void thunar_list_model_files_removed (ThunarFolder *folder,
+ GList *files,
+ ThunarListModel *store);
+static gint sort_by_date_accessed (const ThunarFile *a,
+ const ThunarFile *b);
+static gint sort_by_date_modified (const ThunarFile *a,
+ const ThunarFile *b);
+static gint sort_by_mime_type (const ThunarFile *a,
+ const ThunarFile *b);
+static gint sort_by_name (const ThunarFile *a,
+ const ThunarFile *b);
+static gint sort_by_permissions (const ThunarFile *a,
+ const ThunarFile *b);
+static gint sort_by_size (const ThunarFile *a,
+ const ThunarFile *b);
+static gint sort_by_type (const ThunarFile *a,
+ const ThunarFile *b);
+
+
+
+struct _ThunarListModelClass
+{
+ GObjectClass __parent__;
+
+ /* signals */
+ void (*error) (ThunarListModel *store,
+ const GError *error);
+};
+
+struct _ThunarListModel
+{
+ GObject __parent__;
+
+ guint stamp;
+ Row *rows;
+ gint nrows;
+ GList *hidden;
+ GMemChunk *row_chunk;
+ ThunarFolder *folder;
+ gboolean show_hidden;
+
+ ThunarVfsVolumeManager *volume_manager;
+
+ /* ids and closures for the "changed" signal of
+ * ThunarFile's used to speed up signal registrations.
+ */
+ GClosure *file_changed_closure;
+ gint file_changed_id;
+
+ /* ids for the "row-inserted" and "row-deleted" signals
+ * of GtkTreeModel to speed up folder changing.
+ */
+ guint row_inserted_id;
+ guint row_deleted_id;
+
+ gboolean sort_folders_first;
+ gint sort_sign; /* 1 = ascending, -1 descending */
+ gint (*sort_func) (const ThunarFile *a,
+ const ThunarFile *b);
+};
+
+struct _Row
+{
+ ThunarFile *file;
+ Row *next;
+};
+
+struct _SortTuple
+{
+ gint offset;
+ Row *row;
+};
+
+
+
+static guint list_model_signals[LAST_SIGNAL];
+
+
+
+G_DEFINE_TYPE_WITH_CODE (ThunarListModel,
+ thunar_list_model,
+ G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (GTK_TYPE_TREE_MODEL,
+ thunar_list_model_tree_model_init)
+ G_IMPLEMENT_INTERFACE (GTK_TYPE_TREE_DRAG_DEST,
+ thunar_list_model_drag_dest_init)
+ G_IMPLEMENT_INTERFACE (GTK_TYPE_TREE_SORTABLE,
+ thunar_list_model_sortable_init));
+
+
+
+static void
+thunar_list_model_class_init (ThunarListModelClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_list_model_finalize;
+ gobject_class->dispose = thunar_list_model_dispose;
+ gobject_class->get_property = thunar_list_model_get_property;
+ gobject_class->set_property = thunar_list_model_set_property;
+
+ /**
+ * ThunarListModel:folder:
+ *
+ * The folder presented by this #ThunarListModel.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_FOLDER,
+ g_param_spec_object ("folder",
+ _("Folder"),
+ _("The stores folder"),
+ THUNAR_TYPE_FOLDER,
+ EXO_PARAM_READWRITE));
+
+ /**
+ * ThunarListModel::folders-first:
+ *
+ * Tells whether to always sort folders before other files.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_FOLDERS_FIRST,
+ g_param_spec_boolean ("folders-first",
+ _("Folders first"),
+ _("Folders first in sorting"),
+ TRUE,
+ EXO_PARAM_READWRITE));
+
+ /**
+ * ThunarListModel::num-files:
+ *
+ * The number of files in the folder presented by this #ThunarListModel.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_NUM_FILES,
+ g_param_spec_uint ("num-files",
+ _("Number of files"),
+ _("Number of visible files"),
+ 0, UINT_MAX, 0,
+ EXO_PARAM_READABLE));
+
+ /**
+ * ThunarListModel::show-hidden:
+ *
+ * Tells whether to include hidden (and backup) files.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_SHOW_HIDDEN,
+ g_param_spec_boolean ("show-hidden",
+ _("Show hidden"),
+ _("Whether to display hidden files"),
+ FALSE,
+ EXO_PARAM_READWRITE));
+
+ /**
+ * ThunarListModel::error:
+ * @store : a #ThunarListModel.
+ * @error : a #GError that describes the problem.
+ *
+ * Emitted when an error occurs while loading the
+ * @store content.
+ **/
+ list_model_signals[ERROR] =
+ g_signal_new ("error",
+ G_TYPE_FROM_CLASS (gobject_class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (ThunarListModelClass, error),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1, G_TYPE_POINTER);
+}
+
+
+
+static void
+thunar_list_model_tree_model_init (GtkTreeModelIface *iface)
+{
+ iface->get_flags = thunar_list_model_get_flags;
+ iface->get_n_columns = thunar_list_model_get_n_columns;
+ iface->get_column_type = thunar_list_model_get_column_type;
+ iface->get_iter = thunar_list_model_get_iter;
+ iface->get_path = thunar_list_model_get_path;
+ iface->get_value = thunar_list_model_get_value;
+ iface->iter_next = thunar_list_model_iter_next;
+ iface->iter_children = thunar_list_model_iter_children;
+ iface->iter_has_child = thunar_list_model_iter_has_child;
+ iface->iter_n_children = thunar_list_model_iter_n_children;
+ iface->iter_nth_child = thunar_list_model_iter_nth_child;
+ iface->iter_parent = thunar_list_model_iter_parent;
+}
+
+
+
+static void
+thunar_list_model_drag_dest_init (GtkTreeDragDestIface *iface)
+{
+ iface->drag_data_received = thunar_list_model_drag_data_received;
+ iface->row_drop_possible = thunar_list_model_row_drop_possible;
+}
+
+
+
+static void
+thunar_list_model_sortable_init (GtkTreeSortableIface *iface)
+{
+ iface->get_sort_column_id = thunar_list_model_get_sort_column_id;
+ iface->set_sort_column_id = thunar_list_model_set_sort_column_id;
+ iface->set_sort_func = thunar_list_model_set_sort_func;
+ iface->set_default_sort_func = thunar_list_model_set_default_sort_func;
+ iface->has_default_sort_func = thunar_list_model_has_default_sort_func;
+}
+
+
+
+static void
+thunar_list_model_init (ThunarListModel *store)
+{
+ store->stamp = g_random_int ();
+ store->row_chunk = g_mem_chunk_create (Row, 512, G_ALLOC_ONLY);
+
+ store->volume_manager = thunar_vfs_volume_manager_get_default ();
+
+ store->file_changed_closure = g_cclosure_new_object (G_CALLBACK (thunar_list_model_file_changed), G_OBJECT (store));
+ store->file_changed_id = g_signal_lookup ("changed", THUNAR_TYPE_FILE);
+
+ store->row_inserted_id = g_signal_lookup ("row-inserted", GTK_TYPE_TREE_MODEL);
+ store->row_deleted_id = g_signal_lookup ("row-deleted", GTK_TYPE_TREE_MODEL);
+
+ store->sort_folders_first = TRUE;
+ store->sort_sign = 1;
+ store->sort_func = sort_by_name;
+
+ /* take over ownership of the "changed" closure */
+ g_closure_ref (store->file_changed_closure);
+ g_closure_sink (store->file_changed_closure);
+}
+
+
+
+static void
+thunar_list_model_dispose (GObject *object)
+{
+ ThunarListModel *store = THUNAR_LIST_MODEL (object);
+
+ /* unlink from the folder (if any) */
+ thunar_list_model_set_folder (store, NULL);
+
+ (*G_OBJECT_CLASS (thunar_list_model_parent_class)->dispose) (object);
+}
+
+
+
+static void
+thunar_list_model_finalize (GObject *object)
+{
+ ThunarListModel *store = THUNAR_LIST_MODEL (object);
+
+ /* drop the row memory chunk */
+ g_mem_chunk_destroy (store->row_chunk);
+
+ /* disconnect from the volume manager */
+ g_object_unref (G_OBJECT (store->volume_manager));
+
+ /* get rid of the "changed" closure */
+ g_closure_unref (store->file_changed_closure);
+
+ (*G_OBJECT_CLASS (thunar_list_model_parent_class)->finalize) (object);
+}
+
+
+
+static void
+thunar_list_model_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarListModel *store = THUNAR_LIST_MODEL (object);
+
+ switch (prop_id)
+ {
+ case PROP_FOLDER:
+ g_value_set_object (value, thunar_list_model_get_folder (store));
+ break;
+
+ case PROP_FOLDERS_FIRST:
+ g_value_set_boolean (value, thunar_list_model_get_folders_first (store));
+ break;
+
+ case PROP_NUM_FILES:
+ g_value_set_uint (value, thunar_list_model_get_num_files (store));
+ break;
+
+ case PROP_SHOW_HIDDEN:
+ g_value_set_boolean (value, thunar_list_model_get_show_hidden (store));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunar_list_model_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarListModel *store = THUNAR_LIST_MODEL (object);
+
+ switch (prop_id)
+ {
+ case PROP_FOLDER:
+ thunar_list_model_set_folder (store, g_value_get_object (value));
+ break;
+
+ case PROP_FOLDERS_FIRST:
+ thunar_list_model_set_folders_first (store, g_value_get_boolean (value));
+ break;
+
+ case PROP_SHOW_HIDDEN:
+ thunar_list_model_set_show_hidden (store, g_value_get_boolean (value));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static GtkTreeModelFlags
+thunar_list_model_get_flags (GtkTreeModel *model)
+{
+ return GTK_TREE_MODEL_ITERS_PERSIST | GTK_TREE_MODEL_LIST_ONLY;
+}
+
+
+
+static gint
+thunar_list_model_get_n_columns (GtkTreeModel *model)
+{
+ return THUNAR_LIST_MODEL_N_COLUMNS;
+}
+
+
+
+static GType
+thunar_list_model_get_column_type (GtkTreeModel *model,
+ gint index)
+{
+ switch (index)
+ {
+ case THUNAR_LIST_MODEL_COLUMN_DATE_ACCESSED:
+ return G_TYPE_STRING;
+
+ case THUNAR_LIST_MODEL_COLUMN_DATE_MODIFIED:
+ return G_TYPE_STRING;
+
+ case THUNAR_LIST_MODEL_COLUMN_FILE:
+ return THUNAR_TYPE_FILE;
+
+ case THUNAR_LIST_MODEL_COLUMN_MIME_TYPE:
+ return G_TYPE_STRING;
+
+ case THUNAR_LIST_MODEL_COLUMN_NAME:
+ return G_TYPE_STRING;
+
+ case THUNAR_LIST_MODEL_COLUMN_PERMISSIONS:
+ return G_TYPE_STRING;
+
+ case THUNAR_LIST_MODEL_COLUMN_SIZE:
+ return G_TYPE_STRING;
+
+ case THUNAR_LIST_MODEL_COLUMN_TYPE:
+ return G_TYPE_STRING;
+ }
+
+ g_assert_not_reached ();
+ return (GType) -1;
+}
+
+
+
+static gboolean
+thunar_list_model_get_iter (GtkTreeModel *model,
+ GtkTreeIter *iter,
+ GtkTreePath *path)
+{
+ ThunarListModel *store = THUNAR_LIST_MODEL (model);
+ gint index;
+ gint n;
+ Row *row;
+
+ g_return_val_if_fail (THUNAR_IS_LIST_MODEL (store), FALSE);
+ g_return_val_if_fail (gtk_tree_path_get_depth (path) > 0, FALSE);
+
+ index = gtk_tree_path_get_indices (path)[0];
+ if (G_UNLIKELY (index >= store->nrows))
+ return FALSE;
+
+ /* use fast-forward, skipping every second comparison */
+ for (n = index / 2, row = store->rows; n-- > 0; row = row->next->next)
+ ;
+
+ /* advance for odd indices */
+ if ((index % 2) == 1)
+ row = row->next;
+
+ iter->stamp = store->stamp;
+ iter->user_data = row;
+
+ return TRUE;
+}
+
+
+
+static GtkTreePath*
+thunar_list_model_get_path (GtkTreeModel *model,
+ GtkTreeIter *iter)
+{
+ ThunarListModel *store = THUNAR_LIST_MODEL (model);
+ GtkTreePath *path;
+ gint index = 0;
+ Row *row;
+
+ g_return_val_if_fail (THUNAR_IS_LIST_MODEL (store), NULL);
+ g_return_val_if_fail (iter->stamp == store->stamp, NULL);
+
+ for (row = store->rows; row != NULL; ++index, row = row->next)
+ if (row == iter->user_data)
+ break;
+
+ if (G_UNLIKELY (row == NULL))
+ return NULL;
+
+ path = gtk_tree_path_new ();
+ gtk_tree_path_append_index (path, index);
+ return path;
+}
+
+
+
+static void
+thunar_list_model_get_value (GtkTreeModel *model,
+ GtkTreeIter *iter,
+ gint column,
+ GValue *value)
+{
+ ThunarVfsMimeInfo *mime_info;
+ gchar *str;
+ Row *row;
+
+ g_return_if_fail (THUNAR_IS_LIST_MODEL (model));
+ g_return_if_fail (iter->stamp == (THUNAR_LIST_MODEL (model))->stamp);
+
+ row = (Row *) iter->user_data;
+ g_assert (row != NULL);
+
+ switch (column)
+ {
+ case THUNAR_LIST_MODEL_COLUMN_DATE_ACCESSED:
+ g_value_init (value, G_TYPE_STRING);
+ str = thunar_file_get_date_string (row->file, THUNAR_FILE_DATE_ACCESSED);
+ g_value_take_string (value, str);
+ break;
+
+ case THUNAR_LIST_MODEL_COLUMN_DATE_MODIFIED:
+ g_value_init (value, G_TYPE_STRING);
+ str = thunar_file_get_date_string (row->file, THUNAR_FILE_DATE_MODIFIED);
+ g_value_take_string (value, str);
+ break;
+
+ case THUNAR_LIST_MODEL_COLUMN_FILE:
+ g_value_init (value, THUNAR_TYPE_FILE);
+ g_value_set_object (value, row->file);
+ break;
+
+ case THUNAR_LIST_MODEL_COLUMN_MIME_TYPE:
+ g_value_init (value, G_TYPE_STRING);
+ mime_info = thunar_file_get_mime_info (row->file);
+ g_value_set_string (value, thunar_vfs_mime_info_get_name (mime_info));
+ break;
+
+ case THUNAR_LIST_MODEL_COLUMN_NAME:
+ g_value_init (value, G_TYPE_STRING);
+ g_value_set_static_string (value, thunar_file_get_display_name (row->file));
+ break;
+
+ case THUNAR_LIST_MODEL_COLUMN_PERMISSIONS:
+ g_value_init (value, G_TYPE_STRING);
+ g_value_take_string (value, thunar_file_get_mode_string (row->file));
+ break;
+
+ case THUNAR_LIST_MODEL_COLUMN_SIZE:
+ g_value_init (value, G_TYPE_STRING);
+ str = thunar_file_get_size_string (row->file);
+ g_value_take_string (value, str);
+ break;
+
+ case THUNAR_LIST_MODEL_COLUMN_TYPE:
+ g_value_init (value, G_TYPE_STRING);
+ mime_info = thunar_file_get_mime_info (row->file);
+ if (G_UNLIKELY (strcmp (thunar_vfs_mime_info_get_name (mime_info), "inode/symlink") == 0))
+ g_value_set_static_string (value, _("broken link"));
+ else if (G_UNLIKELY (thunar_file_is_symlink (row->file)))
+ g_value_take_string (value, g_strdup_printf (_("link to %s"), thunar_vfs_mime_info_get_comment (mime_info)));
+ else
+ g_value_set_static_string (value, thunar_vfs_mime_info_get_comment (mime_info));
+ break;
+
+ default:
+ g_assert_not_reached ();
+ }
+}
+
+
+
+static gboolean
+thunar_list_model_iter_next (GtkTreeModel *model,
+ GtkTreeIter *iter)
+{
+ g_return_val_if_fail (THUNAR_IS_LIST_MODEL (model), FALSE);
+ g_return_val_if_fail (iter->stamp == (THUNAR_LIST_MODEL (model))->stamp, FALSE);
+
+ iter->user_data = ((Row *) iter->user_data)->next;
+ return (iter->user_data != NULL);
+}
+
+
+
+static gboolean
+thunar_list_model_iter_children (GtkTreeModel *model,
+ GtkTreeIter *iter,
+ GtkTreeIter *parent)
+{
+ ThunarListModel *store = THUNAR_LIST_MODEL (model);
+
+ g_return_val_if_fail (THUNAR_IS_LIST_MODEL (store), FALSE);
+
+ if (G_LIKELY (parent == NULL && store->rows != NULL))
+ {
+ iter->stamp = store->stamp;
+ iter->user_data = store->rows;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+
+
+static gboolean
+thunar_list_model_iter_has_child (GtkTreeModel *model,
+ GtkTreeIter *iter)
+{
+ return FALSE;
+}
+
+
+
+static gint
+thunar_list_model_iter_n_children (GtkTreeModel *model,
+ GtkTreeIter *iter)
+{
+ ThunarListModel *store = THUNAR_LIST_MODEL (model);
+
+ g_return_val_if_fail (THUNAR_IS_LIST_MODEL (store), 0);
+
+ return (iter == NULL) ? store->nrows : 0;
+}
+
+
+
+static gboolean
+thunar_list_model_iter_nth_child (GtkTreeModel *model,
+ GtkTreeIter *iter,
+ GtkTreeIter *parent,
+ gint n)
+{
+ ThunarListModel *store = THUNAR_LIST_MODEL (model);
+ Row *row;
+
+ g_return_val_if_fail (THUNAR_IS_LIST_MODEL (store), FALSE);
+
+ if (G_UNLIKELY (parent != NULL))
+ return FALSE;
+
+ for (row = store->rows; row != NULL && n > 0; --n, row = row->next)
+ ;
+
+ if (G_LIKELY (row != NULL))
+ {
+ iter->stamp = store->stamp;
+ iter->user_data = row;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+
+
+static gboolean
+thunar_list_model_iter_parent (GtkTreeModel *model,
+ GtkTreeIter *iter,
+ GtkTreeIter *child)
+{
+ return FALSE;
+}
+
+
+
+static gboolean
+thunar_list_model_drag_data_received (GtkTreeDragDest *dest,
+ GtkTreePath *path,
+ GtkSelectionData *data)
+{
+ // TODO: Implement this function
+ return FALSE;
+}
+
+
+
+static gboolean
+thunar_list_model_row_drop_possible (GtkTreeDragDest *dest,
+ GtkTreePath *path,
+ GtkSelectionData *data)
+{
+ // TODO: Implement this function
+ return FALSE;
+}
+
+
+
+static gboolean
+thunar_list_model_get_sort_column_id (GtkTreeSortable *sortable,
+ gint *sort_column_id,
+ GtkSortType *order)
+{
+ ThunarListModel *store = THUNAR_LIST_MODEL (sortable);
+
+ g_return_val_if_fail (THUNAR_IS_LIST_MODEL (store), FALSE);
+
+ if (store->sort_func == sort_by_mime_type)
+ *sort_column_id = THUNAR_LIST_MODEL_COLUMN_MIME_TYPE;
+ else if (store->sort_func == sort_by_name)
+ *sort_column_id = THUNAR_LIST_MODEL_COLUMN_NAME;
+ else if (store->sort_func == sort_by_permissions)
+ *sort_column_id = THUNAR_LIST_MODEL_COLUMN_PERMISSIONS;
+ else if (store->sort_func == sort_by_size)
+ *sort_column_id = THUNAR_LIST_MODEL_COLUMN_SIZE;
+ else if (store->sort_func == sort_by_date_accessed)
+ *sort_column_id = THUNAR_LIST_MODEL_COLUMN_DATE_ACCESSED;
+ else if (store->sort_func == sort_by_date_modified)
+ *sort_column_id = THUNAR_LIST_MODEL_COLUMN_DATE_MODIFIED;
+ else if (store->sort_func == sort_by_type)
+ *sort_column_id = THUNAR_LIST_MODEL_COLUMN_TYPE;
+ else
+ g_assert_not_reached ();
+
+ if (store->sort_sign > 0)
+ *order = GTK_SORT_ASCENDING;
+ else
+ *order = GTK_SORT_DESCENDING;
+
+ return TRUE;
+}
+
+
+
+static void
+thunar_list_model_set_sort_column_id (GtkTreeSortable *sortable,
+ gint sort_column_id,
+ GtkSortType order)
+{
+ ThunarListModel *store = THUNAR_LIST_MODEL (sortable);
+
+ g_return_if_fail (THUNAR_IS_LIST_MODEL (store));
+
+ switch (sort_column_id)
+ {
+ case THUNAR_LIST_MODEL_COLUMN_DATE_ACCESSED:
+ store->sort_func = sort_by_date_accessed;
+ break;
+
+ case THUNAR_LIST_MODEL_COLUMN_DATE_MODIFIED:
+ store->sort_func = sort_by_date_modified;
+ break;
+
+ case THUNAR_LIST_MODEL_COLUMN_MIME_TYPE:
+ store->sort_func = sort_by_mime_type;
+ break;
+
+ case THUNAR_LIST_MODEL_COLUMN_NAME:
+ store->sort_func = sort_by_name;
+ break;
+
+ case THUNAR_LIST_MODEL_COLUMN_PERMISSIONS:
+ store->sort_func = sort_by_permissions;
+ break;
+
+ case THUNAR_LIST_MODEL_COLUMN_SIZE:
+ store->sort_func = sort_by_size;
+ break;
+
+ case THUNAR_LIST_MODEL_COLUMN_TYPE:
+ store->sort_func = sort_by_type;
+ break;
+
+ default:
+ g_assert_not_reached ();
+ }
+
+ store->sort_sign = (order == GTK_SORT_ASCENDING) ? 1 : -1;
+
+ /* re-sort the store */
+ thunar_list_model_sort (store);
+
+ /* notify listining parties */
+ gtk_tree_sortable_sort_column_changed (sortable);
+}
+
+
+
+static void
+thunar_list_model_set_default_sort_func (GtkTreeSortable *sortable,
+ GtkTreeIterCompareFunc func,
+ gpointer data,
+ GtkDestroyNotify destroy)
+{
+ g_error ("ThunarListModel has sorting facilities built-in!");
+}
+
+
+
+static void
+thunar_list_model_set_sort_func (GtkTreeSortable *sortable,
+ gint sort_column_id,
+ GtkTreeIterCompareFunc func,
+ gpointer data,
+ GtkDestroyNotify destroy)
+{
+ g_error ("ThunarListModel has sorting facilities built-in!");
+}
+
+
+
+static gboolean
+thunar_list_model_has_default_sort_func (GtkTreeSortable *sortable)
+{
+ return FALSE;
+}
+
+
+
+static gint
+thunar_list_model_cmp (ThunarListModel *store,
+ ThunarFile *a,
+ ThunarFile *b)
+{
+ gboolean isdir_a;
+ gboolean isdir_b;
+
+ g_return_val_if_fail (THUNAR_IS_LIST_MODEL (store), -1);
+ g_return_val_if_fail (THUNAR_IS_FILE (a), -1);
+ g_return_val_if_fail (THUNAR_IS_FILE (b), -1);
+
+ if (G_LIKELY (store->sort_folders_first))
+ {
+ isdir_a = thunar_file_is_directory (a);
+ isdir_b = thunar_file_is_directory (b);
+
+ if (isdir_a && !isdir_b)
+ return -1;
+ else if (!isdir_a && isdir_b)
+ return 1;
+ }
+
+ return store->sort_func (a, b) * store->sort_sign;
+}
+
+
+
+static gint
+thunar_list_model_cmp_array (gconstpointer a,
+ gconstpointer b,
+ gpointer user_data)
+{
+ return thunar_list_model_cmp (THUNAR_LIST_MODEL (user_data),
+ ((SortTuple *) a)->row->file,
+ ((SortTuple *) b)->row->file);
+}
+
+
+
+static gint
+thunar_list_model_cmp_list (gconstpointer a,
+ gconstpointer b,
+ gpointer user_data)
+{
+ return -thunar_list_model_cmp (THUNAR_LIST_MODEL (user_data),
+ THUNAR_FILE (a),
+ THUNAR_FILE (b));
+}
+
+
+
+static gboolean
+thunar_list_model_remove (ThunarListModel *store,
+ GtkTreeIter *iter,
+ gboolean silently)
+{
+ GtkTreePath *path;
+ Row *next;
+ Row *prev = NULL;
+ Row *tmp;
+ Row *row;
+
+ g_return_val_if_fail (THUNAR_IS_LIST_MODEL (store), FALSE);
+ g_return_val_if_fail (iter->stamp == store->stamp, FALSE);
+
+ row = (Row *) iter->user_data;
+ next = row->next;
+ path = thunar_list_model_get_path (GTK_TREE_MODEL (store), iter);
+
+ /* delete data associated with this row */
+ g_signal_handlers_disconnect_matched (G_OBJECT (row->file), G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_CLOSURE,
+ store->file_changed_id, 0, store->file_changed_closure, NULL, NULL);
+ g_object_unref (row->file);
+
+ /* remove the link from the list */
+ for (tmp = store->rows; tmp != NULL; prev = tmp, tmp = tmp->next)
+ {
+ if (tmp == row)
+ {
+ if (prev != NULL)
+ prev->next = tmp->next;
+ else
+ store->rows = tmp->next;
+
+ tmp->next = NULL;
+ store->nrows -= 1;
+ break;
+ }
+ }
+
+ /* notify other parties */
+ if (G_LIKELY (!silently))
+ {
+ gtk_tree_model_row_deleted (GTK_TREE_MODEL (store), path);
+ g_object_notify (G_OBJECT (store), "num-files");
+ }
+ gtk_tree_path_free (path);
+
+ if (next != NULL)
+ {
+ iter->stamp = store->stamp;
+ iter->user_data = next;
+ return TRUE;
+ }
+ else
+ {
+ iter->stamp = 0;
+ return FALSE;
+ }
+}
+
+
+
+static void
+thunar_list_model_sort (ThunarListModel *store)
+{
+ GtkTreePath *path;
+ SortTuple *sort_array;
+ gint *new_order;
+ gint n;
+ Row *row;
+
+ g_return_if_fail (THUNAR_IS_LIST_MODEL (store));
+
+ if (G_UNLIKELY (store->nrows <= 1))
+ return;
+
+ /* be sure to not overuse the stack */
+ if (G_LIKELY (store->nrows < 2000))
+ sort_array = g_newa (SortTuple, store->nrows);
+ else
+ sort_array = g_new (SortTuple, store->nrows);
+
+ /* generate the sort array of tuples */
+ for (n = 0, row = store->rows; n < store->nrows; ++n, row = row->next)
+ {
+ sort_array[n].offset = n;
+ sort_array[n].row = row;
+ }
+
+ /* sort the array using QuickSort */
+ g_qsort_with_data (sort_array, store->nrows, sizeof (SortTuple), thunar_list_model_cmp_array, store);
+
+ /* update our internals and generate the new order */
+ new_order = g_newa (gint, store->nrows);
+ for (n = 0; n < store->nrows - 1; ++n)
+ {
+ new_order[n] = sort_array[n].offset;
+ sort_array[n].row->next = sort_array[n + 1].row;
+ }
+ new_order[n] = sort_array[n].offset;
+ sort_array[n].row->next = NULL;
+ store->rows = sort_array[0].row;
+
+ /* tell the view about the new item order */
+ path = gtk_tree_path_new ();
+ gtk_tree_model_rows_reordered (GTK_TREE_MODEL (store), path, NULL, new_order);
+ gtk_tree_path_free (path);
+
+ /* clean up if we used the heap */
+ if (G_UNLIKELY (store->nrows >= 2000))
+ g_free (sort_array);
+}
+
+
+
+static void
+thunar_list_model_file_changed (ThunarFile *file,
+ ThunarListModel *store)
+{
+ GtkTreePath *path;
+ GtkTreeIter iter;
+ gint n;
+ Row *row;
+
+ g_return_if_fail (THUNAR_IS_FILE (file));
+ g_return_if_fail (THUNAR_IS_LIST_MODEL (store));
+
+ for (n = 0, row = store->rows; row != NULL; ++n, row = row->next)
+ if (G_UNLIKELY (row->file == file))
+ {
+ iter.stamp = store->stamp;
+ iter.user_data = row;
+
+ /* notify the view that it has to redraw the file */
+ path = gtk_tree_path_new_from_indices (n, -1);
+ gtk_tree_model_row_changed (GTK_TREE_MODEL (store), path, &iter);
+ gtk_tree_path_free (path);
+
+ /* re-sort the model as the file may have changed its name */
+ thunar_list_model_sort (store);
+
+ return;
+ }
+
+ g_assert_not_reached ();
+}
+
+
+
+static void
+thunar_list_model_folder_destroy (ThunarFolder *folder,
+ ThunarListModel *store)
+{
+ g_return_if_fail (THUNAR_IS_FOLDER (folder));
+ g_return_if_fail (THUNAR_IS_LIST_MODEL (store));
+
+ thunar_list_model_set_folder (store, NULL);
+
+ // TODO: What to do when the folder is deleted?
+}
+
+
+
+static void
+thunar_list_model_folder_error (ThunarFolder *folder,
+ const GError *error,
+ ThunarListModel *store)
+{
+ g_return_if_fail (error != NULL);
+ g_return_if_fail (THUNAR_IS_FOLDER (folder));
+ g_return_if_fail (THUNAR_IS_LIST_MODEL (store));
+
+ /* forward the error signal */
+ g_signal_emit (G_OBJECT (store), list_model_signals[ERROR], 0, error);
+
+ /* reset the current folder */
+ thunar_list_model_set_folder (store, NULL);
+}
+
+
+
+static void
+thunar_list_model_files_added (ThunarFolder *folder,
+ GList *files,
+ ThunarListModel *store)
+{
+ GtkTreePath *path;
+ GtkTreeIter iter;
+ ThunarFile *file;
+ gint index = 0;
+ Row *row;
+ Row *prev = NULL;
+
+ // TODO: pre-sort files to get faster insert?!
+ for (; files != NULL; files = files->next)
+ {
+ /* take a reference on that file */
+ file = THUNAR_FILE (files->data);
+ g_object_ref (G_OBJECT (file));
+
+ /* check if the file should be hidden */
+ if (!store->show_hidden && thunar_file_is_hidden (file))
+ {
+ store->hidden = g_list_prepend (store->hidden, file);
+ }
+ else
+ {
+ row = g_chunk_new (Row, store->row_chunk);
+ row->file = file;
+ g_signal_connect_closure_by_id (G_OBJECT (file), store->file_changed_id,
+ 0, store->file_changed_closure, TRUE);
+
+ /* find the position to insert the file to */
+ if (G_UNLIKELY (store->rows == NULL || thunar_list_model_cmp (store, file, store->rows->file) < 0))
+ {
+ prev = NULL;
+ index = 0;
+ row->next = store->rows;
+ store->rows = row;
+ }
+ else
+ {
+ /* We use a simple optimization here to avoid going through the whole
+ * list if the current file is to be inserted right before or after
+ * the previous item (which is common).
+ */
+ if (G_UNLIKELY (prev == NULL || thunar_list_model_cmp (store, file, prev->file) < 0))
+ {
+ prev = store->rows;
+ index = 1;
+ }
+
+ for (; prev->next != NULL; ++index, prev = prev->next)
+ if (thunar_list_model_cmp (store, file, prev->next->file) < 0)
+ break;
+
+ row->next = prev->next;
+ prev->next = row;
+ }
+
+ iter.stamp = store->stamp;
+ iter.user_data = row;
+
+ path = gtk_tree_path_new_from_indices (index, -1);
+ gtk_tree_model_row_inserted (GTK_TREE_MODEL (store), path, &iter);
+ gtk_tree_path_free (path);
+
+ store->nrows += 1;
+ }
+ }
+
+ /* number of visible files may have changed */
+ g_object_notify (G_OBJECT (store), "num-files");
+}
+
+
+
+static void
+thunar_list_model_files_removed (ThunarFolder *folder,
+ GList *files,
+ ThunarListModel *store)
+{
+ GtkTreeIter iter;
+ ThunarFile *file;
+ GList *lp;
+ Row *row;
+
+ /* drop all the referenced files from the model */
+ for (lp = files; lp != NULL; lp = lp->next)
+ {
+ /* reference the file */
+ file = THUNAR_FILE (lp->data);
+
+ /* check if file is currently shown */
+ for (row = store->rows; row != NULL; row = row->next)
+ if (row->file == file)
+ {
+ iter.stamp = store->stamp;
+ iter.user_data = row;
+ thunar_list_model_remove (store, &iter, FALSE);
+ return;
+ }
+
+ /* file is hidden */
+ g_assert (g_list_find (store->hidden, file) != NULL);
+ store->hidden = g_list_remove (store->hidden, file);
+ g_object_unref (G_OBJECT (file));
+ }
+}
+
+
+
+static gint
+sort_by_date_accessed (const ThunarFile *a,
+ const ThunarFile *b)
+{
+ ThunarVfsFileTime date_a;
+ ThunarVfsFileTime date_b;
+
+ date_a = thunar_file_get_date (a, THUNAR_FILE_DATE_ACCESSED);
+ date_b = thunar_file_get_date (b, THUNAR_FILE_DATE_ACCESSED);
+
+ if (date_a < date_b)
+ return -1;
+ else if (date_a > date_b)
+ return 1;
+
+ return sort_by_name (a, b);
+}
+
+
+
+static gint
+sort_by_date_modified (const ThunarFile *a,
+ const ThunarFile *b)
+{
+ ThunarVfsFileTime date_a;
+ ThunarVfsFileTime date_b;
+
+ date_a = thunar_file_get_date (a, THUNAR_FILE_DATE_MODIFIED);
+ date_b = thunar_file_get_date (b, THUNAR_FILE_DATE_MODIFIED);
+
+ if (date_a < date_b)
+ return -1;
+ else if (date_a > date_b)
+ return 1;
+
+ return sort_by_name (a, b);
+}
+
+
+
+static gint
+sort_by_mime_type (const ThunarFile *a,
+ const ThunarFile *b)
+{
+ ThunarVfsMimeInfo *info_a;
+ ThunarVfsMimeInfo *info_b;
+ gint result;
+
+ info_a = thunar_file_get_mime_info (a);
+ info_b = thunar_file_get_mime_info (b);
+
+ result = strcasecmp (thunar_vfs_mime_info_get_name (info_a),
+ thunar_vfs_mime_info_get_name (info_b));
+
+ if (result == 0)
+ result = sort_by_name (a, b);
+
+ return result;
+}
+
+
+
+static gint
+sort_by_name (const ThunarFile *a,
+ const ThunarFile *b)
+{
+ return strcmp (thunar_file_get_display_name (a),
+ thunar_file_get_display_name (b));
+}
+
+
+
+static gint
+sort_by_permissions (const ThunarFile *a,
+ const ThunarFile *b)
+{
+ ThunarVfsFileMode mode_a;
+ ThunarVfsFileMode mode_b;
+
+ mode_a = thunar_file_get_mode (a);
+ mode_b = thunar_file_get_mode (b);
+
+ if (mode_a < mode_b)
+ return -1;
+ else if (mode_a > mode_b)
+ return 1;
+
+ return sort_by_name (a, b);
+}
+
+
+
+static gint
+sort_by_size (const ThunarFile *a,
+ const ThunarFile *b)
+{
+ ThunarVfsFileSize size_a;
+ ThunarVfsFileSize size_b;
+
+ size_a = thunar_file_get_size (a);
+ size_b = thunar_file_get_size (b);
+
+ if (size_a < size_b)
+ return -1;
+ else if (size_a > size_b)
+ return 1;
+
+ return sort_by_name (a, b);
+}
+
+
+
+static gint
+sort_by_type (const ThunarFile *a,
+ const ThunarFile *b)
+{
+ ThunarVfsMimeInfo *info_a;
+ ThunarVfsMimeInfo *info_b;
+ gint result;
+
+ info_a = thunar_file_get_mime_info (a);
+ info_b = thunar_file_get_mime_info (b);
+
+ result = strcasecmp (thunar_vfs_mime_info_get_comment (info_a),
+ thunar_vfs_mime_info_get_comment (info_b));
+
+ if (result == 0)
+ result = sort_by_name (a, b);
+
+ return result;
+}
+
+
+
+/**
+ * thunar_list_model_new:
+ *
+ * Allocates a new #ThunarListModel not associated with
+ * any #ThunarFolder.
+ *
+ * Return value: the newly allocated #ThunarListModel.
+ **/
+ThunarListModel*
+thunar_list_model_new (void)
+{
+ return g_object_new (THUNAR_TYPE_LIST_MODEL, NULL);
+}
+
+
+
+/**
+ * thunar_list_model_new_with_folder:
+ * @folder : a valid #ThunarFolder object.
+ *
+ * Allocates a new #ThunarListModel instance and associates
+ * it with @folder.
+ *
+ * Return value: the newly created #ThunarListModel instance.
+ **/
+ThunarListModel*
+thunar_list_model_new_with_folder (ThunarFolder *folder)
+{
+ g_return_val_if_fail (THUNAR_IS_FOLDER (folder), NULL);
+
+ /* allocate the new list model */
+ return g_object_new (THUNAR_TYPE_LIST_MODEL,
+ "folder", folder,
+ NULL);
+}
+
+
+
+/**
+ * thunar_list_model_get_folder:
+ * @store : a valid #ThunarListModel object.
+ *
+ * Return value: the #ThunarFolder @store is associated with
+ * or %NULL if @store has no folder.
+ **/
+ThunarFolder*
+thunar_list_model_get_folder (ThunarListModel *store)
+{
+ g_return_val_if_fail (THUNAR_IS_LIST_MODEL (store), NULL);
+ return store->folder;
+}
+
+
+
+/**
+ * thunar_list_model_set_folder:
+ * @store : a valid #ThunarListModel.
+ * @folder : a #ThunarFolder or %NULL.
+ **/
+void
+thunar_list_model_set_folder (ThunarListModel *store,
+ ThunarFolder *folder)
+{
+ GtkTreePath *path;
+ GtkTreeIter iter;
+ ThunarFile *file;
+ gboolean has_handler;
+ GList *files;
+ GList *lp;
+ Row *row;
+
+ g_return_if_fail (THUNAR_IS_LIST_MODEL (store));
+ g_return_if_fail (folder == NULL || THUNAR_IS_FOLDER (folder));
+
+ /* check if we're not already using that folder */
+ if (G_UNLIKELY (store->folder == folder))
+ return;
+
+ /* unlink from the previously active folder (if any) */
+ if (G_LIKELY (store->folder != NULL))
+ {
+ /* check if we have any handlers connected for "row-deleted" */
+ has_handler = g_signal_has_handler_pending (G_OBJECT (store), store->row_deleted_id, 0, FALSE);
+
+ /* remove existing entries */
+ path = gtk_tree_path_new ();
+ gtk_tree_path_append_index (path, 0);
+ while (store->nrows > 0)
+ {
+ /* grab the next row */
+ row = store->rows;
+
+ /* delete data associated with this row */
+ g_signal_handlers_disconnect_matched (G_OBJECT (row->file), G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_CLOSURE,
+ store->file_changed_id, 0, store->file_changed_closure, NULL, NULL);
+ g_object_unref (G_OBJECT (row->file));
+
+ /* remove the row from the list */
+ store->rows = row->next;
+ store->nrows--;
+
+ /* notify the view(s) if they're actually
+ * interested in the "row-deleted" signal.
+ */
+ if (G_UNLIKELY (has_handler))
+ gtk_tree_model_row_deleted (GTK_TREE_MODEL (store), path);
+ }
+ gtk_tree_path_free (path);
+
+ /* reset the row chunk as all rows have been freed now */
+ g_mem_chunk_reset (store->row_chunk);
+
+ /* remove hidden entries */
+ g_list_foreach (store->hidden, (GFunc) g_object_unref, NULL);
+ g_list_free (store->hidden);
+ store->hidden = NULL;
+
+ /* unregister signals and drop the reference */
+ g_signal_handlers_disconnect_matched (G_OBJECT (store->folder), G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, store);
+ g_object_unref (G_OBJECT (store->folder));
+ }
+
+ /* ... just to be sure! */
+ g_assert (store->rows == NULL);
+ g_assert (store->nrows == 0);
+
+ /* activate the new folder */
+ store->folder = folder;
+
+ /* connect to the new folder (if any) */
+ if (folder != NULL)
+ {
+ g_object_ref (G_OBJECT (folder));
+
+ /* sort the files _before_ adding them to the store (reverse order -> prepend below) */
+ files = g_list_copy (thunar_folder_get_files (folder));
+ if (G_LIKELY (files != NULL))
+ {
+ files = g_list_sort_with_data (files, thunar_list_model_cmp_list, store);
+
+ /* insert the files */
+ for (lp = files; lp != NULL; lp = lp->next)
+ {
+ /* take a reference on the file */
+ file = THUNAR_FILE (lp->data);
+ g_object_ref (G_OBJECT (file));
+
+ /* check if this file should be shown/hidden */
+ if (!store->show_hidden && thunar_file_is_hidden (file))
+ {
+ store->hidden = g_list_prepend (store->hidden, file);
+ }
+ else
+ {
+ row = g_chunk_new (Row, store->row_chunk);
+ row->file = file;
+ g_signal_connect_closure_by_id (G_OBJECT (file), store->file_changed_id,
+ 0, store->file_changed_closure, TRUE);
+ row->next = store->rows;
+
+ store->rows = row;
+ store->nrows += 1;
+ }
+ }
+
+ /* check if we have any handlers connected for "row-inserted" */
+ if (g_signal_has_handler_pending (G_OBJECT (store), store->row_inserted_id, 0, FALSE))
+ {
+ /* notify other parties only if anyone is actually
+ * interested in the "row-inserted" signal.
+ */
+ path = gtk_tree_path_new ();
+ gtk_tree_path_append_index (path, 0);
+ for (row = store->rows; row != NULL; row = row->next)
+ {
+ iter.stamp = store->stamp;
+ iter.user_data = row;
+ gtk_tree_model_row_inserted (GTK_TREE_MODEL (store), path, &iter);
+ gtk_tree_path_next (path);
+ }
+ gtk_tree_path_free (path);
+ }
+
+ /* cleanup */
+ g_list_free (files);
+ }
+
+ /* connect signals to the new folder */
+ g_signal_connect (G_OBJECT (store->folder), "destroy",
+ G_CALLBACK (thunar_list_model_folder_destroy), store);
+ g_signal_connect (G_OBJECT (store->folder), "error",
+ G_CALLBACK (thunar_list_model_folder_error), store);
+ g_signal_connect (G_OBJECT (store->folder), "files-added",
+ G_CALLBACK (thunar_list_model_files_added), store);
+ g_signal_connect (G_OBJECT (store->folder), "files-removed",
+ G_CALLBACK (thunar_list_model_files_removed), store);
+ }
+
+ /* notify listeners that we have a new folder */
+ g_object_freeze_notify (G_OBJECT (store));
+ g_object_notify (G_OBJECT (store), "folder");
+ g_object_notify (G_OBJECT (store), "num-files");
+ g_object_thaw_notify (G_OBJECT (store));
+}
+
+
+
+/**
+ * thunar_list_model_get_folders_first:
+ * @store : a #ThunarListModel.
+ *
+ * Determines whether @store lists folders first.
+ *
+ * Return value: %TRUE if @store lists folders first.
+ **/
+gboolean
+thunar_list_model_get_folders_first (ThunarListModel *store)
+{
+ g_return_val_if_fail (THUNAR_IS_LIST_MODEL (store), FALSE);
+ return store->sort_folders_first;
+}
+
+
+
+/**
+ * thunar_list_model_set_folders_first:
+ * @store : a #ThunarListModel.
+ * @folders_first : %TRUE to let @store list folders first.
+ **/
+void
+thunar_list_model_set_folders_first (ThunarListModel *store,
+ gboolean folders_first)
+{
+ g_return_if_fail (THUNAR_IS_LIST_MODEL (store));
+
+ /* check if the new setting differs */
+ if ((store->sort_folders_first && folders_first)
+ || (!store->sort_folders_first && !folders_first))
+ return;
+
+ /* apply the new setting (re-sorting the store) */
+ store->sort_folders_first = folders_first;
+ g_object_notify (G_OBJECT (store), "folders-first");
+ thunar_list_model_sort (store);
+}
+
+
+
+/**
+ * thunar_list_model_get_show_hidden:
+ * @store : a #ThunarListModel.
+ *
+ * Return value: %TRUE if hidden files will be shown, else %FALSE.
+ **/
+gboolean
+thunar_list_model_get_show_hidden (ThunarListModel *store)
+{
+ g_return_val_if_fail (THUNAR_IS_LIST_MODEL (store), FALSE);
+ return store->show_hidden;
+}
+
+
+
+/**
+ * thunar_list_model_set_show_hidden:
+ * @store : a #ThunarListModel.
+ * @show_hidden : %TRUE if hidden files should be shown, else %FALSE.
+ **/
+void
+thunar_list_model_set_show_hidden (ThunarListModel *store,
+ gboolean show_hidden)
+{
+ GtkTreePath *path;
+ GtkTreeIter iter;
+ ThunarFile *file;
+ GList *hidden_rows;
+ GList *files;
+ GList *lp;
+ Row *prev;
+ Row *row;
+
+ g_return_if_fail (THUNAR_IS_LIST_MODEL (store));
+
+ /* check if the settings differ */
+ if ((store->show_hidden && show_hidden) || (!store->show_hidden && !show_hidden))
+ return;
+
+ store->show_hidden = show_hidden;
+
+ if (store->show_hidden)
+ {
+ /* merge all hidden elements */
+ for (files = store->hidden; files != NULL; files = files->next)
+ {
+ file = THUNAR_FILE (files->data);
+
+ row = g_chunk_new (Row, store->row_chunk);
+ row->file = file;
+ g_signal_connect_closure_by_id (G_OBJECT (file), store->file_changed_id,
+ 0, store->file_changed_closure, TRUE);
+
+ if (G_UNLIKELY (store->rows == NULL || thunar_list_model_cmp (store, file, store->rows->file) < 0))
+ {
+ row->next = store->rows;
+ store->rows = row;
+ }
+ else
+ {
+ for (prev = store->rows; prev->next != NULL; prev = prev->next)
+ if (thunar_list_model_cmp (store, file, prev->next->file) < 0)
+ break;
+
+ row->next = prev->next;
+ prev->next = row;
+ }
+
+ iter.stamp = store->stamp;
+ iter.user_data = row;
+
+ path = thunar_list_model_get_path (GTK_TREE_MODEL (store), &iter);
+ gtk_tree_model_row_inserted (GTK_TREE_MODEL (store), path, &iter);
+ gtk_tree_path_free (path);
+
+ store->nrows += 1;
+ }
+ g_list_free (store->hidden);
+ store->hidden = NULL;
+ }
+ else
+ {
+ g_assert (store->hidden == NULL);
+
+ /* unmerge all hidden elements */
+ for (hidden_rows = files = NULL, row = store->rows; row != NULL; row = row->next)
+ if (thunar_file_is_hidden (row->file))
+ {
+ hidden_rows = g_list_prepend (hidden_rows, row);
+ files = g_list_prepend (files, g_object_ref (row->file));
+ }
+
+ if (files != NULL)
+ {
+ for (lp = hidden_rows; lp != NULL; lp = lp->next)
+ {
+ iter.stamp = store->stamp;
+ iter.user_data = lp->data;
+ thunar_list_model_remove (store, &iter, FALSE);
+ }
+ g_list_free (hidden_rows);
+
+ store->hidden = files;
+ }
+ }
+
+ /* notify listeners about the new setting */
+ g_object_freeze_notify (G_OBJECT (store));
+ g_object_notify (G_OBJECT (store), "num-files");
+ g_object_notify (G_OBJECT (store), "show-hidden");
+ g_object_thaw_notify (G_OBJECT (store));
+}
+
+
+
+/**
+ * thunar_list_model_get_file:
+ * @store : a #ThunarListModel.
+ * @iter : a valid #GtkTreeIter for @store.
+ *
+ * Returns the #ThunarFile referred to by @iter. Free
+ * the returned object using #g_object_unref() when
+ * you are done with it.
+ *
+ * Return value: the #ThunarFile.
+ **/
+ThunarFile*
+thunar_list_model_get_file (ThunarListModel *store,
+ GtkTreeIter *iter)
+{
+ Row *row;
+
+ g_return_val_if_fail (THUNAR_IS_LIST_MODEL (store), NULL);
+ g_return_val_if_fail (iter->stamp == store->stamp, NULL);
+
+ row = (Row *) iter->user_data;
+
+ g_assert (row != NULL);
+
+ return g_object_ref (row->file);
+}
+
+
+
+/**
+ * thunar_list_model_get_num_files:
+ * @store : a #ThunarListModel.
+ *
+ * Counts the number of visible files for @store, taking into account the
+ * current setting of "show-hidden".
+ *
+ * Return value: ahe number of visible files in @store.
+ **/
+gint
+thunar_list_model_get_num_files (ThunarListModel *store)
+{
+ g_return_val_if_fail (THUNAR_IS_LIST_MODEL (store), 0);
+ return store->nrows;
+}
+
+
+
+/**
+ * thunar_list_model_get_paths_for_files:
+ * @store : a #ThunarListModel instance.
+ * @files : a list of #ThunarFile<!---->s.
+ *
+ * Determines the list of #GtkTreePath<!---->s for the #ThunarFile<!---->s
+ * found in the @files list. If a #ThunarFile from the @files list is not
+ * available in @store, no #GtkTreePath will be returned for it. So, in effect,
+ * only #GtkTreePath<!---->s for the subset of @files available in @store will
+ * be returned.
+ *
+ * The caller is responsible to free the returned list using:
+ * <informalexample><programlisting>
+ * g_list_foreach (list, (GFunc) gtk_tree_path_free, NULL);
+ * g_list_free (list);
+ * </programlisting></informalexample>
+ *
+ * Return value: the list of #GtkTreePath<!---->s for @files.
+ **/
+GList*
+thunar_list_model_get_paths_for_files (ThunarListModel *store,
+ GList *files)
+{
+ GList *paths = NULL;
+ gint index = 0;
+ Row *row;
+
+ g_return_val_if_fail (THUNAR_IS_LIST_MODEL (store), NULL);
+
+ /* find the rows for the given files */
+ for (row = store->rows; row != NULL; ++index, row = row->next)
+ if (g_list_find (files, row->file) != NULL)
+ paths = g_list_prepend (paths, gtk_tree_path_new_from_indices (index, -1));
+
+ return paths;
+}
+
+
+
+/**
+ * thunar_list_model_get_paths_for_pattern:
+ * @store : a #ThunarListModel instance.
+ * @pattern : the pattern to match.
+ *
+ * Looks up all rows in the @store that match @pattern and returns
+ * a list of #GtkTreePath<!---->s corresponding to the rows.
+ *
+ * The caller is responsible to free the returned list using:
+ * <informalexample><programlisting>
+ * g_list_foreach (list, (GFunc) gtk_tree_path_free, NULL);
+ * g_list_free (list);
+ * </programlisting></informalexample>
+ *
+ * Return value: the list of #GtkTreePath<!---->s that match @pattern.
+ **/
+GList*
+thunar_list_model_get_paths_for_pattern (ThunarListModel *store,
+ const gchar *pattern)
+{
+ GPatternSpec *pspec;
+ GList *paths = NULL;
+ gint index = 0;
+ Row *row;
+
+ g_return_val_if_fail (THUNAR_IS_LIST_MODEL (store), NULL);
+ g_return_val_if_fail (g_utf8_validate (pattern, -1, NULL), NULL);
+
+ /* compile the pattern */
+ pspec = g_pattern_spec_new (pattern);
+
+ /* find all rows that match the given pattern */
+ for (row = store->rows; row != NULL; ++index, row = row->next)
+ if (g_pattern_match_string (pspec, thunar_file_get_display_name (row->file)))
+ paths = g_list_prepend (paths, gtk_tree_path_new_from_indices (index, -1));
+
+ /* release the pattern */
+ g_pattern_spec_free (pspec);
+
+ return paths;
+}
+
+
+
+/**
+ * thunar_list_model_get_statusbar_text:
+ * @store : a #ThunarListModel instance.
+ * @selected_items : the list of selected items (as GtkTreePath's).
+ *
+ * Generates the statusbar text for @store with the given
+ * @selected_items.
+ *
+ * This function is used by the #ThunarStandardView (and thereby
+ * implicitly by #ThunarIconView and #ThunarDetailsView) to
+ * calculate the text to display in the statusbar for a given
+ * file selection.
+ *
+ * The caller is reponsible to free the returned text using
+ * g_free() when it's no longer needed.
+ *
+ * Return value: the statusbar text for @store with the given
+ * @selected_items.
+ **/
+gchar*
+thunar_list_model_get_statusbar_text (ThunarListModel *store,
+ GList *selected_items)
+{
+ ThunarVfsMimeInfo *mime_info;
+ ThunarVfsFileSize size_summary;
+ ThunarVfsFileSize size;
+ ThunarVfsVolume *volume;
+ GtkTreeIter iter;
+ ThunarFile *file;
+ GList *lp;
+ gchar *size_string;
+ gchar *text;
+ gint n;
+
+ g_return_val_if_fail (THUNAR_IS_LIST_MODEL (store), NULL);
+
+ if (selected_items == NULL)
+ {
+ /* try to determine a file for the current folder */
+ file = (store->folder != NULL) ? thunar_folder_get_corresponding_file (store->folder) : NULL;
+ volume = (file != NULL) ? thunar_file_get_volume (file, store->volume_manager) : NULL;
+
+ if (G_LIKELY (volume != NULL && thunar_vfs_volume_get_free_space (volume, &size)))
+ {
+ size_string = thunar_vfs_humanize_size (size, NULL, 0);
+ text = g_strdup_printf (ngettext ("%d item, Free space: %s", "%d items, Free space: %s", store->nrows), store->nrows, size_string);
+ g_free (size_string);
+ }
+ else
+ {
+ text = g_strdup_printf (ngettext ("%d item", "%d items", store->nrows), store->nrows);
+ }
+ }
+ else if (selected_items->next == NULL)
+ {
+ /* resolve the iter for the single path */
+ gtk_tree_model_get_iter (GTK_TREE_MODEL (store), &iter, selected_items->data);
+
+ /* get the file for the given iter */
+ file = ((Row *) iter.user_data)->file;
+
+ /* calculate the text to be displayed */
+ mime_info = thunar_file_get_mime_info (file);
+ size_string = thunar_file_get_size_string (file);
+ if (G_UNLIKELY (strcmp (thunar_vfs_mime_info_get_name (mime_info), "inode/symlink") == 0))
+ {
+ text = g_strdup_printf (_("\"%s\" broken link"), thunar_file_get_display_name (file));
+ }
+ else if (G_UNLIKELY (thunar_file_is_symlink (file)))
+ {
+ text = g_strdup_printf (_("\"%s\" (%s) link to %s"), thunar_file_get_display_name (file),
+ size_string, thunar_vfs_mime_info_get_comment (mime_info));
+ }
+ else
+ {
+ text = g_strdup_printf (_("\"%s\" (%s) %s"), thunar_file_get_display_name (file),
+ size_string, thunar_vfs_mime_info_get_comment (mime_info));
+ }
+ g_free (size_string);
+ }
+ else
+ {
+ /* sum up all sizes */
+ for (lp = selected_items, n = 0, size_summary = 0; lp != NULL; lp = lp->next, ++n)
+ {
+ gtk_tree_model_get_iter (GTK_TREE_MODEL (store), &iter, lp->data);
+ size_summary += thunar_file_get_size (((Row *) iter.user_data)->file);
+ }
+
+ if (size_summary > 0)
+ {
+ size_string = thunar_vfs_humanize_size (size_summary, NULL, 0);
+ text = g_strdup_printf (ngettext ("%d item selected", "%d items selected (%s)", n), n, size_string);
+ g_free (size_string);
+ }
+ else
+ {
+ text = g_strdup_printf (ngettext ("%d item selected", "%d items selected", n), n);
+ }
+ }
+
+ return text;
+}
+
+
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-list-model.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-list-model.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-list-model.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,88 @@
+/* $Id: thunar-list-model.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2004-2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_LIST_MODEL_H__
+#define __THUNAR_LIST_MODEL_H__
+
+#include <thunar/thunar-folder.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarListModelClass ThunarListModelClass;
+typedef struct _ThunarListModel ThunarListModel;
+
+#define THUNAR_TYPE_LIST_MODEL (thunar_list_model_get_type ())
+#define THUNAR_LIST_MODEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_LIST_MODEL, ThunarListModel))
+#define THUNAR_LIST_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_LIST_MODEL, ThunarListModelClass))
+#define THUNAR_IS_LIST_MODEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_LIST_MODEL))
+#define THUNAR_IS_LIST_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_LIST_MODEL))
+#define THUNAR_LIST_MODEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_LIST_MODEL, ThunarListModelClass))
+
+/**
+ * ThunarListModelColumn:
+ *
+ * Columns exported by #ThunarListModel using the #GtkTreeModel
+ * interface.
+ **/
+typedef enum
+{
+ THUNAR_LIST_MODEL_COLUMN_DATE_ACCESSED,
+ THUNAR_LIST_MODEL_COLUMN_DATE_MODIFIED,
+ THUNAR_LIST_MODEL_COLUMN_FILE,
+ THUNAR_LIST_MODEL_COLUMN_MIME_TYPE,
+ THUNAR_LIST_MODEL_COLUMN_NAME,
+ THUNAR_LIST_MODEL_COLUMN_PERMISSIONS,
+ THUNAR_LIST_MODEL_COLUMN_SIZE,
+ THUNAR_LIST_MODEL_COLUMN_TYPE,
+ THUNAR_LIST_MODEL_N_COLUMNS,
+} ThunarListModelColumn;
+
+GType thunar_list_model_get_type (void) G_GNUC_CONST;
+
+ThunarListModel *thunar_list_model_new (void);
+ThunarListModel *thunar_list_model_new_with_folder (ThunarFolder *folder);
+
+ThunarFolder *thunar_list_model_get_folder (ThunarListModel *store);
+void thunar_list_model_set_folder (ThunarListModel *store,
+ ThunarFolder *folder);
+
+gboolean thunar_list_model_get_folders_first (ThunarListModel *store);
+void thunar_list_model_set_folders_first (ThunarListModel *store,
+ gboolean folders_first);
+
+gboolean thunar_list_model_get_show_hidden (ThunarListModel *store);
+void thunar_list_model_set_show_hidden (ThunarListModel *store,
+ gboolean show_hidden);
+
+ThunarFile *thunar_list_model_get_file (ThunarListModel *store,
+ GtkTreeIter *iter);
+
+gint thunar_list_model_get_num_files (ThunarListModel *store);
+
+GList *thunar_list_model_get_paths_for_files (ThunarListModel *store,
+ GList *files);
+GList *thunar_list_model_get_paths_for_pattern (ThunarListModel *store,
+ const gchar *pattern);
+
+gchar *thunar_list_model_get_statusbar_text (ThunarListModel *store,
+ GList *selected_items);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_LIST_MODEL_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-location-bar.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-location-bar.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-location-bar.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,85 @@
+/* $Id: thunar-location-bar.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <thunar/thunar-location-bar.h>
+
+
+
+GType
+thunar_location_bar_get_type (void)
+{
+ static GType type = G_TYPE_INVALID;
+
+ if (G_UNLIKELY (type == G_TYPE_INVALID))
+ {
+ static const GTypeInfo info =
+ {
+ sizeof (ThunarLocationBarIface),
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ 0,
+ 0,
+ NULL,
+ };
+
+ type = g_type_register_static (G_TYPE_INTERFACE,
+ "ThunarLocationBar",
+ &info, 0);
+
+ g_type_interface_add_prerequisite (type, THUNAR_TYPE_NAVIGATOR);
+ }
+
+ return type;
+}
+
+
+
+/**
+ * thunar_location_bar_accept_focus:
+ * @location_bar : a #ThunarLocationBar.
+ *
+ * If the implementation of the #ThunarLocationBar interface
+ * supports entering a location into a text widget, then the
+ * text widget will be focused and the method will return
+ * %TRUE. The #ThunarLocationEntry is an example for such
+ * an implementation.
+ *
+ * Else if the implementation offers no way to enter a new
+ * location as text, it will simply return %FALSE here. The
+ * #ThunarLocationButtons class is an example for such an
+ * implementation.
+ *
+ * Return value: %TRUE if the @location_bar gave focus to
+ * a text entry widget provided by @location_bar,
+ * else %FALSE.
+ **/
+gboolean
+thunar_location_bar_accept_focus (ThunarLocationBar *location_bar)
+{
+ g_return_val_if_fail (THUNAR_IS_LOCATION_BAR (location_bar), FALSE);
+ return (*THUNAR_LOCATION_BAR_GET_IFACE (location_bar)->accept_focus) (location_bar);
+}
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-location-bar.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-location-bar.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-location-bar.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,49 @@
+/* $Id: thunar-location-bar.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_LOCATION_BAR_H__
+#define __THUNAR_LOCATION_BAR_H__
+
+#include <thunar/thunar-navigator.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarLocationBarIface ThunarLocationBarIface;
+typedef struct _ThunarLocationBar ThunarLocationBar;
+
+#define THUNAR_TYPE_LOCATION_BAR (thunar_location_bar_get_type ())
+#define THUNAR_LOCATION_BAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_LOCATION_BAR, ThunarLocationBar))
+#define THUNAR_IS_LOCATION_BAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_LOCATION_BAR))
+#define THUNAR_LOCATION_BAR_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), THUNAR_TYPE_LOCATION_BAR, ThunarLocationBarIface))
+
+struct _ThunarLocationBarIface
+{
+ GTypeInterface __parent__;
+
+ /* virtual methods */
+ gboolean (*accept_focus) (ThunarLocationBar *location_bar);
+};
+
+GType thunar_location_bar_get_type (void) G_GNUC_CONST;
+
+gboolean thunar_location_bar_accept_focus (ThunarLocationBar *location_bar);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_LOCATION_BAR_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-location-buttons.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-location-buttons.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-location-buttons.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,1289 @@
+/* $Id: thunar-location-buttons.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * Based on code written by Jonathan Blandford <jrb at gnome.org> for
+ * Red Hat, Inc.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#include <thunar/thunar-icon-factory.h>
+#include <thunar/thunar-location-buttons.h>
+
+
+
+#define THUNAR_LOCATION_BUTTONS_SCROLL_TIMEOUT (200)
+
+
+
+enum
+{
+ PROP_0,
+ PROP_CURRENT_DIRECTORY,
+};
+
+
+
+static void thunar_location_buttons_class_init (ThunarLocationButtonsClass *klass);
+static void thunar_location_buttons_navigator_init (ThunarNavigatorIface *iface);
+static void thunar_location_buttons_location_bar_init (ThunarLocationBarIface *iface);
+static void thunar_location_buttons_init (ThunarLocationButtons *buttons);
+static void thunar_location_buttons_finalize (GObject *object);
+static void thunar_location_buttons_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void thunar_location_buttons_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static ThunarFile *thunar_location_buttons_get_current_directory (ThunarNavigator *navigator);
+static void thunar_location_buttons_set_current_directory (ThunarNavigator *navigator,
+ ThunarFile *current_directory);
+static gboolean thunar_location_buttons_accept_focus (ThunarLocationBar *location_bar);
+static void thunar_location_buttons_unmap (GtkWidget *widget);
+static void thunar_location_buttons_size_request (GtkWidget *widget,
+ GtkRequisition *requisition);
+static void thunar_location_buttons_size_allocate (GtkWidget *widget,
+ GtkAllocation *allocation);
+static void thunar_location_buttons_state_changed (GtkWidget *widget,
+ GtkStateType previous_state);
+static void thunar_location_buttons_style_set (GtkWidget *widget,
+ GtkStyle *previous_style);
+static void thunar_location_buttons_grab_notify (GtkWidget *widget,
+ gboolean was_grabbed);
+static void thunar_location_buttons_add (GtkContainer *container,
+ GtkWidget *widget);
+static void thunar_location_buttons_remove (GtkContainer *container,
+ GtkWidget *widget);
+static void thunar_location_buttons_forall (GtkContainer *container,
+ gboolean include_internals,
+ GtkCallback callback,
+ gpointer callback_data);
+static GtkWidget *thunar_location_buttons_make_button (ThunarLocationButtons *buttons,
+ ThunarFile *file);
+static void thunar_location_buttons_remove_1 (GtkContainer *container,
+ GtkWidget *widget);
+static gboolean thunar_location_buttons_scroll_timeout (gpointer user_data);
+static void thunar_location_buttons_scroll_timeout_destroy (gpointer user_data);
+static void thunar_location_buttons_stop_scrolling (ThunarLocationButtons *buttons);
+static void thunar_location_buttons_update_sliders (ThunarLocationButtons *buttons);
+static gboolean thunar_location_buttons_slider_button_press (GtkWidget *button,
+ GdkEventButton *event,
+ ThunarLocationButtons *buttons);
+static gboolean thunar_location_buttons_slider_button_release (GtkWidget *button,
+ GdkEventButton *event,
+ ThunarLocationButtons *buttons);
+static void thunar_location_buttons_scroll_left (GtkWidget *button,
+ ThunarLocationButtons *buttons);
+static void thunar_location_buttons_scroll_right (GtkWidget *button,
+ ThunarLocationButtons *buttons);
+static void thunar_location_buttons_clicked (GtkWidget *button,
+ ThunarLocationButtons *buttons);
+static void thunar_location_buttons_drag_data_get (GtkWidget *button,
+ GdkDragContext *context,
+ GtkSelectionData *selection_data,
+ guint info,
+ guint time,
+ ThunarLocationButtons *buttons);
+static void thunar_location_buttons_drag_leave (GtkWidget *button,
+ GdkDragContext *context,
+ guint time,
+ ThunarLocationButtons *buttons);
+static gboolean thunar_location_buttons_drag_motion (GtkWidget *button,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ guint time,
+ ThunarLocationButtons *buttons);
+static gboolean thunar_location_buttons_enter_timeout (gpointer user_data);
+static void thunar_location_buttons_enter_timeout_destroy (gpointer user_data);
+
+
+
+struct _ThunarLocationButtonsClass
+{
+ GtkContainerClass __parent__;
+};
+
+struct _ThunarLocationButtons
+{
+ GtkContainer __parent__;
+
+ GtkWidget *left_slider;
+ GtkWidget *right_slider;
+
+ ThunarFile *current_directory;
+
+ gint slider_width;
+ gboolean ignore_click : 1;
+
+ GList *list;
+ GList *first_scrolled_button;
+
+ gint scroll_timeout_id;
+
+ GtkWidget *enter_button;
+ gint enter_timeout_id;
+};
+
+
+static GQuark gtk_label_quark = 0;
+static GQuark thunar_file_quark = 0;
+
+static const GtkTargetEntry drag_targets[] =
+{
+ { "text/uri-list", 0, 0 },
+};
+
+
+
+G_DEFINE_TYPE_WITH_CODE (ThunarLocationButtons,
+ thunar_location_buttons,
+ GTK_TYPE_CONTAINER,
+ G_IMPLEMENT_INTERFACE (THUNAR_TYPE_NAVIGATOR,
+ thunar_location_buttons_navigator_init)
+ G_IMPLEMENT_INTERFACE (THUNAR_TYPE_LOCATION_BAR,
+ thunar_location_buttons_location_bar_init));
+
+
+
+static void
+thunar_location_buttons_class_init (ThunarLocationButtonsClass *klass)
+{
+ GtkContainerClass *gtkcontainer_class;
+ GtkWidgetClass *gtkwidget_class;
+ GObjectClass *gobject_class;
+
+ gtk_label_quark = g_quark_from_static_string ("gtk-label");
+ thunar_file_quark = g_quark_from_static_string ("thunar-file");
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_location_buttons_finalize;
+ gobject_class->get_property = thunar_location_buttons_get_property;
+ gobject_class->set_property = thunar_location_buttons_set_property;
+
+ gtkwidget_class = GTK_WIDGET_CLASS (klass);
+ gtkwidget_class->unmap = thunar_location_buttons_unmap;
+ gtkwidget_class->size_request = thunar_location_buttons_size_request;
+ gtkwidget_class->size_allocate = thunar_location_buttons_size_allocate;
+ gtkwidget_class->state_changed = thunar_location_buttons_state_changed;
+ gtkwidget_class->style_set = thunar_location_buttons_style_set;
+ gtkwidget_class->grab_notify = thunar_location_buttons_grab_notify;
+
+ gtkcontainer_class = GTK_CONTAINER_CLASS (klass);
+ gtkcontainer_class->add = thunar_location_buttons_add;
+ gtkcontainer_class->remove = thunar_location_buttons_remove;
+ gtkcontainer_class->forall = thunar_location_buttons_forall;
+
+ g_object_class_override_property (gobject_class,
+ PROP_CURRENT_DIRECTORY,
+ "current-directory");
+
+ /**
+ * ThunarLocationButtons:spacing:
+ *
+ * The amount of space between the path buttons.
+ **/
+ gtk_widget_class_install_style_property (gtkwidget_class,
+ g_param_spec_int ("spacing",
+ _("Spacing"),
+ _("The amount of space between the path buttons"),
+ 0, G_MAXINT, 3,
+ G_PARAM_READABLE));
+}
+
+
+
+static void
+thunar_location_buttons_navigator_init (ThunarNavigatorIface *iface)
+{
+ iface->get_current_directory = thunar_location_buttons_get_current_directory;
+ iface->set_current_directory = thunar_location_buttons_set_current_directory;
+}
+
+
+
+static void
+thunar_location_buttons_location_bar_init (ThunarLocationBarIface *iface)
+{
+ iface->accept_focus = thunar_location_buttons_accept_focus;
+}
+
+
+
+static void
+thunar_location_buttons_init (ThunarLocationButtons *buttons)
+{
+ GtkWidget *arrow;
+
+ GTK_WIDGET_SET_FLAGS (buttons, GTK_NO_WINDOW);
+ gtk_widget_set_redraw_on_allocate (GTK_WIDGET (buttons), FALSE);
+
+ buttons->enter_timeout_id = -1;
+ buttons->scroll_timeout_id = -1;
+
+ gtk_widget_push_composite_child ();
+
+ buttons->left_slider = gtk_button_new ();
+ g_signal_connect (G_OBJECT (buttons->left_slider), "button-press-event",
+ G_CALLBACK (thunar_location_buttons_slider_button_press), buttons);
+ g_signal_connect (G_OBJECT (buttons->left_slider), "button-release-event",
+ G_CALLBACK (thunar_location_buttons_slider_button_release), buttons);
+ g_signal_connect (G_OBJECT (buttons->left_slider), "clicked",
+ G_CALLBACK (thunar_location_buttons_scroll_left), buttons);
+ gtk_container_add (GTK_CONTAINER (buttons), buttons->left_slider);
+ gtk_widget_show (buttons->left_slider);
+
+ arrow = gtk_arrow_new (GTK_ARROW_LEFT, GTK_SHADOW_OUT);
+ gtk_container_add (GTK_CONTAINER (buttons->left_slider), arrow);
+ gtk_widget_show (arrow);
+
+ buttons->right_slider = gtk_button_new ();
+ g_signal_connect (G_OBJECT (buttons->right_slider), "button-press-event",
+ G_CALLBACK (thunar_location_buttons_slider_button_press), buttons);
+ g_signal_connect (G_OBJECT (buttons->right_slider), "button-release-event",
+ G_CALLBACK (thunar_location_buttons_slider_button_release), buttons);
+ g_signal_connect (G_OBJECT (buttons->right_slider), "clicked",
+ G_CALLBACK (thunar_location_buttons_scroll_right), buttons);
+ gtk_container_add (GTK_CONTAINER (buttons), buttons->right_slider);
+ gtk_widget_show (buttons->right_slider);
+
+ arrow = gtk_arrow_new (GTK_ARROW_RIGHT, GTK_SHADOW_OUT);
+ gtk_container_add (GTK_CONTAINER (buttons->right_slider), arrow);
+ gtk_widget_show (arrow);
+
+ gtk_widget_pop_composite_child ();
+}
+
+
+
+static void
+thunar_location_buttons_finalize (GObject *object)
+{
+ ThunarLocationButtons *buttons = THUNAR_LOCATION_BUTTONS (object);
+
+ g_return_if_fail (THUNAR_IS_LOCATION_BUTTONS (buttons));
+
+ /* be sure to cancel any enter timeout */
+ if (G_UNLIKELY (buttons->enter_timeout_id >= 0))
+ g_source_remove (buttons->enter_timeout_id);
+
+ /* be sure to cancel the scrolling */
+ thunar_location_buttons_stop_scrolling (buttons);
+
+ /* release from the current_directory */
+ thunar_navigator_set_current_directory (THUNAR_NAVIGATOR (buttons), NULL);
+
+ G_OBJECT_CLASS (thunar_location_buttons_parent_class)->finalize (object);
+}
+
+
+
+static void
+thunar_location_buttons_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarNavigator *navigator = THUNAR_NAVIGATOR (object);
+
+ switch (prop_id)
+ {
+ case PROP_CURRENT_DIRECTORY:
+ g_value_set_object (value, thunar_navigator_get_current_directory (navigator));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunar_location_buttons_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarNavigator *navigator = THUNAR_NAVIGATOR (object);
+
+ switch (prop_id)
+ {
+ case PROP_CURRENT_DIRECTORY:
+ thunar_navigator_set_current_directory (navigator, g_value_get_object (value));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static ThunarFile*
+thunar_location_buttons_get_current_directory (ThunarNavigator *navigator)
+{
+ g_return_val_if_fail (THUNAR_IS_LOCATION_BUTTONS (navigator), NULL);
+ return THUNAR_LOCATION_BUTTONS (navigator)->current_directory;
+}
+
+
+
+static void
+thunar_location_buttons_set_current_directory (ThunarNavigator *navigator,
+ ThunarFile *current_directory)
+{
+ ThunarLocationButtons *buttons = THUNAR_LOCATION_BUTTONS (navigator);
+ ThunarFile *file_parent;
+ ThunarFile *file;
+ GtkWidget *button;
+ GList *lp;
+
+ g_return_if_fail (THUNAR_IS_LOCATION_BUTTONS (buttons));
+ g_return_if_fail (current_directory == NULL || THUNAR_IS_FILE (current_directory));
+
+ /* verify that we're not already using the new directory */
+ if (G_UNLIKELY (buttons->current_directory == current_directory))
+ return;
+
+ /* check if we already have a button for that directory */
+ for (lp = buttons->list; lp != NULL; lp = lp->next)
+ if (g_object_get_qdata (G_OBJECT (lp->data), thunar_file_quark) == current_directory)
+ break;
+
+ /* if we already have a button for that directory, just activate it */
+ if (G_UNLIKELY (lp != NULL))
+ {
+ /* fake a "clicked" event for that button */
+ gtk_button_clicked (GTK_BUTTON (lp->data));
+ }
+ else
+ {
+ /* regenerate the button list */
+ if (G_LIKELY (buttons->current_directory != NULL))
+ {
+ g_object_unref (G_OBJECT (buttons->current_directory));
+
+ /* remove all buttons */
+ while (buttons->list != NULL)
+ gtk_container_remove (GTK_CONTAINER (buttons), buttons->list->data);
+
+ /* clear the first scrolled button state */
+ buttons->first_scrolled_button = NULL;
+ }
+
+ buttons->current_directory = current_directory;
+
+ if (G_LIKELY (current_directory != NULL))
+ {
+ g_object_ref (G_OBJECT (current_directory));
+
+ gtk_widget_push_composite_child ();
+
+ /* add the new buttons */
+ for (file = current_directory; file != NULL; file = file_parent)
+ {
+ button = thunar_location_buttons_make_button (buttons, file);
+ buttons->list = g_list_append (buttons->list, button);
+ gtk_container_add (GTK_CONTAINER (buttons), button);
+ gtk_widget_show (button);
+
+ /* we use 'Home' as possible root, as well as real root nodes */
+ if (!thunar_file_is_home (file) && !thunar_file_is_root (file))
+ file_parent = thunar_file_get_parent (file, NULL);
+ else
+ file_parent = NULL;
+
+ if (G_LIKELY (file != current_directory))
+ g_object_unref (G_OBJECT (file));
+ }
+
+ gtk_widget_pop_composite_child ();
+ }
+ }
+
+ g_object_notify (G_OBJECT (buttons), "current-directory");
+}
+
+
+
+static gboolean
+thunar_location_buttons_accept_focus (ThunarLocationBar *location_bar)
+{
+ return FALSE;
+}
+
+
+
+static void
+thunar_location_buttons_unmap (GtkWidget *widget)
+{
+ /* be sure to stop the scroll timer before the buttons are unmapped */
+ thunar_location_buttons_stop_scrolling (THUNAR_LOCATION_BUTTONS (widget));
+
+ /* do the real unmap */
+ GTK_WIDGET_CLASS (thunar_location_buttons_parent_class)->unmap (widget);
+}
+
+
+
+static void
+thunar_location_buttons_size_request (GtkWidget *widget,
+ GtkRequisition *requisition)
+{
+ ThunarLocationButtons *buttons = THUNAR_LOCATION_BUTTONS (widget);
+ GtkRequisition child_requisition;
+ GList *lp;
+ gint spacing;
+
+ gtk_widget_style_get (GTK_WIDGET (buttons),
+ "spacing", &spacing,
+ NULL);
+
+ requisition->width = 0;
+ requisition->height = 0;
+
+ /* calculate the size of the biggest button */
+ for (lp = buttons->list; lp != NULL; lp = lp->next)
+ {
+ gtk_widget_size_request (GTK_WIDGET (lp->data), &child_requisition);
+ requisition->width = MAX (child_requisition.width, requisition->width);
+ requisition->height = MAX (child_requisition.height, requisition->height);
+ }
+
+ /* add space for the sliders if we have more than one path */
+ buttons->slider_width = MIN (requisition->height * 2 / 3 + 5, requisition->height);
+ if (buttons->list != NULL && buttons->list->next != NULL)
+ requisition->width += (spacing + buttons->slider_width) * 2;
+
+ gtk_widget_size_request (buttons->left_slider, &child_requisition);
+ gtk_widget_size_request (buttons->right_slider, &child_requisition);
+
+ requisition->width += GTK_CONTAINER (widget)->border_width * 2;
+ requisition->height += GTK_CONTAINER (widget)->border_width * 2;
+
+ widget->requisition = *requisition;
+}
+
+
+
+static void
+thunar_location_buttons_size_allocate (GtkWidget *widget,
+ GtkAllocation *allocation)
+{
+ ThunarLocationButtons *buttons = THUNAR_LOCATION_BUTTONS (widget);
+ GtkTextDirection direction;
+ GtkAllocation child_allocation;
+ GtkWidget *child;
+ gboolean need_sliders = FALSE;
+ gboolean reached_end;
+ GList *first_button;
+ GList *lp;
+ gint left_slider_offset = 0;
+ gint right_slider_offset = 0;
+ gint allocation_width;
+ gint border_width;
+ gint slider_space;
+ gint spacing;
+ gint width;
+
+ gtk_widget_style_get (GTK_WIDGET (buttons),
+ "spacing", &spacing,
+ NULL);
+
+ widget->allocation = *allocation;
+
+ /* if no path is set, we don't have to allocate anything */
+ if (G_UNLIKELY (buttons->list == NULL))
+ return;
+
+ direction = gtk_widget_get_direction (widget);
+ border_width = GTK_CONTAINER (buttons)->border_width;
+ allocation_width = allocation->width - 2 * border_width;
+
+ /* check if we need to display the sliders */
+ width = GTK_WIDGET (buttons->list->data)->requisition.width;
+ for (lp = buttons->list->next; lp != NULL; lp = lp->next)
+ width += GTK_WIDGET (lp->data)->requisition.width + spacing;
+
+ if (width <= allocation_width)
+ {
+ first_button = g_list_last (buttons->list);
+ }
+ else
+ {
+ reached_end = FALSE;
+ slider_space = 2 * (spacing + buttons->slider_width);
+
+ if (buttons->first_scrolled_button != NULL)
+ first_button = buttons->first_scrolled_button;
+ else
+ first_button = buttons->list;
+ need_sliders = TRUE;
+
+ width = GTK_WIDGET (first_button->data)->requisition.width;
+ for (lp = first_button->prev; lp != NULL && !reached_end; lp = lp->prev)
+ {
+ child = lp->data;
+ if (width + child->requisition.width + spacing + slider_space + allocation_width)
+ reached_end = TRUE;
+ else
+ width += child->requisition.width + spacing;
+ }
+
+ while (first_button->next != NULL && !reached_end)
+ {
+ child = first_button->data;
+ if (width + child->requisition.width + spacing + slider_space > allocation_width)
+ {
+ reached_end = TRUE;
+ }
+ else
+ {
+ width += child->requisition.width + spacing;
+ first_button = first_button->next;
+ }
+ }
+ }
+
+ /* Now we allocate space to the buttons */
+ child_allocation.y = allocation->y + border_width;
+ child_allocation.height = MAX (1, allocation->height - border_width * 2);
+
+ if (G_UNLIKELY (direction == GTK_TEXT_DIR_RTL))
+ {
+ child_allocation.x = allocation->x + allocation->width - border_width;
+ if (need_sliders)
+ {
+ child_allocation.x -= spacing + buttons->slider_width;
+ left_slider_offset = allocation->width - border_width - buttons->slider_width;
+ }
+ }
+ else
+ {
+ child_allocation.x = allocation->x + border_width;
+ if (need_sliders)
+ {
+ left_slider_offset = border_width;
+ child_allocation.x += spacing + buttons->slider_width;
+ }
+ }
+
+ for (lp = first_button; lp != NULL; lp = lp->prev)
+ {
+ child = lp->data;
+
+ child_allocation.width = child->requisition.width;
+ if (G_UNLIKELY (direction == GTK_TEXT_DIR_RTL))
+ child_allocation.x -= child_allocation.width;
+
+ /* check to see if we don't have any more space to allocate buttons */
+ if (need_sliders && direction == GTK_TEXT_DIR_RTL)
+ {
+ if (child_allocation.x - spacing - buttons->slider_width < widget->allocation.x + border_width)
+ break;
+ }
+ else if (need_sliders && direction == GTK_TEXT_DIR_LTR)
+ {
+ if (child_allocation.x + child_allocation.width + spacing + buttons->slider_width > widget->allocation.x + border_width + allocation_width)
+ break;
+ }
+
+ gtk_widget_set_child_visible (GTK_WIDGET (lp->data), TRUE);
+ gtk_widget_size_allocate (child, &child_allocation);
+
+ if (direction == GTK_TEXT_DIR_RTL)
+ {
+ child_allocation.x -= spacing;
+ right_slider_offset = border_width;
+ }
+ else
+ {
+ child_allocation.x += child_allocation.width + spacing;
+ right_slider_offset = allocation->width - border_width - buttons->slider_width;
+ }
+ }
+
+ /* now we go hide all the buttons that don't fit */
+ for (; lp != NULL; lp = lp->prev)
+ gtk_widget_set_child_visible (GTK_WIDGET (lp->data), FALSE);
+ for (lp = first_button->next; lp != NULL; lp = lp->next)
+ gtk_widget_set_child_visible (GTK_WIDGET (lp->data), FALSE);
+
+ if (need_sliders)
+ {
+ child_allocation.width = buttons->slider_width;
+ child_allocation.x = left_slider_offset + allocation->x;
+ gtk_widget_size_allocate (buttons->left_slider, &child_allocation);
+ gtk_widget_set_child_visible (buttons->left_slider, TRUE);
+ gtk_widget_show_all (buttons->left_slider);
+
+ child_allocation.x = right_slider_offset + allocation->x;
+ gtk_widget_size_allocate (buttons->right_slider, &child_allocation);
+ gtk_widget_set_child_visible (buttons->right_slider, TRUE);
+ gtk_widget_show_all (buttons->right_slider);
+
+ thunar_location_buttons_update_sliders (buttons);
+ }
+ else
+ {
+ gtk_widget_set_child_visible (buttons->left_slider, FALSE);
+ gtk_widget_set_child_visible (buttons->right_slider, FALSE);
+ }
+}
+
+
+
+static void
+thunar_location_buttons_state_changed (GtkWidget *widget,
+ GtkStateType previous_state)
+{
+ if (!GTK_WIDGET_IS_SENSITIVE (widget))
+ thunar_location_buttons_stop_scrolling (THUNAR_LOCATION_BUTTONS (widget));
+}
+
+
+
+static void
+thunar_location_buttons_style_set (GtkWidget *widget,
+ GtkStyle *previous_style)
+{
+ ThunarLocationButtons *buttons = THUNAR_LOCATION_BUTTONS (widget);
+ ThunarIconFactory *icon_factory;
+ GtkIconTheme *icon_theme;
+ ThunarFile *file;
+ GdkPixbuf *icon;
+ GList *children;
+ GList *lp;
+ gint size;
+
+ if (G_LIKELY (GTK_WIDGET_REALIZED (widget)))
+ {
+ /* lookup the icon size for buttons */
+ gtk_icon_size_lookup (GTK_ICON_SIZE_BUTTON, &size, &size);
+
+ /* determine the icon factory to use */
+ icon_theme = gtk_icon_theme_get_for_screen (gtk_widget_get_screen (widget));
+ icon_factory = thunar_icon_factory_get_for_icon_theme (icon_theme);
+
+ /* update the icons for every button */
+ for (lp = buttons->list; lp != NULL; lp = lp->next)
+ {
+ file = g_object_get_qdata (G_OBJECT (lp->data), thunar_file_quark);
+ children = gtk_container_get_children (GTK_CONTAINER (GTK_BIN (lp->data)->child));
+ icon = thunar_icon_factory_load_file_icon (icon_factory, file, THUNAR_FILE_ICON_STATE_DEFAULT, size);
+ gtk_drag_source_set_icon_pixbuf (GTK_WIDGET (lp->data), icon);
+ gtk_image_set_from_pixbuf (GTK_IMAGE (children->data), icon);
+ g_object_unref (G_OBJECT (icon));
+ g_list_free (children);
+ }
+
+ /* release the icon factory */
+ g_object_unref (G_OBJECT (icon_factory));
+ }
+
+ (*GTK_WIDGET_CLASS (thunar_location_buttons_parent_class)->style_set) (widget, previous_style);
+}
+
+
+
+static void
+thunar_location_buttons_grab_notify (GtkWidget *widget,
+ gboolean was_grabbed)
+{
+ ThunarLocationButtons *buttons = THUNAR_LOCATION_BUTTONS (widget);
+
+ if (!was_grabbed)
+ thunar_location_buttons_stop_scrolling (buttons);
+}
+
+
+
+static void
+thunar_location_buttons_add (GtkContainer *container,
+ GtkWidget *widget)
+{
+ gtk_widget_set_parent (widget, GTK_WIDGET (container));
+}
+
+
+
+static void
+thunar_location_buttons_remove (GtkContainer *container,
+ GtkWidget *widget)
+{
+ ThunarLocationButtons *buttons = THUNAR_LOCATION_BUTTONS (container);
+ GList *lp;
+
+ if (widget == buttons->left_slider)
+ {
+ thunar_location_buttons_remove_1 (container, widget);
+ buttons->left_slider = NULL;
+ return;
+ }
+ else if (widget == buttons->right_slider)
+ {
+ thunar_location_buttons_remove_1 (container, widget);
+ buttons->right_slider = NULL;
+ return;
+ }
+
+ for (lp = buttons->list; lp != NULL; lp = lp->next)
+ if (widget == GTK_WIDGET (lp->data))
+ {
+ thunar_location_buttons_remove_1 (container, widget);
+ buttons->list = g_list_remove_link (buttons->list, lp);
+ g_list_free (lp);
+ return;
+ }
+}
+
+
+
+static void
+thunar_location_buttons_forall (GtkContainer *container,
+ gboolean include_internals,
+ GtkCallback callback,
+ gpointer callback_data)
+{
+ ThunarLocationButtons *buttons = THUNAR_LOCATION_BUTTONS (container);
+ GtkWidget *child;
+ GList *lp;
+
+ g_return_if_fail (THUNAR_IS_LOCATION_BUTTONS (buttons));
+ g_return_if_fail (callback != NULL);
+
+ for (lp = buttons->list; lp != NULL; )
+ {
+ child = GTK_WIDGET (lp->data);
+ lp = lp->next;
+
+ (*callback) (child, callback_data);
+ }
+
+ if (buttons->left_slider != NULL)
+ (*callback) (buttons->left_slider, callback_data);
+
+ if (buttons->right_slider != NULL)
+ (*callback) (buttons->right_slider, callback_data);
+}
+
+
+
+static GtkWidget*
+thunar_location_buttons_make_button (ThunarLocationButtons *buttons,
+ ThunarFile *file)
+{
+ ThunarIconFactory *icon_factory;
+ GtkWidget *button;
+ GtkWidget *image;
+ GtkWidget *label;
+ GtkWidget *hbox;
+ GdkPixbuf *icon;
+ gchar *markup;
+ gint size;
+
+ gtk_icon_size_lookup (GTK_ICON_SIZE_BUTTON, &size, &size);
+
+ /* allocate the button */
+ button = gtk_toggle_button_new ();
+
+ /* don't allow location buttons to grab the focus */
+ GTK_WIDGET_UNSET_FLAGS (button, GTK_CAN_FOCUS);
+
+ /* setup drag support for the button */
+ gtk_drag_source_set (GTK_WIDGET (button), GDK_BUTTON1_MASK, drag_targets,
+ G_N_ELEMENTS (drag_targets), GDK_ACTION_LINK);
+ gtk_drag_dest_set (GTK_WIDGET (button), GTK_DEST_DEFAULT_HIGHLIGHT | GTK_DEST_DEFAULT_MOTION, drag_targets,
+ G_N_ELEMENTS (drag_targets), GDK_ACTION_ASK | GDK_ACTION_COPY | GDK_ACTION_LINK | GDK_ACTION_MOVE);
+ g_signal_connect (G_OBJECT (button), "drag-data-get", G_CALLBACK (thunar_location_buttons_drag_data_get), buttons);
+ g_signal_connect (G_OBJECT (button), "drag-leave", G_CALLBACK (thunar_location_buttons_drag_leave), buttons);
+ g_signal_connect (G_OBJECT (button), "drag-motion", G_CALLBACK (thunar_location_buttons_drag_motion), buttons);
+
+ hbox = gtk_hbox_new (FALSE, 2);
+ gtk_container_add (GTK_CONTAINER (button), hbox);
+ gtk_widget_show (hbox);
+
+ image = gtk_image_new ();
+ gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0);
+ gtk_widget_show (image);
+
+ icon_factory = thunar_icon_factory_get_default ();
+ icon = thunar_icon_factory_load_file_icon (icon_factory, file, THUNAR_FILE_ICON_STATE_DEFAULT, size);
+ gtk_drag_source_set_icon_pixbuf (button, icon);
+ gtk_image_set_from_pixbuf (GTK_IMAGE (image), icon);
+ g_object_unref (G_OBJECT (icon_factory));
+ g_object_unref (G_OBJECT (icon));
+
+ if (!thunar_file_is_root (file))
+ {
+ /* only non-root nodes have a label */
+ label = gtk_label_new (thunar_file_get_special_name (file));
+ g_object_set_qdata (G_OBJECT (button), gtk_label_quark, label);
+ gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
+ gtk_widget_show (label);
+
+ /* current directory gets a bold label */
+ if (file == buttons->current_directory)
+ {
+ markup = g_markup_printf_escaped ("<b>%s</b>", thunar_file_get_special_name (file));
+ gtk_label_set_markup (GTK_LABEL (label), markup);
+ g_free (markup);
+ }
+ }
+
+ /* the current directory is toggled */
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), (file == buttons->current_directory));
+
+ /* take a reference on the ThunarFile for the button */
+ g_object_set_qdata_full (G_OBJECT (button), thunar_file_quark, file, g_object_unref);
+ g_object_ref (G_OBJECT (file));
+
+ /* get notifications about user actions */
+ g_signal_connect (G_OBJECT (button), "clicked",
+ G_CALLBACK (thunar_location_buttons_clicked), buttons);
+
+ return button;
+}
+
+
+
+static void
+thunar_location_buttons_remove_1 (GtkContainer *container,
+ GtkWidget *widget)
+{
+ gboolean need_resize = GTK_WIDGET_VISIBLE (widget);
+ gtk_widget_unparent (widget);
+ if (G_LIKELY (need_resize))
+ gtk_widget_queue_resize (GTK_WIDGET (container));
+}
+
+
+
+static gboolean
+thunar_location_buttons_scroll_timeout (gpointer user_data)
+{
+ ThunarLocationButtons *buttons = THUNAR_LOCATION_BUTTONS (user_data);
+
+ GDK_THREADS_ENTER ();
+
+ if (GTK_WIDGET_HAS_FOCUS (buttons->left_slider))
+ thunar_location_buttons_scroll_left (buttons->left_slider, buttons);
+ else if (GTK_WIDGET_HAS_FOCUS (buttons->right_slider))
+ thunar_location_buttons_scroll_right (buttons->right_slider, buttons);
+
+ GDK_THREADS_LEAVE ();
+
+ return TRUE;
+}
+
+
+
+static void
+thunar_location_buttons_scroll_timeout_destroy (gpointer user_data)
+{
+ GDK_THREADS_ENTER ();
+ THUNAR_LOCATION_BUTTONS (user_data)->scroll_timeout_id = -1;
+ GDK_THREADS_LEAVE ();
+}
+
+
+
+static void
+thunar_location_buttons_stop_scrolling (ThunarLocationButtons *buttons)
+{
+ if (buttons->scroll_timeout_id >= 0)
+ g_source_remove (buttons->scroll_timeout_id);
+}
+
+
+
+static void
+thunar_location_buttons_update_sliders (ThunarLocationButtons *buttons)
+{
+ GtkWidget *button;
+
+ if (G_LIKELY (buttons->list != NULL))
+ {
+ button = GTK_WIDGET (buttons->list->data);
+ if (gtk_widget_get_child_visible (button))
+ gtk_widget_set_sensitive (buttons->right_slider, FALSE);
+ else
+ gtk_widget_set_sensitive (buttons->right_slider, TRUE);
+
+ button = GTK_WIDGET (g_list_last (buttons->list)->data);
+ if (gtk_widget_get_child_visible (button))
+ gtk_widget_set_sensitive (buttons->left_slider, FALSE);
+ else
+ gtk_widget_set_sensitive (buttons->left_slider, TRUE);
+ }
+}
+
+
+
+static gboolean
+thunar_location_buttons_slider_button_press (GtkWidget *button,
+ GdkEventButton *event,
+ ThunarLocationButtons *buttons)
+{
+ if (!GTK_WIDGET_HAS_FOCUS (button))
+ gtk_widget_grab_focus (button);
+
+ if (event->type != GDK_BUTTON_PRESS || event->button != 1)
+ return FALSE;
+
+ buttons->ignore_click = FALSE;
+
+ if (button == buttons->left_slider)
+ thunar_location_buttons_scroll_left (button, buttons);
+ else if (button == buttons->right_slider)
+ thunar_location_buttons_scroll_right (button, buttons);
+
+ if (G_LIKELY (buttons->scroll_timeout_id < 0))
+ {
+ buttons->scroll_timeout_id = g_timeout_add_full (G_PRIORITY_LOW, THUNAR_LOCATION_BUTTONS_SCROLL_TIMEOUT,
+ thunar_location_buttons_scroll_timeout, buttons,
+ thunar_location_buttons_scroll_timeout_destroy);
+ }
+
+ return FALSE;
+}
+
+
+
+static gboolean
+thunar_location_buttons_slider_button_release (GtkWidget *button,
+ GdkEventButton *event,
+ ThunarLocationButtons *buttons)
+{
+ if (event->type == GDK_BUTTON_RELEASE)
+ {
+ thunar_location_buttons_stop_scrolling (buttons);
+ buttons->ignore_click = TRUE;
+ }
+
+ return FALSE;
+}
+
+
+
+static void
+thunar_location_buttons_scroll_left (GtkWidget *button,
+ ThunarLocationButtons *buttons)
+{
+ GList *lp;
+
+ if (G_UNLIKELY (buttons->ignore_click))
+ {
+ buttons->ignore_click = FALSE;
+ return;
+ }
+
+ gtk_widget_queue_resize (GTK_WIDGET (buttons));
+
+ for (lp = g_list_last (buttons->list); lp != NULL; lp = lp->prev)
+ if (lp->prev != NULL && gtk_widget_get_child_visible (GTK_WIDGET (lp->prev->data)))
+ {
+ buttons->first_scrolled_button = lp;
+ break;
+ }
+}
+
+
+
+static void
+thunar_location_buttons_scroll_right (GtkWidget *button,
+ ThunarLocationButtons *buttons)
+{
+ GtkTextDirection direction;
+ GList *right_button = NULL;
+ GList *left_button = NULL;
+ GList *lp;
+ gint space_available;
+ gint space_needed;
+ gint border_width;
+ gint spacing;
+
+ if (G_UNLIKELY (buttons->ignore_click))
+ {
+ buttons->ignore_click = FALSE;
+ return;
+ }
+
+ gtk_widget_style_get (GTK_WIDGET (buttons),
+ "spacing", &spacing,
+ NULL);
+
+ gtk_widget_queue_resize (GTK_WIDGET (buttons));
+
+ border_width = GTK_CONTAINER (buttons)->border_width;
+ direction = gtk_widget_get_direction (GTK_WIDGET (buttons));
+
+ /* find the button at the 'left' end that we have to make visible */
+ for (lp = buttons->list; lp != NULL; lp = lp->next)
+ if (lp->next != NULL && gtk_widget_get_child_visible (GTK_WIDGET (lp->next->data)))
+ {
+ right_button = lp;
+ break;
+ }
+
+ /* find the last visible button on the 'right' end */
+ for (lp = g_list_last (buttons->list); lp != NULL; lp = lp->prev)
+ if (gtk_widget_get_child_visible (GTK_WIDGET (lp->data)))
+ {
+ left_button = lp;
+ break;
+ }
+
+ space_needed = GTK_WIDGET (right_button->data)->allocation.width + spacing;
+ if (direction == GTK_TEXT_DIR_RTL)
+ {
+ space_available = buttons->right_slider->allocation.x - GTK_WIDGET (buttons)->allocation.x;
+ }
+ else
+ {
+ space_available = (GTK_WIDGET (buttons)->allocation.x + GTK_WIDGET (buttons)->allocation.width - border_width)
+ - (buttons->right_slider->allocation.x + buttons->right_slider->allocation.width);
+ }
+
+ /* We have space_available extra space that's not being used. We
+ * need space_needed space to make the button fit. So we walk down
+ * from the end, removing buttons until we get all the space we
+ * need.
+ */
+ while (space_available < space_needed)
+ {
+ space_available += GTK_WIDGET (left_button->data)->allocation.width + spacing;
+ left_button = left_button->prev;
+ buttons->first_scrolled_button = left_button;
+ }
+}
+
+
+
+static void
+thunar_location_buttons_clicked (GtkWidget *button,
+ ThunarLocationButtons *buttons)
+{
+ ThunarFile *directory;
+ GtkWidget *label;
+ gchar *markup;
+ GList *lp;
+
+ g_return_if_fail (GTK_IS_TOGGLE_BUTTON (button));
+ g_return_if_fail (THUNAR_IS_LOCATION_BUTTONS (buttons));
+
+ /* determine the directory associated with the clicked button */
+ directory = g_object_get_qdata (G_OBJECT (button), thunar_file_quark);
+
+ /* disconnect from previous current directory (if any) */
+ if (G_LIKELY (buttons->current_directory != NULL))
+ g_object_unref (G_OBJECT (buttons->current_directory));
+
+ /* setup the new current directory */
+ buttons->current_directory = directory;
+ g_object_ref (G_OBJECT (directory));
+
+ /* update all buttons */
+ for (lp = buttons->list; lp != NULL; lp = lp->next)
+ {
+ /* query button data */
+ button = GTK_WIDGET (lp->data);
+ label = g_object_get_qdata (G_OBJECT (button), gtk_label_quark);
+ directory = g_object_get_qdata (G_OBJECT (button), thunar_file_quark);
+
+ /* update the label (if any) */
+ if (G_LIKELY (label != NULL))
+ {
+ /* current directory gets a bold label */
+ if (directory == buttons->current_directory)
+ {
+ markup = g_markup_printf_escaped ("<b>%s</b>", thunar_file_get_special_name (directory));
+ gtk_label_set_markup (GTK_LABEL (label), markup);
+ g_free (markup);
+ }
+ else
+ {
+ gtk_label_set_text (GTK_LABEL (label), thunar_file_get_special_name (directory));
+ }
+ }
+
+ /* update the toggle button state (making sure to not recurse with the "clicked" handler) */
+ g_signal_handlers_block_by_func (G_OBJECT (button), thunar_location_buttons_clicked, buttons);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), directory == buttons->current_directory);
+ g_signal_handlers_unblock_by_func (G_OBJECT (button), thunar_location_buttons_clicked, buttons);
+ }
+
+ /* notify the surrounding module that we want to change
+ * to a different directory.
+ */
+ thunar_navigator_change_directory (THUNAR_NAVIGATOR (buttons), buttons->current_directory);
+}
+
+
+
+static void
+thunar_location_buttons_drag_data_get (GtkWidget *button,
+ GdkDragContext *context,
+ GtkSelectionData *selection_data,
+ guint info,
+ guint time,
+ ThunarLocationButtons *buttons)
+{
+ ThunarFile *file;
+ GList path_list;
+ gchar *uri_string;
+
+ g_return_if_fail (GTK_IS_WIDGET (button));
+ g_return_if_fail (THUNAR_IS_LOCATION_BUTTONS (buttons));
+
+ /* determine the uri of the file in question */
+ file = g_object_get_qdata (G_OBJECT (button), thunar_file_quark);
+
+ /* transform the path into an uri list string */
+ path_list.data = thunar_file_get_path (file); path_list.next = path_list.prev = NULL;
+ uri_string = thunar_vfs_path_list_to_string (&path_list);
+
+ /* set the uri list for the drag selection */
+ gtk_selection_data_set (selection_data, selection_data->target, 8, (guchar *) uri_string, strlen (uri_string));
+
+ /* cleanup */
+ g_free (uri_string);
+}
+
+
+
+static void
+thunar_location_buttons_drag_leave (GtkWidget *button,
+ GdkDragContext *context,
+ guint time,
+ ThunarLocationButtons *buttons)
+{
+ g_return_if_fail (GTK_IS_BUTTON (button));
+ g_return_if_fail (THUNAR_IS_LOCATION_BUTTONS (buttons));
+
+ /* be sure to cancel any running enter timeout */
+ if (G_LIKELY (buttons->enter_timeout_id >= 0))
+ g_source_remove (buttons->enter_timeout_id);
+}
+
+
+
+static gboolean
+thunar_location_buttons_drag_motion (GtkWidget *button,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ guint time,
+ ThunarLocationButtons *buttons)
+{
+ g_return_val_if_fail (GTK_IS_BUTTON (button), FALSE);
+ g_return_val_if_fail (THUNAR_IS_LOCATION_BUTTONS (buttons), FALSE);
+
+ /* schedule the enter timeout if not already done */
+ if (G_UNLIKELY (buttons->enter_timeout_id < 0))
+ {
+ /* remember the new button */
+ buttons->enter_button = button;
+ g_object_add_weak_pointer (G_OBJECT (button), (gpointer) &buttons->enter_button);
+
+ /* schedule the timeout */
+ buttons->enter_timeout_id = g_timeout_add_full (G_PRIORITY_DEFAULT, 500, thunar_location_buttons_enter_timeout,
+ buttons, thunar_location_buttons_enter_timeout_destroy);
+ }
+
+ /* tell GDK that it cannot drop here */
+ gdk_drag_status (context, 0, time);
+
+ return FALSE;
+}
+
+
+
+static gboolean
+thunar_location_buttons_enter_timeout (gpointer user_data)
+{
+ ThunarLocationButtons *buttons = THUNAR_LOCATION_BUTTONS (user_data);
+
+ GDK_THREADS_ENTER ();
+
+ /* We emulate a "clicked" event here, because else the buttons
+ * would be destroyed and replaced by new buttons, which causes
+ * the Gtk DND code to dump core once the mouse leaves the area
+ * of the new button.
+ *
+ * Besides that, handling this as "clicked" event allows the user
+ * to go back to the initial directory.
+ */
+ if (G_LIKELY (buttons->enter_button != NULL))
+ thunar_location_buttons_clicked (buttons->enter_button, buttons);
+
+ GDK_THREADS_LEAVE ();
+
+ return FALSE;
+}
+
+
+
+static void
+thunar_location_buttons_enter_timeout_destroy (gpointer user_data)
+{
+ ThunarLocationButtons *buttons = THUNAR_LOCATION_BUTTONS (user_data);
+
+ /* disconnect from the remembered button */
+ if (G_LIKELY (buttons->enter_button != NULL))
+ {
+ g_object_remove_weak_pointer (G_OBJECT (buttons->enter_button), (gpointer) &buttons->enter_button);
+ buttons->enter_button = NULL;
+ }
+
+ /* reset the timeout id */
+ buttons->enter_timeout_id = -1;
+}
+
+
+
+/**
+ * thunar_location_buttons_new:
+ *
+ * Creates a new #ThunarLocationButtons object, that does
+ * not display any path by default.
+ *
+ * Return value: the newly allocated #ThunarLocationButtons object.
+ **/
+GtkWidget*
+thunar_location_buttons_new (void)
+{
+ return g_object_new (THUNAR_TYPE_LOCATION_BUTTONS, NULL);
+}
+
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-location-buttons.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-location-buttons.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-location-buttons.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,43 @@
+/* $Id: thunar-location-buttons.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_LOCATION_BUTTONS_H__
+#define __THUNAR_LOCATION_BUTTONS_H__
+
+#include <thunar/thunar-location-bar.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarLocationButtonsClass ThunarLocationButtonsClass;
+typedef struct _ThunarLocationButtons ThunarLocationButtons;
+
+#define THUNAR_TYPE_LOCATION_BUTTONS (thunar_location_buttons_get_type ())
+#define THUNAR_LOCATION_BUTTONS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_LOCATION_BUTTONS, ThunarLocationButtons))
+#define THUNAR_LOCATION_BUTTONS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_LOCATION_BUTTONS, ThunarLocationButtonsClass))
+#define THUNAR_IS_LOCATION_BUTTONS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_LOCATION_BUTTONS))
+#define THUNAR_IS_LOCATION_BUTTONS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_LOCATION_BUTTONS))
+#define THUNAR_LOCATION_BUTTONS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_LOCATION_BUTTONS, ThunarLocationButtonsClass))
+
+GType thunar_location_buttons_get_type (void) G_GNUC_CONST;
+
+GtkWidget *thunar_location_buttons_new (void);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_LOCATION_BUTTONS_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-location-dialog.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-location-dialog.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-location-dialog.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,173 @@
+/* $Id: thunar-location-dialog.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <thunar/thunar-location-dialog.h>
+#include <thunar/thunar-path-entry.h>
+
+
+
+static void thunar_location_dialog_class_init (ThunarLocationDialogClass *klass);
+static void thunar_location_dialog_init (ThunarLocationDialog *location_dialog);
+
+
+
+struct _ThunarLocationDialogClass
+{
+ GtkDialogClass __parent__;
+};
+
+struct _ThunarLocationDialog
+{
+ GtkDialog __parent__;
+
+ GtkWidget *entry;
+};
+
+
+
+G_DEFINE_TYPE (ThunarLocationDialog, thunar_location_dialog, GTK_TYPE_DIALOG);
+
+
+
+static void
+thunar_location_dialog_class_init (ThunarLocationDialogClass *klass)
+{
+}
+
+
+
+static gboolean
+transform_object_to_boolean (const GValue *src_value,
+ GValue *dst_value,
+ gpointer user_data)
+{
+ g_value_set_boolean (dst_value, (g_value_get_object (src_value) != NULL));
+ return TRUE;
+}
+
+
+
+static void
+thunar_location_dialog_init (ThunarLocationDialog *location_dialog)
+{
+ AtkRelationSet *relations;
+ AtkRelation *relation;
+ AtkObject *object;
+ GtkWidget *cancel_button;
+ GtkWidget *open_button;
+ GtkWidget *hbox;
+ GtkWidget *label;
+
+ gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (location_dialog)->vbox), 2);
+ gtk_container_set_border_width (GTK_CONTAINER (location_dialog), 5);
+ gtk_dialog_set_has_separator (GTK_DIALOG (location_dialog), FALSE);
+ gtk_window_set_default_size (GTK_WINDOW (location_dialog), 350, -1);
+ gtk_window_set_title (GTK_WINDOW (location_dialog), _("Open Location"));
+
+ cancel_button = gtk_dialog_add_button (GTK_DIALOG (location_dialog), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
+
+ open_button = gtk_dialog_add_button (GTK_DIALOG (location_dialog), GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT);
+ gtk_window_set_default (GTK_WINDOW (location_dialog), open_button);
+
+ hbox = g_object_new (GTK_TYPE_HBOX,
+ "border-width", 5,
+ "spacing", 12,
+ NULL);
+ gtk_box_pack_start (GTK_BOX (GTK_DIALOG (location_dialog)->vbox), hbox, FALSE, FALSE, 0);
+ gtk_widget_show (hbox);
+
+ label = gtk_label_new_with_mnemonic (_("_Location:"));
+ gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
+ gtk_widget_show (label);
+
+ location_dialog->entry = thunar_path_entry_new ();
+ gtk_label_set_mnemonic_widget (GTK_LABEL (label), location_dialog->entry);
+ gtk_entry_set_activates_default (GTK_ENTRY (location_dialog->entry), TRUE);
+ gtk_box_pack_start (GTK_BOX (hbox), location_dialog->entry, TRUE, TRUE, 0);
+ gtk_widget_show (location_dialog->entry);
+
+ /* set Atk label relation for the entry */
+ object = gtk_widget_get_accessible (location_dialog->entry);
+ relations = atk_object_ref_relation_set (gtk_widget_get_accessible (label));
+ relation = atk_relation_new (&object, 1, ATK_RELATION_LABEL_FOR);
+ atk_relation_set_add (relations, relation);
+ g_object_unref (G_OBJECT (relation));
+
+ /* the "Open" button is only sensitive if a valid file is entered */
+ exo_binding_new_full (G_OBJECT (location_dialog->entry), "current-file",
+ G_OBJECT (open_button), "sensitive",
+ transform_object_to_boolean, NULL, NULL);
+}
+
+
+
+/**
+ * thunar_location_dialog_new:
+ *
+ * Allocates a new #ThunarLocationDialog instance.
+ *
+ * Return value: the newly allocated #ThunarLocationDialog.
+ **/
+GtkWidget*
+thunar_location_dialog_new (void)
+{
+ return g_object_new (THUNAR_TYPE_LOCATION_DIALOG, NULL);
+}
+
+
+
+/**
+ * thunar_location_dialog_get_selected_file:
+ * @location_dialog : a #ThunarLocationDialog.
+ *
+ * Returns the file selected for the @dialog or
+ * %NULL if the file entered is not valid.
+ *
+ * Return value: the selected #ThunarFile or %NULL.
+ **/
+ThunarFile*
+thunar_location_dialog_get_selected_file (ThunarLocationDialog *location_dialog)
+{
+ g_return_val_if_fail (THUNAR_IS_LOCATION_DIALOG (location_dialog), NULL);
+ return thunar_path_entry_get_current_file (THUNAR_PATH_ENTRY (location_dialog->entry));
+}
+
+
+
+/**
+ * thunar_location_dialog_set_selected_file:
+ * @location_dialog : a #ThunarLocationDialog.
+ * @selected_file : a #ThunarFile or %NULL.
+ *
+ * Sets the file for @location_dialog to @selected_file.
+ **/
+void
+thunar_location_dialog_set_selected_file (ThunarLocationDialog *location_dialog,
+ ThunarFile *selected_file)
+{
+ g_return_if_fail (THUNAR_IS_LOCATION_DIALOG (location_dialog));
+ g_return_if_fail (selected_file == NULL || THUNAR_IS_FILE (selected_file));
+ thunar_path_entry_set_current_file (THUNAR_PATH_ENTRY (location_dialog->entry), selected_file);
+}
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-location-dialog.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-location-dialog.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-location-dialog.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,47 @@
+/* $Id: thunar-location-dialog.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_LOCATION_DIALOG_H__
+#define __THUNAR_LOCATION_DIALOG_H__
+
+#include <thunar/thunar-file.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarLocationDialogClass ThunarLocationDialogClass;
+typedef struct _ThunarLocationDialog ThunarLocationDialog;
+
+#define THUNAR_TYPE_LOCATION_DIALOG (thunar_location_dialog_get_type ())
+#define THUNAR_LOCATION_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_LOCATION_DIALOG, ThunarLocationDialog))
+#define THUNAR_LOCATION_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_LOCATION_DIALOG, ThunarLocationDialogClass))
+#define THUNAR_IS_LOCATION_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_LOCATION_DIALOG))
+#define THUNAR_IS_LOCATION_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_LOCATION_DIALOG))
+#define THUNAR_LOCATION_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_LOCATION_DIALOG, ThunarLocationDialogClass))
+
+GType thunar_location_dialog_get_type (void) G_GNUC_CONST;
+
+GtkWidget *thunar_location_dialog_new (void);
+
+ThunarFile *thunar_location_dialog_get_selected_file (ThunarLocationDialog *location_dialog);
+void thunar_location_dialog_set_selected_file (ThunarLocationDialog *location_dialog,
+ ThunarFile *selected_file);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_LOCATION_DIALOG_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-location-entry.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-location-entry.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-location-entry.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,287 @@
+/* $Id: thunar-location-entry.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <thunar/thunar-location-entry.h>
+#include <thunar/thunar-path-entry.h>
+
+
+
+enum
+{
+ PROP_0,
+ PROP_CURRENT_DIRECTORY,
+};
+
+
+
+static void thunar_location_entry_class_init (ThunarLocationEntryClass *klass);
+static void thunar_location_entry_navigator_init (ThunarNavigatorIface *iface);
+static void thunar_location_entry_location_bar_init (ThunarLocationBarIface *iface);
+static void thunar_location_entry_init (ThunarLocationEntry *location_entry);
+static void thunar_location_entry_finalize (GObject *object);
+static void thunar_location_entry_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void thunar_location_entry_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static ThunarFile *thunar_location_entry_get_current_directory (ThunarNavigator *navigator);
+static void thunar_location_entry_set_current_directory (ThunarNavigator *navigator,
+ ThunarFile *current_directory);
+static gboolean thunar_location_entry_accept_focus (ThunarLocationBar *location_bar);
+static void thunar_location_entry_activate (ThunarLocationEntry *location_entry);
+
+
+
+struct _ThunarLocationEntryClass
+{
+ GtkHBoxClass __parent__;
+};
+
+struct _ThunarLocationEntry
+{
+ GtkHBox __parent__;
+
+ ThunarFile *current_directory;
+ GtkWidget *path_entry;
+};
+
+
+
+G_DEFINE_TYPE_WITH_CODE (ThunarLocationEntry,
+ thunar_location_entry,
+ GTK_TYPE_HBOX,
+ G_IMPLEMENT_INTERFACE (THUNAR_TYPE_NAVIGATOR,
+ thunar_location_entry_navigator_init)
+ G_IMPLEMENT_INTERFACE (THUNAR_TYPE_LOCATION_BAR,
+ thunar_location_entry_location_bar_init));
+
+
+
+static void
+thunar_location_entry_class_init (ThunarLocationEntryClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_location_entry_finalize;
+ gobject_class->get_property = thunar_location_entry_get_property;
+ gobject_class->set_property = thunar_location_entry_set_property;
+
+ g_object_class_override_property (gobject_class,
+ PROP_CURRENT_DIRECTORY,
+ "current-directory");
+}
+
+
+
+static void
+thunar_location_entry_navigator_init (ThunarNavigatorIface *iface)
+{
+ iface->get_current_directory = thunar_location_entry_get_current_directory;
+ iface->set_current_directory = thunar_location_entry_set_current_directory;
+}
+
+
+
+static void
+thunar_location_entry_location_bar_init (ThunarLocationBarIface *iface)
+{
+ iface->accept_focus = thunar_location_entry_accept_focus;
+}
+
+
+
+static gboolean
+transform_object_to_boolean (const GValue *src_value,
+ GValue *dst_value,
+ gpointer user_data)
+{
+ g_value_set_boolean (dst_value, (g_value_get_object (src_value) != NULL));
+ return TRUE;
+}
+
+
+
+static void
+thunar_location_entry_init (ThunarLocationEntry *location_entry)
+{
+ GtkWidget *button;
+ GtkWidget *image;
+
+ gtk_box_set_spacing (GTK_BOX (location_entry), 2);
+
+ location_entry->path_entry = thunar_path_entry_new ();
+ g_signal_connect_swapped (G_OBJECT (location_entry->path_entry), "activate",
+ G_CALLBACK (thunar_location_entry_activate), location_entry);
+ gtk_box_pack_start (GTK_BOX (location_entry), location_entry->path_entry, TRUE, TRUE, 0);
+ gtk_widget_show (location_entry->path_entry);
+
+ button = g_object_new (GTK_TYPE_BUTTON, "relief", GTK_RELIEF_NONE, NULL);
+ g_signal_connect_swapped (G_OBJECT (button), "clicked", G_CALLBACK (thunar_location_entry_activate), location_entry);
+ gtk_box_pack_start (GTK_BOX (location_entry), button, FALSE, FALSE, 0);
+ gtk_widget_show (button);
+
+ image = gtk_image_new_from_stock (GTK_STOCK_JUMP_TO, GTK_ICON_SIZE_MENU);
+ gtk_container_add (GTK_CONTAINER (button), image);
+ gtk_widget_show (image);
+
+ /* the "Go" button is only sensitive if a valid file is entered */
+ exo_binding_new_full (G_OBJECT (location_entry->path_entry), "current-file",
+ G_OBJECT (button), "sensitive",
+ transform_object_to_boolean, NULL, NULL);
+}
+
+
+
+static void
+thunar_location_entry_finalize (GObject *object)
+{
+ ThunarLocationEntry *location_entry = THUNAR_LOCATION_ENTRY (object);
+
+ if (G_LIKELY (location_entry->current_directory != NULL))
+ g_object_unref (G_OBJECT (location_entry->current_directory));
+
+ G_OBJECT_CLASS (thunar_location_entry_parent_class)->finalize (object);
+}
+
+
+
+static void
+thunar_location_entry_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarNavigator *navigator = THUNAR_NAVIGATOR (object);
+
+ switch (prop_id)
+ {
+ case PROP_CURRENT_DIRECTORY:
+ g_value_set_object (value, thunar_navigator_get_current_directory (navigator));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunar_location_entry_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarNavigator *navigator = THUNAR_NAVIGATOR (object);
+
+ switch (prop_id)
+ {
+ case PROP_CURRENT_DIRECTORY:
+ thunar_navigator_set_current_directory (navigator, g_value_get_object (value));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static ThunarFile*
+thunar_location_entry_get_current_directory (ThunarNavigator *navigator)
+{
+ return THUNAR_LOCATION_ENTRY (navigator)->current_directory;
+}
+
+
+
+static void
+thunar_location_entry_set_current_directory (ThunarNavigator *navigator,
+ ThunarFile *current_directory)
+{
+ ThunarLocationEntry *location_entry = THUNAR_LOCATION_ENTRY (navigator);
+
+ if (G_LIKELY (location_entry->current_directory != NULL))
+ g_object_unref (G_OBJECT (location_entry->current_directory));
+
+ location_entry->current_directory = current_directory;
+
+ if (G_LIKELY (current_directory != NULL))
+ g_object_ref (G_OBJECT (current_directory));
+
+ thunar_path_entry_set_current_file (THUNAR_PATH_ENTRY (location_entry->path_entry), current_directory);
+
+ g_object_notify (G_OBJECT (location_entry), "current-directory");
+}
+
+
+
+static gboolean
+thunar_location_entry_accept_focus (ThunarLocationBar *location_bar)
+{
+ ThunarLocationEntry *location_entry = THUNAR_LOCATION_ENTRY (location_bar);
+
+ /* select the whole path in the path entry */
+ gtk_editable_select_region (GTK_EDITABLE (location_entry->path_entry), 0, -1);
+
+ /* give the keyboard focus to the path entry */
+ gtk_widget_grab_focus (location_entry->path_entry);
+
+ return TRUE;
+}
+
+
+
+static void
+thunar_location_entry_activate (ThunarLocationEntry *location_entry)
+{
+ ThunarFile *file;
+
+ file = thunar_path_entry_get_current_file (THUNAR_PATH_ENTRY (location_entry->path_entry));
+ if (G_LIKELY (file != NULL))
+ thunar_navigator_change_directory (THUNAR_NAVIGATOR (location_entry), file);
+}
+
+
+
+/**
+ * thunar_location_entry_new:
+ *
+ * Allocates a new #ThunarLocationEntry instance.
+ *
+ * Return value: the newly allocated #ThunarLocationEntry.
+ **/
+GtkWidget*
+thunar_location_entry_new (void)
+{
+ return g_object_new (THUNAR_TYPE_LOCATION_ENTRY, NULL);
+}
+
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-location-entry.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-location-entry.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-location-entry.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,43 @@
+/* $Id: thunar-location-entry.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_LOCATION_ENTRY_H__
+#define __THUNAR_LOCATION_ENTRY_H__
+
+#include <thunar/thunar-location-bar.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarLocationEntryClass ThunarLocationEntryClass;
+typedef struct _ThunarLocationEntry ThunarLocationEntry;
+
+#define THUNAR_TYPE_LOCATION_ENTRY (thunar_location_entry_get_type ())
+#define THUNAR_LOCATION_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_LOCATION_ENTRY, ThunarLocationEntry))
+#define THUNAR_LOCATION_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_LOCATION_ENTRY, ThunarLocationEntryClass))
+#define THUNAR_IS_LOCATION_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_LOCATION_ENTRY))
+#define THUNAR_IS_LOCATION_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_LOCATION_ENTRY))
+#define THUNAR_LOCATION_ENTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_LOCATION_ENTRY, ThunarLocationEntryClass))
+
+GType thunar_location_entry_get_type (void) G_GNUC_CONST;
+
+GtkWidget *thunar_location_entry_new (void);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_LOCATION_ENTRY_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-marshal.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-marshal.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-marshal.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,160 @@
+
+#include <glib-object.h>
+
+
+#ifdef G_ENABLE_DEBUG
+#define g_marshal_value_peek_boolean(v) g_value_get_boolean (v)
+#define g_marshal_value_peek_char(v) g_value_get_char (v)
+#define g_marshal_value_peek_uchar(v) g_value_get_uchar (v)
+#define g_marshal_value_peek_int(v) g_value_get_int (v)
+#define g_marshal_value_peek_uint(v) g_value_get_uint (v)
+#define g_marshal_value_peek_long(v) g_value_get_long (v)
+#define g_marshal_value_peek_ulong(v) g_value_get_ulong (v)
+#define g_marshal_value_peek_int64(v) g_value_get_int64 (v)
+#define g_marshal_value_peek_uint64(v) g_value_get_uint64 (v)
+#define g_marshal_value_peek_enum(v) g_value_get_enum (v)
+#define g_marshal_value_peek_flags(v) g_value_get_flags (v)
+#define g_marshal_value_peek_float(v) g_value_get_float (v)
+#define g_marshal_value_peek_double(v) g_value_get_double (v)
+#define g_marshal_value_peek_string(v) (char*) g_value_get_string (v)
+#define g_marshal_value_peek_param(v) g_value_get_param (v)
+#define g_marshal_value_peek_boxed(v) g_value_get_boxed (v)
+#define g_marshal_value_peek_pointer(v) g_value_get_pointer (v)
+#define g_marshal_value_peek_object(v) g_value_get_object (v)
+#else /* !G_ENABLE_DEBUG */
+/* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
+ * Do not access GValues directly in your code. Instead, use the
+ * g_value_get_*() functions
+ */
+#define g_marshal_value_peek_boolean(v) (v)->data[0].v_int
+#define g_marshal_value_peek_char(v) (v)->data[0].v_int
+#define g_marshal_value_peek_uchar(v) (v)->data[0].v_uint
+#define g_marshal_value_peek_int(v) (v)->data[0].v_int
+#define g_marshal_value_peek_uint(v) (v)->data[0].v_uint
+#define g_marshal_value_peek_long(v) (v)->data[0].v_long
+#define g_marshal_value_peek_ulong(v) (v)->data[0].v_ulong
+#define g_marshal_value_peek_int64(v) (v)->data[0].v_int64
+#define g_marshal_value_peek_uint64(v) (v)->data[0].v_uint64
+#define g_marshal_value_peek_enum(v) (v)->data[0].v_long
+#define g_marshal_value_peek_flags(v) (v)->data[0].v_ulong
+#define g_marshal_value_peek_float(v) (v)->data[0].v_float
+#define g_marshal_value_peek_double(v) (v)->data[0].v_double
+#define g_marshal_value_peek_string(v) (v)->data[0].v_pointer
+#define g_marshal_value_peek_param(v) (v)->data[0].v_pointer
+#define g_marshal_value_peek_boxed(v) (v)->data[0].v_pointer
+#define g_marshal_value_peek_pointer(v) (v)->data[0].v_pointer
+#define g_marshal_value_peek_object(v) (v)->data[0].v_pointer
+#endif /* !G_ENABLE_DEBUG */
+
+
+/* BOOLEAN:VOID (thunar-marshal.list:1) */
+void
+_thunar_marshal_BOOLEAN__VOID (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data)
+{
+ typedef gboolean (*GMarshalFunc_BOOLEAN__VOID) (gpointer data1,
+ gpointer data2);
+ register GMarshalFunc_BOOLEAN__VOID callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+ gboolean v_return;
+
+ g_return_if_fail (return_value != NULL);
+ g_return_if_fail (n_param_values == 1);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_BOOLEAN__VOID) (marshal_data ? marshal_data : cc->callback);
+
+ v_return = callback (data1,
+ data2);
+
+ g_value_set_boolean (return_value, v_return);
+}
+
+/* VOID:BOXED,POINTER (thunar-marshal.list:2) */
+void
+_thunar_marshal_VOID__BOXED_POINTER (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data)
+{
+ typedef void (*GMarshalFunc_VOID__BOXED_POINTER) (gpointer data1,
+ gpointer arg_1,
+ gpointer arg_2,
+ gpointer data2);
+ register GMarshalFunc_VOID__BOXED_POINTER callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+
+ g_return_if_fail (n_param_values == 3);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_VOID__BOXED_POINTER) (marshal_data ? marshal_data : cc->callback);
+
+ callback (data1,
+ g_marshal_value_peek_boxed (param_values + 1),
+ g_marshal_value_peek_pointer (param_values + 2),
+ data2);
+}
+
+/* VOID:STRING,STRING (thunar-marshal.list:3) */
+void
+_thunar_marshal_VOID__STRING_STRING (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data)
+{
+ typedef void (*GMarshalFunc_VOID__STRING_STRING) (gpointer data1,
+ gpointer arg_1,
+ gpointer arg_2,
+ gpointer data2);
+ register GMarshalFunc_VOID__STRING_STRING callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+
+ g_return_if_fail (n_param_values == 3);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_VOID__STRING_STRING) (marshal_data ? marshal_data : cc->callback);
+
+ callback (data1,
+ g_marshal_value_peek_string (param_values + 1),
+ g_marshal_value_peek_string (param_values + 2),
+ data2);
+}
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-marshal.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-marshal.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-marshal.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,36 @@
+
+#ifndef ___thunar_marshal_MARSHAL_H__
+#define ___thunar_marshal_MARSHAL_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+/* BOOLEAN:VOID (thunar-marshal.list:1) */
+extern void _thunar_marshal_BOOLEAN__VOID (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+/* VOID:BOXED,POINTER (thunar-marshal.list:2) */
+extern void _thunar_marshal_VOID__BOXED_POINTER (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+/* VOID:STRING,STRING (thunar-marshal.list:3) */
+extern void _thunar_marshal_VOID__STRING_STRING (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+G_END_DECLS
+
+#endif /* ___thunar_marshal_MARSHAL_H__ */
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-marshal.list
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-marshal.list 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-marshal.list 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,3 @@
+BOOLEAN:VOID
+VOID:BOXED,POINTER
+VOID:STRING,STRING
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-metafile.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-metafile.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-metafile.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,409 @@
+/* $Id: thunar-metafile.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#include <tdb/tdb.h>
+
+#include <thunar/thunar-metafile.h>
+
+
+
+static void thunar_metafile_class_init (ThunarMetafileClass *klass);
+static void thunar_metafile_init (ThunarMetafile *metafile);
+static void thunar_metafile_finalize (GObject *object);
+static TDB_DATA thunar_metafile_read (ThunarMetafile *metafile,
+ TDB_DATA data);
+
+
+
+struct _ThunarMetafileClass
+{
+ GObjectClass __parent__;
+};
+
+struct _ThunarMetafile
+{
+ GObject __parent__;
+
+ TDB_CONTEXT *context;
+ TDB_DATA data;
+};
+
+
+
+G_DEFINE_TYPE (ThunarMetafile, thunar_metafile, G_TYPE_OBJECT);
+
+
+
+static void
+thunar_metafile_class_init (ThunarMetafileClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_metafile_finalize;
+}
+
+
+
+static void
+thunar_metafile_init (ThunarMetafile *metafile)
+{
+ gchar *path;
+
+ /* determine the path to the metafile database (create directories as required) */
+ path = xfce_resource_save_location (XFCE_RESOURCE_CACHE, "Thunar/metafile.tdb", TRUE);
+ if (G_UNLIKELY (path == NULL))
+ {
+ path = xfce_resource_save_location (XFCE_RESOURCE_CACHE, "Thunar/", FALSE);
+ g_warning ("Failed to create the Thunar cache directory in %s", path);
+ g_free (path);
+ return;
+ }
+
+ /* try to open the metafile database file */
+ metafile->context = tdb_open (path, 0, TDB_DEFAULT, O_CREAT | O_RDWR, 0600);
+ if (G_UNLIKELY (metafile->context == NULL))
+ g_warning ("Failed to open metafile database in %s: %s.", path, g_strerror (errno));
+
+ /* release the path */
+ g_free (path);
+}
+
+
+
+static void
+thunar_metafile_finalize (GObject *object)
+{
+ ThunarMetafile *metafile = THUNAR_METAFILE (object);
+
+ /* close the database (if open) */
+ if (G_LIKELY (metafile->context != NULL))
+ tdb_close (metafile->context);
+
+ /* release any pending data */
+ if (G_LIKELY (metafile->data.dptr != NULL))
+ free (metafile->data.dptr);
+
+ (*G_OBJECT_CLASS (thunar_metafile_parent_class)->finalize) (object);
+}
+
+
+
+static TDB_DATA
+thunar_metafile_read (ThunarMetafile *metafile,
+ TDB_DATA data)
+{
+ /* perform the fetch operation on the database */
+ data = tdb_fetch (metafile->context, data);
+ if (G_UNLIKELY (data.dptr != NULL))
+ {
+ /* validate the result */
+ if (data.dsize < sizeof (guint32)
+ || (data.dsize % sizeof (guint32)) != 0
+ || data.dptr[data.dsize - 1] != '\0')
+ {
+ free (data.dptr);
+ data.dptr = NULL;
+ data.dsize = 0;
+ }
+ }
+
+ return data;
+}
+
+
+
+/**
+ * thunar_metafile_get_default:
+ *
+ * Returns a reference to the default #ThunarMetafile
+ * instance. There can be only one #ThunarMetafile
+ * instance at any time.
+ *
+ * The caller is responsible to free the returned
+ * object using g_object_unref() when no longer
+ * needed.
+ *
+ * Return value: a reference to the default #ThunarMetafile
+ * instance.
+ **/
+ThunarMetafile*
+thunar_metafile_get_default (void)
+{
+ static ThunarMetafile *metafile = NULL;
+
+ if (G_UNLIKELY (metafile == NULL))
+ {
+ /* allocate a new metafile instance. */
+ metafile = g_object_new (THUNAR_TYPE_METAFILE, NULL);
+ g_object_add_weak_pointer (G_OBJECT (metafile), (gpointer) &metafile);
+ }
+ else
+ {
+ /* take a reference for the caller */
+ g_object_ref (G_OBJECT (metafile));
+ }
+
+ return metafile;
+}
+
+
+
+/**
+ * thunar_metafile_fetch:
+ * @metafile : a #ThunarMetafile.
+ * @path : a #ThunarVfsPath.
+ * @key : a #ThunarMetafileKey.
+ * @default_value : the default value for @key,
+ * which may be %NULL.
+ *
+ * Fetches the value for @key on @path in
+ * @metafile. Returns a pointer to the
+ * value if found, or the default value
+ * if the @key is explicitly not set for
+ * @path in @metafile, as specified in
+ * @default_value.
+ *
+ * The returned string is owned by @metafile
+ * and is only valid until the next call to
+ * thunar_metafile_fetch(), so you might need
+ * to take a copy of the value if you need to
+ * keep for a longer period.
+ *
+ * Return value: the value for @key on @path
+ * in @metafile or the default
+ * value for @key, as specified
+ * by @default_value.
+ **/
+const gchar*
+thunar_metafile_fetch (ThunarMetafile *metafile,
+ ThunarVfsPath *path,
+ ThunarMetafileKey key,
+ const gchar *default_value)
+{
+ const guchar *dend;
+ const guchar *dp;
+ TDB_DATA key_data;
+ gssize key_size;
+ gchar key_path[THUNAR_VFS_PATH_MAXSTRLEN];
+
+ g_return_val_if_fail (THUNAR_IS_METAFILE (metafile), NULL);
+ g_return_val_if_fail (key < THUNAR_METAFILE_N_KEYS, NULL);
+ g_return_val_if_fail (path != NULL, NULL);
+
+ /* check if the database handle is available */
+ if (G_UNLIKELY (metafile->context == NULL))
+ goto use_default_value;
+
+ /* determine the string representation of the path */
+ key_size = thunar_vfs_path_to_string (path, key_path, sizeof (key_path), NULL);
+ if (G_UNLIKELY (key_size <= 0))
+ goto use_default_value;
+
+ /* generate the key data */
+ key_data.dptr = key_path;
+ key_data.dsize = key_size - 1;
+
+ /* release any earlier result data */
+ if (G_LIKELY (metafile->data.dptr != NULL))
+ free (metafile->data.dptr);
+
+ /* perform the fetch operation on the database */
+ metafile->data = thunar_metafile_read (metafile, key_data);
+ if (G_LIKELY (metafile->data.dptr == NULL))
+ goto use_default_value;
+
+ /* lookup the value for the given key */
+ dp = (const guchar *) metafile->data.dptr;
+ dend = dp + metafile->data.dsize;
+ for (;;)
+ {
+ /* check if we have a match */
+ if (*dp == (guint) key)
+ return (const gchar *) (dp + 1);
+
+ /* lookup the next entry */
+ do
+ {
+ /* skip another 4 bytes */
+ dp += sizeof (guint32);
+ if (G_UNLIKELY (dp == dend))
+ goto use_default_value;
+ }
+ while (*(dp - 1) != '\0');
+ }
+
+ /* use the default value */
+use_default_value:
+ return default_value;
+}
+
+
+
+/**
+ * thunar_metafile_store:
+ * @metafile : a #ThunarMetafile.
+ * @path : a #ThunarVfsPath.
+ * @key : a #ThunarMetafileKey.
+ * @value : the new value for @key on @path.
+ * @default_value : the default value for @key on @path.
+ *
+ * Stores the given @value for @key on @path in
+ * @metafile.
+ *
+ * No error is returned from this method, but
+ * the store operation may nevertheless fail,
+ * so don't depend on the success of the operation.
+ *
+ * Note that if @value equals the @default_value
+ * for @key, it isn't stored in the @metafile to
+ * save memory.
+ **/
+void
+thunar_metafile_store (ThunarMetafile *metafile,
+ ThunarVfsPath *path,
+ ThunarMetafileKey key,
+ const gchar *value,
+ const gchar *default_value)
+{
+ TDB_DATA value_data;
+ TDB_DATA key_data;
+ gssize value_size;
+ gssize key_size;
+ gchar *buffer;
+ gchar *bp;
+ gchar key_path[THUNAR_VFS_PATH_MAXSTRLEN];
+
+ g_return_if_fail (THUNAR_IS_METAFILE (metafile));
+ g_return_if_fail (key < THUNAR_METAFILE_N_KEYS);
+ g_return_if_fail (default_value != NULL);
+ g_return_if_fail (value != NULL);
+ g_return_if_fail (path != NULL);
+
+ /* check if the database handle is available */
+ if (G_UNLIKELY (metafile->context == NULL))
+ return;
+
+ /* determine the string representation of the path */
+ key_size = thunar_vfs_path_to_string (path, key_path, sizeof (key_path), NULL);
+ if (G_UNLIKELY (key_size <= 0))
+ return;
+
+ /* generate the key data */
+ key_data.dptr = key_path;
+ key_data.dsize = key_size - 1;
+
+ /* fetch the current value for the key */
+ value_data = thunar_metafile_read (metafile, key_data);
+
+ /* determine the size required for the new value */
+ value_size = strlen (value) + 2;
+ value_size = ((value_size + sizeof (guint32) - 1) / sizeof (guint32)) * sizeof (guint32);
+
+ /* allocate a buffer to merge the existing value set with the new value */
+ buffer = g_new0 (gchar, value_data.dsize + value_size);
+
+ /* copy the new value to the buffer if it's not equal to the default value */
+ if (G_LIKELY (strcmp (value, default_value) != 0))
+ {
+ buffer[0] = key;
+ strcpy (buffer + 1, value);
+ bp = buffer + value_size;
+ }
+ else
+ {
+ bp = buffer;
+ }
+
+ /* copy the existing entries (if any) */
+ if (G_LIKELY (value_data.dptr != NULL))
+ {
+ const guchar *vp = (const guchar *) value_data.dptr;
+ const guchar *vend = vp + value_data.dsize;
+ const guchar *vx;
+
+ for (; vp < vend; vp = vx)
+ {
+ /* grab a pointer to the next entry (thereby calc
+ * the length of this entry).
+ */
+ for (vx = vp + sizeof (guint32); *(vx - 1) != '\0'; vx += sizeof (guint32))
+ ;
+
+ /* verify the vx pointer */
+ g_assert (vx <= vend);
+ g_assert (vx > vp);
+
+ /* check if we should copy the entry */
+ if (*vp != key)
+ {
+ memcpy (bp, vp, vx - vp);
+ bp += (vx - vp);
+ }
+ }
+
+ /* verify the buffer space */
+ g_assert (bp <= buffer + value_data.dsize + value_size);
+ g_assert ((bp - buffer) % sizeof (guint32) == 0);
+
+ /* release the previous value set */
+ free (value_data.dptr);
+ }
+
+ /* delete the key from the database if the new
+ * value set is the same as the default value set.
+ */
+ if (G_UNLIKELY (bp == buffer))
+ {
+ tdb_delete (metafile->context, key_data);
+ }
+ else
+ {
+ /* setup the new value set */
+ value_data.dptr = buffer;
+ value_data.dsize = bp - buffer;
+
+ /* execute the store operation */
+ tdb_store (metafile->context, key_data, value_data, TDB_REPLACE);
+ }
+
+ /* free the buffer space */
+ g_free (buffer);
+}
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-metafile.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-metafile.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-metafile.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,64 @@
+/* $Id: thunar-metafile.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_METAFILE_H__
+#define __THUNAR_METAFILE_H__
+
+#include <thunar-vfs/thunar-vfs.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarMetafileClass ThunarMetafileClass;
+typedef struct _ThunarMetafile ThunarMetafile;
+
+#define THUNAR_TYPE_METAFILE (thunar_metafile_get_type ())
+#define THUNAR_METAFILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_METAFILE, ThunarMetafile))
+#define THUNAR_METAFILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_METAFILE, ThunarMetafileClass))
+#define THUNAR_IS_METAFILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_METAFILE))
+#define THUNAR_IS_METAFILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_METAFILE))
+#define THUNAR_METAFILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_METAFILE, ThunarMetafileClass))
+
+/**
+ * ThunarMetafileKey:
+ * @THUNAR_METAFILE_KEY_EMBLEMS :
+ **/
+typedef enum /*< enum >*/
+{
+ THUNAR_METAFILE_KEY_EMBLEMS,
+ THUNAR_METAFILE_N_KEYS,
+} ThunarMetafileKey;
+
+GType thunar_metafile_get_type (void) G_GNUC_CONST;
+
+ThunarMetafile *thunar_metafile_get_default (void);
+
+const gchar *thunar_metafile_fetch (ThunarMetafile *metafile,
+ ThunarVfsPath *path,
+ ThunarMetafileKey key,
+ const gchar *default_value);
+
+void thunar_metafile_store (ThunarMetafile *metafile,
+ ThunarVfsPath *path,
+ ThunarMetafileKey key,
+ const gchar *value,
+ const gchar *default_value);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_METAFILE_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-navigator.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-navigator.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-navigator.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,211 @@
+/* $Id: thunar-navigator.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <thunar/thunar-navigator.h>
+
+
+
+enum
+{
+ CHANGE_DIRECTORY,
+ LAST_SIGNAL,
+};
+
+
+
+static void thunar_navigator_base_init (gpointer klass);
+static void thunar_navigator_class_init (gpointer klass);
+
+
+
+static guint navigator_signals[LAST_SIGNAL];
+
+
+
+GType
+thunar_navigator_get_type (void)
+{
+ static GType type = G_TYPE_INVALID;
+
+ if (G_UNLIKELY (type == G_TYPE_INVALID))
+ {
+ static const GTypeInfo info =
+ {
+ sizeof (ThunarNavigatorIface),
+ (GBaseInitFunc) thunar_navigator_base_init,
+ NULL,
+ (GClassInitFunc) thunar_navigator_class_init,
+ NULL,
+ NULL,
+ 0,
+ 0,
+ NULL,
+ };
+
+ type = g_type_register_static (G_TYPE_INTERFACE,
+ "ThunarNavigator",
+ &info, 0);
+ }
+
+ return type;
+}
+
+
+
+static void
+thunar_navigator_base_init (gpointer klass)
+{
+ static gboolean initialized = FALSE;
+
+ if (G_UNLIKELY (!initialized))
+ {
+ /**
+ * ThunarNavigator::change-directory:
+ * @navigator : a #ThunarNavigator instance.
+ * @directory : a #ThunarFile referring to the new directory.
+ *
+ * Invoked by implementing classes whenever the user requests
+ * to changed the current directory to @directory from within
+ * the @navigator instance (e.g. for the location buttons bar,
+ * this signal would be invoked whenever the user clicks on
+ * a path button).
+ *
+ * The @navigator must not apply the @directory to the
+ * "current-directory" property directly. But
+ * instead, it must wait for the surrounding module (usually
+ * a #ThunarWindow instance) to explicitly inform the
+ * @navigator to change it's current directory using
+ * the #thunar_navigator_set_current_directory() method
+ * or the "current-directory" property.
+ **/
+ navigator_signals[CHANGE_DIRECTORY] =
+ g_signal_new ("change-directory",
+ G_TYPE_FROM_INTERFACE (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (ThunarNavigatorIface, change_directory),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__OBJECT,
+ G_TYPE_NONE, 1, THUNAR_TYPE_FILE);
+
+ initialized = TRUE;
+ }
+}
+
+
+
+static void
+thunar_navigator_class_init (gpointer klass)
+{
+ /**
+ * ThunarNavigator:current-directory:
+ *
+ * The directory currently displayed by this #ThunarNavigator
+ * instance or %NULL if no directory is currently displayed
+ * (it's up to the implementing class to define the appearance
+ * of a navigator that has no directory associated with it).
+ *
+ * Whenever a navigator wants the surrounding module (usually
+ * a #ThunarWindow) to change to another directory, it should
+ * invoke the "change-directory" signal using the
+ * #thunar_navigator_change_directory() method. It should
+ * not directly change the "current-directory" property,
+ * but wait for the surrounding module to change the
+ * "current-directory" property afterwards.
+ **/
+ g_object_interface_install_property (klass,
+ g_param_spec_object ("current-directory",
+ _("Current directory"),
+ _("The directory currently displayed by the navigator"),
+ THUNAR_TYPE_FILE,
+ EXO_PARAM_READWRITE));
+}
+
+
+
+/**
+ * thunar_navigator_get_current_directory:
+ * @navigator : a #ThunarNavigator instance.
+ *
+ * Returns the directory currently displayed by @navigator
+ * or %NULL, if @navigator does not currently display and
+ * directory.
+ *
+ * Return value: the current directory of @navigator or %NULL.
+ **/
+ThunarFile*
+thunar_navigator_get_current_directory (ThunarNavigator *navigator)
+{
+ g_return_val_if_fail (THUNAR_IS_NAVIGATOR (navigator), NULL);
+ return THUNAR_NAVIGATOR_GET_IFACE (navigator)->get_current_directory (navigator);
+}
+
+
+
+/**
+ * thunar_navigator_set_current_directory:
+ * @navigator : a #ThunarNavigator instance.
+ * @current_directory : the new directory to display or %NULL.
+ *
+ * Sets a new current directory that should be displayed by
+ * the @navigator.
+ **/
+void
+thunar_navigator_set_current_directory (ThunarNavigator *navigator,
+ ThunarFile *current_directory)
+{
+ g_return_if_fail (THUNAR_IS_NAVIGATOR (navigator));
+ g_return_if_fail (current_directory == NULL || THUNAR_IS_FILE (current_directory));
+ THUNAR_NAVIGATOR_GET_IFACE (navigator)->set_current_directory (navigator, current_directory);
+}
+
+
+
+/**
+ * thunar_navigator_change_directory:
+ * @navigator : a #ThunarNavigator instance.
+ * @directory : a #ThunarFile referring to a directory.
+ *
+ * Emits the "change-directory" signal on @navigator with
+ * the specified @directory.
+ *
+ * Derived classes should invoke this method whenever the user
+ * selects a new directory from within @navigator. The derived
+ * class should not perform any directory changing operations
+ * itself, but leave it up to the surrounding module (usually
+ * a #ThunarWindow instance) to change the directory.
+ *
+ * It should never ever be called from outside a #ThunarNavigator
+ * implementation, as that may led to unexpected results!
+ **/
+void
+thunar_navigator_change_directory (ThunarNavigator *navigator,
+ ThunarFile *directory)
+{
+ g_return_if_fail (THUNAR_IS_NAVIGATOR (navigator));
+ g_return_if_fail (THUNAR_IS_FILE (directory));
+ g_return_if_fail (thunar_file_is_directory (directory));
+
+ g_signal_emit (G_OBJECT (navigator), navigator_signals[CHANGE_DIRECTORY], 0, directory);
+}
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-navigator.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-navigator.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-navigator.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,60 @@
+/* $Id: thunar-navigator.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_NAVIGATOR_H__
+#define __THUNAR_NAVIGATOR_H__
+
+#include <thunar/thunar-file.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarNavigatorIface ThunarNavigatorIface;
+typedef struct _ThunarNavigator ThunarNavigator;
+
+#define THUNAR_TYPE_NAVIGATOR (thunar_navigator_get_type ())
+#define THUNAR_NAVIGATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_NAVIGATOR, ThunarNavigator))
+#define THUNAR_IS_NAVIGATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_NAVIGATOR))
+#define THUNAR_NAVIGATOR_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), THUNAR_TYPE_NAVIGATOR, ThunarNavigatorIface))
+
+struct _ThunarNavigatorIface
+{
+ GTypeInterface __parent__;
+
+ /* methods */
+ ThunarFile *(*get_current_directory) (ThunarNavigator *navigator);
+ void (*set_current_directory) (ThunarNavigator *navigator,
+ ThunarFile *current_directory);
+
+ /* signals */
+ void (*change_directory) (ThunarNavigator *navigator,
+ ThunarFile *directory);
+};
+
+GType thunar_navigator_get_type (void) G_GNUC_CONST;
+
+ThunarFile *thunar_navigator_get_current_directory (ThunarNavigator *navigator);
+void thunar_navigator_set_current_directory (ThunarNavigator *navigator,
+ ThunarFile *current_directory);
+
+void thunar_navigator_change_directory (ThunarNavigator *navigator,
+ ThunarFile *directory);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_NAVIGATOR_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-open-with-action.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-open-with-action.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-open-with-action.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,511 @@
+/* $Id: thunar-open-with-action.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <thunar/thunar-icon-factory.h>
+#include <thunar/thunar-marshal.h>
+#include <thunar/thunar-open-with-action.h>
+
+
+
+enum
+{
+ PROP_0,
+ PROP_FILE,
+};
+
+enum
+{
+ OPEN_APPLICATION,
+ LAST_SIGNAL,
+};
+
+
+
+static void thunar_open_with_action_class_init (ThunarOpenWithActionClass *klass);
+static void thunar_open_with_action_init (ThunarOpenWithAction *open_with_action);
+static void thunar_open_with_action_dispose (GObject *object);
+static void thunar_open_with_action_finalize (GObject *object);
+static void thunar_open_with_action_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void thunar_open_with_action_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static GtkWidget *thunar_open_with_action_create_menu_item (GtkAction *action);
+static void thunar_open_with_action_activated (GtkWidget *item,
+ ThunarOpenWithAction *open_with_action);
+static void thunar_open_with_action_menu_mapped (GtkWidget *menu,
+ ThunarOpenWithAction *open_with_action);
+static void thunar_open_with_action_file_destroy (ThunarFile *file,
+ ThunarOpenWithAction *open_with_action);
+
+
+
+struct _ThunarOpenWithActionClass
+{
+ GtkActionClass __parent__;
+
+ void (*open_application) (ThunarOpenWithAction *action,
+ ThunarVfsMimeApplication *application,
+ GList *path_list);
+};
+
+struct _ThunarOpenWithAction
+{
+ GtkAction __parent__;
+
+ ThunarVfsMimeDatabase *mime_database;
+ ThunarFile *file;
+};
+
+
+
+static guint open_with_action_signals[LAST_SIGNAL];
+
+G_DEFINE_TYPE (ThunarOpenWithAction, thunar_open_with_action, GTK_TYPE_ACTION);
+
+
+
+static void
+thunar_open_with_action_class_init (ThunarOpenWithActionClass *klass)
+{
+ GtkActionClass *gtkaction_class;
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->dispose = thunar_open_with_action_dispose;
+ gobject_class->finalize = thunar_open_with_action_finalize;
+ gobject_class->get_property = thunar_open_with_action_get_property;
+ gobject_class->set_property = thunar_open_with_action_set_property;
+
+ gtkaction_class = GTK_ACTION_CLASS (klass);
+ gtkaction_class->create_menu_item = thunar_open_with_action_create_menu_item;
+
+ /**
+ * ThunarOpenWithAction:file:
+ *
+ * The #ThunarFile for which to display the MIME application
+ * selector menu.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_FILE,
+ g_param_spec_object ("file",
+ _("File"),
+ _("File"),
+ THUNAR_TYPE_FILE,
+ EXO_PARAM_READWRITE));
+
+ /**
+ * ThunarOpenWithAction::open-application:
+ * @open_with_action : a #ThunarOpenWithAction.
+ * @application : a #ThunarVfsMimeApplication.
+ * @path_list : a list of #ThunarVfsPath<!---->s.
+ *
+ * Emitted by @open_with_action whenever the user requests to
+ * open @path_list with @application.
+ **/
+ open_with_action_signals[OPEN_APPLICATION] =
+ g_signal_new ("open-application",
+ G_TYPE_FROM_CLASS (gobject_class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (ThunarOpenWithActionClass, open_application),
+ NULL, NULL, _thunar_marshal_VOID__BOXED_POINTER,
+ G_TYPE_NONE, 2, THUNAR_VFS_TYPE_MIME_APPLICATION, G_TYPE_POINTER);
+}
+
+
+
+static void
+thunar_open_with_action_init (ThunarOpenWithAction *open_with_action)
+{
+ open_with_action->mime_database = thunar_vfs_mime_database_get_default ();
+}
+
+
+
+static void
+thunar_open_with_action_dispose (GObject *object)
+{
+ ThunarOpenWithAction *open_with_action = THUNAR_OPEN_WITH_ACTION (object);
+
+ thunar_open_with_action_set_file (open_with_action, NULL);
+
+ (*G_OBJECT_CLASS (thunar_open_with_action_parent_class)->dispose) (object);
+}
+
+
+
+static void
+thunar_open_with_action_finalize (GObject *object)
+{
+ ThunarOpenWithAction *open_with_action = THUNAR_OPEN_WITH_ACTION (object);
+
+ g_object_unref (G_OBJECT (open_with_action->mime_database));
+
+ (*G_OBJECT_CLASS (thunar_open_with_action_parent_class)->finalize) (object);
+}
+
+
+
+static void
+thunar_open_with_action_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarOpenWithAction *open_with_action = THUNAR_OPEN_WITH_ACTION (object);
+
+ switch (prop_id)
+ {
+ case PROP_FILE:
+ g_value_set_object (value, thunar_open_with_action_get_file (open_with_action));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunar_open_with_action_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarOpenWithAction *open_with_action = THUNAR_OPEN_WITH_ACTION (object);
+
+ switch (prop_id)
+ {
+ case PROP_FILE:
+ thunar_open_with_action_set_file (open_with_action, g_value_get_object (value));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static GtkWidget*
+thunar_open_with_action_create_menu_item (GtkAction *action)
+{
+ GtkWidget *item;
+ GtkWidget *menu;
+
+ g_return_val_if_fail (THUNAR_IS_OPEN_WITH_ACTION (action), NULL);
+
+ /* let GtkAction allocate the menu item */
+ item = (*GTK_ACTION_CLASS (thunar_open_with_action_parent_class)->create_menu_item) (action);
+
+ /* associate an empty submenu with the item (will be filled when mapped) */
+ menu = gtk_menu_new ();
+ g_signal_connect (G_OBJECT (menu), "map", G_CALLBACK (thunar_open_with_action_menu_mapped), action);
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), menu);
+
+ return item;
+}
+
+
+
+static void
+thunar_open_with_action_activated (GtkWidget *item,
+ ThunarOpenWithAction *open_with_action)
+{
+ ThunarVfsMimeApplication *application;
+ ThunarFile *file;
+ GList path_list;
+
+ g_return_if_fail (THUNAR_IS_OPEN_WITH_ACTION (open_with_action));
+ g_return_if_fail (GTK_IS_MENU_ITEM (item));
+
+ /* verify that the file is still alive */
+ file = open_with_action->file;
+ if (G_UNLIKELY (file == NULL))
+ return;
+
+ /* query the launch parameters for this application item */
+ application = g_object_get_data (G_OBJECT (item), "thunar-vfs-mime-application");
+
+ /* generate a single item list */
+ path_list.data = thunar_file_get_path (file);
+ path_list.next = NULL;
+ path_list.prev = NULL;
+
+ /* emit the "open-application" signal */
+ g_signal_emit (G_OBJECT (open_with_action), open_with_action_signals[OPEN_APPLICATION], 0, application, &path_list);
+}
+
+
+
+static void
+thunar_open_with_action_menu_mapped (GtkWidget *menu,
+ ThunarOpenWithAction *open_with_action)
+{
+ ThunarVfsMimeApplication *default_application;
+ ThunarVfsMimeInfo *info;
+ ThunarIconFactory *icon_factory;
+ GtkIconTheme *icon_theme;
+ const gchar *icon_name;
+ GdkPixbuf *icon;
+ GtkWidget *image;
+ GtkWidget *item;
+ GList *applications;
+ GList *lp;
+ gchar *text;
+ gint icon_size;
+
+ g_return_if_fail (THUNAR_IS_OPEN_WITH_ACTION (open_with_action));
+ g_return_if_fail (GTK_IS_MENU_SHELL (menu));
+
+ /* check if we already added our children to the submenu (or we don't have a file) */
+ if (G_LIKELY (GTK_MENU_SHELL (menu)->children != NULL || open_with_action->file == NULL))
+ return;
+
+ /* determine the mime info for the file (may fail) */
+ info = thunar_file_get_mime_info (open_with_action->file);
+
+ /* determine the icon size for menus */
+ gtk_icon_size_lookup (GTK_ICON_SIZE_MENU, &icon_size, &icon_size);
+
+ /* determine the icon factory */
+ icon_theme = gtk_icon_theme_get_for_screen (gtk_widget_get_screen (menu));
+ icon_factory = thunar_icon_factory_get_for_icon_theme (icon_theme);
+
+ /* determine all applications that are claim to be able to handle the file */
+ applications = thunar_vfs_mime_database_get_applications (open_with_action->mime_database, info);
+
+ /* determine the default application (fallback to the first available application) */
+ default_application = thunar_vfs_mime_database_get_default_application (open_with_action->mime_database, info);
+ if (G_UNLIKELY (default_application == NULL && applications != NULL))
+ default_application = thunar_vfs_mime_application_ref (applications->data);
+
+ /* add a menu entry for the default application */
+ if (G_LIKELY (default_application != NULL))
+ {
+ /* drop the default application from the application list */
+ lp = g_list_find (applications, default_application);
+ if (G_LIKELY (lp != NULL))
+ {
+ applications = g_list_delete_link (applications, lp);
+ thunar_vfs_mime_application_unref (default_application);
+ }
+
+ text = g_strdup_printf (_("%s (default)"), thunar_vfs_mime_application_get_name (default_application));
+ item = gtk_image_menu_item_new_with_label (text);
+ g_object_set_data_full (G_OBJECT (item), "thunar-vfs-mime-application", default_application, (GDestroyNotify) thunar_vfs_mime_application_unref);
+ g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (thunar_open_with_action_activated), open_with_action);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+ g_free (text);
+
+ /* setup the icon for the application */
+ icon_name = thunar_vfs_mime_application_lookup_icon_name (default_application, icon_theme);
+ icon = thunar_icon_factory_load_icon (icon_factory, icon_name, icon_size, NULL, FALSE);
+ image = gtk_image_new_from_pixbuf (icon);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
+ gtk_widget_show (image);
+ if (G_LIKELY (icon != NULL))
+ g_object_unref (icon);
+
+ item = gtk_separator_menu_item_new ();
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+ }
+
+ /* add the other possible applications */
+ if (G_LIKELY (applications != NULL))
+ {
+ for (lp = applications; lp != NULL; lp = lp->next)
+ {
+ item = gtk_image_menu_item_new_with_label (thunar_vfs_mime_application_get_name (lp->data));
+ g_object_set_data_full (G_OBJECT (item), "thunar-vfs-mime-application", lp->data, (GDestroyNotify) thunar_vfs_mime_application_unref);
+ g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (thunar_open_with_action_activated), open_with_action);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
+ /* setup the icon for the application */
+ icon_name = thunar_vfs_mime_application_lookup_icon_name (lp->data, icon_theme);
+ icon = thunar_icon_factory_load_icon (icon_factory, icon_name, icon_size, NULL, FALSE);
+ image = gtk_image_new_from_pixbuf (icon);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
+ gtk_widget_show (image);
+ if (G_LIKELY (icon != NULL))
+ g_object_unref (icon);
+ }
+
+ item = gtk_separator_menu_item_new ();
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
+ g_list_free (applications);
+ }
+
+ /* add our custom children */
+ item = gtk_image_menu_item_new_with_label (_("Other Application..."));
+ g_signal_connect_swapped (G_OBJECT (item), "activate", G_CALLBACK (gtk_action_activate), open_with_action);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_widget_show (item);
+
+ /* clean up */
+ g_object_unref (G_OBJECT (icon_factory));
+}
+
+
+
+static void
+thunar_open_with_action_file_destroy (ThunarFile *file,
+ ThunarOpenWithAction *open_with_action)
+{
+ g_return_if_fail (THUNAR_IS_OPEN_WITH_ACTION (open_with_action));
+ g_return_if_fail (open_with_action->file == file);
+ g_return_if_fail (THUNAR_IS_FILE (file));
+
+ /* just unset the file here (will automatically hide the action) */
+ thunar_open_with_action_set_file (open_with_action, NULL);
+}
+
+
+
+/**
+ * thunar_open_with_action_new:
+ * @name : the name of the #ThunarOpenWithAction.
+ * @label : the label of the #ThunarOpenWithAction.
+ *
+ * Allocates a new #ThunarOpenWithAction instance
+ * and returns it.
+ *
+ * Return value: the newly allocated #ThunarOpenWithAction
+ * instance.
+ **/
+GtkAction*
+thunar_open_with_action_new (const gchar *name,
+ const gchar *label)
+{
+ g_return_val_if_fail (name != NULL, NULL);
+
+ return g_object_new (THUNAR_TYPE_OPEN_WITH_ACTION,
+ "hide-if-empty", FALSE,
+ "label", label,
+ "name", name,
+ "visible", FALSE,
+ NULL);
+}
+
+
+
+/**
+ * thunar_open_with_action_get_file:
+ * @open_with_action : a #ThunarOpenWithAction.
+ *
+ * Returns the #ThunarFile set for the @open_with_action,
+ * which may be %NULL.
+ *
+ * Return value: the #ThunarFile for @open_with_action.
+ **/
+ThunarFile*
+thunar_open_with_action_get_file (ThunarOpenWithAction *open_with_action)
+{
+ g_return_val_if_fail (THUNAR_IS_OPEN_WITH_ACTION (open_with_action), NULL);
+ return open_with_action->file;
+}
+
+
+
+/**
+ * thunar_open_with_action_set_file:
+ * @open_with_action : a #ThunarOpenWithAction.
+ * @file : a #ThunarFile or %NULL.
+ *
+ * Tells @open_with_action to display a selector menu
+ * for @file.
+ *
+ * The @open_with_action will be visible if @file is
+ * not %NULL, else it's invisible.
+ **/
+void
+thunar_open_with_action_set_file (ThunarOpenWithAction *open_with_action,
+ ThunarFile *file)
+{
+ GtkWidget *menu;
+ GSList *lp;
+ GList *children;
+
+ g_return_if_fail (THUNAR_IS_OPEN_WITH_ACTION (open_with_action));
+ g_return_if_fail (file == NULL || THUNAR_IS_FILE (file));
+
+ /* check that we have different files */
+ if (G_UNLIKELY (open_with_action->file == file))
+ return;
+
+ /* disconnect from the previous file */
+ if (G_LIKELY (open_with_action->file != NULL))
+ {
+ g_signal_handlers_disconnect_by_func (G_OBJECT (open_with_action->file), thunar_open_with_action_file_destroy, open_with_action);
+ g_object_unref (G_OBJECT (open_with_action->file));
+ }
+
+ /* activate the new file */
+ open_with_action->file = file;
+
+ /* connect to the new file */
+ if (G_LIKELY (file != NULL))
+ {
+ g_object_ref (G_OBJECT (file));
+ g_signal_connect (G_OBJECT (file), "destroy", G_CALLBACK (thunar_open_with_action_file_destroy), open_with_action);
+ }
+
+ /* clear menus for all menu proxies (will be rebuild on-demand) */
+ for (lp = gtk_action_get_proxies (GTK_ACTION (open_with_action)); lp != NULL; lp = lp->next)
+ if (G_LIKELY (GTK_IS_MENU_ITEM (lp->data)))
+ {
+ menu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (lp->data));
+ if (G_LIKELY (menu != NULL))
+ {
+ children = gtk_container_get_children (GTK_CONTAINER (menu));
+ g_list_foreach (children, (GFunc) gtk_widget_destroy, NULL);
+ g_list_free (children);
+ }
+ }
+
+
+ /* toggle the visibility of the action */
+#if GTK_CHECK_VERSION(2,6,0)
+ gtk_action_set_visible (GTK_ACTION (open_with_action), (file != NULL && !thunar_file_is_directory (file)));
+#else
+ g_object_set (G_OBJECT (open_with_action), "visible", (file != NULL && !thunar_file_is_directory (file)), NULL);
+#endif
+
+ /* notify listeners */
+ g_object_notify (G_OBJECT (open_with_action), "file");
+}
+
+
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-open-with-action.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-open-with-action.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-open-with-action.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,48 @@
+/* $Id: thunar-open-with-action.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_OPEN_WITH_ACTION_H__
+#define __THUNAR_OPEN_WITH_ACTION_H__
+
+#include <thunar/thunar-file.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarOpenWithActionClass ThunarOpenWithActionClass;
+typedef struct _ThunarOpenWithAction ThunarOpenWithAction;
+
+#define THUNAR_TYPE_OPEN_WITH_ACTION (thunar_open_with_action_get_type ())
+#define THUNAR_OPEN_WITH_ACTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_OPEN_WITH_ACTION, ThunarOpenWithAction))
+#define THUNAR_OPEN_WITH_ACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_OPEN_WITH_ACTION, ThunarOpenWithActionClass))
+#define THUNAR_IS_OPEN_WITH_ACTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_OPEN_WITH_ACTION))
+#define THUNAR_IS_OPEN_WITH_ACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_OPEN_WITH_ACTION))
+#define THUNAR_OPEN_WITH_ACTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_OPEN_WITH_ACTION, ThunarOpenWithActionClass))
+
+GType thunar_open_with_action_get_type (void) G_GNUC_CONST;
+
+GtkAction *thunar_open_with_action_new (const gchar *name,
+ const gchar *label) G_GNUC_MALLOC;
+
+ThunarFile *thunar_open_with_action_get_file (ThunarOpenWithAction *open_with_action);
+void thunar_open_with_action_set_file (ThunarOpenWithAction *open_with_action,
+ ThunarFile *file);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_OPEN_WITH_ACTION_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-path-entry.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-path-entry.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-path-entry.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,763 @@
+/* $Id: thunar-path-entry.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * The icon code is based on ideas from SexyIconEntry, which was written by
+ * Christian Hammond <chipx86 at chipx86.com>.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#include <thunar/thunar-icon-factory.h>
+#include <thunar/thunar-path-entry.h>
+
+
+
+#define ICON_MARGIN (2)
+
+
+
+enum
+{
+ PROP_0,
+ PROP_CURRENT_FILE,
+};
+
+
+
+static void thunar_path_entry_class_init (ThunarPathEntryClass *klass);
+static void thunar_path_entry_editable_init (GtkEditableClass *iface);
+static void thunar_path_entry_init (ThunarPathEntry *path_entry);
+static void thunar_path_entry_finalize (GObject *object);
+static void thunar_path_entry_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void thunar_path_entry_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void thunar_path_entry_size_request (GtkWidget *widget,
+ GtkRequisition *requisition);
+static void thunar_path_entry_size_allocate (GtkWidget *widget,
+ GtkAllocation *allocation);
+static void thunar_path_entry_realize (GtkWidget *widget);
+static void thunar_path_entry_unrealize (GtkWidget *widget);
+static gboolean thunar_path_entry_focus (GtkWidget *widget,
+ GtkDirectionType direction);
+static gboolean thunar_path_entry_expose_event (GtkWidget *widget,
+ GdkEventExpose *event);
+static gboolean thunar_path_entry_button_press_event (GtkWidget *widget,
+ GdkEventButton *event);
+static gboolean thunar_path_entry_button_release_event (GtkWidget *widget,
+ GdkEventButton *event);
+static gboolean thunar_path_entry_motion_notify_event (GtkWidget *widget,
+ GdkEventMotion *event);
+static void thunar_path_entry_drag_data_get (GtkWidget *widget,
+ GdkDragContext *context,
+ GtkSelectionData *selection_data,
+ guint info,
+ guint time);
+static void thunar_path_entry_activate (GtkEntry *entry);
+static void thunar_path_entry_changed (GtkEditable *editable);
+static void thunar_path_entry_get_borders (ThunarPathEntry *path_entry,
+ gint *xborder,
+ gint *yborder);
+static void thunar_path_entry_get_text_area_size (ThunarPathEntry *path_entry,
+ gint *x,
+ gint *y,
+ gint *width,
+ gint *height);
+
+
+
+struct _ThunarPathEntryClass
+{
+ GtkEntryClass __parent__;
+};
+
+struct _ThunarPathEntry
+{
+ GtkEntry __parent__;
+
+ ThunarIconFactory *icon_factory;
+ ThunarFile *current_file;
+ GdkWindow *icon_area;
+
+ gint drag_button;
+ gint drag_x;
+ gint drag_y;
+};
+
+
+
+static const GtkTargetEntry drag_targets[] =
+{
+ { "text/uri-list", 0, 0, },
+};
+
+static GtkEditableClass *thunar_path_entry_editable_parent_iface;
+
+G_DEFINE_TYPE_WITH_CODE (ThunarPathEntry,
+ thunar_path_entry,
+ GTK_TYPE_ENTRY,
+ G_IMPLEMENT_INTERFACE (GTK_TYPE_EDITABLE,
+ thunar_path_entry_editable_init));
+
+
+
+static void
+thunar_path_entry_class_init (ThunarPathEntryClass *klass)
+{
+ GtkWidgetClass *gtkwidget_class;
+ GtkEntryClass *gtkentry_class;
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_path_entry_finalize;
+ gobject_class->get_property = thunar_path_entry_get_property;
+ gobject_class->set_property = thunar_path_entry_set_property;
+
+ gtkwidget_class = GTK_WIDGET_CLASS (klass);
+ gtkwidget_class->size_request = thunar_path_entry_size_request;
+ gtkwidget_class->size_allocate = thunar_path_entry_size_allocate;
+ gtkwidget_class->realize = thunar_path_entry_realize;
+ gtkwidget_class->unrealize = thunar_path_entry_unrealize;
+ gtkwidget_class->focus = thunar_path_entry_focus;
+ gtkwidget_class->expose_event = thunar_path_entry_expose_event;
+ gtkwidget_class->button_press_event = thunar_path_entry_button_press_event;
+ gtkwidget_class->button_release_event = thunar_path_entry_button_release_event;
+ gtkwidget_class->motion_notify_event = thunar_path_entry_motion_notify_event;
+ gtkwidget_class->drag_data_get = thunar_path_entry_drag_data_get;
+
+ gtkentry_class = GTK_ENTRY_CLASS (klass);
+ gtkentry_class->activate = thunar_path_entry_activate;
+
+ /**
+ * ThunarPathEntry:current-file:
+ *
+ * The #ThunarFile currently displayed by the path entry or %NULL.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_CURRENT_FILE,
+ g_param_spec_object ("current-file",
+ _("Current file"),
+ _("The currently displayed file"),
+ THUNAR_TYPE_FILE,
+ EXO_PARAM_READWRITE));
+
+ /**
+ * ThunarPathEntry:icon-size:
+ *
+ * The preferred size of the icon displayed in the path entry.
+ **/
+ gtk_widget_class_install_style_property (gtkwidget_class,
+ g_param_spec_int ("icon-size",
+ _("Icon size"),
+ _("The icon size for the path entry"),
+ 1, G_MAXINT, 16, EXO_PARAM_READABLE));
+}
+
+
+
+static void
+thunar_path_entry_editable_init (GtkEditableClass *iface)
+{
+ thunar_path_entry_editable_parent_iface = g_type_interface_peek_parent (iface);
+
+ iface->changed = thunar_path_entry_changed;
+}
+
+
+
+static void
+thunar_path_entry_init (ThunarPathEntry *path_entry)
+{
+ path_entry->drag_button = -1;
+}
+
+
+
+static void
+thunar_path_entry_finalize (GObject *object)
+{
+ ThunarPathEntry *path_entry = THUNAR_PATH_ENTRY (object);
+
+ if (G_LIKELY (path_entry->current_file != NULL))
+ g_object_unref (G_OBJECT (path_entry->current_file));
+
+ G_OBJECT_CLASS (thunar_path_entry_parent_class)->finalize (object);
+}
+
+
+
+static void
+thunar_path_entry_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarPathEntry *path_entry = THUNAR_PATH_ENTRY (object);
+
+ switch (prop_id)
+ {
+ case PROP_CURRENT_FILE:
+ g_value_set_object (value, thunar_path_entry_get_current_file (path_entry));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunar_path_entry_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarPathEntry *path_entry = THUNAR_PATH_ENTRY (object);
+
+ switch (prop_id)
+ {
+ case PROP_CURRENT_FILE:
+ thunar_path_entry_set_current_file (path_entry, g_value_get_object (value));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunar_path_entry_size_request (GtkWidget *widget,
+ GtkRequisition *requisition)
+{
+ ThunarPathEntry *path_entry = THUNAR_PATH_ENTRY (widget);
+ gint text_height;
+ gint icon_size;
+ gint xborder;
+ gint yborder;
+
+ gtk_widget_style_get (GTK_WIDGET (widget),
+ "icon-size", &icon_size,
+ NULL);
+
+ GTK_WIDGET_CLASS (thunar_path_entry_parent_class)->size_request (widget, requisition);
+
+ thunar_path_entry_get_text_area_size (path_entry, &xborder, &yborder, NULL, &text_height);
+
+ requisition->width += icon_size + xborder + 2 * ICON_MARGIN;
+ requisition->height = 2 * yborder + MAX (icon_size + 2 * ICON_MARGIN, text_height);
+}
+
+
+
+static void
+thunar_path_entry_size_allocate (GtkWidget *widget,
+ GtkAllocation *allocation)
+{
+ ThunarPathEntry *path_entry = THUNAR_PATH_ENTRY (widget);
+ GtkAllocation icon_allocation;
+ GtkAllocation text_allocation;
+ gint icon_size;
+ gint text_height;
+ gint xborder;
+ gint yborder;
+
+ gtk_widget_style_get (GTK_WIDGET (widget),
+ "icon-size", &icon_size,
+ NULL);
+
+ widget->allocation = *allocation;
+
+ thunar_path_entry_get_text_area_size (path_entry, &xborder, &yborder, NULL, &text_height);
+
+ text_allocation.y = yborder;
+ text_allocation.width = allocation->width - icon_size - 2 * xborder - 2 * ICON_MARGIN;
+ text_allocation.height = text_height;
+
+ icon_allocation.y = yborder;
+ icon_allocation.width = icon_size + 2 * ICON_MARGIN;
+ icon_allocation.height = MAX (icon_size + 2 * ICON_MARGIN, text_height);
+
+ if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL)
+ {
+ text_allocation.x = xborder;
+ icon_allocation.x = allocation->width - icon_allocation.width - xborder - 2 * ICON_MARGIN;
+ }
+ else
+ {
+ icon_allocation.x = xborder;
+ text_allocation.x = allocation->width - text_allocation.width - xborder;
+ }
+
+ GTK_WIDGET_CLASS (thunar_path_entry_parent_class)->size_allocate (widget, allocation);
+
+ if (GTK_WIDGET_REALIZED (widget))
+ {
+ gdk_window_move_resize (GTK_ENTRY (path_entry)->text_area,
+ text_allocation.x,
+ text_allocation.y,
+ text_allocation.width,
+ text_allocation.height);
+
+ gdk_window_move_resize (path_entry->icon_area,
+ icon_allocation.x,
+ icon_allocation.y,
+ icon_allocation.width,
+ icon_allocation.height);
+ }
+}
+
+
+
+static void
+thunar_path_entry_realize (GtkWidget *widget)
+{
+ ThunarPathEntry *path_entry = THUNAR_PATH_ENTRY (widget);
+ GdkWindowAttr attributes;
+ GtkIconTheme *icon_theme;
+ gint attributes_mask;
+ gint text_height;
+ gint icon_size;
+ gint spacing;
+
+ /* query the proper icon factory */
+ icon_theme = gtk_icon_theme_get_for_screen (gtk_widget_get_screen (widget));
+ path_entry->icon_factory = thunar_icon_factory_get_for_icon_theme (icon_theme);
+
+ gtk_widget_style_get (GTK_WIDGET (widget),
+ "icon-size", &icon_size,
+ NULL);
+
+ GTK_WIDGET_CLASS (thunar_path_entry_parent_class)->realize (widget);
+
+ thunar_path_entry_get_text_area_size (path_entry, NULL, NULL, NULL, &text_height);
+ spacing = widget->requisition.height -text_height;
+
+ attributes.window_type = GDK_WINDOW_CHILD;
+ attributes.wclass = GDK_INPUT_OUTPUT;
+ attributes.visual = gtk_widget_get_visual (widget);
+ attributes.colormap = gtk_widget_get_colormap (widget);
+ attributes.event_mask = gtk_widget_get_events (widget)
+ | GDK_BUTTON_PRESS_MASK
+ | GDK_BUTTON_RELEASE_MASK
+ | GDK_ENTER_NOTIFY_MASK
+ | GDK_EXPOSURE_MASK
+ | GDK_LEAVE_NOTIFY_MASK
+ | GDK_POINTER_MOTION_MASK;
+ attributes.x = widget->allocation.x + widget->allocation.width - icon_size - spacing;
+ attributes.y = widget->allocation.y + (widget->allocation.height - widget->requisition.height) / 2;
+ attributes.width = icon_size + spacing;
+ attributes.height = widget->requisition.height;
+ attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
+
+ path_entry->icon_area = gdk_window_new (widget->window, &attributes, attributes_mask);
+ gdk_window_set_user_data (path_entry->icon_area, widget);
+ gdk_window_set_background (path_entry->icon_area, &widget->style->base[GTK_WIDGET_STATE (widget)]);
+ gdk_window_show (path_entry->icon_area);
+
+ gtk_widget_queue_resize (widget);
+}
+
+
+
+static void
+thunar_path_entry_unrealize (GtkWidget *widget)
+{
+ ThunarPathEntry *path_entry = THUNAR_PATH_ENTRY (widget);
+
+ /* destroy the icon window */
+ gdk_window_set_user_data (path_entry->icon_area, NULL);
+ gdk_window_destroy (path_entry->icon_area);
+ path_entry->icon_area = NULL;
+
+ /* disconnect from the icon factory */
+ g_object_unref (G_OBJECT (path_entry->icon_factory));
+ path_entry->icon_factory = NULL;
+
+ /* let the GtkWidget class do the rest */
+ GTK_WIDGET_CLASS (thunar_path_entry_parent_class)->unrealize (widget);
+}
+
+
+
+static gboolean
+thunar_path_entry_focus (GtkWidget *widget,
+ GtkDirectionType direction)
+{
+ return GTK_WIDGET_CLASS (thunar_path_entry_parent_class)->focus (widget, direction);
+}
+
+
+
+static gboolean
+thunar_path_entry_expose_event (GtkWidget *widget,
+ GdkEventExpose *event)
+{
+ ThunarPathEntry *path_entry = THUNAR_PATH_ENTRY (widget);
+ GdkPixbuf *icon;
+ gint icon_height;
+ gint icon_width;
+ gint icon_size;
+ gint height;
+ gint width;
+
+ if (event->window == path_entry->icon_area)
+ {
+ gtk_widget_style_get (GTK_WIDGET (widget),
+ "icon-size", &icon_size,
+ NULL);
+
+ gdk_drawable_get_size (GDK_DRAWABLE (path_entry->icon_area), &width, &height);
+
+ gtk_paint_flat_box (widget->style, path_entry->icon_area,
+ GTK_WIDGET_STATE (widget), GTK_SHADOW_NONE,
+ NULL, widget, "entry_bg",
+ 0, 0, width, height);
+
+ if (path_entry->current_file == NULL)
+ icon = gtk_widget_render_icon (widget, GTK_STOCK_DIALOG_ERROR, GTK_ICON_SIZE_SMALL_TOOLBAR, "path_entry");
+ else
+ icon = thunar_icon_factory_load_file_icon (path_entry->icon_factory, path_entry->current_file, THUNAR_FILE_ICON_STATE_DEFAULT, icon_size);
+
+ if (G_LIKELY (icon != NULL))
+ {
+ icon_width = gdk_pixbuf_get_width (icon);
+ icon_height = gdk_pixbuf_get_height (icon);
+
+ gdk_draw_pixbuf (path_entry->icon_area,
+ widget->style->black_gc,
+ icon, 0, 0,
+ (width - icon_width) / 2,
+ (height - icon_height) / 2,
+ icon_width, icon_height,
+ GDK_RGB_DITHER_NORMAL, 0, 0);
+
+ g_object_unref (G_OBJECT (icon));
+ }
+ }
+ else
+ {
+ return GTK_WIDGET_CLASS (thunar_path_entry_parent_class)->expose_event (widget, event);
+ }
+
+ return TRUE;
+}
+
+
+
+static gboolean
+thunar_path_entry_button_press_event (GtkWidget *widget,
+ GdkEventButton *event)
+{
+ ThunarPathEntry *path_entry = THUNAR_PATH_ENTRY (widget);
+
+ if (event->window == path_entry->icon_area && event->button == 1)
+ {
+ /* consume the event */
+ path_entry->drag_button = event->button;
+ path_entry->drag_x = event->x;
+ path_entry->drag_x = event->y;
+ return TRUE;
+ }
+
+ return (*GTK_WIDGET_CLASS (thunar_path_entry_parent_class)->button_press_event) (widget, event);
+}
+
+
+
+static gboolean
+thunar_path_entry_button_release_event (GtkWidget *widget,
+ GdkEventButton *event)
+{
+ ThunarPathEntry *path_entry = THUNAR_PATH_ENTRY (widget);
+
+ if (event->window == path_entry->icon_area && event->button == path_entry->drag_button)
+ {
+ /* reset the drag button state */
+ path_entry->drag_button = -1;
+ return TRUE;
+ }
+
+ return (*GTK_WIDGET_CLASS (thunar_path_entry_parent_class)->button_release_event) (widget, event);
+}
+
+
+
+static gboolean
+thunar_path_entry_motion_notify_event (GtkWidget *widget,
+ GdkEventMotion *event)
+{
+ ThunarPathEntry *path_entry = THUNAR_PATH_ENTRY (widget);
+ GdkDragContext *context;
+ GtkTargetList *target_list;
+ GdkPixbuf *icon;
+ gint size;
+
+ if (event->window == path_entry->icon_area && path_entry->drag_button >= 0 && path_entry->current_file != NULL
+ && gtk_drag_check_threshold (widget, path_entry->drag_x, path_entry->drag_y, event->x, event->y))
+ {
+ /* create the drag context */
+ target_list = gtk_target_list_new (drag_targets, G_N_ELEMENTS (drag_targets));
+ context = gtk_drag_begin (widget, target_list, GDK_ACTION_COPY | GDK_ACTION_LINK, path_entry->drag_button, (GdkEvent *) event);
+ gtk_target_list_unref (target_list);
+
+ /* setup the drag icon (atleast 24px) */
+ gtk_widget_style_get (widget, "icon-size", &size, NULL);
+ icon = thunar_icon_factory_load_file_icon (path_entry->icon_factory, path_entry->current_file, THUNAR_FILE_ICON_STATE_DEFAULT, MAX (size, 24));
+ if (G_LIKELY (icon != NULL))
+ {
+ gtk_drag_set_icon_pixbuf (context, icon, 0, 0);
+ g_object_unref (G_OBJECT (icon));
+ }
+
+ /* reset the drag button state */
+ path_entry->drag_button = -1;
+
+ return TRUE;
+ }
+
+ return (*GTK_WIDGET_CLASS (thunar_path_entry_parent_class)->motion_notify_event) (widget, event);
+}
+
+
+
+static void
+thunar_path_entry_drag_data_get (GtkWidget *widget,
+ GdkDragContext *context,
+ GtkSelectionData *selection_data,
+ guint info,
+ guint time)
+{
+ ThunarPathEntry *path_entry = THUNAR_PATH_ENTRY (widget);
+ GList path_list;
+ gchar *uri_string;
+
+ /* verify that we actually display a path */
+ if (G_LIKELY (path_entry->current_file != NULL))
+ {
+ /* transform the path for the current file into an uri string list */
+ path_list.data = thunar_file_get_path (path_entry->current_file); path_list.next = path_list.prev = NULL;
+ uri_string = thunar_vfs_path_list_to_string (&path_list);
+
+ /* setup the uri list for the drag selection */
+ gtk_selection_data_set (selection_data, selection_data->target, 8, (guchar *) uri_string, strlen (uri_string));
+
+ /* clean up */
+ g_free (uri_string);
+ }
+}
+
+
+
+static void
+thunar_path_entry_activate (GtkEntry *entry)
+{
+ GTK_ENTRY_CLASS (thunar_path_entry_parent_class)->activate (entry);
+}
+
+
+
+static void
+thunar_path_entry_changed (GtkEditable *editable)
+{
+ ThunarPathEntry *path_entry = THUNAR_PATH_ENTRY (editable);
+ ThunarVfsPath *path;
+ const gchar *text;
+ ThunarFile *file;
+
+ /* determine the file for the current text */
+ text = gtk_entry_get_text (GTK_ENTRY (editable));
+ path = thunar_vfs_path_new (text, NULL);
+ file = (path != NULL) ? thunar_file_get_for_path (path, NULL) : NULL;
+
+ if (file != path_entry->current_file)
+ {
+ if (G_UNLIKELY (path_entry->current_file != NULL))
+ g_object_unref (G_OBJECT (path_entry->current_file));
+
+ path_entry->current_file = file;
+
+ if (G_UNLIKELY (file != NULL))
+ g_object_ref (G_OBJECT (file));
+
+ g_object_notify (G_OBJECT (path_entry), "current-file");
+ }
+
+ /* cleanup */
+ if (G_UNLIKELY (file != NULL))
+ g_object_unref (G_OBJECT (file));
+ if (G_UNLIKELY (path != NULL))
+ thunar_vfs_path_unref (path);
+}
+
+
+
+static void
+thunar_path_entry_get_borders (ThunarPathEntry *path_entry,
+ gint *xborder,
+ gint *yborder)
+{
+ gboolean interior_focus;
+ gint focus_width;
+
+ gtk_widget_style_get (GTK_WIDGET (path_entry),
+ "focus-line-width", &focus_width,
+ "interior-focus", &interior_focus,
+ NULL);
+
+ if (gtk_entry_get_has_frame (GTK_ENTRY (path_entry)))
+ {
+ *xborder = GTK_WIDGET (path_entry)->style->xthickness;
+ *yborder = GTK_WIDGET (path_entry)->style->ythickness;
+ }
+ else
+ {
+ *xborder = 0;
+ *yborder = 0;
+ }
+
+ if (!interior_focus)
+ {
+ *xborder += focus_width;
+ *yborder += focus_width;
+ }
+}
+
+
+
+static void
+thunar_path_entry_get_text_area_size (ThunarPathEntry *path_entry,
+ gint *x,
+ gint *y,
+ gint *width,
+ gint *height)
+{
+ GtkRequisition requisition;
+ GtkWidget *widget = GTK_WIDGET (path_entry);
+ gint xborder;
+ gint yborder;
+
+ gtk_widget_get_child_requisition (widget, &requisition);
+
+ thunar_path_entry_get_borders (path_entry, &xborder, &yborder);
+
+ if (x != NULL) *x = xborder;
+ if (y != NULL) *y = yborder;
+ if (width != NULL) *width = widget->allocation.width - xborder * 2;
+ if (height != NULL) *height = requisition.height - yborder * 2;
+}
+
+
+
+/**
+ * thunar_path_entry_new:
+ *
+ * Allocates a new #ThunarPathEntry instance.
+ *
+ * Return value: the newly allocated #ThunarPathEntry.
+ **/
+GtkWidget*
+thunar_path_entry_new (void)
+{
+ return g_object_new (THUNAR_TYPE_PATH_ENTRY, NULL);
+}
+
+
+
+/**
+ * thunar_path_entry_get_current_file:
+ * @path_entry : a #ThunarPathEntry.
+ *
+ * Returns the #ThunarFile currently being displayed by
+ * @path_entry or %NULL if @path_entry doesn't contain
+ * a valid #ThunarFile.
+ *
+ * Return value: the #ThunarFile for @path_entry or %NULL.
+ **/
+ThunarFile*
+thunar_path_entry_get_current_file (ThunarPathEntry *path_entry)
+{
+ g_return_val_if_fail (THUNAR_IS_PATH_ENTRY (path_entry), NULL);
+ return path_entry->current_file;
+}
+
+
+
+/**
+ * thunar_path_entry_set_current_file:
+ * @path_entry : a #ThunarPathEntry.
+ * @current_file : a #ThunarFile or %NULL.
+ *
+ * Sets the #ThunarFile that should be displayed by
+ * @path_entry to @current_file.
+ **/
+void
+thunar_path_entry_set_current_file (ThunarPathEntry *path_entry,
+ ThunarFile *current_file)
+{
+ ThunarVfsPath *path;
+ gchar *uri_string;
+ gchar text[THUNAR_VFS_PATH_MAXSTRLEN];
+
+ g_return_if_fail (THUNAR_IS_PATH_ENTRY (path_entry));
+ g_return_if_fail (current_file == NULL || THUNAR_IS_FILE (current_file));
+
+ path = (current_file != NULL) ? thunar_file_get_path (current_file) : NULL;
+ if (G_UNLIKELY (path == NULL || thunar_vfs_path_to_string (path, text, sizeof (text), NULL) < 0))
+ {
+ gtk_entry_set_text (GTK_ENTRY (path_entry), "");
+ }
+ else
+ {
+ /* check whether the path text is valid UTF8 */
+ if (g_utf8_validate (text, -1, NULL))
+ {
+ /* we'll display the path if we have valid UTF-8 */
+ gtk_entry_set_text (GTK_ENTRY (path_entry), text);
+ }
+ else
+ {
+ /* display the full URI */
+ uri_string = thunar_vfs_path_dup_uri (path);
+ gtk_entry_set_text (GTK_ENTRY (path_entry), uri_string);
+ g_free (uri_string);
+ }
+ }
+
+ gtk_editable_set_position (GTK_EDITABLE (path_entry), -1);
+
+ gtk_widget_queue_draw (GTK_WIDGET (path_entry));
+}
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-path-entry.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-path-entry.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-path-entry.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,47 @@
+/* $Id: thunar-path-entry.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_PATH_ENTRY_H__
+#define __THUNAR_PATH_ENTRY_H__
+
+#include <thunar/thunar-file.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarPathEntryClass ThunarPathEntryClass;
+typedef struct _ThunarPathEntry ThunarPathEntry;
+
+#define THUNAR_TYPE_PATH_ENTRY (thunar_path_entry_get_type ())
+#define THUNAR_PATH_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_PATH_ENTRY, ThunarPathEntry))
+#define THUNAR_PATH_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_PATH_ENTRY, ThunarPathEntryClass))
+#define THUNAR_IS_PATH_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_PATH_ENTRY))
+#define THUNAR_IS_PATH_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_PATH_ENTRY))
+#define THUNAR_PATH_ENTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_PATH_ENTRY, ThunarPathEntryClass))
+
+GType thunar_path_entry_get_type (void) G_GNUC_CONST;
+
+GtkWidget *thunar_path_entry_new (void);
+
+ThunarFile *thunar_path_entry_get_current_file (ThunarPathEntry *path_entry);
+void thunar_path_entry_set_current_file (ThunarPathEntry *path_entry,
+ ThunarFile *current_file);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_PATH_ENTRY_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-preferences.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-preferences.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-preferences.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,359 @@
+/* $Id: thunar-preferences.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#include <exo/exo.h>
+
+#include <tdb/tdb.h>
+
+#include <thunar/thunar-gobject-extensions.h>
+#include <thunar/thunar-preferences.h>
+
+
+
+/* Property identifiers */
+enum
+{
+ PROP_0,
+ PROP_DEFAULT_SHOW_HIDDEN,
+ PROP_LAST_LOCATION_BAR,
+ PROP_LAST_SIDE_PANE,
+ PROP_LAST_VIEW,
+ N_PROPERTIES,
+};
+
+
+
+static void thunar_preferences_class_init (ThunarPreferencesClass *klass);
+static void thunar_preferences_init (ThunarPreferences *preferences);
+static void thunar_preferences_finalize (GObject *object);
+static void thunar_preferences_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void thunar_preferences_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+
+
+
+struct _ThunarPreferencesClass
+{
+ GObjectClass __parent__;
+};
+
+struct _ThunarPreferences
+{
+ GObject __parent__;
+
+ /* the database context */
+ TDB_CONTEXT *context;
+};
+
+
+
+G_DEFINE_TYPE (ThunarPreferences, thunar_preferences, G_TYPE_OBJECT);
+
+
+
+static void
+thunar_preferences_class_init (ThunarPreferencesClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_preferences_finalize;
+ gobject_class->get_property = thunar_preferences_get_property;
+ gobject_class->set_property = thunar_preferences_set_property;
+
+ /* register additional transformation functions */
+ thunar_g_initialize_transformations ();
+
+ /**
+ * ThunarPreferences::default-show-hidden:
+ *
+ * Whether to show hidden files by default in new windows.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_DEFAULT_SHOW_HIDDEN,
+ g_param_spec_boolean ("default-show-hidden",
+ "default-show-hidden",
+ "default-show-hidden",
+ FALSE,
+ EXO_PARAM_READWRITE));
+
+ /**
+ * ThunarPreferences::last-location-bar:
+ *
+ * The name of the widget class, which should be used for the
+ * location bar in #ThunarWindow<!---->s or "void" to hide the
+ * location bar.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_LAST_LOCATION_BAR,
+ g_param_spec_string ("last-location-bar",
+ "last-location-bar",
+ "last-location-bar",
+ "ThunarLocationButtons",
+ EXO_PARAM_READWRITE));
+
+ /**
+ * ThunarPreferences::last-side-pane:
+ *
+ * The name of the widget class, which should be used for the
+ * side pane in #ThunarWindow<!---->s or "void" to hide the
+ * side pane completely.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_LAST_SIDE_PANE,
+ g_param_spec_string ("last-side-pane",
+ "last-side-pane",
+ "last-side-pane",
+ "ThunarFavouritesPane",
+ EXO_PARAM_READWRITE));
+
+ /**
+ * ThunarPreferences::last-view:
+ *
+ * The name of the widget class, which should be used for the
+ * main view component in #ThunarWindow<!---->s.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_LAST_VIEW,
+ g_param_spec_string ("last-view",
+ "last-view",
+ "last-view",
+ "ThunarIconView",
+ EXO_PARAM_READWRITE));
+}
+
+
+
+static void
+thunar_preferences_init (ThunarPreferences *preferences)
+{
+ gchar *path;
+
+ /* determine the path to the preferences database */
+ path = xfce_resource_save_location (XFCE_RESOURCE_CONFIG, "Thunar/preferences.tdb", TRUE);
+ if (G_UNLIKELY (path == NULL))
+ {
+ path = xfce_resource_save_location (XFCE_RESOURCE_CONFIG, "Thunar/", FALSE);
+ g_warning (_("Failed to create the Thunar configuration directory in %s"), path);
+ g_free (path);
+ return;
+ }
+
+ /* try to open the preferences database file */
+ preferences->context = tdb_open (path, 0, TDB_DEFAULT, O_CREAT | O_RDWR, 0600);
+ if (G_UNLIKELY (preferences->context == NULL))
+ g_warning (_("Failed to open preferences database in %s: %s"), path, g_strerror (errno));
+
+ /* release the path */
+ g_free (path);
+}
+
+
+
+static void
+thunar_preferences_finalize (GObject *object)
+{
+ ThunarPreferences *preferences = THUNAR_PREFERENCES (object);
+
+ /* close the database (if open) */
+ if (G_LIKELY (preferences->context != NULL))
+ tdb_close (preferences->context);
+
+ (*G_OBJECT_CLASS (thunar_preferences_parent_class)->finalize) (object);
+}
+
+
+
+static inline void
+value_take_string (GValue *value,
+ gpointer data)
+{
+ if (G_LIKELY (g_mem_is_system_malloc ()))
+ {
+ g_value_take_string (value, data);
+ }
+ else
+ {
+ g_value_set_string (value, data);
+ free (data);
+ }
+}
+
+
+
+static void
+thunar_preferences_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarPreferences *preferences = THUNAR_PREFERENCES (object);
+ TDB_DATA data;
+ GValue tmp = { 0, };
+
+ g_return_if_fail (prop_id > PROP_0 && prop_id < N_PROPERTIES);
+
+ /* check if we have a database handle */
+ if (G_LIKELY (preferences->context != NULL))
+ {
+ /* use the param spec's name as key */
+ data.dptr = pspec->name;
+ data.dsize = strlen (data.dptr);
+
+ /* lookup the data for the key */
+ data = tdb_fetch (preferences->context, data);
+ if (data.dptr != NULL && data.dsize > 0 && data.dptr[data.dsize - 1] == '\0')
+ {
+ /* check if we have a string or can transform */
+ if (G_VALUE_TYPE (value) == G_TYPE_STRING)
+ {
+ value_take_string (value, data.dptr);
+ return;
+ }
+ else if (g_value_type_transformable (G_TYPE_STRING, G_VALUE_TYPE (value)))
+ {
+ /* try to transform the string */
+ g_value_init (&tmp, G_TYPE_STRING);
+ value_take_string (&tmp, data.dptr);
+ if (g_value_transform (&tmp, value))
+ {
+ g_value_unset (&tmp);
+ return;
+ }
+ g_value_unset (&tmp);
+
+ /* data.dptr was freed by the g_value_unset() call */
+ data.dptr = NULL;
+ }
+ }
+
+ /* release the data (if any) */
+ if (data.dptr != NULL)
+ free (data.dptr);
+ }
+
+ /* set the default value */
+ g_param_value_set_default (pspec, value);
+}
+
+
+
+static void
+thunar_preferences_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarPreferences *preferences = THUNAR_PREFERENCES (object);
+ TDB_DATA data;
+ TDB_DATA key;
+ GValue dst = { 0, };
+
+ g_return_if_fail (prop_id > PROP_0 && prop_id < N_PROPERTIES);
+
+ /* save the new value if we have a database handle */
+ if (G_LIKELY (preferences->context != NULL))
+ {
+ /* generate the key for the operation */
+ key.dptr = pspec->name;
+ key.dsize = strlen (key.dptr);
+
+ /* check if we have the default value here */
+ if (g_param_value_defaults (pspec, (GValue *) value))
+ {
+ /* just delete as we don't store defaults */
+ tdb_delete (preferences->context, key);
+ }
+ else
+ {
+ /* transform the value to a string */
+ g_value_init (&dst, G_TYPE_STRING);
+ if (!g_value_transform (value, &dst))
+ g_warning ("Unable to transform %s to %s", g_type_name (G_VALUE_TYPE (value)), g_type_name (G_VALUE_TYPE (&dst)));
+
+ /* setup the data value (we also store the '\0' byte) */
+ data.dptr = (gchar *) g_value_get_string (&dst);
+ data.dsize = strlen (data.dptr) + 1;
+
+ /* perform the store operation */
+ tdb_store (preferences->context, key, data, TDB_REPLACE);
+
+ /* release the string */
+ g_value_unset (&dst);
+ }
+ }
+}
+
+
+
+/**
+ * thunar_preferences_get:
+ *
+ * Queries the global #ThunarPreferences instance, which is shared
+ * by all modules. The function automatically takes a reference
+ * for the caller, so you'll need to call g_object_unref() when
+ * you're done with it.
+ *
+ * Return value: the global #ThunarPreferences instance.
+ **/
+ThunarPreferences*
+thunar_preferences_get (void)
+{
+ static ThunarPreferences *preferences = NULL;
+
+ if (G_UNLIKELY (preferences == NULL))
+ {
+ preferences = g_object_new (THUNAR_TYPE_PREFERENCES, NULL);
+ g_object_add_weak_pointer (G_OBJECT (preferences),
+ (gpointer) &preferences);
+ }
+ else
+ {
+ g_object_ref (G_OBJECT (preferences));
+ }
+
+ return preferences;
+}
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-preferences.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-preferences.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-preferences.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,43 @@
+/* $Id: thunar-preferences.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_PREFERENCES_H__
+#define __THUNAR_PREFERENCES_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarPreferencesClass ThunarPreferencesClass;
+typedef struct _ThunarPreferences ThunarPreferences;
+
+#define THUNAR_TYPE_PREFERENCES (thunar_preferences_get_type ())
+#define THUNAR_PREFERENCES(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_PREFERENCES, ThunarPreferences))
+#define THUNAR_PREFERENCES_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_PREFERENCES, ThunarPreferencesClass))
+#define THUNAR_IS_PREFERENCES(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_PREFERENCES))
+#define THUNAR_IS_PREFERENCES_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_PREFERENCES))
+#define THUNAR_PREFERENCES_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_PREFERENCES, ThunarPreferencesClass))
+
+GType thunar_preferences_get_type (void) G_GNUC_CONST;
+
+ThunarPreferences *thunar_preferences_get (void);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_PREFERENCES_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-progress-dialog.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-progress-dialog.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-progress-dialog.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,583 @@
+/* $Id: thunar-progress-dialog.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_TIME_H
+#include <time.h>
+#endif
+
+#include <thunar/thunar-progress-dialog.h>
+
+
+
+enum
+{
+ PROP_0,
+ PROP_JOB,
+};
+
+
+
+static void thunar_progress_dialog_class_init (ThunarProgressDialogClass *klass);
+static void thunar_progress_dialog_init (ThunarProgressDialog *dialog);
+static void thunar_progress_dialog_dispose (GObject *object);
+static void thunar_progress_dialog_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void thunar_progress_dialog_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void thunar_progress_dialog_response (GtkDialog *dialog,
+ gint response);
+static ThunarVfsInteractiveJobResponse thunar_progress_dialog_ask (ThunarProgressDialog *dialog,
+ const gchar *message,
+ ThunarVfsInteractiveJobResponse choices,
+ ThunarVfsJob *job);
+static void thunar_progress_dialog_error (ThunarProgressDialog *dialog,
+ GError *error,
+ ThunarVfsJob *job);
+static void thunar_progress_dialog_finished (ThunarProgressDialog *dialog,
+ ThunarVfsJob *job);
+static void thunar_progress_dialog_info_message (ThunarProgressDialog *dialog,
+ const gchar *message,
+ ThunarVfsJob *job);
+static void thunar_progress_dialog_percent (ThunarProgressDialog *dialog,
+ gdouble percent,
+ ThunarVfsJob *job);
+
+
+
+struct _ThunarProgressDialogClass
+{
+ GtkDialogClass __parent__;
+};
+
+struct _ThunarProgressDialog
+{
+ GtkDialog __parent__;
+
+ ThunarVfsJob *job;
+
+ GTimeVal start_time;
+ GTimeVal last_update_time;
+
+ GtkWidget *progress_bar;
+ GtkWidget *progress_label;
+};
+
+
+
+G_DEFINE_TYPE (ThunarProgressDialog, thunar_progress_dialog, GTK_TYPE_DIALOG);
+
+
+
+static gboolean
+transform_to_markup (const GValue *src_value,
+ GValue *dst_value,
+ gpointer user_data)
+{
+ g_value_take_string (dst_value, g_strdup_printf ("<big>%s</big>", g_value_get_string (src_value)));
+ return TRUE;
+}
+
+
+
+static void
+thunar_progress_dialog_class_init (ThunarProgressDialogClass *klass)
+{
+ GtkDialogClass *gtkdialog_class;
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->dispose = thunar_progress_dialog_dispose;
+ gobject_class->get_property = thunar_progress_dialog_get_property;
+ gobject_class->set_property = thunar_progress_dialog_set_property;
+
+ gtkdialog_class = GTK_DIALOG_CLASS (klass);
+ gtkdialog_class->response = thunar_progress_dialog_response;
+
+ /**
+ * ThunarProgressDialog:job:
+ *
+ * The #ThunarVfsInteractiveJob, whose progress is displayed by
+ * this dialog, or %NULL if no job is set.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_JOB,
+ g_param_spec_object ("job",
+ _("Job"),
+ _("The job whose progress to display"),
+ THUNAR_VFS_TYPE_INTERACTIVE_JOB,
+ EXO_PARAM_READWRITE));
+}
+
+
+
+static void
+thunar_progress_dialog_init (ThunarProgressDialog *dialog)
+{
+ GtkWidget *table;
+ GtkWidget *image;
+ GtkWidget *label;
+
+ /* remember the current time as start time */
+ g_get_current_time (&dialog->start_time);
+
+ gtk_dialog_add_button (GTK_DIALOG (dialog), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
+ gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
+
+ gtk_window_set_default_size (GTK_WINDOW (dialog), 350, -1);
+
+ table = g_object_new (GTK_TYPE_TABLE,
+ "border-width", 6,
+ "n-columns", 3,
+ "n-rows", 3,
+ "row-spacing", 6,
+ "column-spacing", 5,
+ NULL);
+ gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), table, TRUE, TRUE, 0);
+ gtk_widget_show (table);
+
+ image = g_object_new (GTK_TYPE_IMAGE, "icon-size", GTK_ICON_SIZE_BUTTON, NULL);
+ gtk_table_attach (GTK_TABLE (table), image, 0, 1, 0, 1, GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 6);
+ gtk_widget_show (image);
+
+ label = g_object_new (GTK_TYPE_LABEL, "use-markup", TRUE, "xalign", 0.0f, NULL);
+ gtk_table_attach (GTK_TABLE (table), label, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 6);
+ gtk_widget_show (label);
+
+ dialog->progress_label = g_object_new (EXO_TYPE_ELLIPSIZED_LABEL, "ellipsize", EXO_PANGO_ELLIPSIZE_START, "xalign", 0.0f, NULL);
+ gtk_table_attach (GTK_TABLE (table), dialog->progress_label, 0, 2, 1, 2, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
+ gtk_widget_show (dialog->progress_label);
+
+ dialog->progress_bar = g_object_new (GTK_TYPE_PROGRESS_BAR, "text", " ", NULL);
+ gtk_table_attach (GTK_TABLE (table), dialog->progress_bar, 0, 2, 2, 3, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
+ gtk_widget_show (dialog->progress_bar);
+
+ /* connect the window icon name to the action image */
+ exo_binding_new (G_OBJECT (dialog), "icon-name",
+ G_OBJECT (image), "icon-name");
+
+ /* connect the window title to the action label */
+ exo_binding_new_full (G_OBJECT (dialog), "title",
+ G_OBJECT (label), "label",
+ transform_to_markup, NULL, NULL);
+}
+
+
+
+static void
+thunar_progress_dialog_dispose (GObject *object)
+{
+ ThunarProgressDialog *dialog = THUNAR_PROGRESS_DIALOG (object);
+
+ /* disconnect from the job (if any) */
+ thunar_progress_dialog_set_job (dialog, NULL);
+
+ (*G_OBJECT_CLASS (thunar_progress_dialog_parent_class)->dispose) (object);
+}
+
+
+
+static void
+thunar_progress_dialog_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarProgressDialog *dialog = THUNAR_PROGRESS_DIALOG (object);
+
+ switch (prop_id)
+ {
+ case PROP_JOB:
+ g_value_set_object (value, thunar_progress_dialog_get_job (dialog));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunar_progress_dialog_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarProgressDialog *dialog = THUNAR_PROGRESS_DIALOG (object);
+
+ switch (prop_id)
+ {
+ case PROP_JOB:
+ thunar_progress_dialog_set_job (dialog, g_value_get_object (value));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static ThunarVfsInteractiveJobResponse
+thunar_progress_dialog_ask (ThunarProgressDialog *dialog,
+ const gchar *message,
+ ThunarVfsInteractiveJobResponse choices,
+ ThunarVfsJob *job)
+{
+ const gchar *mnemonic;
+ GtkWidget *question;
+ GtkWidget *hbox;
+ GtkWidget *image;
+ GtkWidget *label;
+ GtkWidget *button;
+ gint response;
+ gint n;
+
+ g_return_val_if_fail (THUNAR_IS_PROGRESS_DIALOG (dialog), THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_CANCEL);
+ g_return_val_if_fail (g_utf8_validate (message, -1, NULL), THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_CANCEL);
+ g_return_val_if_fail (THUNAR_VFS_IS_INTERACTIVE_JOB (job), THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_CANCEL);
+ g_return_val_if_fail (dialog->job == job, THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_CANCEL);
+
+ /* be sure to display the progress dialog prior to opening the question dialog */
+ gtk_widget_show_now (GTK_WIDGET (dialog));
+
+ question = g_object_new (GTK_TYPE_DIALOG,
+ "has-separator", FALSE,
+ "resizable", FALSE,
+ "title", _("Question"),
+ NULL);
+ gtk_window_set_transient_for (GTK_WINDOW (question), GTK_WINDOW (dialog));
+
+ hbox = g_object_new (GTK_TYPE_HBOX, "border-width", 12, "spacing", 12, NULL);
+ gtk_box_pack_start (GTK_BOX (GTK_DIALOG (question)->vbox), hbox, FALSE, FALSE, 0);
+ gtk_widget_show (hbox);
+
+ image = gtk_image_new_from_stock (GTK_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG);
+ gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0);
+ gtk_widget_show (image);
+
+ label = g_object_new (GTK_TYPE_LABEL, "label", message, "xalign", 0, "yalign", 0, NULL);
+ gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
+ gtk_widget_show (label);
+
+ /* add the buttons based on the possible choices */
+ for (n = 3; n >= 0; --n)
+ {
+ response = choices & (1 << n);
+ if (response == 0)
+ continue;
+
+ switch (response)
+ {
+ case THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_YES:
+ mnemonic = _("_Yes");
+ break;
+
+ case THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_YES_ALL:
+ mnemonic = _("Yes to _all");
+ break;
+
+ case THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_NO:
+ mnemonic = _("_No");
+ break;
+
+ case THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_CANCEL:
+ mnemonic = _("_Cancel");
+ break;
+
+ default:
+ g_assert_not_reached ();
+ break;
+ }
+
+ button = gtk_button_new_with_mnemonic (mnemonic);
+ GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
+ gtk_dialog_add_action_widget (GTK_DIALOG (question), button, response);
+ gtk_widget_show (button);
+
+ gtk_dialog_set_default_response (GTK_DIALOG (question), response);
+ }
+
+ /* run the question */
+ response = gtk_dialog_run (GTK_DIALOG (question));
+ gtk_widget_destroy (question);
+
+ /* transform the result as required */
+ if (G_UNLIKELY (response <= 0))
+ response = THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_CANCEL;
+
+ return response;
+}
+
+
+
+static void
+thunar_progress_dialog_error (ThunarProgressDialog *dialog,
+ GError *error,
+ ThunarVfsJob *job)
+{
+ GtkWidget *message;
+
+ g_return_if_fail (THUNAR_IS_PROGRESS_DIALOG (dialog));
+ g_return_if_fail (error != NULL && error->message != NULL);
+ g_return_if_fail (THUNAR_VFS_IS_INTERACTIVE_JOB (job));
+ g_return_if_fail (dialog->job == job);
+
+ /* be sure to display the progress dialog prior to opening the error dialog */
+ gtk_widget_show_now (GTK_WIDGET (dialog));
+
+ message = gtk_message_dialog_new (GTK_WINDOW (dialog),
+ GTK_DIALOG_MODAL |
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_OK,
+ "%s", error->message);
+ gtk_dialog_run (GTK_DIALOG (message));
+ gtk_widget_destroy (message);
+}
+
+
+
+static void
+thunar_progress_dialog_finished (ThunarProgressDialog *dialog,
+ ThunarVfsJob *job)
+{
+ g_return_if_fail (THUNAR_IS_PROGRESS_DIALOG (dialog));
+ g_return_if_fail (THUNAR_VFS_IS_INTERACTIVE_JOB (job));
+ g_return_if_fail (dialog->job == job);
+
+ gtk_dialog_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT);
+}
+
+
+
+static void
+thunar_progress_dialog_info_message (ThunarProgressDialog *dialog,
+ const gchar *message,
+ ThunarVfsJob *job)
+{
+ g_return_if_fail (THUNAR_IS_PROGRESS_DIALOG (dialog));
+ g_return_if_fail (g_utf8_validate (message, -1, NULL));
+ g_return_if_fail (THUNAR_VFS_IS_INTERACTIVE_JOB (job));
+ g_return_if_fail (dialog->job == job);
+
+ gtk_label_set_text (GTK_LABEL (dialog->progress_label), message);
+}
+
+
+
+static inline guint64
+time_diff (const GTimeVal *now,
+ const GTimeVal *last)
+{
+ return ((guint64) now->tv_sec - last->tv_sec) * G_USEC_PER_SEC
+ + ((guint64) last->tv_usec - last->tv_usec);
+}
+
+
+
+static void
+thunar_progress_dialog_percent (ThunarProgressDialog *dialog,
+ gdouble percent,
+ ThunarVfsJob *job)
+{
+ GTimeVal current_time;
+ gulong remaining_time;
+ gulong elapsed_time;
+ gchar text[32];
+
+ g_return_if_fail (THUNAR_IS_PROGRESS_DIALOG (dialog));
+ g_return_if_fail (percent >= 0.0 && percent <= 100.0);
+ g_return_if_fail (THUNAR_VFS_IS_INTERACTIVE_JOB (job));
+ g_return_if_fail (dialog->job == job);
+
+ gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (dialog->progress_bar), percent / 100.0);
+
+ /* check if we should update the time display (every 400ms) */
+ g_get_current_time (¤t_time);
+ if (time_diff (¤t_time, &dialog->last_update_time) > 400 * 1000)
+ {
+ /* calculate the remaining time (in seconds) */
+ elapsed_time = time_diff (¤t_time, &dialog->start_time) / 1000;
+ remaining_time = ((100 * elapsed_time) / percent - elapsed_time) / 1000;
+
+ /* setup the time label */
+ if (G_LIKELY (remaining_time > 0))
+ {
+ /* format the time text */
+ if (remaining_time > 60 * 60)
+ {
+ remaining_time = (gulong) (remaining_time / (60 * 60));
+ g_snprintf (text, sizeof (text), ngettext ("(%lu hour remaining)", "(%lu hours remaining)", remaining_time), remaining_time);
+ }
+ else if (remaining_time > 60)
+ {
+ remaining_time = (gulong) (remaining_time / 60);
+ g_snprintf (text, sizeof (text), ngettext ("(%lu minute remaining)", "(%lu minutes remaining)", remaining_time), remaining_time);
+ }
+ else
+ {
+ remaining_time = remaining_time;
+ g_snprintf (text, sizeof (text), ngettext ("(%lu second remaining)", "(%lu seconds remaining)", remaining_time), remaining_time);
+ }
+
+ /* apply the time text */
+ gtk_progress_bar_set_text (GTK_PROGRESS_BAR (dialog->progress_bar), text);
+ }
+ else
+ {
+ /* display an empty label */
+ gtk_progress_bar_set_text (GTK_PROGRESS_BAR (dialog->progress_bar), " ");
+ }
+
+ /* remember the current time as last update time */
+ dialog->last_update_time = current_time;
+ }
+}
+
+
+
+static void
+thunar_progress_dialog_response (GtkDialog *dialog,
+ gint response)
+{
+ /* cancel the job appropriately */
+ switch (response)
+ {
+ case GTK_RESPONSE_NONE:
+ case GTK_RESPONSE_REJECT:
+ case GTK_RESPONSE_DELETE_EVENT:
+ case GTK_RESPONSE_CANCEL:
+ case GTK_RESPONSE_CLOSE:
+ case GTK_RESPONSE_NO:
+ if (G_LIKELY (THUNAR_PROGRESS_DIALOG (dialog)->job != NULL))
+ thunar_vfs_job_cancel (THUNAR_PROGRESS_DIALOG (dialog)->job);
+ break;
+ }
+
+ if (GTK_DIALOG_CLASS (thunar_progress_dialog_parent_class)->response != NULL)
+ (*GTK_DIALOG_CLASS (thunar_progress_dialog_parent_class)->response) (dialog, response);
+}
+
+
+
+/**
+ * thunar_progress_dialog_new:
+ *
+ * Allocates a new #ThunarProgressDialog.
+ *
+ * Return value: the newly allocated #ThunarProgressDialog.
+ **/
+GtkWidget*
+thunar_progress_dialog_new (void)
+{
+ return thunar_progress_dialog_new_with_job (NULL);
+}
+
+
+
+/**
+ * thunar_progress_dialog_new_with_job:
+ * @job : a #ThunarVfsInteractiveJob or %NULL.
+ *
+ * Allocates a new #ThunarProgressDialog and associates it with
+ * the @job.
+ *
+ * Return value: the newly allocated #ThunarProgressDialog.
+ **/
+GtkWidget*
+thunar_progress_dialog_new_with_job (ThunarVfsJob *job)
+{
+ g_return_val_if_fail (job == NULL || THUNAR_VFS_IS_INTERACTIVE_JOB (job), NULL);
+ return g_object_new (THUNAR_TYPE_PROGRESS_DIALOG, "job", job, NULL);
+}
+
+
+
+/**
+ * thunar_progress_dialog_get_job:
+ * @dialog : a #ThunarProgressDialog.
+ *
+ * Returns the #ThunarVfsInteractiveJob associated with @dialog
+ * or %NULL if no job is currently associated with @dialog.
+ *
+ * Return value: the job associated with @dialog or %NULL.
+ **/
+ThunarVfsJob*
+thunar_progress_dialog_get_job (ThunarProgressDialog *dialog)
+{
+ g_return_val_if_fail (THUNAR_IS_PROGRESS_DIALOG (dialog), NULL);
+ return dialog->job;
+}
+
+
+
+/**
+ * thunar_progress_dialog_set_job:
+ * @dialog : a #ThunarProgressDialog.
+ * @job : a #ThunarVfsInteractiveJob or %NULL.
+ *
+ * Associates @job with @dialog.
+ **/
+void
+thunar_progress_dialog_set_job (ThunarProgressDialog *dialog,
+ ThunarVfsJob *job)
+{
+ g_return_if_fail (THUNAR_IS_PROGRESS_DIALOG (dialog));
+ g_return_if_fail (job == NULL || THUNAR_VFS_IS_INTERACTIVE_JOB (job));
+
+ /* check if we're already on that job */
+ if (G_UNLIKELY (dialog->job == job))
+ return;
+
+ /* disconnect from the previous job */
+ if (G_LIKELY (dialog->job != NULL))
+ {
+ g_signal_handlers_disconnect_matched (dialog->job, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, dialog);
+ g_object_unref (G_OBJECT (dialog->job));
+ }
+
+ /* activate the new job */
+ dialog->job = job;
+
+ /* connect to the new job */
+ if (G_LIKELY (job != NULL))
+ {
+ g_object_ref (G_OBJECT (job));
+
+ g_signal_connect_swapped (job, "ask", G_CALLBACK (thunar_progress_dialog_ask), dialog);
+ g_signal_connect_swapped (job, "error", G_CALLBACK (thunar_progress_dialog_error), dialog);
+ g_signal_connect_swapped (job, "finished", G_CALLBACK (thunar_progress_dialog_finished), dialog);
+ g_signal_connect_swapped (job, "info-message", G_CALLBACK (thunar_progress_dialog_info_message), dialog);
+ g_signal_connect_swapped (job, "percent", G_CALLBACK (thunar_progress_dialog_percent), dialog);
+ }
+
+ g_object_notify (G_OBJECT (dialog), "job");
+}
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-progress-dialog.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-progress-dialog.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-progress-dialog.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,48 @@
+/* $Id: thunar-progress-dialog.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_PROGRESS_DIALOG_H__
+#define __THUNAR_PROGRESS_DIALOG_H__
+
+#include <thunar-vfs/thunar-vfs.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarProgressDialogClass ThunarProgressDialogClass;
+typedef struct _ThunarProgressDialog ThunarProgressDialog;
+
+#define THUNAR_TYPE_PROGRESS_DIALOG (thunar_progress_dialog_get_type ())
+#define THUNAR_PROGRESS_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_PROGRESS_DIALOG, ThunarProgressDialog))
+#define THUNAR_PROGRESS_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_PROGRESS_DIALOG, ThunarProgressDialogClass))
+#define THUNAR_IS_PROGRESS_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_PROGRESS_DIALOG))
+#define THUNAR_IS_PROGRESS_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_PROGRESS_DIALOG))
+#define THUNAR_PROGRESS_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_PROGRESS_DIALOG, ThunarProgressDialogClass))
+
+GType thunar_progress_dialog_get_type (void) G_GNUC_CONST;
+
+GtkWidget *thunar_progress_dialog_new (void) G_GNUC_MALLOC;
+GtkWidget *thunar_progress_dialog_new_with_job (ThunarVfsJob *job) G_GNUC_MALLOC;
+
+ThunarVfsJob *thunar_progress_dialog_get_job (ThunarProgressDialog *dialog);
+void thunar_progress_dialog_set_job (ThunarProgressDialog *dialog,
+ ThunarVfsJob *job);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_PROGRESS_DIALOG_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-properties-dialog.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-properties-dialog.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-properties-dialog.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,802 @@
+/* $Id: thunar-properties-dialog.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#include <gdk/gdkkeysyms.h>
+
+#include <thunar/thunar-dialogs.h>
+#include <thunar/thunar-emblem-chooser.h>
+#include <thunar/thunar-extension-manager.h>
+#include <thunar/thunar-icon-factory.h>
+#include <thunar/thunar-properties-dialog.h>
+
+#include <thunarx/thunarx.h>
+
+
+
+enum
+{
+ PROP_0,
+ PROP_FILE,
+};
+
+
+
+static void thunar_properties_dialog_class_init (ThunarPropertiesDialogClass *klass);
+static void thunar_properties_dialog_init (ThunarPropertiesDialog *dialog);
+static void thunar_properties_dialog_dispose (GObject *object);
+static void thunar_properties_dialog_finalize (GObject *object);
+static void thunar_properties_dialog_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void thunar_properties_dialog_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static gboolean thunar_properties_dialog_key_press_event (GtkWidget *widget,
+ GdkEventKey *event);
+static void thunar_properties_dialog_response (GtkDialog *dialog,
+ gint response);
+static void thunar_properties_dialog_activate (GtkWidget *entry,
+ ThunarPropertiesDialog *dialog);
+static gboolean thunar_properties_dialog_focus_out_event (GtkWidget *entry,
+ GdkEventFocus *event,
+ ThunarPropertiesDialog *dialog);
+static void thunar_properties_dialog_update (ThunarPropertiesDialog *dialog);
+static void thunar_properties_dialog_update_extensions (ThunarPropertiesDialog *dialog);
+static gboolean thunar_properties_dialog_rename_idle (gpointer user_data);
+static void thunar_properties_dialog_rename_idle_destroy (gpointer user_data);
+
+
+
+struct _ThunarPropertiesDialogClass
+{
+ GtkDialogClass __parent__;
+};
+
+struct _ThunarPropertiesDialog
+{
+ GtkDialog __parent__;
+
+ ThunarExtensionManager *extension_manager;
+ GList *extension_pages;
+
+ ThunarVfsVolumeManager *volume_manager;
+ ThunarFile *file;
+
+ GtkWidget *notebook;
+ GtkWidget *icon_image;
+ GtkWidget *name_entry;
+ GtkWidget *kind_label;
+ GtkWidget *modified_label;
+ GtkWidget *accessed_label;
+ GtkWidget *volume_image;
+ GtkWidget *volume_label;
+ GtkWidget *size_label;
+
+ gint rename_idle_id;
+};
+
+
+
+G_DEFINE_TYPE (ThunarPropertiesDialog, thunar_properties_dialog, GTK_TYPE_DIALOG);
+
+
+
+static void
+thunar_properties_dialog_class_init (ThunarPropertiesDialogClass *klass)
+{
+ GtkDialogClass *gtkdialog_class;
+ GtkWidgetClass *gtkwidget_class;
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->dispose = thunar_properties_dialog_dispose;
+ gobject_class->finalize = thunar_properties_dialog_finalize;
+ gobject_class->get_property = thunar_properties_dialog_get_property;
+ gobject_class->set_property = thunar_properties_dialog_set_property;
+
+ gtkwidget_class = GTK_WIDGET_CLASS (klass);
+ gtkwidget_class->key_press_event = thunar_properties_dialog_key_press_event;
+
+ gtkdialog_class = GTK_DIALOG_CLASS (klass);
+ gtkdialog_class->response = thunar_properties_dialog_response;
+
+ /**
+ * ThunarPropertiesDialog:file:
+ *
+ * The #ThunarFile whose properties are currently displayed by
+ * this #ThunarPropertiesDialog. This property may also be %NULL
+ * in which case nothing is displayed.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_FILE,
+ g_param_spec_object ("file",
+ _("File"),
+ _("The file displayed by the dialog"),
+ THUNAR_TYPE_FILE,
+ EXO_PARAM_READWRITE));
+}
+
+
+
+static void
+thunar_properties_dialog_init (ThunarPropertiesDialog *dialog)
+{
+ GtkWidget *chooser;
+ GtkWidget *table;
+ GtkWidget *label;
+ GtkWidget *box;
+ GtkWidget *spacer;
+ gchar *text;
+ gint row = 0;
+
+ dialog->extension_manager = thunar_extension_manager_get_default ();
+ dialog->volume_manager = thunar_vfs_volume_manager_get_default ();
+ dialog->rename_idle_id = -1;
+
+ gtk_dialog_add_buttons (GTK_DIALOG (dialog),
+ GTK_STOCK_HELP, GTK_RESPONSE_HELP,
+ GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
+ NULL);
+ gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
+
+ dialog->notebook = gtk_notebook_new ();
+ gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), dialog->notebook, TRUE, TRUE, 0);
+ gtk_widget_show (dialog->notebook);
+
+ table = g_object_new (GTK_TYPE_TABLE,
+ "border-width", 6,
+ "column-spacing", 12,
+ "row-spacing", 6,
+ NULL);
+ label = gtk_label_new (_("General"));
+ gtk_notebook_append_page (GTK_NOTEBOOK (dialog->notebook), table, label);
+ gtk_widget_show (label);
+ gtk_widget_show (table);
+
+
+ /*
+ First box (icon, name)
+ */
+ box = gtk_hbox_new (FALSE, 6);
+ gtk_table_attach (GTK_TABLE (table), box, 0, 1, row, row + 1, GTK_FILL, GTK_FILL, 0, 0);
+ gtk_widget_show (box);
+
+ dialog->icon_image = gtk_image_new ();
+ gtk_box_pack_start (GTK_BOX (box), dialog->icon_image, FALSE, TRUE, 0);
+ gtk_widget_show (dialog->icon_image);
+
+ text = g_strdup_printf ("<b>%s</b>", _("Name:"));
+ label = g_object_new (GTK_TYPE_LABEL, "label", text, "use-markup", TRUE, "xalign", 1.0f, NULL);
+ gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0);
+ gtk_widget_show (label);
+ g_free (text);
+
+ dialog->name_entry = g_object_new (GTK_TYPE_ENTRY, "editable", FALSE, NULL);
+ g_signal_connect (G_OBJECT (dialog->name_entry), "activate", G_CALLBACK (thunar_properties_dialog_activate), dialog);
+ g_signal_connect (G_OBJECT (dialog->name_entry), "focus-out-event", G_CALLBACK (thunar_properties_dialog_focus_out_event), dialog);
+ gtk_table_attach (GTK_TABLE (table), dialog->name_entry, 1, 2, row, row + 1, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
+ gtk_widget_show (dialog->name_entry);
+
+ ++row;
+
+
+ spacer = g_object_new (GTK_TYPE_ALIGNMENT, "height-request", 12, NULL);
+ gtk_table_attach (GTK_TABLE (table), spacer, 0, 2, row, row + 1, GTK_FILL, GTK_FILL, 0, 0);
+ gtk_widget_show (spacer);
+
+ ++row;
+
+
+ /*
+ Second box (kind)
+ */
+ text = g_strdup_printf ("<b>%s</b>", _("Kind:"));
+ label = g_object_new (GTK_TYPE_LABEL, "label", text, "use-markup", TRUE, "xalign", 1.0f, NULL);
+ exo_binding_new (G_OBJECT (label), "visible", G_OBJECT (spacer), "visible");
+ gtk_table_attach (GTK_TABLE (table), label, 0, 1, row, row + 1, GTK_FILL, GTK_FILL, 0, 0);
+ gtk_widget_show (label);
+ g_free (text);
+
+ dialog->kind_label = g_object_new (GTK_TYPE_LABEL, "xalign", 0.0f, NULL);
+ exo_binding_new (G_OBJECT (dialog->kind_label), "visible", G_OBJECT (label), "visible");
+ gtk_table_attach (GTK_TABLE (table), dialog->kind_label, 1, 2, row, row + 1, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
+ gtk_widget_show (dialog->kind_label);
+
+ ++row;
+
+
+ spacer = g_object_new (GTK_TYPE_ALIGNMENT, "height-request", 12, NULL);
+ gtk_table_attach (GTK_TABLE (table), spacer, 0, 2, row, row + 1, GTK_FILL, GTK_FILL, 0, 0);
+ gtk_widget_show (spacer);
+
+ ++row;
+
+
+ /*
+ Third box (modified, accessed)
+ */
+ text = g_strdup_printf ("<b>%s</b>", _("Modified:"));
+ label = g_object_new (GTK_TYPE_LABEL, "label", text, "use-markup", TRUE, "xalign", 1.0f, NULL);
+ gtk_table_attach (GTK_TABLE (table), label, 0, 1, row, row + 1, GTK_FILL, GTK_FILL, 0, 0);
+ gtk_widget_show (label);
+ g_free (text);
+
+ dialog->modified_label = g_object_new (GTK_TYPE_LABEL, "xalign", 0.0f, NULL);
+ exo_binding_new (G_OBJECT (dialog->modified_label), "visible", G_OBJECT (label), "visible");
+ gtk_table_attach (GTK_TABLE (table), dialog->modified_label, 1, 2, row, row + 1, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
+ gtk_widget_show (dialog->modified_label);
+
+ ++row;
+
+ text = g_strdup_printf ("<b>%s</b>", _("Accessed:"));
+ label = g_object_new (GTK_TYPE_LABEL, "label", text, "use-markup", TRUE, "xalign", 1.0f, NULL);
+ gtk_table_attach (GTK_TABLE (table), label, 0, 1, row, row + 1, GTK_FILL, GTK_FILL, 0, 0);
+ gtk_widget_show (label);
+ g_free (text);
+
+ dialog->accessed_label = g_object_new (GTK_TYPE_LABEL, "xalign", 0.0f, NULL);
+ exo_binding_new (G_OBJECT (dialog->accessed_label), "visible", G_OBJECT (label), "visible");
+ gtk_table_attach (GTK_TABLE (table), dialog->accessed_label, 1, 2, row, row + 1, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
+ gtk_widget_show (dialog->accessed_label);
+
+ ++row;
+
+
+ spacer = g_object_new (GTK_TYPE_ALIGNMENT, "height-request", 12, NULL);
+ gtk_table_attach (GTK_TABLE (table), spacer, 0, 2, row, row + 1, GTK_FILL, GTK_FILL, 0, 0);
+ gtk_widget_show (spacer);
+
+ ++row;
+
+
+ /*
+ Fourth box (volume, size)
+ */
+ text = g_strdup_printf ("<b>%s</b>", _("Volume:"));
+ label = g_object_new (GTK_TYPE_LABEL, "label", text, "use-markup", TRUE, "xalign", 1.0f, NULL);
+ gtk_table_attach (GTK_TABLE (table), label, 0, 1, row, row + 1, GTK_FILL, GTK_FILL, 0, 0);
+ gtk_widget_show (label);
+ g_free (text);
+
+ box = gtk_hbox_new (FALSE, 6);
+ exo_binding_new (G_OBJECT (box), "visible", G_OBJECT (label), "visible");
+ gtk_table_attach (GTK_TABLE (table), box, 1, 2, row, row + 1, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
+ gtk_widget_show (box);
+
+ dialog->volume_image = gtk_image_new ();
+ exo_binding_new (G_OBJECT (dialog->volume_image), "visible", G_OBJECT (box), "visible");
+ gtk_box_pack_start (GTK_BOX (box), dialog->volume_image, FALSE, TRUE, 0);
+ gtk_widget_show (dialog->volume_image);
+
+ dialog->volume_label = g_object_new (GTK_TYPE_LABEL, "xalign", 0.0f, NULL);
+ exo_binding_new (G_OBJECT (dialog->volume_label), "visible", G_OBJECT (dialog->volume_image), "visible");
+ gtk_box_pack_start (GTK_BOX (box), dialog->volume_label, TRUE, TRUE, 0);
+ gtk_widget_show (dialog->volume_label);
+
+ ++row;
+
+ text = g_strdup_printf ("<b>%s</b>", _("Size:"));
+ label = g_object_new (GTK_TYPE_LABEL, "label", text, "use-markup", TRUE, "xalign", 1.0f, NULL);
+ gtk_table_attach (GTK_TABLE (table), label, 0, 1, row, row + 1, GTK_FILL, GTK_FILL, 0, 0);
+ gtk_widget_show (label);
+ g_free (text);
+
+ dialog->size_label = g_object_new (GTK_TYPE_LABEL, "xalign", 0.0f, NULL);
+ exo_binding_new (G_OBJECT (dialog->size_label), "visible", G_OBJECT (label), "visible");
+ gtk_table_attach (GTK_TABLE (table), dialog->size_label, 1, 2, row, row + 1, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
+ gtk_widget_show (dialog->size_label);
+
+ ++row;
+
+
+ spacer = g_object_new (GTK_TYPE_ALIGNMENT, "height-request", 12, NULL);
+ gtk_table_attach (GTK_TABLE (table), spacer, 0, 2, row, row + 1, GTK_FILL, GTK_FILL, 0, 0);
+ gtk_widget_show (spacer);
+
+ ++row;
+
+
+ /*
+ Emblem chooser
+ */
+ label = gtk_label_new (_("Emblems"));
+ chooser = thunar_emblem_chooser_new ();
+ exo_binding_new (G_OBJECT (dialog), "file", G_OBJECT (chooser), "file");
+ gtk_notebook_append_page (GTK_NOTEBOOK (dialog->notebook), chooser, label);
+ gtk_widget_show (chooser);
+ gtk_widget_show (label);
+}
+
+
+
+static void
+thunar_properties_dialog_dispose (GObject *object)
+{
+ ThunarPropertiesDialog *dialog = THUNAR_PROPERTIES_DIALOG (object);
+
+ /* reset the file displayed by the dialog */
+ thunar_properties_dialog_set_file (dialog, NULL);
+
+ (*G_OBJECT_CLASS (thunar_properties_dialog_parent_class)->dispose) (object);
+}
+
+
+
+static void
+thunar_properties_dialog_finalize (GObject *object)
+{
+ ThunarPropertiesDialog *dialog = THUNAR_PROPERTIES_DIALOG (object);
+
+ /* release the extension property pages */
+ g_list_foreach (dialog->extension_pages, (GFunc) g_object_unref, NULL);
+ g_list_free (dialog->extension_pages);
+
+ /* drop the reference on the extension manager */
+ g_object_unref (G_OBJECT (dialog->extension_manager));
+
+ /* drop the reference on the volume manager */
+ g_object_unref (G_OBJECT (dialog->volume_manager));
+
+ /* be sure to cancel any pending rename idle source */
+ if (G_UNLIKELY (dialog->rename_idle_id >= 0))
+ g_source_remove (dialog->rename_idle_id);
+
+ (*G_OBJECT_CLASS (thunar_properties_dialog_parent_class)->finalize) (object);
+}
+
+
+
+static void
+thunar_properties_dialog_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarPropertiesDialog *dialog = THUNAR_PROPERTIES_DIALOG (object);
+
+ switch (prop_id)
+ {
+ case PROP_FILE:
+ g_value_set_object (value, thunar_properties_dialog_get_file (dialog));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunar_properties_dialog_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarPropertiesDialog *dialog = THUNAR_PROPERTIES_DIALOG (object);
+
+ switch (prop_id)
+ {
+ case PROP_FILE:
+ thunar_properties_dialog_set_file (dialog, g_value_get_object (value));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static gboolean
+thunar_properties_dialog_key_press_event (GtkWidget *widget,
+ GdkEventKey *event)
+{
+ if (event->keyval == GDK_Escape)
+ {
+ gtk_widget_destroy (widget);
+ return TRUE;
+ }
+
+ return GTK_WIDGET_CLASS (thunar_properties_dialog_parent_class)->key_press_event (widget, event);
+}
+
+
+
+static void
+thunar_properties_dialog_response (GtkDialog *dialog,
+ gint response)
+{
+ if (response == GTK_RESPONSE_CLOSE)
+ {
+ gtk_widget_destroy (GTK_WIDGET (dialog));
+ }
+ else if (GTK_DIALOG_CLASS (thunar_properties_dialog_parent_class)->response != NULL)
+ {
+ (*GTK_DIALOG_CLASS (thunar_properties_dialog_parent_class)->response) (dialog, response);
+ }
+}
+
+
+
+static void
+thunar_properties_dialog_activate (GtkWidget *entry,
+ ThunarPropertiesDialog *dialog)
+{
+ if (G_LIKELY (dialog->rename_idle_id < 0))
+ {
+ dialog->rename_idle_id = g_idle_add_full (G_PRIORITY_DEFAULT, thunar_properties_dialog_rename_idle,
+ dialog, thunar_properties_dialog_rename_idle_destroy);
+ }
+}
+
+
+
+static gboolean
+thunar_properties_dialog_focus_out_event (GtkWidget *entry,
+ GdkEventFocus *event,
+ ThunarPropertiesDialog *dialog)
+{
+ if (G_LIKELY (dialog->rename_idle_id < 0))
+ {
+ dialog->rename_idle_id = g_idle_add_full (G_PRIORITY_DEFAULT, thunar_properties_dialog_rename_idle,
+ dialog, thunar_properties_dialog_rename_idle_destroy);
+ }
+
+ return FALSE;
+}
+
+
+
+static void
+thunar_properties_dialog_update_extensions (ThunarPropertiesDialog *dialog)
+{
+ GtkWidget *label_widget;
+ GList *providers;
+ GList *pages = NULL;
+ GList files;
+ GList *tmp;
+ GList *lp;
+
+ /* load the property page providers from the extension manager */
+ providers = thunar_extension_manager_list_providers (dialog->extension_manager, THUNARX_TYPE_PROPERTY_PAGE_PROVIDER);
+ if (G_LIKELY (providers != NULL))
+ {
+ /* determine the (one-element) file list */
+ files.data = dialog->file; files.next = files.prev = NULL;
+
+ /* load the pages offered by the menu providers */
+ for (lp = providers; lp != NULL; lp = lp->next)
+ {
+ tmp = thunarx_property_page_provider_get_pages (lp->data, &files);
+ pages = g_list_concat (pages, tmp);
+ g_object_unref (G_OBJECT (lp->data));
+ }
+ g_list_free (providers);
+ }
+
+ /* destroy any previous set pages */
+ for (lp = dialog->extension_pages; lp != NULL; lp = lp->next)
+ {
+ gtk_widget_destroy (GTK_WIDGET (lp->data));
+ g_object_unref (G_OBJECT (lp->data));
+ }
+ g_list_free (dialog->extension_pages);
+
+ /* apply the new set of pages */
+ dialog->extension_pages = pages;
+ for (lp = pages; lp != NULL; lp = lp->next)
+ {
+ label_widget = thunarx_property_page_get_label_widget (THUNARX_PROPERTY_PAGE (lp->data));
+ gtk_notebook_append_page (GTK_NOTEBOOK (dialog->notebook), GTK_WIDGET (lp->data), label_widget);
+ g_object_ref (G_OBJECT (lp->data));
+ }
+}
+
+
+
+static void
+thunar_properties_dialog_update (ThunarPropertiesDialog *dialog)
+{
+ ThunarIconFactory *icon_factory;
+ ThunarVfsFileSize size;
+ ThunarVfsMimeInfo *info;
+ ThunarVfsVolume *volume;
+ GtkIconTheme *icon_theme;
+ const gchar *icon_name;
+ const gchar *name;
+ GdkPixbuf *icon;
+ glong offset;
+ gchar *size_string;
+ gchar *str;
+
+ g_return_if_fail (THUNAR_IS_PROPERTIES_DIALOG (dialog));
+ g_return_if_fail (THUNAR_IS_FILE (dialog->file));
+
+ icon_theme = gtk_icon_theme_get_for_screen (gtk_widget_get_screen (GTK_WIDGET (dialog)));
+ icon_factory = thunar_icon_factory_get_for_icon_theme (icon_theme);
+
+ /* update the icon */
+ icon = thunar_icon_factory_load_file_icon (icon_factory, dialog->file, THUNAR_FILE_ICON_STATE_DEFAULT, 48);
+ gtk_image_set_from_pixbuf (GTK_IMAGE (dialog->icon_image), icon);
+ gtk_window_set_icon (GTK_WINDOW (dialog), icon);
+ if (G_LIKELY (icon != NULL))
+ g_object_unref (G_OBJECT (icon));
+
+ /* update the name (if it differs) */
+ gtk_entry_set_editable (GTK_ENTRY (dialog->name_entry), thunar_file_is_renameable (dialog->file));
+ name = thunar_file_get_display_name (dialog->file);
+ if (G_LIKELY (strcmp (name, gtk_entry_get_text (GTK_ENTRY (dialog->name_entry))) != 0))
+ {
+ gtk_entry_set_text (GTK_ENTRY (dialog->name_entry), name);
+ str = g_strdup_printf (_("%s Info"), name);
+ gtk_window_set_title (GTK_WINDOW (dialog), str);
+ g_free (str);
+
+ /* grab the input focus to the name entry */
+ gtk_widget_grab_focus (dialog->name_entry);
+
+ /* select the pre-dot part of the name */
+ str = strrchr (name, '.');
+ if (G_LIKELY (str != NULL))
+ {
+ /* calculate the offset */
+ offset = g_utf8_pointer_to_offset (name, str);
+
+ /* select the region */
+ if (G_LIKELY (offset > 0))
+ gtk_entry_select_region (GTK_ENTRY (dialog->name_entry), 0, offset);
+ }
+ }
+
+ /* update the mime type */
+ info = thunar_file_get_mime_info (dialog->file);
+ if (G_UNLIKELY (strcmp (thunar_vfs_mime_info_get_name (info), "inode/symlink") == 0))
+ str = g_strdup (_("broken link"));
+ else if (G_UNLIKELY (thunar_file_is_symlink (dialog->file)))
+ str = g_strdup_printf (_("link to %s"), thunar_vfs_mime_info_get_comment (info));
+ else
+ str = g_strdup (thunar_vfs_mime_info_get_comment (info));
+ gtk_label_set_text (GTK_LABEL (dialog->kind_label), str);
+ g_free (str);
+
+ /* update the modified time */
+ str = thunar_file_get_date_string (dialog->file, THUNAR_FILE_DATE_MODIFIED);
+ if (G_LIKELY (str != NULL))
+ {
+ gtk_label_set_text (GTK_LABEL (dialog->modified_label), str);
+ gtk_widget_show (dialog->modified_label);
+ g_free (str);
+ }
+ else
+ {
+ gtk_widget_hide (dialog->modified_label);
+ }
+
+ /* update the accessed time */
+ str = thunar_file_get_date_string (dialog->file, THUNAR_FILE_DATE_ACCESSED);
+ if (G_LIKELY (str != NULL))
+ {
+ gtk_label_set_text (GTK_LABEL (dialog->accessed_label), str);
+ gtk_widget_show (dialog->accessed_label);
+ g_free (str);
+ }
+ else
+ {
+ gtk_widget_hide (dialog->accessed_label);
+ }
+
+ /* update the volume */
+ volume = thunar_file_get_volume (dialog->file, dialog->volume_manager);
+ if (G_LIKELY (volume != NULL))
+ {
+ icon_name = thunar_vfs_volume_lookup_icon_name (volume, icon_theme);
+ icon = thunar_icon_factory_load_icon (icon_factory, icon_name, 16, NULL, FALSE);
+ gtk_image_set_from_pixbuf (GTK_IMAGE (dialog->volume_image), icon);
+ if (G_LIKELY (icon != NULL))
+ g_object_unref (G_OBJECT (icon));
+
+ name = thunar_vfs_volume_get_name (volume);
+ gtk_label_set_text (GTK_LABEL (dialog->volume_label), name);
+ gtk_widget_show (dialog->volume_label);
+ }
+ else
+ {
+ gtk_widget_hide (dialog->volume_label);
+ }
+
+ /* update the size */
+ size_string = thunar_file_get_size_string (dialog->file);
+ if (G_LIKELY (size_string != NULL))
+ {
+ size = thunar_file_get_size (dialog->file);
+ str = g_strdup_printf (_("%s (%u Bytes)"), size_string, (guint) size);
+ gtk_label_set_text (GTK_LABEL (dialog->size_label), str);
+ gtk_widget_show (dialog->size_label);
+ g_free (size_string);
+ g_free (str);
+ }
+ else
+ {
+ gtk_widget_hide (dialog->size_label);
+ }
+
+ /* update the extension property pages */
+ thunar_properties_dialog_update_extensions (dialog);
+
+ /* cleanup */
+ g_object_unref (G_OBJECT (icon_factory));
+}
+
+
+
+static gboolean
+thunar_properties_dialog_rename_idle (gpointer user_data)
+{
+ ThunarPropertiesDialog *dialog = THUNAR_PROPERTIES_DIALOG (user_data);
+ const gchar *old_name;
+ GError *error = NULL;
+ gchar *new_name;
+
+ /* check if we still have a valid file and if the user is allowed to rename */
+ if (G_UNLIKELY (dialog->file == NULL || !GTK_WIDGET_SENSITIVE (dialog->name_entry)))
+ return FALSE;
+
+ GDK_THREADS_ENTER ();
+
+ /* determine new and old name */
+ new_name = gtk_editable_get_chars (GTK_EDITABLE (dialog->name_entry), 0, -1);
+ old_name = thunar_file_get_display_name (dialog->file);
+ if (g_utf8_collate (new_name, old_name) != 0)
+ {
+ /* try to rename the file to the new name */
+ if (!thunar_file_rename (dialog->file, new_name, &error))
+ {
+ /* reset the entry widget to the old name */
+ gtk_entry_set_text (GTK_ENTRY (dialog->name_entry), old_name);
+
+ /* display an error message */
+ thunar_dialogs_show_error (GTK_WIDGET (dialog), error, _("Failed to rename `%s'"), old_name);
+
+ /* release the error */
+ g_error_free (error);
+ }
+ }
+ g_free (new_name);
+
+ GDK_THREADS_LEAVE ();
+
+ return FALSE;
+}
+
+
+
+static void
+thunar_properties_dialog_rename_idle_destroy (gpointer user_data)
+{
+ THUNAR_PROPERTIES_DIALOG (user_data)->rename_idle_id = -1;
+}
+
+
+
+/**
+ * thunar_properties_dialog_new:
+ *
+ * Allocates a new #ThunarPropertiesDialog instance,
+ * that is not associated with any #ThunarFile.
+ *
+ * Return value: the newly allocated #ThunarPropertiesDialog
+ * instance.
+ **/
+GtkWidget*
+thunar_properties_dialog_new (void)
+{
+ return g_object_new (THUNAR_TYPE_PROPERTIES_DIALOG, NULL);
+}
+
+
+
+/**
+ * thunar_properties_dialog_get_file:
+ * @dialog : a #ThunarPropertiesDialog.
+ *
+ * Returns the #ThunarFile currently being displayed
+ * by @dialog or %NULL if @dialog doesn't display
+ * any file right now.
+ *
+ * Return value: the #ThunarFile displayed by @dialog
+ * or %NULL.
+ **/
+ThunarFile*
+thunar_properties_dialog_get_file (ThunarPropertiesDialog *dialog)
+{
+ g_return_val_if_fail (THUNAR_IS_PROPERTIES_DIALOG (dialog), NULL);
+ return dialog->file;
+}
+
+
+
+/**
+ * thunar_properties_dialog_set_file:
+ * @dialog : a #ThunarPropertiesDialog.
+ * @file : a #ThunarFile or %NULL.
+ *
+ * Sets the #ThunarFile that is displayed by @dialog
+ * to @file.
+ **/
+void
+thunar_properties_dialog_set_file (ThunarPropertiesDialog *dialog,
+ ThunarFile *file)
+{
+ g_return_if_fail (THUNAR_IS_PROPERTIES_DIALOG (dialog));
+ g_return_if_fail (file == NULL || THUNAR_IS_FILE (file));
+
+ /* disconnect from any previously set file */
+ if (dialog->file != NULL)
+ {
+ /* unregister our file watch */
+ thunar_file_unwatch (dialog->file);
+
+ /* unregister handlers */
+ g_signal_handlers_disconnect_by_func (G_OBJECT (dialog->file), thunar_properties_dialog_update, dialog);
+ g_signal_handlers_disconnect_by_func (G_OBJECT (dialog->file), gtk_widget_destroy, dialog);
+
+ g_object_unref (G_OBJECT (dialog->file));
+ }
+
+ /* activate the new file */
+ dialog->file = file;
+
+ /* connect to the new file */
+ if (file != NULL)
+ {
+ g_object_ref (G_OBJECT (file));
+
+ /* watch the file for changes */
+ thunar_file_watch (file);
+
+ /* install signal handlers */
+ g_signal_connect_swapped (G_OBJECT (file), "changed", G_CALLBACK (thunar_properties_dialog_update), dialog);
+ g_signal_connect_swapped (G_OBJECT (file), "destroy", G_CALLBACK (gtk_widget_destroy), dialog);
+
+ /* update the UI for the new file */
+ thunar_properties_dialog_update (dialog);
+ }
+
+ /* tell everybody that we have a new file here */
+ g_object_notify (G_OBJECT (dialog), "file");
+}
+
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-properties-dialog.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-properties-dialog.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-properties-dialog.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,47 @@
+/* $Id: thunar-properties-dialog.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_PROPERTIES_DIALOG_H__
+#define __THUNAR_PROPERTIES_DIALOG_H__
+
+#include <thunar/thunar-file.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarPropertiesDialogClass ThunarPropertiesDialogClass;
+typedef struct _ThunarPropertiesDialog ThunarPropertiesDialog;
+
+#define THUNAR_TYPE_PROPERTIES_DIALOG (thunar_properties_dialog_get_type ())
+#define THUNAR_PROPERTIES_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_PROPERTIES_DIALOG, ThunarPropertiesDialog))
+#define THUNAR_PROPERTIES_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_PROPERTIES_DIALOG, ThunarPropertiesDialogClass))
+#define THUNAR_IS_PROPERTIES_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_PROPERTIES_DIALOG))
+#define THUNAR_IS_PROPERTIES_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_PROPERTIES_DIALOG))
+#define THUNAR_PROPERTIES_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_PROPERTIES_DIALOG, ThunarPropertiesDialog))
+
+GType thunar_properties_dialog_get_type (void) G_GNUC_CONST;
+
+GtkWidget *thunar_properties_dialog_new (void);
+
+ThunarFile *thunar_properties_dialog_get_file (ThunarPropertiesDialog *dialog);
+void thunar_properties_dialog_set_file (ThunarPropertiesDialog *dialog,
+ ThunarFile *file);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_PROPERTIES_DIALOG_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-side-pane.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-side-pane.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-side-pane.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,58 @@
+/* $Id: thunar-side-pane.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <thunar/thunar-side-pane.h>
+
+
+
+GType
+thunar_side_pane_get_type (void)
+{
+ static GType type = G_TYPE_INVALID;
+
+ if (G_UNLIKELY (type == G_TYPE_INVALID))
+ {
+ static const GTypeInfo info =
+ {
+ sizeof (ThunarSidePaneIface),
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ 0,
+ 0,
+ NULL,
+ };
+
+ type = g_type_register_static (G_TYPE_INTERFACE,
+ "ThunarSidePane",
+ &info, 0);
+
+ g_type_interface_add_prerequisite (type, GTK_TYPE_WIDGET);
+ g_type_interface_add_prerequisite (type, THUNAR_TYPE_NAVIGATOR);
+ }
+
+ return type;
+}
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-side-pane.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-side-pane.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-side-pane.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,44 @@
+/* $Id: thunar-side-pane.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_SIDE_PANE_H__
+#define __THUNAR_SIDE_PANE_H__
+
+#include <thunar/thunar-navigator.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarSidePaneIface ThunarSidePaneIface;
+typedef struct _ThunarSidePane ThunarSidePane;
+
+#define THUNAR_TYPE_SIDE_PANE (thunar_side_pane_get_type ())
+#define THUNAR_SIDE_PANE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_SIDE_PANE, ThunarSidePane))
+#define THUNAR_IS_SIDE_PANE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_SIDE_PANE))
+#define THUNAR_SIDE_PANE_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), THUNAR_TYPE_SIDE_PANE, ThunarSidePaneIface))
+
+struct _ThunarSidePaneIface
+{
+ GTypeInterface __parent__;
+};
+
+GType thunar_side_pane_get_type (void) G_GNUC_CONST;
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_SIDE_PANE_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-standard-view-ui.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-standard-view-ui.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-standard-view-ui.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,58 @@
+/* automatically generated from ./thunar-standard-view-ui.xml */
+static const unsigned thunar_standard_view_ui_length = 2850u;
+#ifdef __SUNPRO_C
+#pragma align 4 (thunar_standard_view_ui)
+#endif
+#ifdef __GNUC__
+static const char thunar_standard_view_ui[] __attribute__ ((__aligned__ (4))) =
+#else
+static const char thunar_standard_view_ui[] =
+#endif
+{
+ "<ui>\n\n <!--\n $Id: thunar-standard-view-ui.xml 18843 2005-11-14 1"
+ "4:25:58Z benny $\n\n Copyright (c) 2005 Benedikt Meurer <benny at xfce."
+ "org>\n\n Thunar standard view user interface description file. Do NO"
+ "T\n simply edit this file if you don\'t know how the whole system\n "
+ " works, because it\'s too easy to break something.\n -->\n\n <menub"
+ "ar name=\"main-menu\">\n <menu action=\"file-menu\" name=\"file-menu"
+ "\">\n <placeholder name=\"placeholder-create-actions\">\n <"
+ "menuitem action=\"create-folder\" name=\"create-folder\" />\n </pl"
+ "aceholder>\n <placeholder name=\"placeholder-launcher-actions\">\n"
+ " <menuitem action=\"open\" name=\"open\" />\n <menuitem a"
+ "ction=\"open-in-new-window\" name=\"open-in-new-window\" />\n <m"
+ "enuitem action=\"open-with\" name=\"open-with\" />\n </placeholder"
+ ">\n <placeholder name=\"placeholder-file-properties\">\n <m"
+ "enuitem action=\"properties\" name=\"properties\" />\n </placehold"
+ "er>\n </menu>\n\n <menu action=\"edit-menu\" name=\"edit-menu\">\n"
+ " <placeholder name=\"placeholder-edit-clipboard-actions\">\n "
+ " <menuitem action=\"copy\" name=\"copy\" />\n <menuitem action="
+ "\"cut\" name=\"cut\" />\n <menuitem action=\"paste\" name=\"past"
+ "e\" />\n <menuitem action=\"delete\" name=\"delete\" />\n <"
+ "/placeholder>\n <placeholder name=\"placeholder-edit-select-action"
+ "s\">\n <menuitem action=\"select-all-files\" name=\"select-all-f"
+ "iles\" />\n <menuitem action=\"select-by-pattern\" name=\"select"
+ "-by-pattern\" />\n </placeholder>\n <placeholder name=\"place"
+ "holder-edit-alter-actions\">\n <menuitem action=\"duplicate\" na"
+ "me=\"duplicate\" />\n <menuitem action=\"make-link\" name=\"make"
+ "-link\" />\n <menuitem action=\"rename\" name=\"rename\" />\n "
+ " </placeholder>\n </menu>\n </menubar>\n\n <popup action=\"file-"
+ "context-menu\" name=\"file-context-menu\">\n <menuitem action=\"open"
+ "\" name=\"open\" />\n <menuitem action=\"open-in-new-window\" name=\""
+ "open-in-new-window\" />\n <menuitem action=\"open-with\" name=\"open"
+ "-with\" />\n <separator />\n <menuitem action=\"copy\" name=\"cop"
+ "y\" />\n <menuitem action=\"cut\" name=\"cut\" />\n <menuitem act"
+ "ion=\"delete\" name=\"delete\" />\n <menuitem action=\"paste-into-fo"
+ "lder\" name=\"paste-into-folder\" />\n <separator />\n <menuitem "
+ "action=\"rename\" name=\"rename\" />\n <separator />\n <placehold"
+ "er name=\"placeholder-custom-actions\" />\n <separator />\n <menu"
+ "item action=\"properties\" name=\"properties\" />\n </popup>\n\n <pop"
+ "up action=\"folder-context-menu\" name=\"folder-context-menu\">\n <m"
+ "enuitem action=\"create-folder\" name=\"create-folder\" />\n <separa"
+ "tor />\n <placeholder name=\"placeholder-view-items-actions\" />\n "
+ " <separator />\n <menuitem action=\"paste\" name=\"paste\" />\n "
+ "<separator />\n <placeholder name=\"placeholder-custom-actions\" />\n"
+ " </popup>\n\n</ui>\n\n<!-- vi: set ts=2 sw=2 et ai nocindent syntax=xm"
+ "l: -->\n"
+};
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-standard-view-ui.xml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-standard-view-ui.xml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-standard-view-ui.xml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,76 @@
+<ui>
+
+ <!--
+ $Id: thunar-standard-view-ui.xml 18843 2005-11-14 14:25:58Z benny $
+
+ Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+
+ Thunar standard view user interface description file. Do NOT
+ simply edit this file if you don't know how the whole system
+ works, because it's too easy to break something.
+ -->
+
+ <menubar name="main-menu">
+ <menu action="file-menu" name="file-menu">
+ <placeholder name="placeholder-create-actions">
+ <menuitem action="create-folder" name="create-folder" />
+ </placeholder>
+ <placeholder name="placeholder-launcher-actions">
+ <menuitem action="open" name="open" />
+ <menuitem action="open-in-new-window" name="open-in-new-window" />
+ <menuitem action="open-with" name="open-with" />
+ </placeholder>
+ <placeholder name="placeholder-file-properties">
+ <menuitem action="properties" name="properties" />
+ </placeholder>
+ </menu>
+
+ <menu action="edit-menu" name="edit-menu">
+ <placeholder name="placeholder-edit-clipboard-actions">
+ <menuitem action="copy" name="copy" />
+ <menuitem action="cut" name="cut" />
+ <menuitem action="paste" name="paste" />
+ <menuitem action="delete" name="delete" />
+ </placeholder>
+ <placeholder name="placeholder-edit-select-actions">
+ <menuitem action="select-all-files" name="select-all-files" />
+ <menuitem action="select-by-pattern" name="select-by-pattern" />
+ </placeholder>
+ <placeholder name="placeholder-edit-alter-actions">
+ <menuitem action="duplicate" name="duplicate" />
+ <menuitem action="make-link" name="make-link" />
+ <menuitem action="rename" name="rename" />
+ </placeholder>
+ </menu>
+ </menubar>
+
+ <popup action="file-context-menu" name="file-context-menu">
+ <menuitem action="open" name="open" />
+ <menuitem action="open-in-new-window" name="open-in-new-window" />
+ <menuitem action="open-with" name="open-with" />
+ <separator />
+ <menuitem action="copy" name="copy" />
+ <menuitem action="cut" name="cut" />
+ <menuitem action="delete" name="delete" />
+ <menuitem action="paste-into-folder" name="paste-into-folder" />
+ <separator />
+ <menuitem action="rename" name="rename" />
+ <separator />
+ <placeholder name="placeholder-custom-actions" />
+ <separator />
+ <menuitem action="properties" name="properties" />
+ </popup>
+
+ <popup action="folder-context-menu" name="folder-context-menu">
+ <menuitem action="create-folder" name="create-folder" />
+ <separator />
+ <placeholder name="placeholder-view-items-actions" />
+ <separator />
+ <menuitem action="paste" name="paste" />
+ <separator />
+ <placeholder name="placeholder-custom-actions" />
+ </popup>
+
+</ui>
+
+<!-- vi: set ts=2 sw=2 et ai nocindent syntax=xml: -->
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-standard-view.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-standard-view.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-standard-view.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,2489 @@
+/* $Id: thunar-standard-view.c 18848 2005-11-14 20:47:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#include <gdk/gdkkeysyms.h>
+
+#include <thunar/thunar-application.h>
+#include <thunar/thunar-create-dialog.h>
+#include <thunar/thunar-dialogs.h>
+#include <thunar/thunar-dnd.h>
+#include <thunar/thunar-extension-manager.h>
+#include <thunar/thunar-icon-renderer.h>
+#include <thunar/thunar-launcher.h>
+#include <thunar/thunar-marshal.h>
+#include <thunar/thunar-properties-dialog.h>
+#include <thunar/thunar-standard-view.h>
+#include <thunar/thunar-standard-view-ui.h>
+#include <thunar/thunar-text-renderer.h>
+
+#include <thunarx/thunarx.h>
+
+
+
+#define THUNAR_STANDARD_VIEW_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), THUNAR_TYPE_STANDARD_VIEW, ThunarStandardViewPrivate))
+
+
+
+/* Property identifiers */
+enum
+{
+ PROP_0,
+ PROP_CURRENT_DIRECTORY,
+ PROP_LOADING,
+ PROP_STATUSBAR_TEXT,
+ PROP_SHOW_HIDDEN,
+ PROP_UI_MANAGER,
+};
+
+/* Signal identifiers */
+enum
+{
+ DELETE_SELECTED_FILES,
+ LAST_SIGNAL,
+};
+
+/* Identifiers for DnD target types */
+enum
+{
+ TEXT_URI_LIST,
+};
+
+
+
+static void thunar_standard_view_class_init (ThunarStandardViewClass *klass);
+static void thunar_standard_view_navigator_init (ThunarNavigatorIface *iface);
+static void thunar_standard_view_view_init (ThunarViewIface *iface);
+static void thunar_standard_view_init (ThunarStandardView *standard_view);
+static GObject *thunar_standard_view_constructor (GType type,
+ guint n_construct_properties,
+ GObjectConstructParam *construct_properties);
+static void thunar_standard_view_dispose (GObject *object);
+static void thunar_standard_view_finalize (GObject *object);
+static void thunar_standard_view_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void thunar_standard_view_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void thunar_standard_view_realize (GtkWidget *widget);
+static void thunar_standard_view_unrealize (GtkWidget *widget);
+static void thunar_standard_view_grab_focus (GtkWidget *widget);
+static gboolean thunar_standard_view_expose_event (GtkWidget *widget,
+ GdkEventExpose *event);
+static ThunarFile *thunar_standard_view_get_current_directory (ThunarNavigator *navigator);
+static void thunar_standard_view_set_current_directory (ThunarNavigator *navigator,
+ ThunarFile *current_directory);
+static gboolean thunar_standard_view_get_loading (ThunarView *view);
+static const gchar *thunar_standard_view_get_statusbar_text (ThunarView *view);
+static gboolean thunar_standard_view_get_show_hidden (ThunarView *view);
+static void thunar_standard_view_set_show_hidden (ThunarView *view,
+ gboolean show_hidden);
+static GtkUIManager *thunar_standard_view_get_ui_manager (ThunarView *view);
+static void thunar_standard_view_set_ui_manager (ThunarView *view,
+ GtkUIManager *ui_manager);
+static gboolean thunar_standard_view_delete_selected_files (ThunarStandardView *standard_view);
+static GdkDragAction thunar_standard_view_get_dest_actions (ThunarStandardView *standard_view,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ guint time,
+ ThunarFile **file_return);
+static GList *thunar_standard_view_get_selected_files (ThunarStandardView *standard_view);
+static GList *thunar_standard_view_get_selected_paths (ThunarStandardView *standard_view);
+static void thunar_standard_view_merge_custom_actions (ThunarStandardView *standard_view,
+ GList *selected_items);
+static void thunar_standard_view_update_statusbar_text (ThunarStandardView *standard_view);
+static void thunar_standard_view_action_create_folder (GtkAction *action,
+ ThunarStandardView *standard_view);
+static void thunar_standard_view_action_properties (GtkAction *action,
+ ThunarStandardView *standard_view);
+static void thunar_standard_view_action_copy (GtkAction *action,
+ ThunarStandardView *standard_view);
+static void thunar_standard_view_action_cut (GtkAction *action,
+ ThunarStandardView *standard_view);
+static void thunar_standard_view_action_paste (GtkAction *action,
+ ThunarStandardView *standard_view);
+static void thunar_standard_view_action_delete (GtkAction *action,
+ ThunarStandardView *standard_view);
+static void thunar_standard_view_action_paste_into_folder (GtkAction *action,
+ ThunarStandardView *standard_view);
+static void thunar_standard_view_action_select_all_files (GtkAction *action,
+ ThunarStandardView *standard_view);
+static void thunar_standard_view_action_select_by_pattern (GtkAction *action,
+ ThunarStandardView *standard_view);
+static void thunar_standard_view_action_duplicate (GtkAction *action,
+ ThunarStandardView *standard_view);
+static void thunar_standard_view_action_make_link (GtkAction *action,
+ ThunarStandardView *standard_view);
+static void thunar_standard_view_action_rename (GtkAction *action,
+ ThunarStandardView *standard_view);
+static GClosure *thunar_standard_view_new_files_closure (ThunarStandardView *standard_view);
+static void thunar_standard_view_new_files (ThunarVfsJob *job,
+ GList *path_list,
+ ThunarStandardView *standard_view);
+static gboolean thunar_standard_view_button_release_event (GtkWidget *view,
+ GdkEventButton *event,
+ ThunarStandardView *standard_view);
+static gboolean thunar_standard_view_motion_notify_event (GtkWidget *view,
+ GdkEventMotion *event,
+ ThunarStandardView *standard_view);
+static gboolean thunar_standard_view_drag_drop (GtkWidget *view,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ guint time,
+ ThunarStandardView *standard_view);
+static void thunar_standard_view_drag_data_received (GtkWidget *view,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ GtkSelectionData *selection_data,
+ guint info,
+ guint time,
+ ThunarStandardView *standard_view);
+static void thunar_standard_view_drag_leave (GtkWidget *view,
+ GdkDragContext *context,
+ guint time,
+ ThunarStandardView *standard_view);
+static gboolean thunar_standard_view_drag_motion (GtkWidget *view,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ guint time,
+ ThunarStandardView *standard_view);
+static void thunar_standard_view_drag_begin (GtkWidget *view,
+ GdkDragContext *context,
+ ThunarStandardView *standard_view);
+static void thunar_standard_view_drag_data_get (GtkWidget *view,
+ GdkDragContext *context,
+ GtkSelectionData *selection_data,
+ guint info,
+ guint time,
+ ThunarStandardView *standard_view);
+static void thunar_standard_view_drag_data_delete (GtkWidget *view,
+ GdkDragContext *context,
+ ThunarStandardView *standard_view);
+static void thunar_standard_view_drag_end (GtkWidget *view,
+ GdkDragContext *context,
+ ThunarStandardView *standard_view);
+static void thunar_standard_view_error (ThunarListModel *model,
+ const GError *error,
+ ThunarStandardView *standard_view);
+static void thunar_standard_view_renamed (ThunarTextRenderer *text_renderer,
+ const gchar *path_string,
+ const gchar *text,
+ ThunarStandardView *standard_view);
+static void thunar_standard_view_loading_unbound (gpointer user_data);
+static gboolean thunar_standard_view_drag_timer (gpointer user_data);
+static void thunar_standard_view_drag_timer_destroy (gpointer user_data);
+
+
+
+struct _ThunarStandardViewPrivate
+{
+ ThunarLauncher *launcher;
+ GtkAction *action_create_folder;
+ GtkAction *action_properties;
+ GtkAction *action_copy;
+ GtkAction *action_cut;
+ GtkAction *action_paste;
+ GtkAction *action_delete;
+ GtkAction *action_paste_into_folder;
+ GtkAction *action_select_all_files;
+ GtkAction *action_select_by_pattern;
+ GtkAction *action_duplicate;
+ GtkAction *action_make_link;
+ GtkAction *action_rename;
+
+ /* support for file manager extensions */
+ ThunarExtensionManager *extension_manager;
+
+ /* custom menu actions support */
+ GtkActionGroup *custom_actions;
+ gint custom_merge_id;
+
+ /* right-click drag/popup support */
+ GList *drag_path_list;
+ gint drag_timer_id;
+ gint drag_x;
+ gint drag_y;
+
+ /* drop site support */
+ guint drop_data_ready : 1; /* whether the drop data was received already */
+ guint drop_highlight : 1;
+ guint drop_occurred : 1; /* whether the data was dropped */
+ GList *drop_path_list; /* the list of URIs that are contained in the drop data */
+
+ /* the "new-files" closure, which is used to select files whenever
+ * new files are created by a ThunarVfsJob associated with this view
+ */
+ GClosure *new_files_closure;
+};
+
+
+
+static const GtkActionEntry action_entries[] =
+{
+ { "file-context-menu", NULL, N_ ("File Context Menu"), NULL, NULL, NULL, },
+ { "folder-context-menu", NULL, N_ ("Folder Context Menu"), NULL, NULL, NULL, },
+ { "create-folder", NULL, N_ ("Create _Folder..."), "<control><shift>N", N_ ("Create an empty folder within the current folder"), G_CALLBACK (thunar_standard_view_action_create_folder), },
+ { "properties", GTK_STOCK_PROPERTIES, N_ ("_Properties"), "<alt>Return", N_ ("View the properties of the selected file"), G_CALLBACK (thunar_standard_view_action_properties), },
+ { "copy", GTK_STOCK_COPY, N_ ("_Copy Files"), NULL, N_ ("Copy the selected files"), G_CALLBACK (thunar_standard_view_action_copy), },
+ { "cut", GTK_STOCK_CUT, N_ ("Cu_t Files"), NULL, N_ ("Cut the selected files"), G_CALLBACK (thunar_standard_view_action_cut), },
+ { "paste", GTK_STOCK_PASTE, N_ ("_Paste Files"), NULL, NULL, G_CALLBACK (thunar_standard_view_action_paste), },
+ { "delete", GTK_STOCK_DELETE, N_ ("_Delete Files"), NULL, N_ ("Delete the selected files"), G_CALLBACK (thunar_standard_view_action_delete), },
+ { "paste-into-folder", GTK_STOCK_PASTE, N_ ("Paste Files into Folder"), NULL, N_ ("Paste files into the selected folder"), G_CALLBACK (thunar_standard_view_action_paste_into_folder), },
+ { "select-all-files", NULL, N_ ("Select _all Files"), "<control>A", N_ ("Select all files in this window"), G_CALLBACK (thunar_standard_view_action_select_all_files), },
+ { "select-by-pattern", NULL, N_ ("Select by _Pattern"), "<control>S", N_ ("Select all files that match a certain pattern"), G_CALLBACK (thunar_standard_view_action_select_by_pattern), },
+ { "duplicate", NULL, N_ ("Du_plicate File"), NULL, N_ ("Duplicate each selected file"), G_CALLBACK (thunar_standard_view_action_duplicate), },
+ { "make-link", NULL, N_ ("Ma_ke Link"), NULL, N_ ("Create a symbolic link for each selected file"), G_CALLBACK (thunar_standard_view_action_make_link), },
+ { "rename", NULL, N_ ("_Rename"), "F2", N_ ("Rename the selected file"), G_CALLBACK (thunar_standard_view_action_rename), },
+};
+
+/* Target types for dragging from the view */
+static const GtkTargetEntry drag_targets[] =
+{
+ { "text/uri-list", 0, TEXT_URI_LIST, },
+};
+
+/* Target types for dropping to the view */
+static const GtkTargetEntry drop_targets[] =
+{
+ { "text/uri-list", 0, TEXT_URI_LIST, },
+};
+
+
+
+static guint standard_view_signals[LAST_SIGNAL];
+static GObjectClass *thunar_standard_view_parent_class;
+
+
+
+GType
+thunar_standard_view_get_type (void)
+{
+ static GType type = G_TYPE_INVALID;
+
+ if (G_UNLIKELY (type == G_TYPE_INVALID))
+ {
+ static const GTypeInfo info =
+ {
+ sizeof (ThunarStandardViewClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) thunar_standard_view_class_init,
+ NULL,
+ NULL,
+ sizeof (ThunarStandardView),
+ 0,
+ (GInstanceInitFunc) thunar_standard_view_init,
+ NULL,
+ };
+
+ static const GInterfaceInfo navigator_info =
+ {
+ (GInterfaceInitFunc) thunar_standard_view_navigator_init,
+ NULL,
+ NULL,
+ };
+
+ static const GInterfaceInfo view_info =
+ {
+ (GInterfaceInitFunc) thunar_standard_view_view_init,
+ NULL,
+ NULL,
+ };
+
+ type = g_type_register_static (GTK_TYPE_SCROLLED_WINDOW,
+ "ThunarStandardView",
+ &info, G_TYPE_FLAG_ABSTRACT);
+
+ g_type_add_interface_static (type, THUNAR_TYPE_NAVIGATOR, &navigator_info);
+ g_type_add_interface_static (type, THUNAR_TYPE_VIEW, &view_info);
+ }
+
+ return type;
+}
+
+
+
+static void
+thunar_standard_view_class_init (ThunarStandardViewClass *klass)
+{
+ GtkWidgetClass *gtkwidget_class;
+ GtkBindingSet *binding_set;
+ GObjectClass *gobject_class;
+
+ g_type_class_add_private (klass, sizeof (ThunarStandardViewPrivate));
+
+ thunar_standard_view_parent_class = g_type_class_peek_parent (klass);
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->constructor = thunar_standard_view_constructor;
+ gobject_class->dispose = thunar_standard_view_dispose;
+ gobject_class->finalize = thunar_standard_view_finalize;
+ gobject_class->get_property = thunar_standard_view_get_property;
+ gobject_class->set_property = thunar_standard_view_set_property;
+
+ gtkwidget_class = GTK_WIDGET_CLASS (klass);
+ gtkwidget_class->realize = thunar_standard_view_realize;
+ gtkwidget_class->unrealize = thunar_standard_view_unrealize;
+ gtkwidget_class->grab_focus = thunar_standard_view_grab_focus;
+ gtkwidget_class->expose_event = thunar_standard_view_expose_event;
+
+ klass->delete_selected_files = thunar_standard_view_delete_selected_files;
+ klass->connect_ui_manager = (gpointer) exo_noop;
+ klass->disconnect_ui_manager = (gpointer) exo_noop;
+
+ g_object_class_install_property (gobject_class,
+ PROP_LOADING,
+ g_param_spec_override ("loading",
+ g_param_spec_boolean ("loading",
+ _("Loading"),
+ _("Whether the view is currently being loaded"),
+ FALSE,
+ EXO_PARAM_READWRITE)));
+
+ /* override ThunarNavigator's properties */
+ g_object_class_override_property (gobject_class, PROP_CURRENT_DIRECTORY, "current-directory");
+
+ /* override ThunarView's properties */
+ g_object_class_override_property (gobject_class, PROP_STATUSBAR_TEXT, "statusbar-text");
+ g_object_class_override_property (gobject_class, PROP_SHOW_HIDDEN, "show-hidden");
+ g_object_class_override_property (gobject_class, PROP_UI_MANAGER, "ui-manager");
+
+ /**
+ * ThunarStandardView::delete-selected-files:
+ * @standard_view : a #ThunarStandardView.
+ *
+ * Emitted whenever the user presses the Delete key. This
+ * is an internal signal used to bind the action to keys.
+ **/
+ standard_view_signals[DELETE_SELECTED_FILES] =
+ g_signal_new ("delete-selected-files",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+ G_STRUCT_OFFSET (ThunarStandardViewClass, delete_selected_files),
+ g_signal_accumulator_true_handled, NULL,
+ _thunar_marshal_BOOLEAN__VOID,
+ G_TYPE_BOOLEAN, 0);
+
+ /* setup the key bindings for the standard views */
+ binding_set = gtk_binding_set_by_class (klass);
+ gtk_binding_entry_add_signal (binding_set, GDK_BackSpace, GDK_CONTROL_MASK, "delete-selected-files", 0);
+ gtk_binding_entry_add_signal (binding_set, GDK_Delete, 0, "delete-selected-files", 0);
+ gtk_binding_entry_add_signal (binding_set, GDK_KP_Delete, 0, "delete-selected-files", 0);
+}
+
+
+
+static void
+thunar_standard_view_navigator_init (ThunarNavigatorIface *iface)
+{
+ iface->get_current_directory = thunar_standard_view_get_current_directory;
+ iface->set_current_directory = thunar_standard_view_set_current_directory;
+}
+
+
+
+static void
+thunar_standard_view_view_init (ThunarViewIface *iface)
+{
+ iface->get_loading = thunar_standard_view_get_loading;
+ iface->get_statusbar_text = thunar_standard_view_get_statusbar_text;
+ iface->get_show_hidden = thunar_standard_view_get_show_hidden;
+ iface->set_show_hidden = thunar_standard_view_set_show_hidden;
+ iface->get_ui_manager = thunar_standard_view_get_ui_manager;
+ iface->set_ui_manager = thunar_standard_view_set_ui_manager;
+}
+
+
+
+static void
+thunar_standard_view_init (ThunarStandardView *standard_view)
+{
+ standard_view->priv = THUNAR_STANDARD_VIEW_GET_PRIVATE (standard_view);
+ standard_view->priv->drag_timer_id = -1;
+
+ /* grab a reference on the extension manager */
+ standard_view->priv->extension_manager = thunar_extension_manager_get_default ();
+
+ /* initialize the scrolled window */
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (standard_view),
+ GTK_POLICY_AUTOMATIC,
+ GTK_POLICY_AUTOMATIC);
+ gtk_scrolled_window_set_hadjustment (GTK_SCROLLED_WINDOW (standard_view), NULL);
+ gtk_scrolled_window_set_vadjustment (GTK_SCROLLED_WINDOW (standard_view), NULL);
+ gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (standard_view), GTK_SHADOW_IN);
+
+ /* setup the action group for this view */
+ standard_view->action_group = gtk_action_group_new ("thunar-standard-view");
+ gtk_action_group_set_translation_domain (standard_view->action_group, GETTEXT_PACKAGE);
+ gtk_action_group_add_actions (standard_view->action_group, action_entries,
+ G_N_ELEMENTS (action_entries),
+ GTK_WIDGET (standard_view));
+
+ /* lookup all actions to speed up access later */
+ standard_view->priv->action_create_folder = gtk_action_group_get_action (standard_view->action_group, "create-folder");
+ standard_view->priv->action_properties = gtk_action_group_get_action (standard_view->action_group, "properties");
+ standard_view->priv->action_copy = gtk_action_group_get_action (standard_view->action_group, "copy");
+ standard_view->priv->action_cut = gtk_action_group_get_action (standard_view->action_group, "cut");
+ standard_view->priv->action_paste = gtk_action_group_get_action (standard_view->action_group, "paste");
+ standard_view->priv->action_delete = gtk_action_group_get_action (standard_view->action_group, "delete");
+ standard_view->priv->action_paste_into_folder = gtk_action_group_get_action (standard_view->action_group, "paste-into-folder");
+ standard_view->priv->action_select_all_files = gtk_action_group_get_action (standard_view->action_group, "select-all-files");
+ standard_view->priv->action_select_by_pattern = gtk_action_group_get_action (standard_view->action_group, "select-by-pattern");
+ standard_view->priv->action_duplicate = gtk_action_group_get_action (standard_view->action_group, "duplicate");
+ standard_view->priv->action_make_link = gtk_action_group_get_action (standard_view->action_group, "make-link");
+ standard_view->priv->action_rename = gtk_action_group_get_action (standard_view->action_group, "rename");
+
+ /* setup the list model */
+ standard_view->model = thunar_list_model_new ();
+ g_signal_connect (G_OBJECT (standard_view->model), "error", G_CALLBACK (thunar_standard_view_error), standard_view);
+
+ /* setup the icon renderer */
+ standard_view->icon_renderer = thunar_icon_renderer_new ();
+ g_object_ref (G_OBJECT (standard_view->icon_renderer));
+ gtk_object_sink (GTK_OBJECT (standard_view->icon_renderer));
+
+ /* setup the name renderer */
+ standard_view->name_renderer = thunar_text_renderer_new ();
+ g_signal_connect (G_OBJECT (standard_view->name_renderer), "edited", G_CALLBACK (thunar_standard_view_renamed), standard_view);
+ g_object_ref (G_OBJECT (standard_view->name_renderer));
+ gtk_object_sink (GTK_OBJECT (standard_view->name_renderer));
+
+ /* be sure to update the selection whenever the folder changes */
+ g_signal_connect_swapped (G_OBJECT (standard_view->model), "notify::folder", G_CALLBACK (thunar_standard_view_selection_changed), standard_view);
+
+ /* be sure to update the statusbar text whenever the number of
+ * files in our model changes.
+ */
+ g_signal_connect_swapped (G_OBJECT (standard_view->model), "notify::num-files", G_CALLBACK (thunar_standard_view_update_statusbar_text), standard_view);
+
+ /* allocate the launcher support */
+ standard_view->priv->launcher = thunar_launcher_new ();
+ thunar_launcher_set_action_group (standard_view->priv->launcher, standard_view->action_group);
+ thunar_launcher_set_widget (standard_view->priv->launcher, GTK_WIDGET (standard_view));
+ g_signal_connect_swapped (G_OBJECT (standard_view->priv->launcher), "open-directory", G_CALLBACK (thunar_navigator_change_directory), standard_view);
+}
+
+
+
+static GObject*
+thunar_standard_view_constructor (GType type,
+ guint n_construct_properties,
+ GObjectConstructParam *construct_properties)
+{
+ GtkWidget *view;
+ GObject *object;
+
+ /* let the GObject constructor create the instance */
+ object = G_OBJECT_CLASS (thunar_standard_view_parent_class)->constructor (type,
+ n_construct_properties,
+ construct_properties);
+
+ /* determine the real view widget (treeview or iconview) */
+ view = GTK_BIN (object)->child;
+
+ /* apply our list model to the real view (the child of the scrolled window),
+ * we therefore assume that all real views have the "model" property.
+ */
+ g_object_set (G_OBJECT (view), "model", THUNAR_STANDARD_VIEW (object)->model, NULL);
+
+ /* setup the real view as drop site */
+ gtk_drag_dest_set (view, 0, drop_targets, G_N_ELEMENTS (drop_targets), GDK_ACTION_ASK | GDK_ACTION_COPY | GDK_ACTION_LINK | GDK_ACTION_MOVE);
+ g_signal_connect (G_OBJECT (view), "drag-drop", G_CALLBACK (thunar_standard_view_drag_drop), object);
+ g_signal_connect (G_OBJECT (view), "drag-data-received", G_CALLBACK (thunar_standard_view_drag_data_received), object);
+ g_signal_connect (G_OBJECT (view), "drag-leave", G_CALLBACK (thunar_standard_view_drag_leave), object);
+ g_signal_connect (G_OBJECT (view), "drag-motion", G_CALLBACK (thunar_standard_view_drag_motion), object);
+
+ /* setup the real view as drag source */
+ gtk_drag_source_set (view, GDK_BUTTON1_MASK, drag_targets, G_N_ELEMENTS (drag_targets), GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK);
+ g_signal_connect (G_OBJECT (view), "drag-begin", G_CALLBACK (thunar_standard_view_drag_begin), object);
+ g_signal_connect (G_OBJECT (view), "drag-data-get", G_CALLBACK (thunar_standard_view_drag_data_get), object);
+ g_signal_connect (G_OBJECT (view), "drag-data-delete", G_CALLBACK (thunar_standard_view_drag_data_delete), object);
+ g_signal_connect (G_OBJECT (view), "drag-end", G_CALLBACK (thunar_standard_view_drag_end), object);
+
+ /* done, we have a working object */
+ return object;
+}
+
+
+
+static void
+thunar_standard_view_dispose (GObject *object)
+{
+ ThunarStandardView *standard_view = THUNAR_STANDARD_VIEW (object);
+
+ /* unregister the "loading" binding */
+ if (G_UNLIKELY (standard_view->loading_binding != NULL))
+ exo_binding_unbind (standard_view->loading_binding);
+
+ /* be sure to cancel any pending drag timer */
+ if (G_UNLIKELY (standard_view->priv->drag_timer_id >= 0))
+ g_source_remove (standard_view->priv->drag_timer_id);
+
+ /* reset the UI manager property */
+ thunar_view_set_ui_manager (THUNAR_VIEW (standard_view), NULL);
+
+ /* disconnect the widget from the launcher support */
+ thunar_launcher_set_widget (standard_view->priv->launcher, NULL);
+
+ (*G_OBJECT_CLASS (thunar_standard_view_parent_class)->dispose) (object);
+}
+
+
+
+static void
+thunar_standard_view_finalize (GObject *object)
+{
+ ThunarStandardView *standard_view = THUNAR_STANDARD_VIEW (object);
+
+ /* some safety checks */
+ g_assert (standard_view->loading_binding == NULL);
+ g_assert (standard_view->icon_factory == NULL);
+ g_assert (standard_view->ui_manager == NULL);
+ g_assert (standard_view->clipboard == NULL);
+
+ /* release our reference on the extension manager */
+ g_object_unref (G_OBJECT (standard_view->priv->extension_manager));
+
+ /* release the drag path list (just in case the drag-end wasn't fired before) */
+ thunar_vfs_path_list_free (standard_view->priv->drag_path_list);
+
+ /* release the drop path list (just in case the drag-leave wasn't fired before) */
+ thunar_vfs_path_list_free (standard_view->priv->drop_path_list);
+
+ /* release the reference on the name renderer */
+ g_object_unref (G_OBJECT (standard_view->name_renderer));
+
+ /* release the reference on the icon renderer */
+ g_object_unref (G_OBJECT (standard_view->icon_renderer));
+
+ /* release the reference on the action group */
+ g_object_unref (G_OBJECT (standard_view->action_group));
+
+ /* release the reference on the launcher */
+ g_object_unref (G_OBJECT (standard_view->priv->launcher));
+
+ /* drop any existing "new-files" closure */
+ if (G_UNLIKELY (standard_view->priv->new_files_closure != NULL))
+ {
+ g_closure_invalidate (standard_view->priv->new_files_closure);
+ g_closure_unref (standard_view->priv->new_files_closure);
+ standard_view->priv->new_files_closure = NULL;
+ }
+
+ /* disconnect from the list model */
+ g_signal_handlers_disconnect_matched (G_OBJECT (standard_view->model), G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, standard_view);
+ g_object_unref (G_OBJECT (standard_view->model));
+
+ /* free the statusbar text (if any) */
+ g_free (standard_view->statusbar_text);
+
+ (*G_OBJECT_CLASS (thunar_standard_view_parent_class)->finalize) (object);
+}
+
+
+
+static void
+thunar_standard_view_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ switch (prop_id)
+ {
+ case PROP_CURRENT_DIRECTORY:
+ g_value_set_object (value, thunar_navigator_get_current_directory (THUNAR_NAVIGATOR (object)));
+ break;
+
+ case PROP_LOADING:
+ g_value_set_boolean (value, thunar_view_get_loading (THUNAR_VIEW (object)));
+ break;
+
+ case PROP_STATUSBAR_TEXT:
+ g_value_set_static_string (value, thunar_view_get_statusbar_text (THUNAR_VIEW (object)));
+ break;
+
+ case PROP_SHOW_HIDDEN:
+ g_value_set_boolean (value, thunar_view_get_show_hidden (THUNAR_VIEW (object)));
+ break;
+
+ case PROP_UI_MANAGER:
+ g_value_set_object (value, thunar_view_get_ui_manager (THUNAR_VIEW (object)));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunar_standard_view_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarStandardView *standard_view = THUNAR_STANDARD_VIEW (object);
+ gboolean loading;
+
+ switch (prop_id)
+ {
+ case PROP_CURRENT_DIRECTORY:
+ thunar_navigator_set_current_directory (THUNAR_NAVIGATOR (object), g_value_get_object (value));
+ break;
+
+ case PROP_LOADING:
+ loading = g_value_get_boolean (value);
+ if (G_LIKELY (loading != standard_view->loading))
+ {
+ standard_view->loading = loading;
+ g_object_notify (object, "loading");
+ g_object_notify (object, "statusbar-text");
+ }
+ break;
+
+ case PROP_SHOW_HIDDEN:
+ thunar_view_set_show_hidden (THUNAR_VIEW (object), g_value_get_boolean (value));
+ break;
+
+ case PROP_UI_MANAGER:
+ thunar_view_set_ui_manager (THUNAR_VIEW (object), g_value_get_object (value));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunar_standard_view_realize (GtkWidget *widget)
+{
+ ThunarStandardView *standard_view = THUNAR_STANDARD_VIEW (widget);
+ GtkIconTheme *icon_theme;
+ GdkDisplay *display;
+
+ /* let the GtkWidget do its work */
+ GTK_WIDGET_CLASS (thunar_standard_view_parent_class)->realize (widget);
+
+ /* query the clipboard manager for the display */
+ display = gtk_widget_get_display (widget);
+ standard_view->clipboard = thunar_clipboard_manager_get_for_display (display);
+
+ /* we need update the selection state based on the clipboard content */
+ g_signal_connect_swapped (G_OBJECT (standard_view->clipboard), "changed",
+ G_CALLBACK (thunar_standard_view_selection_changed), standard_view);
+ thunar_standard_view_selection_changed (standard_view);
+
+ /* determine the icon factory for the screen on which we are realized */
+ icon_theme = gtk_icon_theme_get_for_screen (gtk_widget_get_screen (widget));
+ standard_view->icon_factory = thunar_icon_factory_get_for_icon_theme (icon_theme);
+}
+
+
+
+static void
+thunar_standard_view_unrealize (GtkWidget *widget)
+{
+ ThunarStandardView *standard_view = THUNAR_STANDARD_VIEW (widget);
+
+ /* disconnect the clipboard changed handler */
+ g_signal_handlers_disconnect_by_func (G_OBJECT (standard_view->clipboard), thunar_standard_view_selection_changed, standard_view);
+
+ /* drop the reference on the icon factory */
+ g_object_unref (G_OBJECT (standard_view->icon_factory));
+ standard_view->icon_factory = NULL;
+
+ /* drop the reference on the clipboard manager */
+ g_object_unref (G_OBJECT (standard_view->clipboard));
+ standard_view->clipboard = NULL;
+
+ /* let the GtkWidget do its work */
+ GTK_WIDGET_CLASS (thunar_standard_view_parent_class)->unrealize (widget);
+}
+
+
+
+static void
+thunar_standard_view_grab_focus (GtkWidget *widget)
+{
+ /* forward the focus grab to the real view */
+ gtk_widget_grab_focus (GTK_BIN (widget)->child);
+}
+
+
+
+static gboolean
+thunar_standard_view_expose_event (GtkWidget *widget,
+ GdkEventExpose *event)
+{
+ gboolean result = FALSE;
+#if GTK_CHECK_VERSION(2,7,2)
+ cairo_t *cr;
+#endif
+ gint x, y, width, height;
+
+ /* let the scrolled window do it's work */
+ result = (*GTK_WIDGET_CLASS (thunar_standard_view_parent_class)->expose_event) (widget, event);
+
+ /* render the folder drop shadow */
+ if (G_UNLIKELY (THUNAR_STANDARD_VIEW (widget)->priv->drop_highlight))
+ {
+ x = widget->allocation.x;
+ y = widget->allocation.y;
+ width = widget->allocation.width;
+ height = widget->allocation.height;
+
+ gtk_paint_shadow (widget->style, widget->window,
+ GTK_STATE_NORMAL, GTK_SHADOW_OUT,
+ NULL, widget, "dnd",
+ x, y, width, height);
+
+#if GTK_CHECK_VERSION(2,7,2)
+ /* the cairo version looks better here, so we use it if possible */
+ cr = gdk_cairo_create (widget->window);
+ cairo_set_source_rgb (cr, 0.0, 0.0, 0.0);
+ cairo_set_line_width (cr, 1.0);
+ cairo_rectangle (cr, x + 0.5, y + 0.5, width - 1, height - 1);
+ cairo_stroke (cr);
+ cairo_destroy (cr);
+#else
+ gdk_draw_rectangle (widget->window, widget->style->black_gc,
+ FALSE, x, y, width - 1, height - 1);
+#endif
+ }
+
+ return result;
+}
+
+
+
+static ThunarFile*
+thunar_standard_view_get_current_directory (ThunarNavigator *navigator)
+{
+ ThunarStandardView *standard_view = THUNAR_STANDARD_VIEW (navigator);
+ ThunarFolder *folder;
+
+ g_return_val_if_fail (THUNAR_IS_STANDARD_VIEW (standard_view), NULL);
+
+ /* try to determine the current folder from the model */
+ folder = thunar_list_model_get_folder (standard_view->model);
+ if (G_LIKELY (folder != NULL))
+ return thunar_folder_get_corresponding_file (folder);
+
+ return NULL;
+}
+
+
+
+static void
+thunar_standard_view_set_current_directory (ThunarNavigator *navigator,
+ ThunarFile *current_directory)
+{
+ ThunarStandardView *standard_view = THUNAR_STANDARD_VIEW (navigator);
+ ThunarFolder *folder;
+
+ g_return_if_fail (THUNAR_IS_STANDARD_VIEW (standard_view));
+ g_return_if_fail (current_directory == NULL || THUNAR_IS_FILE (current_directory));
+
+ /* disconnect any previous "loading" binding */
+ if (G_LIKELY (standard_view->loading_binding != NULL))
+ exo_binding_unbind (standard_view->loading_binding);
+
+ /* check if we want to reset the directory */
+ if (G_UNLIKELY (current_directory == NULL))
+ {
+ thunar_list_model_set_folder (standard_view->model, NULL);
+ return;
+ }
+
+ /* We drop the model from the view as a simple optimization to speed up
+ * the process of disconnecting the model data from the view.
+ */
+ g_object_set (G_OBJECT (GTK_BIN (standard_view)->child), "model", NULL, NULL);
+
+ /* open the new directory as folder */
+ folder = thunar_folder_get_for_file (current_directory);
+
+ /* connect the "loading" binding */
+ standard_view->loading_binding = exo_binding_new_full (G_OBJECT (folder), "loading",
+ G_OBJECT (standard_view), "loading",
+ NULL, thunar_standard_view_loading_unbound,
+ standard_view);
+
+ /* apply the new folder */
+ thunar_list_model_set_folder (standard_view->model, folder);
+ g_object_unref (G_OBJECT (folder));
+
+ /* reconnect our model to the view */
+ g_object_set (G_OBJECT (GTK_BIN (standard_view)->child), "model", standard_view->model, NULL);
+
+ /* notify all listeners about the new/old current directory */
+ g_object_notify (G_OBJECT (standard_view), "current-directory");
+}
+
+
+
+static gboolean
+thunar_standard_view_get_loading (ThunarView *view)
+{
+ return THUNAR_STANDARD_VIEW (view)->loading;
+}
+
+
+
+static const gchar*
+thunar_standard_view_get_statusbar_text (ThunarView *view)
+{
+ ThunarStandardView *standard_view = THUNAR_STANDARD_VIEW (view);
+ GList *items;
+
+ g_return_val_if_fail (THUNAR_IS_STANDARD_VIEW (standard_view), NULL);
+
+ /* generate the statusbar text on-demand */
+ if (standard_view->statusbar_text == NULL)
+ {
+ /* query the selected items (actually a list of GtkTreePath's) */
+ items = THUNAR_STANDARD_VIEW_GET_CLASS (standard_view)->get_selected_items (standard_view);
+
+ /* we display a loading text if no items are
+ * selected and the view is loading
+ */
+ if (items == NULL && standard_view->loading)
+ return _("Loading folder contents...");
+
+ standard_view->statusbar_text = thunar_list_model_get_statusbar_text (standard_view->model, items);
+ g_list_foreach (items, (GFunc) gtk_tree_path_free, NULL);
+ g_list_free (items);
+ }
+
+ return standard_view->statusbar_text;
+}
+
+
+
+static gboolean
+thunar_standard_view_get_show_hidden (ThunarView *view)
+{
+ return thunar_list_model_get_show_hidden (THUNAR_STANDARD_VIEW (view)->model);
+}
+
+
+
+static void
+thunar_standard_view_set_show_hidden (ThunarView *view,
+ gboolean show_hidden)
+{
+ thunar_list_model_set_show_hidden (THUNAR_STANDARD_VIEW (view)->model, show_hidden);
+}
+
+
+
+static GtkUIManager*
+thunar_standard_view_get_ui_manager (ThunarView *view)
+{
+ return THUNAR_STANDARD_VIEW (view)->ui_manager;
+}
+
+
+
+static void
+thunar_standard_view_set_ui_manager (ThunarView *view,
+ GtkUIManager *ui_manager)
+{
+ ThunarStandardView *standard_view = THUNAR_STANDARD_VIEW (view);
+ GError *error = NULL;
+
+ /* disconnect from the previous UI manager */
+ if (G_LIKELY (standard_view->ui_manager != NULL))
+ {
+ /* remove any registered custom menu actions */
+ if (G_LIKELY (standard_view->priv->custom_merge_id != 0))
+ {
+ gtk_ui_manager_remove_ui (standard_view->ui_manager, standard_view->priv->custom_merge_id);
+ standard_view->priv->custom_merge_id = 0;
+ }
+
+ /* drop the previous custom action group */
+ if (G_LIKELY (standard_view->priv->custom_actions != NULL))
+ {
+ gtk_ui_manager_remove_action_group (standard_view->ui_manager, standard_view->priv->custom_actions);
+ g_object_unref (G_OBJECT (standard_view->priv->custom_actions));
+ standard_view->priv->custom_actions = NULL;
+ }
+
+ /* drop our action group from the previous UI manager */
+ gtk_ui_manager_remove_action_group (standard_view->ui_manager, standard_view->action_group);
+
+ /* unmerge the ui controls from derived classes */
+ (*THUNAR_STANDARD_VIEW_GET_CLASS (standard_view)->disconnect_ui_manager) (standard_view, standard_view->ui_manager);
+
+ /* unmerge our ui controls from the previous UI manager */
+ gtk_ui_manager_remove_ui (standard_view->ui_manager, standard_view->ui_merge_id);
+
+ /* drop the reference on the previous UI manager */
+ g_object_unref (G_OBJECT (standard_view->ui_manager));
+ }
+
+ /* apply the new setting */
+ standard_view->ui_manager = ui_manager;
+
+ /* connect to the new manager (if any) */
+ if (G_LIKELY (ui_manager != NULL))
+ {
+ /* we keep a reference on the new manager */
+ g_object_ref (G_OBJECT (ui_manager));
+
+ /* add our action group to the new manager */
+ gtk_ui_manager_insert_action_group (ui_manager, standard_view->action_group, -1);
+
+ /* merge our UI control items with the new manager */
+ standard_view->ui_merge_id = gtk_ui_manager_add_ui_from_string (ui_manager, thunar_standard_view_ui,
+ thunar_standard_view_ui_length, &error);
+ if (G_UNLIKELY (standard_view->ui_merge_id == 0))
+ {
+ g_error ("Failed to merge ThunarStandardView menus: %s", error->message);
+ g_error_free (error);
+ }
+
+ /* merge the ui controls from derived classes */
+ (*THUNAR_STANDARD_VIEW_GET_CLASS (standard_view)->connect_ui_manager) (standard_view, ui_manager);
+ }
+
+ /* let others know that we have a new manager */
+ g_object_notify (G_OBJECT (view), "ui-manager");
+}
+
+
+
+static gboolean
+thunar_standard_view_delete_selected_files (ThunarStandardView *standard_view)
+{
+ g_return_val_if_fail (THUNAR_IS_STANDARD_VIEW (standard_view), FALSE);
+
+ /* just emit the "activate" signal on the "delete" action */
+ gtk_action_activate (standard_view->priv->action_delete);
+
+ /* ...and we're done */
+ return TRUE;
+}
+
+
+
+static GdkDragAction
+thunar_standard_view_get_dest_actions (ThunarStandardView *standard_view,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ guint time,
+ ThunarFile **file_return)
+{
+ GdkDragAction actions = 0;
+ GdkDragAction action = 0;
+ GtkTreePath *path;
+ GtkTreeIter iter;
+ ThunarFile *file;
+
+ /* determine the path for the given coordinates */
+ path = (*THUNAR_STANDARD_VIEW_GET_CLASS (standard_view)->get_path_at_pos) (standard_view, x, y);
+ if (G_LIKELY (path != NULL))
+ {
+ /* determine the file for the path */
+ gtk_tree_model_get_iter (GTK_TREE_MODEL (standard_view->model), &iter, path);
+ file = thunar_list_model_get_file (standard_view->model, &iter);
+ }
+ else
+ {
+ /* determine the current directory */
+ file = thunar_navigator_get_current_directory (THUNAR_NAVIGATOR (standard_view));
+ if (G_LIKELY (file != NULL))
+ g_object_ref (G_OBJECT (file));
+ }
+
+ /* check if we can drop there */
+ if (G_LIKELY (file != NULL))
+ {
+ actions = thunar_file_accepts_drop (file, standard_view->priv->drop_path_list, context->actions);
+ if (G_LIKELY (actions != 0))
+ {
+ /* determine a working action */
+ if (G_LIKELY ((context->suggested_action & actions) != 0))
+ action = context->suggested_action;
+ else if ((actions & GDK_ACTION_ASK) != 0)
+ action = GDK_ACTION_ASK;
+ else if ((actions & GDK_ACTION_COPY) != 0)
+ action = GDK_ACTION_COPY;
+ else if ((actions & GDK_ACTION_LINK) != 0)
+ action = GDK_ACTION_LINK;
+ else if ((actions & GDK_ACTION_MOVE) != 0)
+ action = GDK_ACTION_MOVE;
+ else
+ action = GDK_ACTION_PRIVATE;
+
+ /* tell the caller about the file (if it's interested) */
+ if (G_UNLIKELY (file_return != NULL))
+ *file_return = g_object_ref (G_OBJECT (file));
+ }
+
+ /* release the file reference */
+ g_object_unref (G_OBJECT (file));
+ }
+
+ /* reset path if we cannot drop */
+ if (G_UNLIKELY (action == 0 && path != NULL))
+ {
+ gtk_tree_path_free (path);
+ path = NULL;
+ }
+
+ /* setup the drop-file for the icon renderer, so the user
+ * gets good visual feedback for the drop target.
+ */
+ g_object_set (G_OBJECT (standard_view->icon_renderer), "drop-file", (action != 0) ? file : NULL, NULL);
+
+ /* do the view highlighting */
+ if (standard_view->priv->drop_highlight != (path == NULL && action != 0))
+ {
+ standard_view->priv->drop_highlight = (path == NULL && action != 0);
+ gtk_widget_queue_draw (GTK_WIDGET (standard_view));
+ }
+
+ /* do the item highlighting */
+ (*THUNAR_STANDARD_VIEW_GET_CLASS (standard_view)->highlight_path) (standard_view, path);
+
+ /* tell Gdk whether we can drop here */
+ gdk_drag_status (context, action, time);
+
+ /* clean up */
+ if (G_LIKELY (path != NULL))
+ gtk_tree_path_free (path);
+
+ return actions;
+}
+
+
+
+static GList*
+thunar_standard_view_get_selected_files (ThunarStandardView *standard_view)
+{
+ GtkTreeIter iter;
+ ThunarFile *file;
+ GList *selected_items;
+ GList *selected_files = NULL;
+ GList *lp;
+
+ selected_items = THUNAR_STANDARD_VIEW_GET_CLASS (standard_view)->get_selected_items (standard_view);
+ for (lp = selected_items; lp != NULL; lp = lp->next)
+ {
+ gtk_tree_model_get_iter (GTK_TREE_MODEL (standard_view->model), &iter, lp->data);
+ file = thunar_list_model_get_file (standard_view->model, &iter);
+ selected_files = g_list_append (selected_files, file);
+ gtk_tree_path_free (lp->data);
+ }
+ g_list_free (selected_items);
+
+ return selected_files;
+}
+
+
+
+static GList*
+thunar_standard_view_get_selected_paths (ThunarStandardView *standard_view)
+{
+ GtkTreeIter iter;
+ ThunarFile *file;
+ GList *selected_items;
+ GList *selected_paths = NULL;
+ GList *lp;
+
+ selected_items = THUNAR_STANDARD_VIEW_GET_CLASS (standard_view)->get_selected_items (standard_view);
+ for (lp = selected_items; lp != NULL; lp = lp->next)
+ {
+ gtk_tree_model_get_iter (GTK_TREE_MODEL (standard_view->model), &iter, lp->data);
+ file = thunar_list_model_get_file (standard_view->model, &iter);
+ selected_paths = thunar_vfs_path_list_append (selected_paths, thunar_file_get_path (file));
+ g_object_unref (G_OBJECT (file));
+ gtk_tree_path_free (lp->data);
+ }
+ g_list_free (selected_items);
+
+ return selected_paths;
+}
+
+
+
+static gint
+compare_actions (gconstpointer a,
+ gconstpointer b)
+{
+ return strcmp (gtk_action_get_name (GTK_ACTION (a)), gtk_action_get_name (GTK_ACTION (b)));
+}
+
+
+
+static void
+thunar_standard_view_merge_custom_actions (ThunarStandardView *standard_view,
+ GList *selected_items)
+{
+ GtkTreeIter iter;
+ ThunarFile *file = NULL;
+ GtkWidget *window;
+ GList *providers;
+ GList *actions = NULL;
+ GList *files = NULL;
+ GList *tmp;
+ GList *lp;
+
+ /* we cannot add anything if we aren't connected to any UI manager */
+ if (G_UNLIKELY (standard_view->ui_manager == NULL))
+ return;
+
+ /* determine the toplevel window we belong to */
+ window = gtk_widget_get_toplevel (GTK_WIDGET (standard_view));
+
+ /* load the menu providers from the extension manager */
+ providers = thunar_extension_manager_list_providers (standard_view->priv->extension_manager, THUNARX_TYPE_MENU_PROVIDER);
+ if (G_LIKELY (providers != NULL))
+ {
+ /* determine the list of selected files or the current folder */
+ if (G_LIKELY (selected_items != NULL))
+ {
+ for (lp = selected_items; lp != NULL; lp = lp->next)
+ {
+ gtk_tree_model_get_iter (GTK_TREE_MODEL (standard_view->model), &iter, lp->data);
+ file = thunar_list_model_get_file (standard_view->model, &iter);
+ files = g_list_append (files, file);
+ }
+ }
+ else
+ {
+ /* grab a reference to the current directory of the view */
+ file = thunar_navigator_get_current_directory (THUNAR_NAVIGATOR (standard_view));
+ }
+
+ /* load the actions offered by the menu providers */
+ for (lp = providers; lp != NULL; lp = lp->next)
+ {
+ if (G_LIKELY (files != NULL))
+ tmp = thunarx_menu_provider_get_file_actions (lp->data, window, files);
+ else if (G_LIKELY (file != NULL))
+ tmp = thunarx_menu_provider_get_folder_actions (lp->data, window, THUNARX_FILE_INFO (file));
+ else
+ tmp = NULL;
+ actions = g_list_concat (actions, tmp);
+ g_object_unref (G_OBJECT (lp->data));
+ }
+ g_list_free (providers);
+
+ /* cleanup the selected files list (if any) */
+ if (G_LIKELY (files != NULL))
+ thunar_file_list_free (files);
+ }
+
+ /* determine the currently selected file/folder for which to load custom actions */
+ if (G_LIKELY (selected_items != NULL && selected_items->next == NULL))
+ {
+ gtk_tree_model_get_iter (GTK_TREE_MODEL (standard_view->model), &iter, selected_items->data);
+ file = thunar_list_model_get_file (standard_view->model, &iter);
+ }
+ else if (selected_items == NULL)
+ {
+ file = thunar_navigator_get_current_directory (THUNAR_NAVIGATOR (standard_view));
+ if (G_LIKELY (file != NULL))
+ g_object_ref (G_OBJECT (file));
+ }
+ else
+ {
+ file = NULL;
+ }
+
+ /* load the custom actions for the currently selected file/folder */
+ if (G_LIKELY (file != NULL))
+ {
+ tmp = thunar_file_get_actions (file, window);
+ actions = g_list_concat (actions, tmp);
+ g_object_unref (G_OBJECT (file));
+ }
+
+ /* remove the previously determined menu actions from the UI manager */
+ if (G_LIKELY (standard_view->priv->custom_actions != 0))
+ {
+ gtk_ui_manager_remove_ui (standard_view->ui_manager, standard_view->priv->custom_merge_id);
+ standard_view->priv->custom_merge_id = 0;
+ }
+
+ /* drop any previous custom action group */
+ if (G_LIKELY (standard_view->priv->custom_actions != NULL))
+ {
+ gtk_ui_manager_remove_action_group (standard_view->ui_manager, standard_view->priv->custom_actions);
+ g_object_unref (G_OBJECT (standard_view->priv->custom_actions));
+ standard_view->priv->custom_actions = NULL;
+ }
+
+ /* add the actions specified by the menu providers */
+ if (G_LIKELY (actions != NULL))
+ {
+ /* allocate the action group and the merge id for the custom actions */
+ standard_view->priv->custom_actions = gtk_action_group_new ("thunar-standard-view-custom-actions");
+ standard_view->priv->custom_merge_id = gtk_ui_manager_new_merge_id (standard_view->ui_manager);
+ gtk_ui_manager_insert_action_group (standard_view->ui_manager, standard_view->priv->custom_actions, -1);
+
+ /* sort the actions by their names */
+ actions = g_list_sort (actions, compare_actions);
+
+ /* add the actions to the UI manager */
+ for (lp = actions; lp != NULL; lp = lp->next)
+ {
+ /* add the action to the action group */
+ gtk_action_group_add_action (standard_view->priv->custom_actions, GTK_ACTION (lp->data));
+
+ /* add the action to the UI manager */
+ if (G_LIKELY (selected_items != NULL))
+ {
+ /* add to the file context menu */
+ gtk_ui_manager_add_ui (standard_view->ui_manager,
+ standard_view->priv->custom_merge_id,
+ "/file-context-menu/placeholder-custom-actions",
+ gtk_action_get_name (GTK_ACTION (lp->data)),
+ gtk_action_get_name (GTK_ACTION (lp->data)),
+ GTK_UI_MANAGER_MENUITEM, FALSE);
+ }
+ else
+ {
+ /* add to the folder context menu */
+ gtk_ui_manager_add_ui (standard_view->ui_manager,
+ standard_view->priv->custom_merge_id,
+ "/folder-context-menu/placeholder-custom-actions",
+ gtk_action_get_name (GTK_ACTION (lp->data)),
+ gtk_action_get_name (GTK_ACTION (lp->data)),
+ GTK_UI_MANAGER_MENUITEM, FALSE);
+ }
+
+ /* release the reference on the action */
+ g_object_unref (G_OBJECT (lp->data));
+ }
+
+ /* be sure to update the UI manager to avoid flickering */
+ gtk_ui_manager_ensure_update (standard_view->ui_manager);
+
+ /* cleanup */
+ g_list_free (actions);
+ }
+}
+
+
+
+static void
+thunar_standard_view_update_statusbar_text (ThunarStandardView *standard_view)
+{
+ g_return_if_fail (THUNAR_IS_STANDARD_VIEW (standard_view));
+
+ /* clear the current status text (will be recalculated on-demand) */
+ g_free (standard_view->statusbar_text);
+ standard_view->statusbar_text = NULL;
+
+ /* tell everybody that the statusbar text may have changed */
+ g_object_notify (G_OBJECT (standard_view), "statusbar-text");
+}
+
+
+
+static void
+thunar_standard_view_action_create_folder (GtkAction *action,
+ ThunarStandardView *standard_view)
+{
+ ThunarVfsMimeDatabase *mime_database;
+ ThunarVfsMimeInfo *mime_info;
+ ThunarApplication *application;
+ const gchar *filename;
+ ThunarFile *current_directory;
+ GtkWidget *dialog;
+ GtkWidget *window;
+ GError *error = NULL;
+ GList path_list;
+ gchar *name;
+
+ g_return_if_fail (GTK_IS_ACTION (action));
+ g_return_if_fail (THUNAR_IS_STANDARD_VIEW (standard_view));
+
+ /* lookup "inode/directory" mime info */
+ mime_database = thunar_vfs_mime_database_get_default ();
+ mime_info = thunar_vfs_mime_database_get_info (mime_database, "inode/directory");
+
+ /* determine the toplevel window */
+ window = gtk_widget_get_toplevel (GTK_WIDGET (standard_view));
+
+ /* display the create dialog */
+ dialog = g_object_new (THUNAR_TYPE_CREATE_DIALOG,
+ "destroy-with-parent", TRUE,
+ "filename", _("New Folder"),
+ "mime-info", mime_info,
+ "modal", TRUE,
+ "title", _("New Folder..."),
+ NULL);
+ if (G_LIKELY (window != NULL))
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (window));
+ if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK)
+ {
+ /* determine the chosen filename */
+ filename = thunar_create_dialog_get_filename (THUNAR_CREATE_DIALOG (dialog));
+
+ /* convert the UTF-8 filename to the local file system encoding */
+ name = g_filename_from_utf8 (filename, -1, NULL, NULL, &error);
+ if (G_UNLIKELY (name == NULL))
+ {
+ /* display an error message */
+ thunar_dialogs_show_error (dialog, error, _("Cannot convert filename `%s' to the local encoding"), filename);
+
+ /* release the error */
+ g_error_free (error);
+ }
+ else
+ {
+ /* determine the ThunarFile for the current directory */
+ current_directory = thunar_navigator_get_current_directory (THUNAR_NAVIGATOR (standard_view));
+ if (G_LIKELY (current_directory != NULL))
+ {
+ /* fake the path list */
+ path_list.data = thunar_vfs_path_relative (thunar_file_get_path (current_directory), name);
+ path_list.next = path_list.prev = NULL;
+
+ /* launch the operation */
+ application = thunar_application_get ();
+ thunar_application_mkdir (application, GTK_WIDGET (standard_view), &path_list,
+ thunar_standard_view_new_files_closure (standard_view));
+ g_object_unref (G_OBJECT (application));
+
+ /* release the path */
+ thunar_vfs_path_unref (path_list.data);
+ }
+
+ /* release the file name in the local encoding */
+ g_free (name);
+ }
+ }
+ gtk_widget_destroy (dialog);
+
+ /* cleanup */
+ g_object_unref (G_OBJECT (mime_database));
+ thunar_vfs_mime_info_unref (mime_info);
+}
+
+
+
+static void
+thunar_standard_view_action_properties (GtkAction *action,
+ ThunarStandardView *standard_view)
+{
+ GtkWidget *toplevel;
+ GtkWidget *dialog;
+ GList *files;
+
+ g_return_if_fail (GTK_IS_ACTION (action));
+ g_return_if_fail (THUNAR_IS_STANDARD_VIEW (standard_view));
+
+ files = thunar_standard_view_get_selected_files (standard_view);
+ if (G_LIKELY (g_list_length (files) == 1))
+ {
+ toplevel = gtk_widget_get_toplevel (GTK_WIDGET (standard_view));
+ if (G_LIKELY (toplevel != NULL))
+ {
+ dialog = g_object_new (THUNAR_TYPE_PROPERTIES_DIALOG,
+ "destroy-with-parent", TRUE,
+ "file", files->data,
+ NULL);
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (toplevel));
+ gtk_widget_show (dialog);
+ }
+ }
+ thunar_file_list_free (files);
+}
+
+
+
+static void
+thunar_standard_view_action_copy (GtkAction *action,
+ ThunarStandardView *standard_view)
+{
+ GList *files;
+
+ g_return_if_fail (GTK_IS_ACTION (action));
+ g_return_if_fail (THUNAR_IS_STANDARD_VIEW (standard_view));
+ g_return_if_fail (THUNAR_IS_CLIPBOARD_MANAGER (standard_view->clipboard));
+
+ files = thunar_standard_view_get_selected_files (standard_view);
+ thunar_clipboard_manager_copy_files (standard_view->clipboard, files);
+ thunar_file_list_free (files);
+}
+
+
+
+static void
+thunar_standard_view_action_cut (GtkAction *action,
+ ThunarStandardView *standard_view)
+{
+ GList *files;
+
+ g_return_if_fail (GTK_IS_ACTION (action));
+ g_return_if_fail (THUNAR_IS_STANDARD_VIEW (standard_view));
+ g_return_if_fail (THUNAR_IS_CLIPBOARD_MANAGER (standard_view->clipboard));
+
+ files = thunar_standard_view_get_selected_files (standard_view);
+ thunar_clipboard_manager_cut_files (standard_view->clipboard, files);
+ thunar_file_list_free (files);
+}
+
+
+
+static void
+thunar_standard_view_action_paste (GtkAction *action,
+ ThunarStandardView *standard_view)
+{
+ ThunarFile *current_directory;
+
+ g_return_if_fail (GTK_IS_ACTION (action));
+ g_return_if_fail (THUNAR_IS_STANDARD_VIEW (standard_view));
+
+ current_directory = thunar_navigator_get_current_directory (THUNAR_NAVIGATOR (standard_view));
+ if (G_LIKELY (current_directory != NULL))
+ {
+ thunar_clipboard_manager_paste_files (standard_view->clipboard, thunar_file_get_path (current_directory),
+ GTK_WIDGET (standard_view), thunar_standard_view_new_files_closure (standard_view));
+ }
+}
+
+
+
+static void
+thunar_standard_view_action_delete (GtkAction *action,
+ ThunarStandardView *standard_view)
+{
+ ThunarApplication *application;
+ GtkWidget *dialog;
+ GtkWidget *window;
+ GList *lp;
+ GList *path_list;
+ GList *selected_files;
+ guint n_selected_files;
+ gchar *message;
+ gint response;
+
+ g_return_if_fail (GTK_IS_ACTION (action));
+ g_return_if_fail (THUNAR_IS_STANDARD_VIEW (standard_view));
+
+ /* determine the selected files */
+ selected_files = thunar_standard_view_get_selected_files (standard_view);
+ if (G_UNLIKELY (selected_files == NULL))
+ return;
+
+ /* generate the question to confirm the delete operation */
+ if (G_LIKELY (selected_files->next == NULL))
+ {
+ message = g_strdup_printf (_("Are you sure that you want to\npermanently delete \"%s\"?"),
+ thunar_file_get_display_name (THUNAR_FILE (selected_files->data)));
+ }
+ else
+ {
+ n_selected_files = g_list_length (selected_files);
+ message = g_strdup_printf (ngettext ("Are you sure that you want to permanently\ndelete the selected file?",
+ "Are you sure that you want to permanently\ndelete the %u selected files?",
+ n_selected_files),
+ n_selected_files);
+ }
+
+ /* ask the user to confirm the delete operation */
+ window = gtk_widget_get_toplevel (GTK_WIDGET (standard_view));
+ dialog = gtk_message_dialog_new (GTK_WINDOW (window),
+ GTK_DIALOG_MODAL
+ | GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_QUESTION,
+ GTK_BUTTONS_YES_NO,
+ message);
+ gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_YES);
+ gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), _("If you delete a file, it is permanently lost."));
+ response = gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
+ g_free (message);
+
+ /* perform the delete operation */
+ if (G_LIKELY (response == GTK_RESPONSE_YES))
+ {
+ /* generate the path list from the list of selected files */
+ for (lp = selected_files, path_list = NULL; lp != NULL; lp = lp->next)
+ path_list = g_list_append (path_list, thunar_file_get_path (THUNAR_FILE (lp->data)));
+ application = thunar_application_get ();
+ thunar_application_unlink (application, window, path_list);
+ g_object_unref (G_OBJECT (application));
+ g_list_free (path_list);
+ }
+
+ /* release the list of selected files */
+ thunar_file_list_free (selected_files);
+}
+
+
+
+static void
+thunar_standard_view_action_paste_into_folder (GtkAction *action,
+ ThunarStandardView *standard_view)
+{
+ ThunarFile *file;
+ GList *files;
+
+ g_return_if_fail (GTK_IS_ACTION (action));
+ g_return_if_fail (THUNAR_IS_STANDARD_VIEW (standard_view));
+
+ /* determine the first selected directory and paste into it */
+ files = thunar_standard_view_get_selected_files (standard_view);
+ file = (files != NULL) ? THUNAR_FILE (files->data) : NULL;
+ if (G_LIKELY (file != NULL && thunar_file_is_directory (file)))
+ thunar_clipboard_manager_paste_files (standard_view->clipboard, thunar_file_get_path (file), GTK_WIDGET (standard_view), NULL);
+ thunar_file_list_free (files);
+}
+
+
+
+static void
+thunar_standard_view_action_select_all_files (GtkAction *action,
+ ThunarStandardView *standard_view)
+{
+ g_return_if_fail (GTK_IS_ACTION (action));
+ g_return_if_fail (THUNAR_IS_STANDARD_VIEW (standard_view));
+
+ THUNAR_STANDARD_VIEW_GET_CLASS (standard_view)->select_all (standard_view);
+}
+
+
+
+static void
+thunar_standard_view_action_select_by_pattern (GtkAction *action,
+ ThunarStandardView *standard_view)
+{
+ GtkWidget *window;
+ GtkWidget *dialog;
+ GtkWidget *hbox;
+ GtkWidget *label;
+ GtkWidget *entry;
+ GList *paths;
+ GList *lp;
+ gint response;
+
+ g_return_if_fail (GTK_IS_ACTION (action));
+ g_return_if_fail (THUNAR_IS_STANDARD_VIEW (standard_view));
+
+ window = gtk_widget_get_toplevel (GTK_WIDGET (standard_view));
+ dialog = gtk_dialog_new_with_buttons (_("Select by Pattern"),
+ GTK_WINDOW (window),
+ GTK_DIALOG_MODAL
+ | GTK_DIALOG_NO_SEPARATOR
+ | GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_OK, GTK_RESPONSE_OK,
+ NULL);
+ gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
+ gtk_container_set_border_width (GTK_CONTAINER (dialog), 6);
+
+ hbox = g_object_new (GTK_TYPE_HBOX, "border-width", 6, "spacing", 10, NULL);
+ gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox, TRUE, TRUE, 0);
+ gtk_widget_show (hbox);
+
+ label = gtk_label_new (_("Pattern:"));
+ gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
+ gtk_widget_show (label);
+
+ entry = g_object_new (GTK_TYPE_ENTRY, "activates-default", TRUE, NULL);
+ gtk_box_pack_start (GTK_BOX (hbox), entry, TRUE, TRUE, 0);
+ gtk_widget_show (entry);
+
+ response = gtk_dialog_run (GTK_DIALOG (dialog));
+ if (response == GTK_RESPONSE_OK)
+ {
+ /* select all files that match the entered pattern */
+ paths = thunar_list_model_get_paths_for_pattern (standard_view->model, gtk_entry_get_text (GTK_ENTRY (entry)));
+ THUNAR_STANDARD_VIEW_GET_CLASS (standard_view)->unselect_all (standard_view);
+ for (lp = paths; lp != NULL; lp = lp->next)
+ {
+ THUNAR_STANDARD_VIEW_GET_CLASS (standard_view)->select_path (standard_view, lp->data);
+ gtk_tree_path_free (lp->data);
+ }
+ g_list_free (paths);
+ }
+
+ gtk_widget_destroy (dialog);
+}
+
+
+
+static void
+thunar_standard_view_action_duplicate (GtkAction *action,
+ ThunarStandardView *standard_view)
+{
+ ThunarApplication *application;
+ ThunarFile *current_directory;
+ GClosure *new_files_closure;
+ GList *selected_paths;
+
+ g_return_if_fail (GTK_IS_ACTION (action));
+ g_return_if_fail (THUNAR_IS_STANDARD_VIEW (standard_view));
+
+ /* determine the file for the current directory */
+ current_directory = thunar_navigator_get_current_directory (THUNAR_NAVIGATOR (standard_view));
+ if (G_LIKELY (current_directory != NULL))
+ {
+ /* determine the selected paths for the view */
+ selected_paths = thunar_standard_view_get_selected_paths (standard_view);
+
+ /* copy the selected files into the current directory, which effectively
+ * creates duplicates of the files.
+ */
+ application = thunar_application_get ();
+ new_files_closure = thunar_standard_view_new_files_closure (standard_view);
+ thunar_application_copy_into (application, GTK_WIDGET (standard_view), selected_paths,
+ thunar_file_get_path (current_directory), new_files_closure);
+ g_object_unref (G_OBJECT (application));
+
+ /* clean up */
+ thunar_vfs_path_list_free (selected_paths);
+ }
+}
+
+
+
+static void
+thunar_standard_view_action_make_link (GtkAction *action,
+ ThunarStandardView *standard_view)
+{
+ ThunarApplication *application;
+ ThunarFile *current_directory;
+ GClosure *new_files_closure;
+ GList *selected_path_list = NULL;
+ GList *selected_files;
+ GList *lp;
+
+ g_return_if_fail (GTK_IS_ACTION (action));
+ g_return_if_fail (THUNAR_IS_STANDARD_VIEW (standard_view));
+
+ /* determine the file for the current directory */
+ current_directory = thunar_navigator_get_current_directory (THUNAR_NAVIGATOR (standard_view));
+ if (G_LIKELY (current_directory != NULL))
+ {
+ /* determine the selected files for the view */
+ selected_files = thunar_standard_view_get_selected_files (standard_view);
+
+ /* determine the ThunarVfsPaths for the selected files */
+ for (lp = g_list_last (selected_files); lp != NULL; lp = lp->prev)
+ selected_path_list = g_list_prepend (selected_path_list, thunar_file_get_path (lp->data));
+
+ /* link the selected files into the current directory, which effectively
+ * creates new unique links for the files.
+ */
+ application = thunar_application_get ();
+ new_files_closure = thunar_standard_view_new_files_closure (standard_view);
+ thunar_application_link_into (application, GTK_WIDGET (standard_view), selected_path_list,
+ thunar_file_get_path (current_directory), new_files_closure);
+ g_object_unref (G_OBJECT (application));
+
+ /* clean up */
+ thunar_file_list_free (selected_files);
+ g_list_free (selected_path_list);
+ }
+}
+
+
+
+static void
+thunar_standard_view_action_rename (GtkAction *action,
+ ThunarStandardView *standard_view)
+{
+ GList *selected_items;
+
+ g_return_if_fail (GTK_IS_ACTION (action));
+ g_return_if_fail (THUNAR_IS_STANDARD_VIEW (standard_view));
+
+ /* start renaming if we have exactly one selected file */
+ selected_items = (*THUNAR_STANDARD_VIEW_GET_CLASS (standard_view)->get_selected_items) (standard_view);
+ if (G_LIKELY (selected_items != NULL && selected_items->next == NULL))
+ (*THUNAR_STANDARD_VIEW_GET_CLASS (standard_view)->set_cursor) (standard_view, selected_items->data, TRUE);
+ g_list_foreach (selected_items, (GFunc) gtk_tree_path_free, NULL);
+ g_list_free (selected_items);
+}
+
+
+
+static GClosure*
+thunar_standard_view_new_files_closure (ThunarStandardView *standard_view)
+{
+ /* drop any previous "new-files" closure */
+ if (G_UNLIKELY (standard_view->priv->new_files_closure != NULL))
+ {
+ g_closure_invalidate (standard_view->priv->new_files_closure);
+ g_closure_unref (standard_view->priv->new_files_closure);
+ }
+
+ /* allocate a new "new-files" closure */
+ standard_view->priv->new_files_closure = g_cclosure_new (G_CALLBACK (thunar_standard_view_new_files), standard_view, NULL);
+ g_closure_ref (standard_view->priv->new_files_closure);
+ g_closure_sink (standard_view->priv->new_files_closure);
+
+ /* and return our new closure */
+ return standard_view->priv->new_files_closure;
+}
+
+
+
+static void
+thunar_standard_view_new_files (ThunarVfsJob *job,
+ GList *path_list,
+ ThunarStandardView *standard_view)
+{
+ GtkTreePath *first_path = NULL;
+ ThunarFile *file;
+ GList *file_list = NULL;
+ GList *paths;
+ GList *lp;
+
+ g_return_if_fail (THUNAR_VFS_IS_JOB (job));
+ g_return_if_fail (THUNAR_IS_STANDARD_VIEW (standard_view));
+
+ /* verify that we have a model and a non-empty path_list */
+ if (G_UNLIKELY (standard_view->model == NULL || path_list == NULL))
+ return;
+
+ /* determine the files for the paths */
+ for (lp = path_list; lp != NULL; lp = lp->next)
+ {
+ file = thunar_file_cache_lookup (lp->data);
+ if (G_LIKELY (file != NULL))
+ file_list = g_list_prepend (file_list, file);
+ }
+
+ /* determine the tree paths for the given files */
+ paths = thunar_list_model_get_paths_for_files (standard_view->model, file_list);
+ if (G_LIKELY (paths != NULL))
+ {
+ /* unselect all previously selected paths */
+ (*THUNAR_STANDARD_VIEW_GET_CLASS (standard_view)->unselect_all) (standard_view);
+
+ /* select the given tree paths */
+ for (first_path = paths->data, lp = paths; lp != NULL; lp = lp->next)
+ {
+ /* check if this path is located before the current first_path */
+ if (gtk_tree_path_compare (lp->data, first_path) < 0)
+ first_path = lp->data;
+
+ /* select the path */
+ (*THUNAR_STANDARD_VIEW_GET_CLASS (standard_view)->select_path) (standard_view, lp->data);
+ }
+
+ /* scroll to the first path (previously determined) */
+ (*THUNAR_STANDARD_VIEW_GET_CLASS (standard_view)->scroll_to_path) (standard_view, first_path);
+
+ /* release the tree paths */
+ g_list_foreach (paths, (GFunc) gtk_tree_path_free, NULL);
+ g_list_free (paths);
+
+ /* grab the focus to the view widget */
+ gtk_widget_grab_focus (GTK_BIN (standard_view)->child);
+ }
+
+ /* release the file list */
+ g_list_free (file_list);
+}
+
+
+
+static gboolean
+thunar_standard_view_button_release_event (GtkWidget *view,
+ GdkEventButton *event,
+ ThunarStandardView *standard_view)
+{
+ g_return_val_if_fail (THUNAR_IS_STANDARD_VIEW (standard_view), FALSE);
+ g_return_val_if_fail (standard_view->priv->drag_timer_id >= 0, FALSE);
+
+ /* cancel the pending drag timer */
+ g_source_remove (standard_view->priv->drag_timer_id);
+
+ /* fire up the context menu */
+ thunar_standard_view_context_menu (standard_view, 0, event->time);
+
+ return TRUE;
+}
+
+
+
+static gboolean
+thunar_standard_view_motion_notify_event (GtkWidget *view,
+ GdkEventMotion *event,
+ ThunarStandardView *standard_view)
+{
+ GdkDragContext *context;
+ GtkTargetList *target_list;
+
+ g_return_val_if_fail (THUNAR_IS_STANDARD_VIEW (standard_view), FALSE);
+ g_return_val_if_fail (standard_view->priv->drag_timer_id >= 0, FALSE);
+
+ /* check if we passed the DnD threshold */
+ if (gtk_drag_check_threshold (view, standard_view->priv->drag_x, standard_view->priv->drag_y, event->x, event->y))
+ {
+ /* cancel the drag timer, as we won't popup the menu anymore */
+ g_source_remove (standard_view->priv->drag_timer_id);
+
+ /* allocate the drag context (preferred action is to ask the user) */
+ target_list = gtk_target_list_new (drag_targets, G_N_ELEMENTS (drag_targets));
+ context = gtk_drag_begin (view, target_list, GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK | GDK_ACTION_ASK, 3, (GdkEvent *) event);
+ context->suggested_action = GDK_ACTION_ASK;
+ gtk_target_list_unref (target_list);
+
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+
+
+static gboolean
+thunar_standard_view_drag_drop (GtkWidget *view,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ guint time,
+ ThunarStandardView *standard_view)
+{
+ GdkAtom target;
+
+ target = gtk_drag_dest_find_target (view, context, NULL);
+ if (G_LIKELY (target != GDK_NONE))
+ {
+ /* set state so the drag-data-received knows that
+ * this is really a drop this time.
+ */
+ standard_view->priv->drop_occurred = TRUE;
+
+ /* request the drag data from the source */
+ gtk_drag_get_data (view, context, target, time);
+
+ /* we'll call gtk_drag_finish() later */
+ return TRUE;
+ }
+ else
+ {
+ /* we cannot handle the drag data */
+ return FALSE;
+ }
+}
+
+
+
+static void
+thunar_standard_view_drag_data_received (GtkWidget *view,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ GtkSelectionData *selection_data,
+ guint info,
+ guint time,
+ ThunarStandardView *standard_view)
+{
+ GdkDragAction actions;
+ GdkDragAction action;
+ ThunarFile *file = NULL;
+ gboolean succeed = FALSE;
+
+ /* check if we don't already know the drop data */
+ if (G_LIKELY (!standard_view->priv->drop_data_ready))
+ {
+ /* extract the URI list from the selection data (if valid) */
+ if (info == TEXT_URI_LIST && selection_data->format == 8 && selection_data->length > 0)
+ standard_view->priv->drop_path_list = thunar_vfs_path_list_from_string ((gchar *) selection_data->data, NULL);
+
+ /* reset the state */
+ standard_view->priv->drop_data_ready = TRUE;
+ }
+
+ /* check if the data was dropped */
+ if (G_UNLIKELY (standard_view->priv->drop_occurred))
+ {
+ /* reset the state */
+ standard_view->priv->drop_occurred = FALSE;
+
+ /* determine the drop position */
+ actions = thunar_standard_view_get_dest_actions (standard_view, context, x, y, time, &file);
+ if (G_LIKELY ((actions & (GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK)) != 0))
+ {
+ /* ask the user what to do with the drop data */
+ action = (context->action == GDK_ACTION_ASK) ? thunar_dnd_ask (GTK_WIDGET (standard_view), time, actions) : context->action;
+
+ /* perform the requested action */
+ if (G_LIKELY (action != 0))
+ {
+ succeed = thunar_dnd_perform (GTK_WIDGET (standard_view), file, standard_view->priv->drop_path_list,
+ action, thunar_standard_view_new_files_closure (standard_view));
+ }
+ }
+
+ /* release the file reference */
+ if (G_LIKELY (file != NULL))
+ g_object_unref (G_OBJECT (file));
+
+ /* disable the highlighting and release the drag data */
+ thunar_standard_view_drag_leave (view, context, time, standard_view);
+
+ /* tell the peer that we handled the drop */
+ gtk_drag_finish (context, succeed, FALSE, time);
+ }
+}
+
+
+
+static void
+thunar_standard_view_drag_leave (GtkWidget *widget,
+ GdkDragContext *context,
+ guint time,
+ ThunarStandardView *standard_view)
+{
+ /* reset the drop-file for the icon renderer */
+ g_object_set (G_OBJECT (standard_view->icon_renderer), "drop-file", NULL, NULL);
+
+ /* disable the drop highlighting around the view */
+ if (G_LIKELY (standard_view->priv->drop_highlight))
+ {
+ standard_view->priv->drop_highlight = FALSE;
+ gtk_widget_queue_draw (GTK_WIDGET (standard_view));
+ }
+
+ /* reset the "drop data ready" status and free the URI list */
+ if (G_LIKELY (standard_view->priv->drop_data_ready))
+ {
+ thunar_vfs_path_list_free (standard_view->priv->drop_path_list);
+ standard_view->priv->drop_path_list = NULL;
+ standard_view->priv->drop_data_ready = FALSE;
+ }
+
+ /* disable the highlighting of the items in the view */
+ (*THUNAR_STANDARD_VIEW_GET_CLASS (standard_view)->highlight_path) (standard_view, NULL);
+}
+
+
+
+static gboolean
+thunar_standard_view_drag_motion (GtkWidget *view,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ guint time,
+ ThunarStandardView *standard_view)
+{
+ GdkAtom target;
+
+ /* request the drop data on-demand (if we don't have it already) */
+ if (G_UNLIKELY (!standard_view->priv->drop_data_ready))
+ {
+ /* check if we can handle that drag data (yet?) */
+ target = gtk_drag_dest_find_target (view, context, NULL);
+ if (G_UNLIKELY (target == GDK_NONE))
+ {
+ /* we cannot handle the drag data */
+ gdk_drag_status (context, 0, time);
+ }
+ else
+ {
+ /* request the drag data from the source */
+ gtk_drag_get_data (view, context, target, time);
+
+ /* and deny the drop so far */
+ gdk_drag_status (context, 0, time);
+ }
+ }
+ else
+ {
+ /* check whether we can drop at (x,y) */
+ thunar_standard_view_get_dest_actions (standard_view, context, x, y, time, NULL);
+ }
+
+ return TRUE;
+}
+
+
+
+static void
+thunar_standard_view_drag_begin (GtkWidget *view,
+ GdkDragContext *context,
+ ThunarStandardView *standard_view)
+{
+ ThunarFile *file;
+ GdkPixbuf *icon;
+ gint size;
+
+ g_return_if_fail (standard_view->priv->drag_path_list == NULL);
+
+ /* query the list of selected URIs */
+ standard_view->priv->drag_path_list = thunar_standard_view_get_selected_paths (standard_view);
+ if (G_LIKELY (standard_view->priv->drag_path_list != NULL))
+ {
+ /* determine the first selected file */
+ file = thunar_file_get_for_path (standard_view->priv->drag_path_list->data, NULL);
+ if (G_LIKELY (file != NULL))
+ {
+ /* generate an icon based on that file */
+ g_object_get (G_OBJECT (standard_view->icon_renderer), "size", &size, NULL);
+ icon = thunar_icon_factory_load_file_icon (standard_view->icon_factory, file, THUNAR_FILE_ICON_STATE_DEFAULT, size);
+ gtk_drag_set_icon_pixbuf (context, icon, 0, 0);
+ g_object_unref (G_OBJECT (icon));
+
+ /* release the file */
+ g_object_unref (G_OBJECT (file));
+ }
+ }
+}
+
+
+
+static void
+thunar_standard_view_drag_data_get (GtkWidget *view,
+ GdkDragContext *context,
+ GtkSelectionData *selection_data,
+ guint info,
+ guint time,
+ ThunarStandardView *standard_view)
+{
+ gchar *uri_string;
+
+ /* set the URI list for the drag selection */
+ uri_string = thunar_vfs_path_list_to_string (standard_view->priv->drag_path_list);
+ gtk_selection_data_set (selection_data, selection_data->target, 8, (guchar *) uri_string, strlen (uri_string));
+ g_free (uri_string);
+}
+
+
+
+static void
+thunar_standard_view_drag_data_delete (GtkWidget *view,
+ GdkDragContext *context,
+ ThunarStandardView *standard_view)
+{
+ /* make sure the default handler of ExoIconView/GtkTreeView is never run */
+ g_signal_stop_emission_by_name (G_OBJECT (view), "drag-data-delete");
+}
+
+
+
+static void
+thunar_standard_view_drag_end (GtkWidget *view,
+ GdkDragContext *context,
+ ThunarStandardView *standard_view)
+{
+ /* release the list of dragged URIs */
+ thunar_vfs_path_list_free (standard_view->priv->drag_path_list);
+ standard_view->priv->drag_path_list = NULL;
+}
+
+
+
+static void
+thunar_standard_view_error (ThunarListModel *model,
+ const GError *error,
+ ThunarStandardView *standard_view)
+{
+ ThunarFile *file;
+
+ g_return_if_fail (THUNAR_IS_LIST_MODEL (model));
+ g_return_if_fail (THUNAR_IS_STANDARD_VIEW (standard_view));
+ g_return_if_fail (standard_view->model == model);
+
+ /* determine the ThunarFile for the current directory */
+ file = thunar_navigator_get_current_directory (THUNAR_NAVIGATOR (standard_view));
+ if (G_UNLIKELY (file == NULL))
+ return;
+
+ /* inform the user about the problem */
+ thunar_dialogs_show_error (GTK_WIDGET (standard_view), error,
+ _("Failed to open directory `%s'"),
+ thunar_file_get_display_name (file));
+}
+
+
+
+static void
+thunar_standard_view_renamed (ThunarTextRenderer *text_renderer,
+ const gchar *path_string,
+ const gchar *text,
+ ThunarStandardView *standard_view)
+{
+ GtkTreeRowReference *row;
+ const gchar *old_name;
+ GtkTreePath *path;
+ GtkTreeIter iter;
+ ThunarFile *file;
+ GError *error = NULL;
+
+ g_return_if_fail (THUNAR_IS_TEXT_RENDERER (text_renderer));
+ g_return_if_fail (THUNAR_IS_STANDARD_VIEW (standard_view));
+ g_return_if_fail (path_string != NULL);
+
+ /* verify that the user supplied a valid file name */
+ if (G_UNLIKELY (text == NULL || *text == '\0'))
+ return;
+
+ /* determine path and iterator for the edited item */
+ path = gtk_tree_path_new_from_string (path_string);
+ gtk_tree_model_get_iter (GTK_TREE_MODEL (standard_view->model), &iter, path);
+
+ /* determine the file from the iter */
+ file = thunar_list_model_get_file (THUNAR_LIST_MODEL (standard_view->model), &iter);
+
+ /* check if the name changed */
+ old_name = thunar_file_get_display_name (file);
+ if (G_LIKELY (!exo_str_is_equal (old_name, text)))
+ {
+ /* remember a row reference to the file as the
+ * rename operation is likely cause a reordering
+ * of the list model.
+ */
+ row = gtk_tree_row_reference_new (GTK_TREE_MODEL (standard_view->model), path);
+
+ /* try to rename the file */
+ if (!thunar_file_rename (file, text, &error))
+ {
+ /* display an error message */
+ thunar_dialogs_show_error (GTK_WIDGET (standard_view), error, _("Failed to rename `%s'"), old_name);
+
+ /* release the error */
+ g_error_free (error);
+ }
+ else if (G_LIKELY (gtk_tree_row_reference_valid (row)))
+ {
+ /* place the cursor on the item again and scroll to the position */
+ (*THUNAR_STANDARD_VIEW_GET_CLASS (standard_view)->scroll_to_path) (standard_view, gtk_tree_row_reference_get_path (row));
+
+ /* update the selection, so we get updated actions, statusbar,
+ * etc. with the new file name and probably new mime type.
+ */
+ thunar_standard_view_selection_changed (standard_view);
+ }
+
+ /* release the row reference */
+ gtk_tree_row_reference_free (row);
+ }
+
+ /* cleanup */
+ g_object_unref (G_OBJECT (file));
+ gtk_tree_path_free (path);
+}
+
+
+
+static void
+thunar_standard_view_loading_unbound (gpointer user_data)
+{
+ ThunarStandardView *standard_view = THUNAR_STANDARD_VIEW (user_data);
+
+ /* we don't have any binding now */
+ standard_view->loading_binding = NULL;
+
+ /* reset the "loading" property */
+ if (G_UNLIKELY (standard_view->loading))
+ {
+ standard_view->loading = FALSE;
+ g_object_notify (G_OBJECT (standard_view), "loading");
+ g_object_notify (G_OBJECT (standard_view), "statusbar-text");
+ }
+}
+
+
+
+static gboolean
+thunar_standard_view_drag_timer (gpointer user_data)
+{
+ ThunarStandardView *standard_view = THUNAR_STANDARD_VIEW (user_data);
+
+ /* fire up the context menu */
+ GDK_THREADS_ENTER ();
+ thunar_standard_view_context_menu (standard_view, 3, gtk_get_current_event_time ());
+ GDK_THREADS_LEAVE ();
+
+ return FALSE;
+}
+
+
+
+static void
+thunar_standard_view_drag_timer_destroy (gpointer user_data)
+{
+ /* unregister the motion notify and button release event handlers (thread-safe) */
+ g_signal_handlers_disconnect_by_func (GTK_BIN (user_data)->child, thunar_standard_view_button_release_event, user_data);
+ g_signal_handlers_disconnect_by_func (GTK_BIN (user_data)->child, thunar_standard_view_motion_notify_event, user_data);
+
+ /* reset the drag timer source id */
+ THUNAR_STANDARD_VIEW (user_data)->priv->drag_timer_id = -1;
+}
+
+
+
+/**
+ * thunar_standard_view_context_menu:
+ * @standard_view : a #ThunarStandardView instance.
+ * @button : the mouse button which triggered the context menu or %0 if
+ * the event wasn't triggered by a pointer device.
+ * @time : the event time.
+ *
+ * Invoked by derived classes (and only by derived classes!) whenever the user
+ * requests to open a context menu, e.g. by right-clicking on a file/folder or by
+ * using one of the context menu shortcuts.
+ **/
+void
+thunar_standard_view_context_menu (ThunarStandardView *standard_view,
+ guint button,
+ guint32 time)
+{
+ GMainLoop *loop;
+ GtkWidget *menu;
+ GList *selected_items;
+ guint id;
+
+ g_return_if_fail (THUNAR_IS_STANDARD_VIEW (standard_view));
+
+ /* determine the selected items */
+ selected_items = (*THUNAR_STANDARD_VIEW_GET_CLASS (standard_view)->get_selected_items) (standard_view);
+
+ /* merge the custom menu actions for the selected items */
+ thunar_standard_view_merge_custom_actions (standard_view, selected_items);
+
+ /* check if we need to popup the file or the folder context menu */
+ menu = gtk_ui_manager_get_widget (standard_view->ui_manager, (selected_items != NULL) ? "/file-context-menu" : "/folder-context-menu");
+
+ /* release the selected items */
+ g_list_foreach (selected_items, (GFunc) gtk_tree_path_free, NULL);
+ g_list_free (selected_items);
+
+ /* take a reference on the context menu */
+ g_object_ref (G_OBJECT (menu));
+ gtk_object_sink (GTK_OBJECT (menu));
+
+ /* grab an additional reference on the view */
+ g_object_ref (G_OBJECT (standard_view));
+
+ loop = g_main_loop_new (NULL, FALSE);
+
+ /* connect the deactivate handler */
+ id = g_signal_connect_swapped (G_OBJECT (menu), "deactivate", G_CALLBACK (g_main_loop_quit), loop);
+
+ /* make sure the menu is on the proper screen */
+ gtk_menu_set_screen (GTK_MENU (menu), gtk_widget_get_screen (GTK_WIDGET (standard_view)));
+
+ /* run our custom main loop */
+ gtk_grab_add (menu);
+ gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, button, time);
+ g_main_loop_run (loop);
+ g_main_loop_unref (loop);
+ gtk_grab_remove (menu);
+
+ /* unlink the deactivate callback */
+ g_signal_handler_disconnect (G_OBJECT (menu), id);
+
+ /* release the additional reference on the view */
+ g_object_unref (G_OBJECT (standard_view));
+
+ /* decrease the reference count on the menu */
+ g_object_unref (G_OBJECT (menu));
+}
+
+
+
+/**
+ * thunar_standard_view_queue_popup:
+ * @standard_view : a #ThunarStandardView.
+ * @event : the right click event.
+ *
+ * Schedules a context menu popup in response to
+ * a right-click button event. Right-click events
+ * need to be handled in a special way, as the
+ * user may also start a drag using the right
+ * mouse button and therefore this function
+ * schedules a timer, which - once expired -
+ * opens the context menu. If the user moves
+ * the mouse prior to expiration, a right-click
+ * drag (with #GDK_ACTION_ASK) will be started
+ * instead.
+ **/
+void
+thunar_standard_view_queue_popup (ThunarStandardView *standard_view,
+ GdkEventButton *event)
+{
+ GtkSettings *settings;
+ GtkWidget *view;
+ gint delay;
+
+ g_return_if_fail (THUNAR_IS_STANDARD_VIEW (standard_view));
+ g_return_if_fail (event != NULL);
+
+ /* check if we have already scheduled a drag timer */
+ if (G_LIKELY (standard_view->priv->drag_timer_id < 0))
+ {
+ /* remember the new coordinates */
+ standard_view->priv->drag_x = event->x;
+ standard_view->priv->drag_y = event->y;
+
+ /* figure out the real view */
+ view = GTK_BIN (standard_view)->child;
+
+ /* we use the menu popup delay here, which should give us good values */
+ settings = gtk_settings_get_for_screen (gtk_widget_get_screen (view));
+ g_object_get (G_OBJECT (settings), "gtk-menu-popup-delay", &delay, NULL);
+
+ /* schedule the timer */
+ standard_view->priv->drag_timer_id = g_timeout_add_full (G_PRIORITY_LOW, delay, thunar_standard_view_drag_timer,
+ standard_view, thunar_standard_view_drag_timer_destroy);
+
+ /* register the motion notify and the button release events on the real view */
+ g_signal_connect (G_OBJECT (view), "button-release-event", G_CALLBACK (thunar_standard_view_button_release_event), standard_view);
+ g_signal_connect (G_OBJECT (view), "motion-notify-event", G_CALLBACK (thunar_standard_view_motion_notify_event), standard_view);
+ }
+}
+
+
+
+/**
+ * thunar_standard_view_selection_changed:
+ * @standard_view : a #ThunarStandardView instance.
+ *
+ * Called by derived classes (and only by derived classes!) whenever the file
+ * selection changes.
+ *
+ * Note, that this is also called internally whenever the number of
+ * files in the @standard_view<!---->s model changes.
+ **/
+void
+thunar_standard_view_selection_changed (ThunarStandardView *standard_view)
+{
+ ThunarFile *current_directory;
+ gboolean can_paste_into_folder;
+ gboolean pastable;
+ gboolean writable;
+ GList *selected_files;
+ gint n_selected_files;
+
+ g_return_if_fail (THUNAR_IS_STANDARD_VIEW (standard_view));
+
+ /* drop any existing "new-files" closure */
+ if (G_UNLIKELY (standard_view->priv->new_files_closure != NULL))
+ {
+ g_closure_invalidate (standard_view->priv->new_files_closure);
+ g_closure_unref (standard_view->priv->new_files_closure);
+ standard_view->priv->new_files_closure = NULL;
+ }
+
+ /* check whether the folder displayed by the view is writable */
+ current_directory = thunar_navigator_get_current_directory (THUNAR_NAVIGATOR (standard_view));
+ writable = (current_directory != NULL && thunar_file_is_writable (current_directory));
+
+ /* check whether the clipboard contains data that can be pasted here */
+ pastable = (standard_view->clipboard != NULL && thunar_clipboard_manager_get_can_paste (standard_view->clipboard));
+
+ /* determine the number of selected files */
+ selected_files = thunar_standard_view_get_selected_files (standard_view);
+ n_selected_files = g_list_length (selected_files);
+
+ /* check whether the only selected file is
+ * folder to which we can paste to */
+ can_paste_into_folder = (n_selected_files == 1)
+ && thunar_file_is_directory (selected_files->data)
+ && thunar_file_is_writable (selected_files->data);
+
+ /* update the "Create Folder" action */
+ gtk_action_set_sensitive (standard_view->priv->action_create_folder, writable);
+
+ /* update the "Properties" action */
+ gtk_action_set_sensitive (standard_view->priv->action_properties, (n_selected_files == 1));
+
+ /* update the "Copy File(s)" action */
+ g_object_set (G_OBJECT (standard_view->priv->action_copy),
+ "label", ngettext ("_Copy File", "_Copy Files", n_selected_files),
+ "sensitive", (n_selected_files > 0),
+ NULL);
+
+ /* update the "Cut File(s)" action */
+ g_object_set (G_OBJECT (standard_view->priv->action_cut),
+ "label", ngettext ("Cu_t File", "Cu_t Files", n_selected_files),
+ "sensitive", (n_selected_files > 0) && writable,
+ NULL);
+
+ /* update the "Paste File(s)" action */
+ gtk_action_set_sensitive (standard_view->priv->action_paste, writable && pastable);
+
+ /* update the "Delete File(s)" action */
+ g_object_set (G_OBJECT (standard_view->priv->action_delete),
+ "label", ngettext ("_Delete File", "_Delete Files", n_selected_files),
+ "sensitive", (n_selected_files > 0) && writable,
+ NULL);
+
+ /* update the "Paste File(s) Into Folder" action */
+ g_object_set (G_OBJECT (standard_view->priv->action_paste_into_folder),
+ "sensitive", pastable,
+ "visible", can_paste_into_folder,
+ NULL);
+
+ /* update the "Duplicate File(s)" action */
+ g_object_set (G_OBJECT (standard_view->priv->action_duplicate),
+ "label", ngettext ("Du_plicate File", "Du_plicate Files", n_selected_files),
+ "sensitive", (n_selected_files > 0) && writable,
+ NULL);
+
+ /* update the "Make Link(s)" action */
+ g_object_set (G_OBJECT (standard_view->priv->action_make_link),
+ "label", ngettext ("Ma_ke Link", "Ma_ke Links", n_selected_files),
+ "sensitive", (n_selected_files > 0) && writable,
+ NULL);
+
+ /* update the "Rename" action */
+ gtk_action_set_sensitive (standard_view->priv->action_rename, (n_selected_files == 1
+ && thunar_file_is_renameable (selected_files->data)));
+
+ /* update the statusbar text */
+ thunar_standard_view_update_statusbar_text (standard_view);
+
+ /* setup the new file selection for the launcher support */
+ thunar_launcher_set_selected_files (standard_view->priv->launcher, selected_files);
+
+ /* cleanup */
+ thunar_file_list_free (selected_files);
+}
+
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-standard-view.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-standard-view.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-standard-view.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,134 @@
+/* $Id: thunar-standard-view.h 18848 2005-11-14 20:47:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_STANDARD_VIEW_H__
+#define __THUNAR_STANDARD_VIEW_H__
+
+#include <thunar/thunar-clipboard-manager.h>
+#include <thunar/thunar-icon-factory.h>
+#include <thunar/thunar-list-model.h>
+#include <thunar/thunar-view.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarStandardViewPrivate ThunarStandardViewPrivate;
+typedef struct _ThunarStandardViewClass ThunarStandardViewClass;
+typedef struct _ThunarStandardView ThunarStandardView;
+
+#define THUNAR_TYPE_STANDARD_VIEW (thunar_standard_view_get_type ())
+#define THUNAR_STANDARD_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_STANDARD_VIEW, ThunarStandardView))
+#define THUNAR_STANDARD_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_STANDARD_VIEW, ThunarStandardViewClass))
+#define THUNAR_IS_STANDARD_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_STANDARD_VIEW))
+#define THUNAR_IS_STANDARD_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_STANDARD_VIEW))
+#define THUNAR_STANDARD_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_STANDARD_VIEW, ThunarStandardViewClass))
+
+struct _ThunarStandardViewClass
+{
+ GtkScrolledWindowClass __parent__;
+
+ /* Called by the ThunarStandardView class to let derived classes
+ * connect to and disconnect from the UI manager.
+ */
+ void (*connect_ui_manager) (ThunarStandardView *standard_view,
+ GtkUIManager *ui_manager);
+ void (*disconnect_ui_manager) (ThunarStandardView *standard_view,
+ GtkUIManager *ui_manager);
+
+ /* Returns the list of currently selected GtkTreePath's, where
+ * both the list and the items are owned by the caller. */
+ GList *(*get_selected_items) (ThunarStandardView *standard_view);
+
+ /* Selects all items in the view */
+ void (*select_all) (ThunarStandardView *standard_view);
+
+ /* Unselects all items in the view */
+ void (*unselect_all) (ThunarStandardView *standard_view);
+
+ /* Selects the given item */
+ void (*select_path) (ThunarStandardView *standard_view,
+ GtkTreePath *path);
+
+ /* Called by the ThunarStandardView class to let derived class
+ * place the cursor on the item/row referred to by path. If
+ * start_editing is TRUE, the derived class should also start
+ * editing that item/row.
+ */
+ void (*set_cursor) (ThunarStandardView *standard_view,
+ GtkTreePath *path,
+ gboolean start_editing);
+
+ /* Called by the ThunarStandardView class to let derived class
+ * scroll the view to the given path.
+ */
+ void (*scroll_to_path) (ThunarStandardView *standard_view,
+ GtkTreePath *path);
+
+ /* Returns the path at the given position or NULL if no item/row
+ * is located at that coordinates. The path is freed by the caller.
+ */
+ GtkTreePath *(*get_path_at_pos) (ThunarStandardView *standard_view,
+ gint x,
+ gint y);
+
+ /* Sets the item/row that is highlighted for feedback. NULL is
+ * passed for path to disable the highlighting.
+ */
+ void (*highlight_path) (ThunarStandardView *standard_view,
+ GtkTreePath *path);
+
+ /* Internal action signals */
+ gboolean (*delete_selected_files) (ThunarStandardView *standard_view);
+};
+
+struct _ThunarStandardView
+{
+ GtkScrolledWindow __parent__;
+
+ ThunarStandardViewPrivate *priv;
+
+ ThunarClipboardManager *clipboard;
+ ThunarListModel *model;
+ gchar *statusbar_text;
+
+ GtkActionGroup *action_group;
+ GtkUIManager *ui_manager;
+ guint ui_merge_id;
+
+ ThunarIconFactory *icon_factory;
+ GtkCellRenderer *icon_renderer;
+ GtkCellRenderer *name_renderer;
+
+ ExoBinding *loading_binding;
+ gboolean loading;
+};
+
+GType thunar_standard_view_get_type (void) G_GNUC_CONST;
+
+void thunar_standard_view_context_menu (ThunarStandardView *standard_view,
+ guint button,
+ guint32 time);
+
+void thunar_standard_view_queue_popup (ThunarStandardView *standard_view,
+ GdkEventButton *event);
+
+void thunar_standard_view_selection_changed (ThunarStandardView *standard_view);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_STANDARD_VIEW_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-statusbar.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-statusbar.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-statusbar.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,932 @@
+/* $Id: thunar-statusbar.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_MATH_H
+#include <math.h>
+#endif
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#include <thunar/thunar-icon-factory.h>
+#include <thunar/thunar-statusbar.h>
+
+#if !GTK_CHECK_VERSION(2,7,1) && defined(GDK_WINDOWING_X11) && defined(HAVE_CAIRO)
+#include <cairo/cairo-xlib.h>
+#include <gdk/gdkx.h>
+#endif
+
+
+
+enum
+{
+ ICON_PROP_0,
+ ICON_PROP_FILE,
+ ICON_PROP_LOADING,
+};
+
+
+
+typedef struct _ThunarStatusbarIconClass ThunarStatusbarIconClass;
+typedef struct _ThunarStatusbarIcon ThunarStatusbarIcon;
+
+
+
+#define THUNAR_TYPE_STATUSBAR_ICON (thunar_statusbar_icon_get_type ())
+#define THUNAR_STATUSBAR_ICON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_STATUSBAR_ICON, ThunarStatusbarIcon))
+#define THUNAR_STATUSBAR_ICON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_STATUSBAR_ICON, ThunarStatusbarIconClass))
+#define THUNAR_IS_STATUSBAR_ICON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_STATUSBAR_ICON))
+#define THUNAR_IS_STATUSBAR_ICON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_STATUSBAR_ICON))
+#define THUNAR_STATUSBAR_ICON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_STATUSBAR_ICON, ThunarStatusbarIconClass))
+
+
+
+static GType thunar_statusbar_icon_get_type (void) G_GNUC_CONST;
+static void thunar_statusbar_icon_class_init (ThunarStatusbarIconClass *klass);
+static void thunar_statusbar_icon_init (ThunarStatusbarIcon *statusbar_icon);
+static void thunar_statusbar_icon_finalize (GObject *object);
+static void thunar_statusbar_icon_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void thunar_statusbar_icon_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void thunar_statusbar_icon_size_request (GtkWidget *widget,
+ GtkRequisition *requisition);
+static void thunar_statusbar_icon_realize (GtkWidget *widget);
+static void thunar_statusbar_icon_unrealize (GtkWidget *widget);
+static gboolean thunar_statusbar_icon_expose_event (GtkWidget *widget,
+ GdkEventExpose *event);
+static void thunar_statusbar_icon_drag_begin (GtkWidget *widget,
+ GdkDragContext *context);
+static void thunar_statusbar_icon_drag_data_get (GtkWidget *widget,
+ GdkDragContext *context,
+ GtkSelectionData *selection_data,
+ guint info,
+ guint time);
+static gboolean thunar_statusbar_icon_timer (gpointer user_data);
+static void thunar_statusbar_icon_timer_destroy (gpointer user_data);
+static ThunarFile *thunar_statusbar_icon_get_file (ThunarStatusbarIcon *statusbar_icon);
+static void thunar_statusbar_icon_set_file (ThunarStatusbarIcon *statusbar_icon,
+ ThunarFile *file);
+static gboolean thunar_statusbar_icon_get_loading (ThunarStatusbarIcon *statusbar_icon);
+static void thunar_statusbar_icon_set_loading (ThunarStatusbarIcon *statusbar_icon,
+ gboolean loading);
+
+
+
+struct _ThunarStatusbarIconClass
+{
+ GtkWidgetClass __parent__;
+};
+
+struct _ThunarStatusbarIcon
+{
+ GtkWidget __parent__;
+
+ ThunarIconFactory *icon_factory;
+ ThunarFile *file;
+ GdkPixbuf *lucent;
+ gint angle;
+ gint timer_id;
+};
+
+
+
+static GObjectClass *thunar_statusbar_icon_parent_class;
+
+static const GtkTargetEntry drag_targets[] =
+{
+ { "text/uri-list", 0, 0 },
+};
+
+
+
+static GType
+thunar_statusbar_icon_get_type (void)
+{
+ static GType type = G_TYPE_INVALID;
+
+ if (G_UNLIKELY (type == G_TYPE_INVALID))
+ {
+ static const GTypeInfo info =
+ {
+ sizeof (ThunarStatusbarIconClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) thunar_statusbar_icon_class_init,
+ NULL,
+ NULL,
+ sizeof (ThunarStatusbarIcon),
+ 0,
+ (GInstanceInitFunc) thunar_statusbar_icon_init,
+ NULL,
+ };
+
+ type = g_type_register_static (GTK_TYPE_WIDGET, "ThunarStatusbarIcon", &info, 0);
+ }
+
+ return type;
+}
+
+
+
+
+static void
+thunar_statusbar_icon_class_init (ThunarStatusbarIconClass *klass)
+{
+ GtkWidgetClass *gtkwidget_class;
+ GObjectClass *gobject_class;
+
+ thunar_statusbar_icon_parent_class = g_type_class_peek_parent (klass);
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_statusbar_icon_finalize;
+ gobject_class->get_property = thunar_statusbar_icon_get_property;
+ gobject_class->set_property = thunar_statusbar_icon_set_property;
+
+ gtkwidget_class = GTK_WIDGET_CLASS (klass);
+ gtkwidget_class->size_request = thunar_statusbar_icon_size_request;
+ gtkwidget_class->realize = thunar_statusbar_icon_realize;
+ gtkwidget_class->unrealize = thunar_statusbar_icon_unrealize;
+ gtkwidget_class->expose_event = thunar_statusbar_icon_expose_event;
+ gtkwidget_class->drag_begin = thunar_statusbar_icon_drag_begin;
+ gtkwidget_class->drag_data_get = thunar_statusbar_icon_drag_data_get;
+
+ /**
+ * ThunarStatusbarIcon:file:
+ *
+ * The #ThunarFile whose icon should be displayed by this
+ * #ThunarStatusbarIcon widget.
+ **/
+ g_object_class_install_property (gobject_class,
+ ICON_PROP_FILE,
+ g_param_spec_object ("file",
+ _("File"),
+ _("The file whose icon to display"),
+ THUNAR_TYPE_FILE,
+ EXO_PARAM_READWRITE));
+
+ /**
+ * ThunarStatusbarIcon:loading:
+ *
+ * Whether this #ThunarStatusbarIcon should display a
+ * loading animation.
+ **/
+ g_object_class_install_property (gobject_class,
+ ICON_PROP_LOADING,
+ g_param_spec_boolean ("loading",
+ _("Loading"),
+ _("Whether to display a loading animation"),
+ FALSE,
+ EXO_PARAM_READWRITE));
+}
+
+
+
+static void
+thunar_statusbar_icon_init (ThunarStatusbarIcon *statusbar_icon)
+{
+ statusbar_icon->timer_id = -1;
+
+ /* setup drag support for the icon */
+ gtk_drag_source_set (GTK_WIDGET (statusbar_icon), GDK_BUTTON1_MASK,
+ drag_targets, G_N_ELEMENTS (drag_targets),
+ GDK_ACTION_LINK);
+}
+
+
+
+static void
+thunar_statusbar_icon_finalize (GObject *object)
+{
+ ThunarStatusbarIcon *statusbar_icon = THUNAR_STATUSBAR_ICON (object);
+
+ /* drop the file reference */
+ thunar_statusbar_icon_set_file (statusbar_icon, NULL);
+
+ /* cancel the redraw timer */
+ thunar_statusbar_icon_set_loading (statusbar_icon, FALSE);
+
+ G_OBJECT_CLASS (thunar_statusbar_icon_parent_class)->finalize (object);
+}
+
+
+
+static void
+thunar_statusbar_icon_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarStatusbarIcon *statusbar_icon = THUNAR_STATUSBAR_ICON (object);
+
+ switch (prop_id)
+ {
+ case ICON_PROP_FILE:
+ g_value_set_object (value, thunar_statusbar_icon_get_file (statusbar_icon));
+ break;
+
+ case ICON_PROP_LOADING:
+ g_value_set_boolean (value, thunar_statusbar_icon_get_loading (statusbar_icon));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunar_statusbar_icon_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarStatusbarIcon *statusbar_icon = THUNAR_STATUSBAR_ICON (object);
+
+ switch (prop_id)
+ {
+ case ICON_PROP_FILE:
+ thunar_statusbar_icon_set_file (statusbar_icon, g_value_get_object (value));
+ break;
+
+ case ICON_PROP_LOADING:
+ thunar_statusbar_icon_set_loading (statusbar_icon, g_value_get_boolean (value));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunar_statusbar_icon_size_request (GtkWidget *widget,
+ GtkRequisition *requisition)
+{
+ requisition->width = 16 + 2 * widget->style->xthickness;
+ requisition->height = 16 + 2 * widget->style->ythickness;
+}
+
+
+
+static void
+thunar_statusbar_icon_realize (GtkWidget *widget)
+{
+ ThunarStatusbarIcon *statusbar_icon = THUNAR_STATUSBAR_ICON (widget);
+ GdkWindowAttr attr;
+ GtkIconTheme *icon_theme;
+ gint attr_mask;
+
+ GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED);
+
+ attr.x = widget->allocation.x;
+ attr.y = widget->allocation.y;
+ attr.width = widget->allocation.width;
+ attr.height = widget->allocation.height;
+ attr.wclass = GDK_INPUT_OUTPUT;
+ attr.window_type = GDK_WINDOW_CHILD;
+ attr.event_mask = gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK;
+ attr.visual = gtk_widget_get_visual (widget);
+ attr.colormap = gtk_widget_get_colormap (widget);
+ attr_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
+
+ widget->window = gdk_window_new (widget->parent->window, &attr, attr_mask);
+ widget->style = gtk_style_attach (widget->style, widget->window);
+ gtk_style_set_background (widget->style, widget->window, GTK_STATE_NORMAL);
+ gdk_window_set_user_data (widget->window, widget);
+
+ /* connect to the icon factory */
+ icon_theme = gtk_icon_theme_get_for_screen (gtk_widget_get_screen (widget));
+ statusbar_icon->icon_factory = thunar_icon_factory_get_for_icon_theme (icon_theme);
+}
+
+
+
+static void
+thunar_statusbar_icon_unrealize (GtkWidget *widget)
+{
+ ThunarStatusbarIcon *statusbar_icon = THUNAR_STATUSBAR_ICON (widget);
+
+ /* disconnect from the icon factory */
+ g_object_unref (G_OBJECT (statusbar_icon->icon_factory));
+ statusbar_icon->icon_factory = NULL;
+
+ GTK_WIDGET_CLASS (thunar_statusbar_icon_parent_class)->unrealize (widget);
+}
+
+
+
+static GdkPixbuf*
+create_lucent_pixbuf (GdkPixbuf *src)
+{
+ GdkPixbuf *dest;
+ guchar *target_pixels;
+ guchar *original_pixels;
+ guchar *pixsrc;
+ guchar *pixdest;
+ gint width, height, has_alpha, src_row_stride, dst_row_stride;
+ gint i, j;
+
+ if (G_UNLIKELY (!gdk_pixbuf_get_has_alpha (src)))
+ {
+ g_object_ref (G_OBJECT (src));
+ return src;
+ }
+
+ dest = gdk_pixbuf_new (gdk_pixbuf_get_colorspace (src),
+ gdk_pixbuf_get_has_alpha (src),
+ gdk_pixbuf_get_bits_per_sample (src),
+ gdk_pixbuf_get_width (src),
+ gdk_pixbuf_get_height (src));
+
+ has_alpha = gdk_pixbuf_get_has_alpha (src);
+ width = gdk_pixbuf_get_width (src);
+ height = gdk_pixbuf_get_height (src);
+ src_row_stride = gdk_pixbuf_get_rowstride (src);
+ dst_row_stride = gdk_pixbuf_get_rowstride (dest);
+ target_pixels = gdk_pixbuf_get_pixels (dest);
+ original_pixels = gdk_pixbuf_get_pixels (src);
+
+ for (i = 0; i < height; i++)
+ {
+ pixdest = target_pixels + i * dst_row_stride;
+ pixsrc = original_pixels + i * src_row_stride;
+ for (j = 0; j < width; j++)
+ {
+ pixdest[0] = pixsrc[0];
+ pixdest[1] = pixsrc[1];
+ pixdest[2] = pixsrc[2];
+ pixdest[3] = pixsrc[3] / 3;
+ pixdest += 4;
+ pixsrc += 4;
+ }
+ }
+
+ return dest;
+}
+
+
+
+#if GTK_CHECK_VERSION(2,7,1)
+static cairo_t*
+get_cairo_context (GdkWindow *window)
+{
+ cairo_t *cr;
+ gint w;
+ gint h;
+
+ gdk_drawable_get_size (GDK_DRAWABLE (window), &w, &h);
+
+ cr = gdk_cairo_create (window);
+ cairo_scale (cr, h, w);
+ cairo_translate (cr, 0.5, 0.5);
+
+ return cr;
+}
+#elif defined(GDK_WINDOWING_X11) && defined(HAVE_CAIRO)
+static cairo_t*
+get_cairo_context (GdkWindow *window)
+{
+ cairo_surface_t *surface;
+ GdkDrawable *drawable;
+ cairo_t *cr;
+ gint w;
+ gint h;
+ gint x;
+ gint y;
+
+ gdk_window_get_internal_paint_info (window, &drawable, &x, &y);
+ gdk_drawable_get_size (drawable, &w, &h);
+
+ surface = cairo_xlib_surface_create (GDK_DRAWABLE_XDISPLAY (drawable), GDK_DRAWABLE_XID (drawable),
+ gdk_x11_visual_get_xvisual (gdk_drawable_get_visual (drawable)), w, h);
+ cr = cairo_create (surface);
+ cairo_surface_destroy (surface);
+
+ cairo_translate (cr, -x, -y);
+ cairo_scale (cr, h, w);
+ cairo_translate (cr, 0.5, 0.5);
+
+ return cr;
+}
+#endif
+
+
+
+static gboolean
+thunar_statusbar_icon_expose_event (GtkWidget *widget,
+ GdkEventExpose *event)
+{
+ ThunarStatusbarIcon *statusbar_icon = THUNAR_STATUSBAR_ICON (widget);
+ GdkRectangle icon_area;
+ GdkPixbuf *icon;
+
+ /* draw the icon if we have a file */
+ if (G_LIKELY (statusbar_icon->file != NULL))
+ {
+ icon = thunar_icon_factory_load_file_icon (statusbar_icon->icon_factory, statusbar_icon->file, THUNAR_FILE_ICON_STATE_DEFAULT, 16);
+
+ /* use the lucent variant if we're currently loading */
+ if (thunar_statusbar_icon_get_loading (statusbar_icon))
+ {
+ if (G_UNLIKELY (statusbar_icon->lucent == NULL))
+ statusbar_icon->lucent = create_lucent_pixbuf (icon);
+
+ g_object_unref (G_OBJECT (icon));
+ icon = statusbar_icon->lucent;
+ g_object_ref (G_OBJECT (icon));
+ }
+
+ icon_area.width = gdk_pixbuf_get_width (icon);
+ icon_area.height = gdk_pixbuf_get_height (icon);
+ icon_area.x = (widget->allocation.width - icon_area.width) / 2;
+ icon_area.y = (widget->allocation.height - icon_area.height) / 2;
+
+ gdk_draw_pixbuf (widget->window, widget->style->black_gc, icon,
+ 0, 0, icon_area.x, icon_area.y,
+ icon_area.width, icon_area.height,
+ GDK_RGB_DITHER_NORMAL, 0, 0);
+
+ g_object_unref (G_OBJECT (icon));
+ }
+
+#if GTK_CHECK_VERSION(2,7,1) || (defined(GDK_WINDOWING_X11) && defined(HAVE_CAIRO))
+ /* render the animation */
+ if (thunar_statusbar_icon_get_loading (statusbar_icon))
+ {
+ GdkColor color;
+ cairo_t *cr;
+ gdouble n;
+
+ color = widget->style->fg[GTK_STATE_NORMAL];
+
+ cr = get_cairo_context (widget->window);
+
+ cairo_rotate (cr, (statusbar_icon->angle * 2.0 * M_PI) / 360.0);
+
+ for (n = 0.0; n < 2.0; n += 0.25)
+ {
+ cairo_set_source_rgba (cr, color.red / 65535., color.green / 65535., color.blue / 65535., (n - 0.1) / 1.9);
+ cairo_arc (cr, cos (n * M_PI) / 3.0, sin (n * M_PI) / 3.0, 0.12, 0.0, 2 * M_PI);
+ cairo_fill (cr);
+ }
+
+ cairo_destroy (cr);
+ }
+#endif
+
+ return TRUE;
+}
+
+
+
+static void
+thunar_statusbar_icon_drag_begin (GtkWidget *widget,
+ GdkDragContext *context)
+{
+ ThunarStatusbarIcon *statusbar_icon = THUNAR_STATUSBAR_ICON (widget);
+ GdkPixbuf *icon;
+
+ /* setup the drag source icon */
+ if (G_LIKELY (statusbar_icon->file != NULL))
+ {
+ icon = thunar_icon_factory_load_file_icon (statusbar_icon->icon_factory, statusbar_icon->file, THUNAR_FILE_ICON_STATE_DEFAULT, 24);
+ gtk_drag_source_set_icon_pixbuf (widget, icon);
+ g_object_unref (G_OBJECT (icon));
+ }
+
+ if (GTK_WIDGET_CLASS (thunar_statusbar_icon_parent_class)->drag_begin != NULL)
+ (*GTK_WIDGET_CLASS (thunar_statusbar_icon_parent_class)->drag_begin) (widget, context);
+}
+
+
+
+static void
+thunar_statusbar_icon_drag_data_get (GtkWidget *widget,
+ GdkDragContext *context,
+ GtkSelectionData *selection_data,
+ guint info,
+ guint time)
+{
+ ThunarStatusbarIcon *statusbar_icon = THUNAR_STATUSBAR_ICON (widget);
+ GList path_list;
+ gchar *uri_string;
+
+ if (G_LIKELY (statusbar_icon->file != NULL))
+ {
+ /* transform the path into an uri list string */
+ path_list.data = thunar_file_get_path (statusbar_icon->file); path_list.next = path_list.prev = NULL;
+ uri_string = thunar_vfs_path_list_to_string (&path_list);
+
+ /* set the uri for the drag selection */
+ gtk_selection_data_set (selection_data, selection_data->target,
+ 8, (guchar *) uri_string, strlen (uri_string));
+
+ /* cleanup */
+ g_free (uri_string);
+ }
+ else
+ {
+ /* abort the drag */
+ gdk_drag_abort (context, time);
+ }
+
+ if (GTK_WIDGET_CLASS (thunar_statusbar_icon_parent_class)->drag_data_get != NULL)
+ (*GTK_WIDGET_CLASS (thunar_statusbar_icon_parent_class)->drag_data_get) (widget, context, selection_data, info, time);
+}
+
+
+
+static gboolean
+thunar_statusbar_icon_timer (gpointer user_data)
+{
+ ThunarStatusbarIcon *statusbar_icon = THUNAR_STATUSBAR_ICON (user_data);
+
+ GDK_THREADS_ENTER ();
+ statusbar_icon->angle = (statusbar_icon->angle + 30) % 360;
+ gtk_widget_queue_draw (GTK_WIDGET (statusbar_icon));
+ GDK_THREADS_LEAVE ();
+
+ return TRUE;
+}
+
+
+static void
+thunar_statusbar_icon_timer_destroy (gpointer user_data)
+{
+ THUNAR_STATUSBAR_ICON (user_data)->timer_id = -1;
+}
+
+
+
+static ThunarFile*
+thunar_statusbar_icon_get_file (ThunarStatusbarIcon *statusbar_icon)
+{
+ g_return_val_if_fail (THUNAR_IS_STATUSBAR_ICON (statusbar_icon), NULL);
+ return statusbar_icon->file;
+}
+
+
+
+static void
+thunar_statusbar_icon_set_file (ThunarStatusbarIcon *statusbar_icon,
+ ThunarFile *file)
+{
+ g_return_if_fail (THUNAR_IS_STATUSBAR_ICON (statusbar_icon));
+ g_return_if_fail (file == NULL || THUNAR_IS_FILE (file));
+
+ /* drop any cached icon */
+ if (G_LIKELY (statusbar_icon->lucent != NULL))
+ {
+ g_object_unref (G_OBJECT (statusbar_icon->lucent));
+ statusbar_icon->lucent = NULL;
+ }
+
+ /* disconnect from the previous file */
+ if (G_LIKELY (statusbar_icon->file != NULL))
+ {
+ g_object_unref (G_OBJECT (statusbar_icon->file));
+ }
+
+ /* activate the new file */
+ statusbar_icon->file = file;
+
+ /* connect to the new file */
+ if (G_LIKELY (file != NULL))
+ {
+ /* take a reference on the file */
+ g_object_ref (G_OBJECT (file));
+ }
+
+ /* schedule a redraw with the new file */
+ gtk_widget_queue_draw (GTK_WIDGET (statusbar_icon));
+}
+
+
+
+static gboolean
+thunar_statusbar_icon_get_loading (ThunarStatusbarIcon *statusbar_icon)
+{
+ g_return_val_if_fail (THUNAR_IS_STATUSBAR_ICON (statusbar_icon), FALSE);
+ return (statusbar_icon->timer_id >= 0);
+}
+
+
+
+static void
+thunar_statusbar_icon_set_loading (ThunarStatusbarIcon *statusbar_icon,
+ gboolean loading)
+{
+ g_return_if_fail (THUNAR_IS_STATUSBAR_ICON (statusbar_icon));
+
+ if (loading && statusbar_icon->timer_id < 0)
+ {
+ statusbar_icon->timer_id = g_timeout_add_full (G_PRIORITY_LOW, 65, thunar_statusbar_icon_timer,
+ statusbar_icon, thunar_statusbar_icon_timer_destroy);
+ }
+ else if (!loading && statusbar_icon->timer_id >= 0)
+ {
+ g_source_remove (statusbar_icon->timer_id);
+ }
+
+ /* schedule a redraw with the new loading state */
+ gtk_widget_queue_draw (GTK_WIDGET (statusbar_icon));
+}
+
+
+
+
+enum
+{
+ BAR_PROP_0,
+ BAR_PROP_CURRENT_DIRECTORY,
+ BAR_PROP_LOADING,
+ BAR_PROP_TEXT,
+};
+
+
+
+static void thunar_statusbar_class_init (ThunarStatusbarClass *klass);
+static void thunar_statusbar_navigator_init (ThunarNavigatorIface *iface);
+static void thunar_statusbar_init (ThunarStatusbar *statusbar);
+static void thunar_statusbar_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void thunar_statusbar_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static ThunarFile *thunar_statusbar_get_current_directory (ThunarNavigator *navigator);
+static void thunar_statusbar_set_current_directory (ThunarNavigator *navigator,
+ ThunarFile *current_directory);
+
+
+
+struct _ThunarStatusbarClass
+{
+ GtkStatusbarClass __parent__;
+};
+
+struct _ThunarStatusbar
+{
+ GtkStatusbar __parent__;
+ GtkWidget *icon;
+ guint context_id;
+};
+
+
+
+G_DEFINE_TYPE_WITH_CODE (ThunarStatusbar,
+ thunar_statusbar,
+ GTK_TYPE_STATUSBAR,
+ G_IMPLEMENT_INTERFACE (THUNAR_TYPE_NAVIGATOR,
+ thunar_statusbar_navigator_init));
+
+
+
+static void
+thunar_statusbar_class_init (ThunarStatusbarClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->get_property = thunar_statusbar_get_property;
+ gobject_class->set_property = thunar_statusbar_set_property;
+
+ /**
+ * ThunarStatusbar:current-directory:
+ *
+ * Inherited from #ThunarNavigator.
+ **/
+ g_object_class_override_property (gobject_class,
+ BAR_PROP_CURRENT_DIRECTORY,
+ "current-directory");
+
+ /**
+ * ThunarStatusbar:loading:
+ *
+ * Write-only property, which tells the statusbar whether to display
+ * a "loading" indicator or not.
+ **/
+ g_object_class_install_property (gobject_class,
+ BAR_PROP_LOADING,
+ g_param_spec_boolean ("loading",
+ _("Loading"),
+ _("Whether to display a loading animation"),
+ FALSE,
+ EXO_PARAM_WRITABLE));
+
+ /**
+ * ThunarStatusbar:text:
+ *
+ * The main text to be displayed in the statusbar. This property
+ * can only be written.
+ **/
+ g_object_class_install_property (gobject_class,
+ BAR_PROP_TEXT,
+ g_param_spec_string ("text",
+ _("Statusbar text"),
+ _("The main text to be displayed in the statusbar"),
+ NULL,
+ EXO_PARAM_WRITABLE));
+}
+
+
+
+static void
+thunar_statusbar_navigator_init (ThunarNavigatorIface *iface)
+{
+ iface->get_current_directory = thunar_statusbar_get_current_directory;
+ iface->set_current_directory = thunar_statusbar_set_current_directory;
+}
+
+
+
+static void
+thunar_statusbar_init (ThunarStatusbar *statusbar)
+{
+ GtkWidget *label;
+ GtkWidget *box;
+
+ /* remove the label from the statusbars frame */
+ label = GTK_STATUSBAR (statusbar)->label;
+ g_object_ref (G_OBJECT (label));
+ gtk_container_remove (GTK_CONTAINER (GTK_STATUSBAR (statusbar)->frame), label);
+
+ /* add a HBox instead */
+ box = gtk_hbox_new (FALSE, 6);
+ gtk_container_add (GTK_CONTAINER (GTK_STATUSBAR (statusbar)->frame), box);
+ gtk_widget_show (box);
+
+ /* add the icon to the HBox */
+ statusbar->icon = g_object_new (THUNAR_TYPE_STATUSBAR_ICON, NULL);
+ gtk_box_pack_start (GTK_BOX (box), statusbar->icon, FALSE, FALSE, 0);
+ gtk_widget_show (statusbar->icon);
+
+ /* readd the label to the HBox */
+ gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0);
+ g_object_unref (G_OBJECT (label));
+ gtk_widget_show (label);
+
+ statusbar->context_id =
+ gtk_statusbar_get_context_id (GTK_STATUSBAR (statusbar), "Main text");
+ gtk_statusbar_set_has_resize_grip (GTK_STATUSBAR (statusbar), TRUE);
+}
+
+
+
+static void
+thunar_statusbar_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ switch (prop_id)
+ {
+ case BAR_PROP_CURRENT_DIRECTORY:
+ g_value_set_object (value, thunar_navigator_get_current_directory (THUNAR_NAVIGATOR (object)));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunar_statusbar_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarStatusbar *statusbar = THUNAR_STATUSBAR (object);
+
+ switch (prop_id)
+ {
+ case BAR_PROP_CURRENT_DIRECTORY:
+ thunar_navigator_set_current_directory (THUNAR_NAVIGATOR (object), g_value_get_object (value));
+ break;
+
+ case BAR_PROP_LOADING:
+ thunar_statusbar_set_loading (statusbar, g_value_get_boolean (value));
+ break;
+
+ case BAR_PROP_TEXT:
+ thunar_statusbar_set_text (statusbar, g_value_get_string (value));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static ThunarFile*
+thunar_statusbar_get_current_directory (ThunarNavigator *navigator)
+{
+ return thunar_statusbar_icon_get_file (THUNAR_STATUSBAR_ICON (THUNAR_STATUSBAR (navigator)->icon));
+}
+
+
+
+static void
+thunar_statusbar_set_current_directory (ThunarNavigator *navigator,
+ ThunarFile *current_directory)
+{
+ /* setup the new directory for the icon */
+ thunar_statusbar_icon_set_file (THUNAR_STATUSBAR_ICON (THUNAR_STATUSBAR (navigator)->icon), current_directory);
+
+ /* notify others */
+ g_object_notify (G_OBJECT (navigator), "current-directory");
+}
+
+
+
+/**
+ * thunar_statusbar_new:
+ *
+ * Allocates a new #ThunarStatusbar instance with no
+ * text set.
+ *
+ * Return value: the newly allocated #ThunarStatusbar instance.
+ **/
+GtkWidget*
+thunar_statusbar_new (void)
+{
+ return g_object_new (THUNAR_TYPE_STATUSBAR, NULL);
+}
+
+
+
+/**
+ * thunar_statusbar_set_loading:
+ * @statusbar : a #ThunarStatusbar instance.
+ * @loading : %TRUE if the @statusbar should display a load indicator.
+ **/
+void
+thunar_statusbar_set_loading (ThunarStatusbar *statusbar,
+ gboolean loading)
+{
+ g_return_if_fail (THUNAR_IS_STATUSBAR (statusbar));
+
+ thunar_statusbar_icon_set_loading (THUNAR_STATUSBAR_ICON (statusbar->icon), loading);
+}
+
+
+
+/**
+ * thunar_statusbar_set_text:
+ * @statusbar : a #ThunarStatusbar instance.
+ * @text : the main text to be displayed in @statusbar.
+ *
+ * Sets up a new main text for @statusbar.
+ **/
+void
+thunar_statusbar_set_text (ThunarStatusbar *statusbar,
+ const gchar *text)
+{
+ g_return_if_fail (THUNAR_IS_STATUSBAR (statusbar));
+ g_return_if_fail (text != NULL);
+
+ gtk_statusbar_pop (GTK_STATUSBAR (statusbar), statusbar->context_id);
+ gtk_statusbar_push (GTK_STATUSBAR (statusbar), statusbar->context_id, text);
+}
+
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-statusbar.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-statusbar.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-statusbar.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,48 @@
+/* $Id: thunar-statusbar.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_STATUSBAR_H__
+#define __THUNAR_STATUSBAR_H__
+
+#include <thunar/thunar-navigator.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarStatusbarClass ThunarStatusbarClass;
+typedef struct _ThunarStatusbar ThunarStatusbar;
+
+#define THUNAR_TYPE_STATUSBAR (thunar_statusbar_get_type ())
+#define THUNAR_STATUSBAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_STATUSBAR, ThunarStatusbar))
+#define THUNAR_STATUSBAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_STATUSBAR, ThunarStatusbarClass))
+#define THUNAR_IS_STATUSBAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_STATUSBAR))
+#define THUNAR_IS_STATUSBAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_STATUSBAR))
+#define THUNAR_STATUSBAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_STATUSBAR, ThunarStatusbarClass))
+
+GType thunar_statusbar_get_type (void) G_GNUC_CONST;
+
+GtkWidget *thunar_statusbar_new (void);
+
+void thunar_statusbar_set_loading (ThunarStatusbar *statusbar,
+ gboolean loading);
+void thunar_statusbar_set_text (ThunarStatusbar *statusbar,
+ const gchar *text);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_STATUSBAR_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-text-renderer.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-text-renderer.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-text-renderer.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,781 @@
+/* $Id: thunar-text-renderer.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#include <exo/exo.h>
+
+#include <thunar/thunar-marshal.h>
+#include <thunar/thunar-text-renderer.h>
+
+
+
+enum
+{
+ PROP_0,
+ PROP_FOLLOW_STATE,
+ PROP_TEXT,
+ PROP_WRAP_MODE,
+ PROP_WRAP_WIDTH,
+};
+
+enum
+{
+ EDITED,
+ LAST_SIGNAL,
+};
+
+
+
+static void thunar_text_renderer_class_init (ThunarTextRendererClass *klass);
+static void thunar_text_renderer_init (ThunarTextRenderer *text_renderer);
+static void thunar_text_renderer_finalize (GObject *object);
+static void thunar_text_renderer_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void thunar_text_renderer_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void thunar_text_renderer_get_size (GtkCellRenderer *renderer,
+ GtkWidget *widget,
+ GdkRectangle *cell_area,
+ gint *x_offset,
+ gint *y_offset,
+ gint *width,
+ gint *height);
+static void thunar_text_renderer_render (GtkCellRenderer *renderer,
+ GdkWindow *window,
+ GtkWidget *widget,
+ GdkRectangle *background_area,
+ GdkRectangle *cell_area,
+ GdkRectangle *expose_area,
+ GtkCellRendererState flags);
+static GtkCellEditable *thunar_text_renderer_start_editing (GtkCellRenderer *renderer,
+ GdkEvent *event,
+ GtkWidget *widget,
+ const gchar *path,
+ GdkRectangle *background_area,
+ GdkRectangle *cell_area,
+ GtkCellRendererState flags);
+static void thunar_text_renderer_invalidate (ThunarTextRenderer *text_renderer);
+static void thunar_text_renderer_set_widget (ThunarTextRenderer *text_renderer,
+ GtkWidget *widget);
+static void thunar_text_renderer_editing_done (GtkCellEditable *editable,
+ ThunarTextRenderer *text_renderer);
+static void thunar_text_renderer_grab_focus (GtkWidget *entry,
+ ThunarTextRenderer *text_renderer);
+static gboolean thunar_text_renderer_focus_out_event (GtkWidget *entry,
+ GdkEventFocus *event,
+ ThunarTextRenderer *text_renderer);
+static void thunar_text_renderer_populate_popup (GtkEntry *entry,
+ GtkMenu *menu,
+ ThunarTextRenderer *text_renderer);
+static void thunar_text_renderer_popup_unmap (GtkMenu *menu,
+ ThunarTextRenderer *text_renderer);
+static gboolean thunar_text_renderer_entry_menu_popdown_timer (gpointer user_data);
+static void thunar_text_renderer_entry_menu_popdown_timer_destroy (gpointer user_data);
+
+
+
+struct _ThunarTextRendererClass
+{
+ GtkCellRendererClass __parent__;
+
+ void (*edited) (ThunarTextRenderer *text_renderer,
+ const gchar *path,
+ const gchar *text);
+};
+
+struct _ThunarTextRenderer
+{
+ GtkCellRenderer __parent__;
+
+ PangoLayout *layout;
+ GtkWidget *widget;
+ gchar text[256];
+ gint char_width;
+ gint char_height;
+ PangoWrapMode wrap_mode;
+ gint wrap_width;
+ gboolean follow_state;
+
+ /* cell editing support */
+ GtkWidget *entry;
+ gboolean entry_menu_active;
+ gint entry_menu_popdown_timer_id;
+};
+
+
+
+static guint text_renderer_signals[LAST_SIGNAL];
+
+
+
+G_DEFINE_TYPE (ThunarTextRenderer, thunar_text_renderer, GTK_TYPE_CELL_RENDERER);
+
+
+
+static void
+thunar_text_renderer_class_init (ThunarTextRendererClass *klass)
+{
+ GtkCellRendererClass *gtkcell_renderer_class;
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_text_renderer_finalize;
+ gobject_class->get_property = thunar_text_renderer_get_property;
+ gobject_class->set_property = thunar_text_renderer_set_property;
+
+ gtkcell_renderer_class = GTK_CELL_RENDERER_CLASS (klass);
+ gtkcell_renderer_class->get_size = thunar_text_renderer_get_size;
+ gtkcell_renderer_class->render = thunar_text_renderer_render;
+ gtkcell_renderer_class->start_editing = thunar_text_renderer_start_editing;
+
+ /**
+ * ThunarTextRenderer:follow-state:
+ *
+ * Specifies whether the text renderer should render text
+ * based on the selection state of the items. This is necessary
+ * for #ExoIconView, which doesn't draw any item state indicators
+ * itself.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_FOLLOW_STATE,
+ g_param_spec_boolean ("follow-state",
+ _("Follow state"),
+ _("Follow state"),
+ FALSE,
+ EXO_PARAM_READWRITE));
+
+ /**
+ * ThunarTextRenderer:text:
+ *
+ * The text to render.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_TEXT,
+ g_param_spec_string ("text",
+ _("Text"),
+ _("The text to render"),
+ NULL,
+ EXO_PARAM_READWRITE));
+
+ /**
+ * ThunarTextRenderer:wrap-mode:
+ *
+ * Specifies how to break the string into multiple lines, if the cell renderer
+ * does not have enough room to display the entire string. This property has
+ * no effect unless the wrap-width property is set.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_WRAP_MODE,
+ g_param_spec_enum ("wrap-mode",
+ _("Wrap mode"),
+ _("The wrap mode"),
+ PANGO_TYPE_WRAP_MODE,
+ PANGO_WRAP_CHAR,
+ EXO_PARAM_READWRITE));
+
+ /**
+ * ThunarTextRenderer:wrap-width:
+ *
+ * Specifies the width at which the text is wrapped. The wrap-mode property can
+ * be used to influence at what character positions the line breaks can be placed.
+ * Setting wrap-width to -1 turns wrapping off.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_WRAP_WIDTH,
+ g_param_spec_int ("wrap-width",
+ _("Wrap width"),
+ _("The wrap width"),
+ -1, G_MAXINT, -1,
+ EXO_PARAM_READWRITE));
+
+ /**
+ * ThunarTextRenderer::edited:
+ * @text_renderer : a #ThunarTextRenderer.
+ * @path : the string representation of the tree path, which was edited.
+ * @text : the new text for the cell.
+ * @user_data : user data set when the signal handler was connected.
+ *
+ * Emitted whenever the user successfully edits a cell.
+ **/
+ text_renderer_signals[EDITED] =
+ g_signal_new ("edited",
+ G_OBJECT_CLASS_TYPE (gobject_class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (ThunarTextRendererClass, edited),
+ NULL, NULL,
+ _thunar_marshal_VOID__STRING_STRING,
+ G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_STRING);
+}
+
+
+
+static void
+thunar_text_renderer_init (ThunarTextRenderer *text_renderer)
+{
+ text_renderer->wrap_width = -1;
+ text_renderer->entry_menu_popdown_timer_id = -1;
+}
+
+
+
+static void
+thunar_text_renderer_finalize (GObject *object)
+{
+ ThunarTextRenderer *text_renderer = THUNAR_TEXT_RENDERER (object);
+
+ /* drop the cached widget */
+ thunar_text_renderer_set_widget (text_renderer, NULL);
+
+ G_OBJECT_CLASS (thunar_text_renderer_parent_class)->finalize (object);
+}
+
+
+
+static void
+thunar_text_renderer_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarTextRenderer *text_renderer = THUNAR_TEXT_RENDERER (object);
+
+ switch (prop_id)
+ {
+ case PROP_FOLLOW_STATE:
+ g_value_set_boolean (value, text_renderer->follow_state);
+ break;
+
+ case PROP_TEXT:
+ g_value_set_string (value, text_renderer->text);
+ break;
+
+ case PROP_WRAP_MODE:
+ g_value_set_enum (value, text_renderer->wrap_mode);
+ break;
+
+ case PROP_WRAP_WIDTH:
+ g_value_set_int (value, text_renderer->wrap_width);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunar_text_renderer_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarTextRenderer *text_renderer = THUNAR_TEXT_RENDERER (object);
+ const gchar *sval;
+
+ switch (prop_id)
+ {
+ case PROP_FOLLOW_STATE:
+ text_renderer->follow_state = g_value_get_boolean (value);
+ break;
+
+ case PROP_TEXT:
+ sval = g_value_get_string (value);
+ g_strlcpy (text_renderer->text, G_UNLIKELY (sval == NULL) ? "" : sval, sizeof (text_renderer->text));
+ break;
+
+ case PROP_WRAP_MODE:
+ text_renderer->wrap_mode = g_value_get_enum (value);
+ break;
+
+ case PROP_WRAP_WIDTH:
+ text_renderer->wrap_width = g_value_get_int (value);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunar_text_renderer_get_size (GtkCellRenderer *renderer,
+ GtkWidget *widget,
+ GdkRectangle *cell_area,
+ gint *x_offset,
+ gint *y_offset,
+ gint *width,
+ gint *height)
+{
+ ThunarTextRenderer *text_renderer = THUNAR_TEXT_RENDERER (renderer);
+ gint text_length;
+ gint text_width;
+ gint text_height;
+ gint focus_padding;
+ gint focus_width;
+
+ /* setup the new widget */
+ thunar_text_renderer_set_widget (text_renderer, widget);
+
+ /* we can guess the dimensions if we don't wrap */
+ if (text_renderer->wrap_width < 0)
+ {
+ /* determine the text_length in characters */
+ text_length = g_utf8_strlen (text_renderer->text, -1);
+
+ /* calculate the appromixate text width/height */
+ text_width = text_renderer->char_width * text_length;
+ text_height = text_renderer->char_height;
+ }
+ else
+ {
+ /* calculate the real text dimension */
+ pango_layout_set_width (text_renderer->layout, text_renderer->wrap_width * PANGO_SCALE);
+ pango_layout_set_wrap (text_renderer->layout, text_renderer->wrap_mode);
+ pango_layout_set_text (text_renderer->layout, text_renderer->text, -1);
+ pango_layout_get_pixel_size (text_renderer->layout, &text_width, &text_height);
+ }
+
+ /* if we have to follow the state manually, we'll need
+ * to reserve some space to render the indicator to.
+ */
+ if (text_renderer->follow_state)
+ {
+ gtk_widget_style_get (widget, "focus-padding", &focus_padding, "focus-line-width", &focus_width, NULL);
+ text_width += 2 * (focus_padding + focus_width);
+ text_height += 2 * (focus_padding + focus_width);
+ }
+
+ /* update width/height */
+ if (G_LIKELY (width != NULL))
+ *width = text_width + 2 * renderer->xpad;
+ if (G_LIKELY (height != NULL))
+ *height = text_height + 2 * renderer->ypad;
+
+ /* update the x/y offsets */
+ if (G_LIKELY (cell_area != NULL))
+ {
+ if (G_LIKELY (x_offset != NULL))
+ {
+ *x_offset = ((gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) ? (1.0 - renderer->xalign) : renderer->xalign)
+ * (cell_area->width - text_width - (2 * renderer->xpad));
+ *x_offset = MAX (*x_offset, 0);
+ }
+
+ if (G_LIKELY (y_offset != NULL))
+ {
+ *y_offset = renderer->yalign * (cell_area->height - text_height - (2 * renderer->ypad));
+ *y_offset = MAX (*y_offset, 0);
+ }
+ }
+}
+
+
+
+static void
+thunar_text_renderer_render (GtkCellRenderer *renderer,
+ GdkWindow *window,
+ GtkWidget *widget,
+ GdkRectangle *background_area,
+ GdkRectangle *cell_area,
+ GdkRectangle *expose_area,
+ GtkCellRendererState flags)
+{
+ ThunarTextRenderer *text_renderer = THUNAR_TEXT_RENDERER (renderer);
+ GtkStateType state;
+#if !GTK_CHECK_VERSION(2,8,0)
+ GdkPoint points[8];
+#else
+ cairo_t *cr;
+#endif
+ gint x0, x1, y0, y1;
+ gint focus_padding;
+ gint focus_width;
+ gint text_width;
+ gint text_height;
+ gint x_offset;
+ gint y_offset;
+
+ /* setup the new widget */
+ thunar_text_renderer_set_widget (text_renderer, widget);
+
+ if ((flags & GTK_CELL_RENDERER_SELECTED) == GTK_CELL_RENDERER_SELECTED)
+ {
+ if (GTK_WIDGET_HAS_FOCUS (widget))
+ state = GTK_STATE_SELECTED;
+ else
+ state = GTK_STATE_ACTIVE;
+ }
+ else if ((flags & GTK_CELL_RENDERER_PRELIT) == GTK_CELL_RENDERER_PRELIT
+ && GTK_WIDGET_STATE (widget) == GTK_STATE_PRELIGHT)
+ {
+ state = GTK_STATE_PRELIGHT;
+ }
+ else
+ {
+ if (GTK_WIDGET_STATE (widget) == GTK_STATE_INSENSITIVE)
+ state = GTK_STATE_INSENSITIVE;
+ else
+ state = GTK_STATE_NORMAL;
+ }
+
+ /* setup the wrapping */
+ if (text_renderer->wrap_width < 0)
+ {
+ pango_layout_set_width (text_renderer->layout, -1);
+ pango_layout_set_wrap (text_renderer->layout, PANGO_WRAP_CHAR);
+ }
+ else
+ {
+ pango_layout_set_width (text_renderer->layout, text_renderer->wrap_width * PANGO_SCALE);
+ pango_layout_set_wrap (text_renderer->layout, text_renderer->wrap_mode);
+ }
+
+ pango_layout_set_text (text_renderer->layout, text_renderer->text, -1);
+
+ /* calculate the real text dimension */
+ pango_layout_get_pixel_size (text_renderer->layout, &text_width, &text_height);
+
+ /* take into account the state indicator (required for calculation) */
+ if (text_renderer->follow_state)
+ {
+ gtk_widget_style_get (widget, "focus-padding", &focus_padding, "focus-line-width", &focus_width, NULL);
+ text_width += 2 * (focus_padding + focus_width);
+ text_height += 2 * (focus_padding + focus_width);
+ }
+
+ /* calculate the real x-offset */
+ x_offset = ((gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) ? (1.0 - renderer->xalign) : renderer->xalign)
+ * (cell_area->width - text_width - (2 * renderer->xpad));
+ x_offset = MAX (x_offset, 0);
+
+ /* calculate the real y-offset */
+ y_offset = renderer->yalign * (cell_area->height - text_height - (2 * renderer->ypad));
+ y_offset = MAX (y_offset, 0);
+
+ /* render the state indicator */
+ if ((flags & GTK_CELL_RENDERER_SELECTED) == GTK_CELL_RENDERER_SELECTED && text_renderer->follow_state)
+ {
+ /* calculate the text bounding box (including the focus padding/width) */
+ x0 = cell_area->x + x_offset;
+ y0 = cell_area->y + y_offset;
+ x1 = x0 + text_width;
+ y1 = y0 + text_height;
+
+#if GTK_CHECK_VERSION(2,8,0)
+ /* Cairo produces nicer results than using a polygon
+ * and so we use it directly if possible.
+ */
+ cr = gdk_cairo_create (window);
+ cairo_move_to (cr, x0 + 5, y0);
+ cairo_line_to (cr, x1 - 5, y0);
+ cairo_curve_to (cr, x1 - 5, y0, x1, y0, x1, y0 + 5);
+ cairo_line_to (cr, x1, y1 - 5);
+ cairo_curve_to (cr, x1, y1 - 5, x1, y1, x1 - 5, y1);
+ cairo_line_to (cr, x0 + 5, y1);
+ cairo_curve_to (cr, x0 + 5, y1, x0, y1, x0, y1 - 5);
+ cairo_line_to (cr, x0, y0 + 5);
+ cairo_curve_to (cr, x0, y0 + 5, x0, y0, x0 + 5, y0);
+ gdk_cairo_set_source_color (cr, &widget->style->base[state]);
+ cairo_fill (cr);
+ cairo_destroy (cr);
+#else
+ /* calculate a (more or less rounded) polygon */
+ points[0].x = x0 + 2; points[0].y = y0;
+ points[1].x = x1 - 2; points[1].y = y0;
+ points[2].x = x1; points[2].y = y0 + 2;
+ points[3].x = x1; points[3].y = y1 - 2;
+ points[4].x = x1 - 2; points[4].y = y1;
+ points[5].x = x0 + 2; points[5].y = y1;
+ points[6].x = x0; points[6].y = y1 - 2;
+ points[7].x = x0; points[7].y = y0 + 2;
+
+ /* render the indicator */
+ gdk_draw_polygon (window, widget->style->base_gc[state], TRUE, points, G_N_ELEMENTS (points));
+#endif
+ }
+
+ /* get proper sizing for the layout drawing */
+ if (text_renderer->follow_state)
+ {
+ text_width -= 2 * (focus_padding + focus_width);
+ text_height -= 2 * (focus_padding + focus_width);
+ x_offset += focus_padding + focus_width;
+ y_offset += focus_padding + focus_width;
+ }
+
+ /* draw the text */
+ gtk_paint_layout (widget->style, window, state, TRUE,
+ expose_area, widget, "cellrenderertext",
+ cell_area->x + x_offset + renderer->xpad,
+ cell_area->y + y_offset + renderer->ypad,
+ text_renderer->layout);
+}
+
+
+
+static GtkCellEditable*
+thunar_text_renderer_start_editing (GtkCellRenderer *renderer,
+ GdkEvent *event,
+ GtkWidget *widget,
+ const gchar *path,
+ GdkRectangle *background_area,
+ GdkRectangle *cell_area,
+ GtkCellRendererState flags)
+{
+ ThunarTextRenderer *text_renderer = THUNAR_TEXT_RENDERER (renderer);
+
+ /* verify that we are editable */
+ if (renderer->mode != GTK_CELL_RENDERER_MODE_EDITABLE)
+ return NULL;
+
+ /* allocate a new text entry widget to be used for editing */
+ text_renderer->entry = g_object_new (GTK_TYPE_ENTRY,
+ "has-frame", FALSE,
+ "text", text_renderer->text,
+ "visible", TRUE,
+ "xalign", renderer->xalign,
+ NULL);
+
+ /* select the whole text */
+ gtk_editable_select_region (GTK_EDITABLE (text_renderer->entry), 0, -1);
+
+ /* remember the tree path that we're editing */
+ g_object_set_data_full (G_OBJECT (text_renderer->entry), "thunar-text-renderer-path", g_strdup (path), g_free);
+
+ /* connect required signals */
+ g_signal_connect (G_OBJECT (text_renderer->entry), "editing-done", G_CALLBACK (thunar_text_renderer_editing_done), text_renderer);
+ g_signal_connect_after (G_OBJECT (text_renderer->entry), "grab-focus", G_CALLBACK (thunar_text_renderer_grab_focus), text_renderer);
+ g_signal_connect (G_OBJECT (text_renderer->entry), "focus-out-event", G_CALLBACK (thunar_text_renderer_focus_out_event), text_renderer);
+ g_signal_connect (G_OBJECT (text_renderer->entry), "populate-popup", G_CALLBACK (thunar_text_renderer_populate_popup), text_renderer);
+
+ return GTK_CELL_EDITABLE (text_renderer->entry);
+}
+
+
+
+static void
+thunar_text_renderer_invalidate (ThunarTextRenderer *text_renderer)
+{
+ thunar_text_renderer_set_widget (text_renderer, NULL);
+}
+
+
+
+static void
+thunar_text_renderer_set_widget (ThunarTextRenderer *text_renderer,
+ GtkWidget *widget)
+{
+ // FIXME: The sample text should be translatable with a hint to translators!
+ static const gchar SAMPLE_TEXT[] = "The Quick Brown Fox Jumps Over the Lazy Dog";
+ PangoRectangle extents;
+
+ if (G_LIKELY (widget == text_renderer->widget))
+ return;
+
+ /* disconnect from the previously set widget */
+ if (G_UNLIKELY (text_renderer->widget != NULL))
+ {
+ g_signal_handlers_disconnect_by_func (G_OBJECT (text_renderer->widget), thunar_text_renderer_invalidate, text_renderer);
+ g_object_unref (G_OBJECT (text_renderer->layout));
+ g_object_unref (G_OBJECT (text_renderer->widget));
+ }
+
+ /* activate the new widget */
+ text_renderer->widget = widget;
+
+ /* connect to the new widget */
+ if (G_LIKELY (widget != NULL))
+ {
+ /* take a reference on the widget */
+ g_object_ref (G_OBJECT (widget));
+
+ /* we need to recalculate the metrics when a new style (and thereby a new font) is set */
+ g_signal_connect_swapped (G_OBJECT (text_renderer->widget), "destroy", G_CALLBACK (thunar_text_renderer_invalidate), text_renderer);
+ g_signal_connect_swapped (G_OBJECT (text_renderer->widget), "style-set", G_CALLBACK (thunar_text_renderer_invalidate), text_renderer);
+
+ /* calculate the average character dimensions */
+ text_renderer->layout = gtk_widget_create_pango_layout (widget, SAMPLE_TEXT);
+ pango_layout_get_pixel_extents (text_renderer->layout, NULL, &extents);
+ pango_layout_set_width (text_renderer->layout, -1);
+ text_renderer->char_width = extents.width / g_utf8_strlen (SAMPLE_TEXT, sizeof (SAMPLE_TEXT) - 1);
+ text_renderer->char_height = extents.height;
+ }
+ else
+ {
+ text_renderer->layout = NULL;
+ text_renderer->char_width = 0;
+ text_renderer->char_height = 0;
+ }
+}
+
+
+
+static void
+thunar_text_renderer_editing_done (GtkCellEditable *editable,
+ ThunarTextRenderer *text_renderer)
+{
+ const gchar *path;
+ const gchar *text;
+
+ /* disconnect our signals from the cell editable */
+ g_signal_handlers_disconnect_by_func (G_OBJECT (editable), thunar_text_renderer_editing_done, text_renderer);
+ g_signal_handlers_disconnect_by_func (G_OBJECT (editable), thunar_text_renderer_focus_out_event, text_renderer);
+ g_signal_handlers_disconnect_by_func (G_OBJECT (editable), thunar_text_renderer_populate_popup, text_renderer);
+
+ /* let the GtkCellRenderer class do it's part of the job */
+ gtk_cell_renderer_stop_editing (GTK_CELL_RENDERER (text_renderer), GTK_ENTRY (editable)->editing_canceled);
+
+ /* inform whoever is interested that we have new text (if not cancelled) */
+ if (G_LIKELY (!GTK_ENTRY (editable)->editing_canceled))
+ {
+ text = gtk_entry_get_text (GTK_ENTRY (editable));
+ path = g_object_get_data (G_OBJECT (editable), "thunar-text-renderer-path");
+ g_signal_emit (G_OBJECT (text_renderer), text_renderer_signals[EDITED], 0, path, text);
+ }
+}
+
+
+
+static void
+thunar_text_renderer_grab_focus (GtkWidget *entry,
+ ThunarTextRenderer *text_renderer)
+{
+ const gchar *text;
+ const gchar *dot;
+ glong offset;
+
+ /* determine the text from the entry widget */
+ text = gtk_entry_get_text (GTK_ENTRY (entry));
+
+ /* lookup the last dot in the text */
+ dot = strrchr (text, '.');
+ if (G_LIKELY (dot != NULL))
+ {
+ /* determine the UTF-8 char offset */
+ offset = g_utf8_pointer_to_offset (text, dot);
+
+ /* select the text prior to the dot */
+ if (G_LIKELY (offset > 0))
+ gtk_entry_select_region (GTK_ENTRY (entry), 0, offset);
+ }
+
+ /* disconnect the grab-focus handler, so we change the selection only once */
+ g_signal_handlers_disconnect_by_func (G_OBJECT (entry), thunar_text_renderer_grab_focus, text_renderer);
+}
+
+
+
+static gboolean
+thunar_text_renderer_focus_out_event (GtkWidget *entry,
+ GdkEventFocus *event,
+ ThunarTextRenderer *text_renderer)
+{
+ /* cancel editing if we haven't popped up the menu */
+ if (G_LIKELY (!text_renderer->entry_menu_active))
+ thunar_text_renderer_editing_done (GTK_CELL_EDITABLE (entry), text_renderer);
+
+ /* we need to pass the event to the entry */
+ return FALSE;
+}
+
+
+
+static void
+thunar_text_renderer_populate_popup (GtkEntry *entry,
+ GtkMenu *menu,
+ ThunarTextRenderer *text_renderer)
+{
+ if (G_UNLIKELY (text_renderer->entry_menu_popdown_timer_id >= 0))
+ g_source_remove (text_renderer->entry_menu_popdown_timer_id);
+
+ text_renderer->entry_menu_active = TRUE;
+
+ g_signal_connect (G_OBJECT (menu), "unmap", G_CALLBACK (thunar_text_renderer_popup_unmap), text_renderer);
+}
+
+
+
+static void
+thunar_text_renderer_popup_unmap (GtkMenu *menu,
+ ThunarTextRenderer *text_renderer)
+{
+ text_renderer->entry_menu_active = FALSE;
+
+ if (G_LIKELY (text_renderer->entry_menu_popdown_timer_id < 0))
+ {
+ text_renderer->entry_menu_popdown_timer_id = g_timeout_add_full (G_PRIORITY_LOW, 500u, thunar_text_renderer_entry_menu_popdown_timer,
+ text_renderer, thunar_text_renderer_entry_menu_popdown_timer_destroy);
+ }
+}
+
+
+
+static gboolean
+thunar_text_renderer_entry_menu_popdown_timer (gpointer user_data)
+{
+ ThunarTextRenderer *text_renderer = THUNAR_TEXT_RENDERER (user_data);
+
+ GDK_THREADS_ENTER ();
+
+ /* check if we still have the keyboard focus */
+ if (G_UNLIKELY (!GTK_WIDGET_HAS_FOCUS (text_renderer->entry)))
+ thunar_text_renderer_editing_done (GTK_CELL_EDITABLE (text_renderer->entry), text_renderer);
+
+ GDK_THREADS_LEAVE ();
+
+ return FALSE;
+}
+
+
+
+static void
+thunar_text_renderer_entry_menu_popdown_timer_destroy (gpointer user_data)
+{
+ THUNAR_TEXT_RENDERER (user_data)->entry_menu_popdown_timer_id = -1;
+}
+
+
+
+/**
+ * thunar_text_renderer_new:
+ **/
+GtkCellRenderer*
+thunar_text_renderer_new (void)
+{
+ return g_object_new (THUNAR_TYPE_TEXT_RENDERER, NULL);
+}
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-text-renderer.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-text-renderer.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-text-renderer.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,43 @@
+/* $Id: thunar-text-renderer.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_TEXT_RENDERER_H__
+#define __THUNAR_TEXT_RENDERER_H__
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarTextRendererClass ThunarTextRendererClass;
+typedef struct _ThunarTextRenderer ThunarTextRenderer;
+
+#define THUNAR_TYPE_TEXT_RENDERER (thunar_text_renderer_get_type ())
+#define THUNAR_TEXT_RENDERER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_TEXT_RENDERER, ThunarTextRenderer))
+#define THUNAR_TEXT_RENDERER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_TEXT_RENDERER, ThunarTextRendererClass))
+#define THUNAR_IS_TEXT_RENDERER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_TEXT_RENDERER))
+#define THUNAR_IS_TEXT_RENDERER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_TEXT_RENDERER))
+#define THUNAR_TEXT_RENDERER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_TEXT_RENDERER, ThunarTextRendererClass))
+
+GType thunar_text_renderer_get_type (void) G_GNUC_CONST;
+
+GtkCellRenderer *thunar_text_renderer_new (void) G_GNUC_MALLOC;
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_TEXT_RENDERER_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-thumbnail-frame.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-thumbnail-frame.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-thumbnail-frame.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,795 @@
+#include <thunar/thunar-thumbnail-frame.h>
+/* GdkPixbuf RGBA C-Source image dump */
+
+#ifdef __SUNPRO_C
+#pragma align 4 (thunar_thumbnail_frame)
+#endif
+#ifdef __GNUC__
+const guint8 thunar_thumbnail_frame[] __attribute__ ((__aligned__ (4))) =
+#else
+const guint8 thunar_thumbnail_frame[] =
+#endif
+{ ""
+ /* Pixbuf magic (0x47646b50) */
+ "GdkP"
+ /* length: header (24) + pixel_data (16384) */
+ "\0\0@\30"
+ /* pixdata_type (0x1010002) */
+ "\1\1\0\2"
+ /* rowstride (256) */
+ "\0\0\1\0"
+ /* width (64) */
+ "\0\0\0@"
+ /* height (64) */
+ "\0\0\0@"
+ /* pixel_data: */
+ "\0\0\0\2\0\0\0\3\0\0\0\10\0\0\0\14\0\0\0\15\0\0\0\15\0\0\0\15\0\0\0\14"
+ "\0\0\0\15\0\0\0\15\0\0\0\14\0\0\0\15\0\0\0\14\0\0\0\14\0\0\0\15\0\0\0"
+ "\14\0\0\0\15\0\0\0\15\0\0\0\15\0\0\0\15\0\0\0\14\0\0\0\14\0\0\0\14\0"
+ "\0\0\15\0\0\0\15\0\0\0\14\0\0\0\14\0\0\0\14\0\0\0\15\0\0\0\14\0\0\0\14"
+ "\0\0\0\14\0\0\0\15\0\0\0\14\0\0\0\14\0\0\0\15\0\0\0\14\0\0\0\15\0\0\0"
+ "\14\0\0\0\15\0\0\0\15\0\0\0\15\0\0\0\14\0\0\0\14\0\0\0\15\0\0\0\14\0"
+ "\0\0\15\0\0\0\14\0\0\0\15\0\0\0\14\0\0\0\15\0\0\0\15\0\0\0\14\0\0\0\15"
+ "\0\0\0\15\0\0\0\15\0\0\0\15\0\0\0\14\0\0\0\15\0\0\0\14\0\0\0\10\0\0\0"
+ "\3\0\0\0\1\377\377\377\0\0\0\0\4\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0"
+ "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0"
+ "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+ "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+ "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+ "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+ "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+ "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+ "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+ "\0\0\0#\0\0\0\17\0\0\0\4\377\377\377\0\0\0\0\10\0\0\0\377\273\273\273"
+ "\377\273\273\273\377\273\273\273\377\273\273\273\377\273\273\273\377"
+ "\273\273\273\377\273\273\273\377\273\273\273\377\273\273\273\377\273"
+ "\273\273\377\273\273\273\377\273\273\273\377\273\273\273\377\273\273"
+ "\273\377\273\273\273\377\273\273\273\377\273\273\273\377\273\273\273"
+ "\377\273\273\273\377\273\273\273\377\273\273\273\377\273\273\273\377"
+ "\273\273\273\377\273\273\273\377\273\273\273\377\273\273\273\377\273"
+ "\273\273\377\273\273\273\377\273\273\273\377\273\273\273\377\273\273"
+ "\273\377\273\273\273\377\273\273\273\377\273\273\273\377\273\273\273"
+ "\377\273\273\273\377\273\273\273\377\273\273\273\377\273\273\273\377"
+ "\273\273\273\377\273\273\273\377\273\273\273\377\273\273\273\377\273"
+ "\273\273\377\273\273\273\377\273\273\273\377\273\273\273\377\273\273"
+ "\273\377\273\273\273\377\273\273\273\377\273\273\273\377\273\273\273"
+ "\377\273\273\273\377\273\273\273\377\273\273\273\377\273\273\273\377"
+ "\273\273\273\377\0\0\0\377\0\0\0P\0\0\0#\0\0\0\10\377\377\377\0\0\0\0"
+ "\14\0\0\0\377\273\273\273\377\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\273\273\273\377\0\0\0\377\0\0\0n\0\0\0"
+ "0\0\0\0\14\0\0\0\2\0\0\0\14\0\0\0\377\273\273\273\377\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\273\273\273\377"
+ "\0\0\0\377\0\0\0x\0\0\0""3\0\0\0\14\0\0\0\2\0\0\0\15\0\0\0\377\273\273"
+ "\273\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\273\273\273\377\0\0\0\377\0\0\0x\0\0\0""4\0\0\0\14\0\0\0\2"
+ "\0\0\0\14\0\0\0\377\273\273\273\377\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\273\273\273\377\0\0\0\377\0\0\0x\0"
+ "\0\0""4\0\0\0\14\0\0\0\1\0\0\0\15\0\0\0\377\273\273\273\377\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\273\273\273"
+ "\377\0\0\0\377\0\0\0x\0\0\0""4\0\0\0\14\0\0\0\2\0\0\0\14\0\0\0\377\273"
+ "\273\273\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
+ "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\273\273\273\377\0\0\0\377\0\0\0y\0\0\0""4\0\0\0\14\0"
+ "\0\0\1\0\0\0\14\0\0\0\377\273\273\273\377\377\377\377\0\377\377\377\0"
+ "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\273\273\273\377\0\0\0\377"
+ "\0\0\0x\0\0\0""3\0\0\0\14\0\0\0\2\0\0\0\14\0\0\0\377\273\273\273\377"
+ "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\273\273\273\377\0\0\0\377\0\0\0x\0\0\0""4\0\0\0\15\0\0\0\2\0\0\0\15"
+ "\0\0\0\377\273\273\273\377\377\377\377\0\377\377\377\0\377\377\377\0"
+ "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\273\273\273\377\0\0\0\377\0\0\0y\0\0\0"
+ "4\0\0\0\15\0\0\0\1\0\0\0\15\0\0\0\377\273\273\273\377\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\273\273\273\377"
+ "\0\0\0\377\0\0\0y\0\0\0""3\0\0\0\15\0\0\0\1\0\0\0\14\0\0\0\377\273\273"
+ "\273\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\273\273\273\377\0\0\0\377\0\0\0y\0\0\0""4\0\0\0\14\0\0\0\2"
+ "\0\0\0\14\0\0\0\377\273\273\273\377\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\273\273\273\377\0\0\0\377\0\0\0x\0"
+ "\0\0""3\0\0\0\14\0\0\0\2\0\0\0\14\0\0\0\377\273\273\273\377\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\273\273\273"
+ "\377\0\0\0\377\0\0\0x\0\0\0""4\0\0\0\14\0\0\0\2\0\0\0\14\0\0\0\377\273"
+ "\273\273\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
+ "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\273\273\273\377\0\0\0\377\0\0\0x\0\0\0""4\0\0\0\14\0"
+ "\0\0\1\0\0\0\14\0\0\0\377\273\273\273\377\377\377\377\0\377\377\377\0"
+ "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\273\273\273\377\0\0\0\377"
+ "\0\0\0x\0\0\0""4\0\0\0\14\0\0\0\2\0\0\0\14\0\0\0\377\273\273\273\377"
+ "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\273\273\273\377\0\0\0\377\0\0\0x\0\0\0""4\0\0\0\14\0\0\0\1\0\0\0\14"
+ "\0\0\0\377\273\273\273\377\377\377\377\0\377\377\377\0\377\377\377\0"
+ "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\273\273\273\377\0\0\0\377\0\0\0x\0\0\0"
+ "4\0\0\0\15\0\0\0\2\0\0\0\15\0\0\0\377\273\273\273\377\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\273\273\273\377"
+ "\0\0\0\377\0\0\0y\0\0\0""4\0\0\0\14\0\0\0\2\0\0\0\15\0\0\0\377\273\273"
+ "\273\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\273\273\273\377\0\0\0\377\0\0\0y\0\0\0""4\0\0\0\15\0\0\0\2"
+ "\0\0\0\14\0\0\0\377\273\273\273\377\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\273\273\273\377\0\0\0\377\0\0\0x\0"
+ "\0\0""4\0\0\0\15\0\0\0\1\0\0\0\15\0\0\0\377\273\273\273\377\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\273\273\273"
+ "\377\0\0\0\377\0\0\0y\0\0\0""4\0\0\0\15\0\0\0\1\0\0\0\15\0\0\0\377\273"
+ "\273\273\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
+ "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\273\273\273\377\0\0\0\377\0\0\0x\0\0\0""4\0\0\0\15\0"
+ "\0\0\1\0\0\0\14\0\0\0\377\273\273\273\377\377\377\377\0\377\377\377\0"
+ "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\273\273\273\377\0\0\0\377"
+ "\0\0\0x\0\0\0""3\0\0\0\14\0\0\0\2\0\0\0\15\0\0\0\377\273\273\273\377"
+ "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\273\273\273\377\0\0\0\377\0\0\0x\0\0\0""3\0\0\0\15\0\0\0\2\0\0\0\14"
+ "\0\0\0\377\273\273\273\377\377\377\377\0\377\377\377\0\377\377\377\0"
+ "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\273\273\273\377\0\0\0\377\0\0\0y\0\0\0"
+ "4\0\0\0\15\0\0\0\1\0\0\0\14\0\0\0\377\273\273\273\377\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\273\273\273\377"
+ "\0\0\0\377\0\0\0x\0\0\0""4\0\0\0\15\0\0\0\2\0\0\0\14\0\0\0\377\273\273"
+ "\273\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\273\273\273\377\0\0\0\377\0\0\0y\0\0\0""4\0\0\0\14\0\0\0\2"
+ "\0\0\0\15\0\0\0\377\273\273\273\377\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\273\273\273\377\0\0\0\377\0\0\0x\0"
+ "\0\0""4\0\0\0\14\0\0\0\2\0\0\0\15\0\0\0\377\273\273\273\377\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\273\273\273"
+ "\377\0\0\0\377\0\0\0x\0\0\0""4\0\0\0\14\0\0\0\1\0\0\0\15\0\0\0\377\273"
+ "\273\273\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
+ "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\273\273\273\377\0\0\0\377\0\0\0x\0\0\0""4\0\0\0\14\0"
+ "\0\0\2\0\0\0\15\0\0\0\377\273\273\273\377\377\377\377\0\377\377\377\0"
+ "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\273\273\273\377\0\0\0\377"
+ "\0\0\0y\0\0\0""3\0\0\0\15\0\0\0\2\0\0\0\15\0\0\0\377\273\273\273\377"
+ "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\273\273\273\377\0\0\0\377\0\0\0y\0\0\0""4\0\0\0\15\0\0\0\2\0\0\0\14"
+ "\0\0\0\377\273\273\273\377\377\377\377\0\377\377\377\0\377\377\377\0"
+ "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\273\273\273\377\0\0\0\377\0\0\0y\0\0\0"
+ "3\0\0\0\14\0\0\0\2\0\0\0\15\0\0\0\377\273\273\273\377\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\273\273\273\377"
+ "\0\0\0\377\0\0\0x\0\0\0""3\0\0\0\15\0\0\0\2\0\0\0\15\0\0\0\377\273\273"
+ "\273\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\273\273\273\377\0\0\0\377\0\0\0y\0\0\0""3\0\0\0\15\0\0\0\1"
+ "\0\0\0\14\0\0\0\377\273\273\273\377\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\273\273\273\377\0\0\0\377\0\0\0x\0"
+ "\0\0""3\0\0\0\15\0\0\0\1\0\0\0\15\0\0\0\377\273\273\273\377\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\273\273\273"
+ "\377\0\0\0\377\0\0\0x\0\0\0""4\0\0\0\15\0\0\0\2\0\0\0\15\0\0\0\377\273"
+ "\273\273\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
+ "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\273\273\273\377\0\0\0\377\0\0\0x\0\0\0""4\0\0\0\15\0"
+ "\0\0\2\0\0\0\15\0\0\0\377\273\273\273\377\377\377\377\0\377\377\377\0"
+ "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\273\273\273\377\0\0\0\377"
+ "\0\0\0x\0\0\0""3\0\0\0\15\0\0\0\1\0\0\0\14\0\0\0\377\273\273\273\377"
+ "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\273\273\273\377\0\0\0\377\0\0\0y\0\0\0""4\0\0\0\15\0\0\0\1\0\0\0\15"
+ "\0\0\0\377\273\273\273\377\377\377\377\0\377\377\377\0\377\377\377\0"
+ "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\273\273\273\377\0\0\0\377\0\0\0y\0\0\0"
+ "3\0\0\0\14\0\0\0\2\0\0\0\14\0\0\0\377\273\273\273\377\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\273\273\273\377"
+ "\0\0\0\377\0\0\0y\0\0\0""3\0\0\0\14\0\0\0\2\0\0\0\14\0\0\0\377\273\273"
+ "\273\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\273\273\273\377\0\0\0\377\0\0\0x\0\0\0""4\0\0\0\15\0\0\0\1"
+ "\0\0\0\15\0\0\0\377\273\273\273\377\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\273\273\273\377\0\0\0\377\0\0\0x\0"
+ "\0\0""4\0\0\0\14\0\0\0\1\0\0\0\15\0\0\0\377\273\273\273\377\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\273\273\273"
+ "\377\0\0\0\377\0\0\0x\0\0\0""4\0\0\0\15\0\0\0\2\0\0\0\15\0\0\0\377\273"
+ "\273\273\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
+ "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\273\273\273\377\0\0\0\377\0\0\0y\0\0\0""4\0\0\0\14\0"
+ "\0\0\1\0\0\0\15\0\0\0\377\273\273\273\377\377\377\377\0\377\377\377\0"
+ "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\273\273\273\377\0\0\0\377"
+ "\0\0\0y\0\0\0""3\0\0\0\14\0\0\0\1\0\0\0\14\0\0\0\377\273\273\273\377"
+ "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\273\273\273\377\0\0\0\377\0\0\0x\0\0\0""4\0\0\0\15\0\0\0\2\0\0\0\15"
+ "\0\0\0\377\273\273\273\377\377\377\377\0\377\377\377\0\377\377\377\0"
+ "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\273\273\273\377\0\0\0\377\0\0\0x\0\0\0"
+ "3\0\0\0\15\0\0\0\2\0\0\0\14\0\0\0\377\273\273\273\377\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\273\273\273\377"
+ "\0\0\0\377\0\0\0y\0\0\0""4\0\0\0\14\0\0\0\1\0\0\0\15\0\0\0\377\273\273"
+ "\273\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
+ "\377\377\0\273\273\273\377\0\0\0\377\0\0\0x\0\0\0""4\0\0\0\14\0\0\0\2"
+ "\0\0\0\15\0\0\0\377\273\273\273\377\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
+ "\377\0\377\377\377\0\377\377\377\0\273\273\273\377\0\0\0\377\0\0\0x\0"
+ "\0\0""3\0\0\0\15\0\0\0\2\0\0\0\14\0\0\0\377\273\273\273\377\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\273\273\273"
+ "\377\0\0\0\377\0\0\0x\0\0\0""4\0\0\0\14\0\0\0\2\0\0\0\15\0\0\0\377\273"
+ "\273\273\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
+ "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\273\273\273\377\0\0\0\377\0\0\0x\0\0\0""4\0\0\0\14\0"
+ "\0\0\2\0\0\0\14\0\0\0\377\273\273\273\377\377\377\377\0\377\377\377\0"
+ "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+ "\0\377\377\377\0\377\377\377\0\377\377\377\0\273\273\273\377\0\0\0\377"
+ "\0\0\0y\0\0\0""3\0\0\0\14\0\0\0\1\0\0\0\15\0\0\0\377\273\273\273\377"
+ "\273\273\273\377\273\273\273\377\273\273\273\377\273\273\273\377\273"
+ "\273\273\377\273\273\273\377\273\273\273\377\273\273\273\377\273\273"
+ "\273\377\273\273\273\377\273\273\273\377\273\273\273\377\273\273\273"
+ "\377\273\273\273\377\273\273\273\377\273\273\273\377\273\273\273\377"
+ "\273\273\273\377\273\273\273\377\273\273\273\377\273\273\273\377\273"
+ "\273\273\377\273\273\273\377\273\273\273\377\273\273\273\377\273\273"
+ "\273\377\273\273\273\377\273\273\273\377\273\273\273\377\273\273\273"
+ "\377\273\273\273\377\273\273\273\377\273\273\273\377\273\273\273\377"
+ "\273\273\273\377\273\273\273\377\273\273\273\377\273\273\273\377\273"
+ "\273\273\377\273\273\273\377\273\273\273\377\273\273\273\377\273\273"
+ "\273\377\273\273\273\377\273\273\273\377\273\273\273\377\273\273\273"
+ "\377\273\273\273\377\273\273\273\377\273\273\273\377\273\273\273\377"
+ "\273\273\273\377\273\273\273\377\273\273\273\377\273\273\273\377\273"
+ "\273\273\377\0\0\0\377\0\0\0w\0\0\0""3\0\0\0\14\0\0\0\1\0\0\0\14\0\0"
+ "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
+ "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+ "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+ "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+ "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+ "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+ "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+ "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
+ "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0m\0\0\0""0\0\0\0\14\0\0\0\2\0\0\0"
+ "\11\0\0\0#\0\0\0P\0\0\0n\0\0\0w\0\0\0y\0\0\0x\0\0\0y\0\0\0x\0\0\0x\0"
+ "\0\0x\0\0\0x\0\0\0y\0\0\0x\0\0\0x\0\0\0x\0\0\0x\0\0\0x\0\0\0x\0\0\0x"
+ "\0\0\0y\0\0\0x\0\0\0x\0\0\0x\0\0\0x\0\0\0x\0\0\0y\0\0\0x\0\0\0x\0\0\0"
+ "x\0\0\0x\0\0\0x\0\0\0y\0\0\0x\0\0\0x\0\0\0y\0\0\0x\0\0\0x\0\0\0x\0\0"
+ "\0x\0\0\0x\0\0\0y\0\0\0y\0\0\0x\0\0\0y\0\0\0y\0\0\0x\0\0\0y\0\0\0y\0"
+ "\0\0x\0\0\0x\0\0\0x\0\0\0x\0\0\0y\0\0\0x\0\0\0x\0\0\0x\0\0\0y\0\0\0x"
+ "\0\0\0n\0\0\0P\0\0\0#\0\0\0\11\0\0\0\1\0\0\0\4\0\0\0\20\0\0\0#\0\0\0"
+ "0\0\0\0""3\0\0\0""4\0\0\0""3\0\0\0""4\0\0\0""4\0\0\0""3\0\0\0""3\0\0"
+ "\0""4\0\0\0""3\0\0\0""4\0\0\0""4\0\0\0""4\0\0\0""3\0\0\0""4\0\0\0""4"
+ "\0\0\0""4\0\0\0""4\0\0\0""3\0\0\0""3\0\0\0""3\0\0\0""3\0\0\0""4\0\0\0"
+ "4\0\0\0""4\0\0\0""4\0\0\0""3\0\0\0""4\0\0\0""4\0\0\0""4\0\0\0""4\0\0"
+ "\0""4\0\0\0""4\0\0\0""3\0\0\0""3\0\0\0""4\0\0\0""4\0\0\0""4\0\0\0""4"
+ "\0\0\0""3\0\0\0""4\0\0\0""3\0\0\0""4\0\0\0""4\0\0\0""4\0\0\0""4\0\0\0"
+ "4\0\0\0""4\0\0\0""3\0\0\0""4\0\0\0""4\0\0\0""3\0\0\0""4\0\0\0""3\0\0"
+ "\0""4\0\0\0""3\0\0\0/\0\0\0#\0\0\0\20\0\0\0\4\377\377\377\0\0\0\0\1\0"
+ "\0\0\4\0\0\0\10\0\0\0\14\0\0\0\14\0\0\0\14\0\0\0\14\0\0\0\15\0\0\0\15"
+ "\0\0\0\15\0\0\0\14\0\0\0\14\0\0\0\15\0\0\0\14\0\0\0\15\0\0\0\15\0\0\0"
+ "\14\0\0\0\15\0\0\0\14\0\0\0\15\0\0\0\15\0\0\0\14\0\0\0\15\0\0\0\14\0"
+ "\0\0\15\0\0\0\15\0\0\0\15\0\0\0\14\0\0\0\15\0\0\0\15\0\0\0\15\0\0\0\15"
+ "\0\0\0\15\0\0\0\14\0\0\0\14\0\0\0\15\0\0\0\14\0\0\0\14\0\0\0\15\0\0\0"
+ "\15\0\0\0\15\0\0\0\14\0\0\0\15\0\0\0\15\0\0\0\15\0\0\0\14\0\0\0\14\0"
+ "\0\0\14\0\0\0\15\0\0\0\15\0\0\0\14\0\0\0\15\0\0\0\14\0\0\0\15\0\0\0\15"
+ "\0\0\0\14\0\0\0\15\0\0\0\15\0\0\0\14\0\0\0\14\0\0\0\10\0\0\0\4\0\0\0"
+ "\2\377\377\377\0\377\377\377\0\0\0\0\1\377\377\377\0\0\0\0\2\0\0\0\1"
+ "\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\2\0\0\0\1\0\0\0\2\0\0\0\2\0\0\0\2\0\0"
+ "\0\1\0\0\0\2\0\0\0\1\0\0\0\2\0\0\0\1\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2"
+ "\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\1\0\0"
+ "\0\2\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2"
+ "\0\0\0\1\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\2\0\0\0\2\0\0\0\2\0\0"
+ "\0\1\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2\0\0\0\2"
+ "\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\377\377\377\0\377\377"
+ "\377\0"};
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-thumbnail-frame.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-thumbnail-frame.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-thumbnail-frame.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,31 @@
+/* $Id: thunar-thumbnail-frame.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_THUMBNAIL_FRAME_H__
+#define __THUNAR_THUMBNAIL_FRAME_H__
+
+#include <glib.h>
+
+G_BEGIN_DECLS;
+
+extern const guint8 thunar_thumbnail_frame[];
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_THUMBNAIL_FRAME_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-thumbnail-frame.png
===================================================================
(Binary files differ)
Property changes on: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-thumbnail-frame.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-thumbnail-generator.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-thumbnail-generator.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-thumbnail-generator.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,327 @@
+/* $Id: thunar-thumbnail-generator.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <thunar/thunar-thumbnail-generator.h>
+
+
+
+typedef struct _ThunarThumbnailInfo ThunarThumbnailInfo;
+
+
+
+static void thunar_thumbnail_generator_class_init (ThunarThumbnailGeneratorClass *klass);
+static void thunar_thumbnail_generator_init (ThunarThumbnailGenerator *generator);
+static void thunar_thumbnail_generator_finalize (GObject *object);
+static gboolean thunar_thumbnail_generator_idle (gpointer user_data);
+static gpointer thunar_thumbnail_generator_thread (gpointer user_data);
+static void thunar_thumbnail_info_free (ThunarThumbnailInfo *info);
+
+
+
+struct _ThunarThumbnailGeneratorClass
+{
+ GObjectClass __parent__;
+};
+
+struct _ThunarThumbnailGenerator
+{
+ GObject __parent__;
+
+ ThunarVfsThumbFactory *factory;
+ volatile GThread *thread;
+ GMutex *lock;
+ GCond *cond;
+ gint idle_id;
+
+ GList *requests;
+ GList *replies;
+};
+
+struct _ThunarThumbnailInfo
+{
+ ThunarFile *file;
+ ThunarVfsInfo *info;
+};
+
+
+
+G_DEFINE_TYPE (ThunarThumbnailGenerator, thunar_thumbnail_generator, G_TYPE_OBJECT);
+
+
+
+static void
+thunar_thumbnail_generator_class_init (ThunarThumbnailGeneratorClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_thumbnail_generator_finalize;
+}
+
+
+
+static void
+thunar_thumbnail_generator_init (ThunarThumbnailGenerator *generator)
+{
+ generator->lock = g_mutex_new ();
+ generator->cond = g_cond_new ();
+ generator->idle_id = -1;
+}
+
+
+
+static void
+thunar_thumbnail_generator_finalize (GObject *object)
+{
+ ThunarThumbnailGenerator *generator = THUNAR_THUMBNAIL_GENERATOR (object);
+
+ /* acquire the generator lock */
+ g_mutex_lock (generator->lock);
+
+ /* release all requests */
+ g_list_foreach (generator->requests, (GFunc) thunar_thumbnail_info_free, NULL);
+ g_list_free (generator->requests);
+ generator->requests = NULL;
+
+ /* wait for the generator thread to terminate */
+ while (G_UNLIKELY (generator->thread != NULL))
+ g_cond_wait (generator->cond, generator->lock);
+
+ /* release all replies */
+ g_list_foreach (generator->replies, (GFunc) thunar_thumbnail_info_free, NULL);
+ g_list_free (generator->replies);
+ generator->replies = NULL;
+
+ /* drop the idle source (if any) */
+ if (G_UNLIKELY (generator->idle_id >= 0))
+ g_source_remove (generator->idle_id);
+
+ /* release the thumbnail factory */
+ g_object_unref (G_OBJECT (generator->factory));
+
+ /* release the generator lock */
+ g_mutex_unlock (generator->lock);
+
+ /* release the cond and mutex */
+ g_mutex_free (generator->lock);
+ g_cond_free (generator->cond);
+
+ (*G_OBJECT_CLASS (thunar_thumbnail_generator_parent_class)->finalize) (object);
+}
+
+
+
+static gboolean
+thunar_thumbnail_generator_idle (gpointer user_data)
+{
+ ThunarThumbnailGenerator *generator = THUNAR_THUMBNAIL_GENERATOR (user_data);
+ ThunarThumbnailInfo *info;
+ GList *infos;
+ GList *lp;
+
+ /* acquire the lock on the generator */
+ g_mutex_lock (generator->lock);
+
+ /* grab the infos returned from the thumbnailer thread */
+ infos = generator->replies;
+ generator->replies = NULL;
+
+ /* reset the process idle id */
+ generator->idle_id = -1;
+
+ /* release the lock on the generator */
+ g_mutex_unlock (generator->lock);
+
+ /* acquire the GDK thread lock */
+ GDK_THREADS_ENTER ();
+
+ /* invoke "changed" signals on all files */
+ for (lp = infos; lp != NULL; lp = lp->next)
+ {
+ /* invoke "changed" and release the info */
+ info = (ThunarThumbnailInfo *) lp->data;
+ thunar_file_changed (THUNAR_FILE (info->file));
+ thunar_thumbnail_info_free (info);
+ }
+ g_list_free (infos);
+
+ /* release the GDK thread lock */
+ GDK_THREADS_LEAVE ();
+
+ return FALSE;
+}
+
+
+
+static gpointer
+thunar_thumbnail_generator_thread (gpointer user_data)
+{
+ ThunarThumbnailGenerator *generator = THUNAR_THUMBNAIL_GENERATOR (user_data);
+ ThunarThumbnailInfo *info;
+ GdkPixbuf *icon;
+
+ for (;;)
+ {
+ /* lock the factory */
+ g_mutex_lock (generator->lock);
+
+ /* grab the first thumbnail from the request list */
+ if (G_LIKELY (generator->requests != NULL))
+ {
+ info = generator->requests->data;
+ generator->requests = g_list_remove (generator->requests, info);
+ }
+ else
+ {
+ info = NULL;
+ }
+
+ /* check if we have something to generate */
+ if (G_UNLIKELY (info == NULL))
+ {
+ /* reset the thread pointer */
+ generator->thread = NULL;
+ g_cond_signal (generator->cond);
+ g_mutex_unlock (generator->lock);
+ break;
+ }
+
+ /* release the lock */
+ g_mutex_unlock (generator->lock);
+
+ /* try to generate the thumbnail */
+ icon = thunar_vfs_thumb_factory_generate_thumbnail (generator->factory, info->info);
+
+ /* store the thumbnail (or the failed notice) */
+ thunar_vfs_thumb_factory_store_thumbnail (generator->factory, icon, info->info, NULL);
+
+ /* place the thumbnail on the reply list and schedule the idle source */
+ g_mutex_lock (generator->lock);
+ generator->replies = g_list_prepend (generator->replies, info);
+ if (G_UNLIKELY (generator->idle_id < 0))
+ generator->idle_id = g_idle_add_full (G_PRIORITY_LOW, thunar_thumbnail_generator_idle, generator, NULL);
+ g_mutex_unlock (generator->lock);
+
+ /* release the icon (if any) */
+ if (G_LIKELY (icon != NULL))
+ g_object_unref (G_OBJECT (icon));
+ }
+
+ return NULL;
+}
+
+
+
+static void
+thunar_thumbnail_info_free (ThunarThumbnailInfo *info)
+{
+ g_object_unref (G_OBJECT (info->file));
+ thunar_vfs_info_unref (info->info);
+ g_free (info);
+}
+
+
+
+/**
+ * thunar_thumbnail_generator_new:
+ * @factory : a #ThunarVfsThumbFactory.
+ *
+ * Allocates a new #ThunarThumbnailGenerator object,
+ * which can be used to generate and store thumbnails
+ * for files.
+ *
+ * The caller is responsible to free the returned
+ * object using g_object_unref() when no longer needed.
+ *
+ * Return value: a newly allocated #ThunarThumbnailGenerator.
+ **/
+ThunarThumbnailGenerator*
+thunar_thumbnail_generator_new (ThunarVfsThumbFactory *factory)
+{
+ ThunarThumbnailGenerator *generator;
+
+ g_return_val_if_fail (THUNAR_VFS_IS_THUMB_FACTORY (factory), NULL);
+
+ /* allocate the generator object */
+ generator = g_object_new (THUNAR_TYPE_THUMBNAIL_GENERATOR, NULL);
+ generator->factory = g_object_ref (G_OBJECT (factory));
+
+ return generator;
+}
+
+
+
+/**
+ * thunar_thumbnail_generator_enqueue:
+ * @generator
+ * @file
+ **/
+void
+thunar_thumbnail_generator_enqueue (ThunarThumbnailGenerator *generator,
+ ThunarFile *file)
+{
+ ThunarThumbnailInfo *info;
+ GError *error = NULL;
+ GList *lp;
+
+ g_return_if_fail (THUNAR_IS_THUMBNAIL_GENERATOR (generator));
+ g_return_if_fail (THUNAR_IS_FILE (file));
+
+ /* acquire the generator lock */
+ g_mutex_lock (generator->lock);
+
+ /* check if the file is already on the request list */
+ for (lp = generator->requests; lp != NULL; lp = lp->next)
+ if (((ThunarThumbnailInfo *) lp->data)->file == file)
+ break;
+
+ /* schedule a request for the file if it's not already done */
+ if (G_LIKELY (lp == NULL))
+ {
+ /* allocate a thumbnail info for the file */
+ info = g_new (ThunarThumbnailInfo, 1);
+ info->file = g_object_ref (G_OBJECT (file));
+ info->info = thunar_vfs_info_copy (thunar_file_get_info (file));
+
+ /* schedule the request */
+ generator->requests = g_list_append (generator->requests, info);
+
+ /* start the generator thread on-demand */
+ if (G_UNLIKELY (generator->thread == NULL))
+ {
+ generator->thread = g_thread_create_full (thunar_thumbnail_generator_thread, generator, 0,
+ FALSE, FALSE, G_THREAD_PRIORITY_LOW, &error);
+ if (G_UNLIKELY (generator->thread == NULL))
+ {
+ g_warning ("Failed to launch thumbnail generator thread: %s", error->message);
+ g_error_free (error);
+ }
+ }
+ }
+
+ /* release the generator lock */
+ g_mutex_unlock (generator->lock);
+}
+
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-thumbnail-generator.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-thumbnail-generator.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-thumbnail-generator.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,46 @@
+/* $Id: thunar-thumbnail-generator.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_THUMBNAIL_GENERATOR_H__
+#define __THUNAR_THUMBNAIL_GENERATOR_H__
+
+#include <thunar/thunar-file.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarThumbnailGeneratorClass ThunarThumbnailGeneratorClass;
+typedef struct _ThunarThumbnailGenerator ThunarThumbnailGenerator;
+
+#define THUNAR_TYPE_THUMBNAIL_GENERATOR (thunar_thumbnail_generator_get_type ())
+#define THUNAR_THUMBNAIL_GENERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_THUMBNAIL_GENERATOR, ThunarThumbnailGenerator))
+#define THUNAR_THUMBNAIL_GENERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_THUMBNAIL_GENERATOR, ThunarThumbnailGeneratorClass))
+#define THUNAR_IS_THUMBNAIL_GENERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_THUMBNAIL_GENERATOR))
+#define THUNAR_IS_THUMBNAIL_GENERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_THUMBNAIL_GENERATOR))
+#define THUNAR_THUMBNAIL_GENERATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_THUMBNAIL_GENERATOR, ThunarThumbnailGeneratorClass))
+
+GType thunar_thumbnail_generator_get_type (void) G_GNUC_CONST;
+
+ThunarThumbnailGenerator *thunar_thumbnail_generator_new (ThunarVfsThumbFactory *factory) G_GNUC_MALLOC;
+
+void thunar_thumbnail_generator_enqueue (ThunarThumbnailGenerator *generator,
+ ThunarFile *file);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_THUMBNAIL_GENERATOR_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-view.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-view.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-view.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,249 @@
+/* $Id: thunar-view.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <thunar/thunar-view.h>
+
+
+
+static void thunar_view_class_init (gpointer klass);
+
+
+
+GType
+thunar_view_get_type (void)
+{
+ static GType type = G_TYPE_INVALID;
+
+ if (G_UNLIKELY (type == G_TYPE_INVALID))
+ {
+ static const GTypeInfo info =
+ {
+ sizeof (ThunarViewIface),
+ NULL,
+ NULL,
+ (GClassInitFunc) thunar_view_class_init,
+ NULL,
+ NULL,
+ 0,
+ 0,
+ NULL,
+ };
+
+ type = g_type_register_static (G_TYPE_INTERFACE,
+ "ThunarView",
+ &info, 0);
+
+ g_type_interface_add_prerequisite (type, GTK_TYPE_WIDGET);
+ g_type_interface_add_prerequisite (type, THUNAR_TYPE_NAVIGATOR);
+ }
+
+ return type;
+}
+
+
+
+static void
+thunar_view_class_init (gpointer klass)
+{
+ /**
+ * ThunarView:loading:
+ *
+ * Indicates whether the given #ThunarView is currently loading or
+ * layouting its contents. Implementations should invoke
+ * #g_object_notify() on this property whenever they start to load
+ * the contents and then once they have finished loading.
+ *
+ * Other modules can use this property to display some kind of
+ * user visible notification about the loading state, e.g. a
+ * progress bar or an animated image.
+ **/
+ g_object_interface_install_property (klass,
+ g_param_spec_boolean ("loading",
+ _("Loading"),
+ _("Whether the view is currently being loaded"),
+ FALSE,
+ EXO_PARAM_READABLE));
+
+ /**
+ * ThunarView:statusbar-text:
+ *
+ * The text to be displayed in the status bar, which is associated
+ * with this #ThunarView instance. Implementations should invoke
+ * #g_object_notify() on this property, whenever they have a new
+ * text to be display in the status bar (e.g. the selection changed
+ * or similar).
+ **/
+ g_object_interface_install_property (klass,
+ g_param_spec_string ("statusbar-text",
+ _("Statusbar text"),
+ _("Text to be displayed in the statusbar associated with this view"),
+ NULL,
+ EXO_PARAM_READABLE));
+
+ /**
+ * ThunarView:show-hidden:
+ *
+ * Tells whether to display hidden and backup files in the
+ * #ThunarView or whether to hide them.
+ **/
+ g_object_interface_install_property (klass,
+ g_param_spec_boolean ("show-hidden",
+ _("Show hidden"),
+ _("Whether to display hidden files"),
+ FALSE,
+ EXO_PARAM_READWRITE));
+
+ /**
+ * ThunarView:ui-manager:
+ *
+ * The UI manager used by the surrounding #ThunarWindow. The
+ * #ThunarView implementations may connect additional actions
+ * to the UI manager.
+ **/
+ g_object_interface_install_property (klass,
+ g_param_spec_object ("ui-manager",
+ _("UI manager"),
+ _("UI manager of the surrounding window"),
+ GTK_TYPE_UI_MANAGER,
+ EXO_PARAM_READWRITE));
+}
+
+
+
+/**
+ * thunar_view_get_loading:
+ * @view : a #ThunarView instance.
+ *
+ * Tells whether the given #ThunarView is currently loading or
+ * layouting its contents.
+ *
+ * Return value: %TRUE if @view is currently being loaded, else %FALSE.
+ **/
+gboolean
+thunar_view_get_loading (ThunarView *view)
+{
+ g_return_val_if_fail (THUNAR_IS_VIEW (view), FALSE);
+ return (*THUNAR_VIEW_GET_IFACE (view)->get_loading) (view);
+}
+
+
+
+/**
+ * thunar_view_get_statusbar_text:
+ * @view : a #ThunarView instance.
+ *
+ * Queries the text that should be displayed in the status bar
+ * associated with @view.
+ *
+ * Return value: the text to be displayed in the status bar
+ * asssociated with @view.
+ **/
+const gchar*
+thunar_view_get_statusbar_text (ThunarView *view)
+{
+ g_return_val_if_fail (THUNAR_IS_VIEW (view), NULL);
+ return (*THUNAR_VIEW_GET_IFACE (view)->get_statusbar_text) (view);
+}
+
+
+
+/**
+ * thunar_view_get_show_hidden:
+ * @view : a #ThunarView instance.
+ *
+ * Returns %TRUE if hidden and backup files are shown
+ * in @view. Else %FALSE is returned.
+ *
+ * Return value: whether @view displays hidden files.
+ **/
+gboolean
+thunar_view_get_show_hidden (ThunarView *view)
+{
+ g_return_val_if_fail (THUNAR_IS_VIEW (view), FALSE);
+ return (*THUNAR_VIEW_GET_IFACE (view)->get_show_hidden) (view);
+}
+
+
+
+/**
+ * thunar_view_set_show_hidden:
+ * @view : a #ThunarView instance.
+ * @show_hidden : &TRUE to display hidden files, else %FALSE.
+ *
+ * If @show_hidden is %TRUE then @view will display hidden and
+ * backup files, else those files will be hidden from the user
+ * interface.
+ **/
+void
+thunar_view_set_show_hidden (ThunarView *view,
+ gboolean show_hidden)
+{
+ g_return_if_fail (THUNAR_IS_VIEW (view));
+ (*THUNAR_VIEW_GET_IFACE (view)->set_show_hidden) (view, show_hidden);
+}
+
+
+
+/**
+ * thunar_view_get_ui_manager:
+ * @view : a #ThunarView instance.
+ *
+ * Returns the #GtkUIManager associated with @view or
+ * %NULL if @view has no #GtkUIManager associated with
+ * it.
+ *
+ * Return value: the #GtkUIManager associated with @view
+ * or %NULL.
+ **/
+GtkUIManager*
+thunar_view_get_ui_manager (ThunarView *view)
+{
+ g_return_val_if_fail (THUNAR_IS_VIEW (view), NULL);
+ return (*THUNAR_VIEW_GET_IFACE (view)->get_ui_manager) (view);
+}
+
+
+
+/**
+ * thunar_view_set_ui_manager:
+ * @view : a #ThunarView instance.
+ * @ui_manager : a #GtkUIManager or %NULL.
+ *
+ * Installs a new #GtkUIManager for @view or resets the ::ui-manager
+ * property.
+ *
+ * Implementations of the #ThunarView interface must first disconnect
+ * from any previously set #GtkUIManager and then connect to the
+ * @ui_manager if not %NULL.
+ **/
+void
+thunar_view_set_ui_manager (ThunarView *view,
+ GtkUIManager *ui_manager)
+{
+ g_return_if_fail (THUNAR_IS_VIEW (view));
+ g_return_if_fail (ui_manager == NULL || GTK_IS_UI_MANAGER (ui_manager));
+ (*THUNAR_VIEW_GET_IFACE (view)->set_ui_manager) (view, ui_manager);
+}
+
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-view.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-view.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-view.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,67 @@
+/* $Id: thunar-view.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_VIEW_H__
+#define __THUNAR_VIEW_H__
+
+#include <thunar/thunar-navigator.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarViewIface ThunarViewIface;
+typedef struct _ThunarView ThunarView;
+
+#define THUNAR_TYPE_VIEW (thunar_view_get_type ())
+#define THUNAR_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_VIEW, ThunarView))
+#define THUNAR_IS_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_VIEW))
+#define THUNAR_VIEW_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), THUNAR_TYPE_VIEW, ThunarViewIface))
+
+struct _ThunarViewIface
+{
+ GTypeInterface __parent__;
+
+ /* virtual methods */
+ gboolean (*get_loading) (ThunarView *view);
+ const gchar *(*get_statusbar_text) (ThunarView *view);
+
+ gboolean (*get_show_hidden) (ThunarView *view);
+ void (*set_show_hidden) (ThunarView *view,
+ gboolean show_hidden);
+
+ GtkUIManager *(*get_ui_manager) (ThunarView *view);
+ void (*set_ui_manager) (ThunarView *view,
+ GtkUIManager *ui_manager);
+};
+
+GType thunar_view_get_type (void) G_GNUC_CONST;
+
+gboolean thunar_view_get_loading (ThunarView *view);
+const gchar *thunar_view_get_statusbar_text (ThunarView *view);
+
+gboolean thunar_view_get_show_hidden (ThunarView *view);
+void thunar_view_set_show_hidden (ThunarView *view,
+ gboolean show_hidden);
+
+GtkUIManager *thunar_view_get_ui_manager (ThunarView *view);
+void thunar_view_set_ui_manager (ThunarView *view,
+ GtkUIManager *ui_manager);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VIEW_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-window-ui.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-window-ui.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-window-ui.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,54 @@
+/* automatically generated from ./thunar-window-ui.xml */
+static const unsigned thunar_window_ui_length = 2629u;
+#ifdef __SUNPRO_C
+#pragma align 4 (thunar_window_ui)
+#endif
+#ifdef __GNUC__
+static const char thunar_window_ui[] __attribute__ ((__aligned__ (4))) =
+#else
+static const char thunar_window_ui[] =
+#endif
+{
+ "<ui>\n\n <!--\n $Id: thunar-window-ui.xml 18843 2005-11-14 14:25:58"
+ "Z benny $\n\n Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>\n\n"
+ " Thunar main window user interface description file. Do NOT\n sim"
+ "ply edit this file if you don\'t know how the whole system\n works, "
+ "because it\'s too easy to break something.\n -->\n\n <menubar name=\""
+ "main-menu\">\n <menu action=\"file-menu\" name=\"file-menu\">\n "
+ " <menuitem action=\"open-new-window\" name=\"open-new-window\" />\n "
+ " <placeholder name=\"placeholder-create-actions\" />\n <separator"
+ " />\n <placeholder name=\"placeholder-launcher-actions\" />\n "
+ " <separator />\n <placeholder name=\"placeholder-file-properties\""
+ " />\n <separator />\n <menuitem action=\"close-all-windows\" "
+ "name=\"close-all-windows\" />\n <menuitem action=\"close\" name=\""
+ "close\" />\n </menu>\n\n <menu action=\"edit-menu\" name=\"edit-m"
+ "enu\">\n <placeholder name=\"placeholder-edit-clipboard-actions\" "
+ "/>\n <separator />\n <placeholder name=\"placeholder-edit-sel"
+ "ect-actions\" />\n <separator />\n <placeholder name=\"placeh"
+ "older-edit-alter-actions\" />\n </menu>\n\n <menu action=\"view-m"
+ "enu\" name=\"view-menu\">\n <menu action=\"view-location-bar-menu\""
+ " name=\"view-location-bar-menu\">\n <menuitem action=\"view-loca"
+ "tion-bar-buttons\" name=\"view-location-bar-buttons\" />\n <menu"
+ "item action=\"view-location-bar-entry\" name=\"view-location-bar-entry\""
+ " />\n <menuitem action=\"view-location-bar-hidden\" name=\"view-"
+ "location-bar-hidden\" />\n </menu>\n <menu action=\"view-side"
+ "-pane-menu\" name=\"view-side-pane-menu\">\n <menuitem action=\""
+ "view-side-pane-favourites\" name=\"view-side-pane-favourites\" />\n "
+ " <menuitem action=\"view-side-pane-hidden\" name=\"view-side-pane-hi"
+ "dden\" />\n </menu>\n <separator />\n <menuitem action=\""
+ "show-hidden\" name=\"show-hidden\" />\n <separator />\n <plac"
+ "eholder name=\"placeholder-view-items-actions\" />\n <separator />"
+ "\n <menuitem action=\"view-as-icons\" name=\"view-as-icons\" />\n "
+ " <menuitem action=\"view-as-detailed-list\" name=\"view-as-detailed"
+ "-list\" />\n </menu>\n\n <menu action=\"go-menu\" name=\"go-menu\""
+ ">\n <menuitem action=\"open-parent\" name=\"open-parent\" />\n "
+ " <menuitem action=\"back\" name=\"back\" />\n <menuitem action=\""
+ "forward\" name=\"forward\" />\n <separator />\n <menuitem act"
+ "ion=\"open-home\" name=\"open-home\" />\n <menuitem action=\"open-"
+ "location\" name=\"open-location\" />\n </menu>\n\n <menu action=\""
+ "help-menu\" name=\"help-menu\">\n <menuitem action=\"about\" name="
+ "\"about\" />\n </menu>\n </menubar>\n\n</ui>\n\n<!-- vi: set ts=2 s"
+ "w=2 et ai nocindent syntax=xml: -->\n"
+};
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-window-ui.xml
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-window-ui.xml 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-window-ui.xml 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,69 @@
+<ui>
+
+ <!--
+ $Id: thunar-window-ui.xml 18843 2005-11-14 14:25:58Z benny $
+
+ Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+
+ Thunar main window user interface description file. Do NOT
+ simply edit this file if you don't know how the whole system
+ works, because it's too easy to break something.
+ -->
+
+ <menubar name="main-menu">
+ <menu action="file-menu" name="file-menu">
+ <menuitem action="open-new-window" name="open-new-window" />
+ <placeholder name="placeholder-create-actions" />
+ <separator />
+ <placeholder name="placeholder-launcher-actions" />
+ <separator />
+ <placeholder name="placeholder-file-properties" />
+ <separator />
+ <menuitem action="close-all-windows" name="close-all-windows" />
+ <menuitem action="close" name="close" />
+ </menu>
+
+ <menu action="edit-menu" name="edit-menu">
+ <placeholder name="placeholder-edit-clipboard-actions" />
+ <separator />
+ <placeholder name="placeholder-edit-select-actions" />
+ <separator />
+ <placeholder name="placeholder-edit-alter-actions" />
+ </menu>
+
+ <menu action="view-menu" name="view-menu">
+ <menu action="view-location-bar-menu" name="view-location-bar-menu">
+ <menuitem action="view-location-bar-buttons" name="view-location-bar-buttons" />
+ <menuitem action="view-location-bar-entry" name="view-location-bar-entry" />
+ <menuitem action="view-location-bar-hidden" name="view-location-bar-hidden" />
+ </menu>
+ <menu action="view-side-pane-menu" name="view-side-pane-menu">
+ <menuitem action="view-side-pane-favourites" name="view-side-pane-favourites" />
+ <menuitem action="view-side-pane-hidden" name="view-side-pane-hidden" />
+ </menu>
+ <separator />
+ <menuitem action="show-hidden" name="show-hidden" />
+ <separator />
+ <placeholder name="placeholder-view-items-actions" />
+ <separator />
+ <menuitem action="view-as-icons" name="view-as-icons" />
+ <menuitem action="view-as-detailed-list" name="view-as-detailed-list" />
+ </menu>
+
+ <menu action="go-menu" name="go-menu">
+ <menuitem action="open-parent" name="open-parent" />
+ <menuitem action="back" name="back" />
+ <menuitem action="forward" name="forward" />
+ <separator />
+ <menuitem action="open-home" name="open-home" />
+ <menuitem action="open-location" name="open-location" />
+ </menu>
+
+ <menu action="help-menu" name="help-menu">
+ <menuitem action="about" name="about" />
+ </menu>
+ </menubar>
+
+</ui>
+
+<!-- vi: set ts=2 sw=2 et ai nocindent syntax=xml: -->
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-window.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-window.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-window.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,1046 @@
+/* $Id: thunar-window.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <thunar/thunar-application.h>
+#include <thunar/thunar-clipboard-manager.h>
+#include <thunar/thunar-details-view.h>
+#include <thunar/thunar-dialogs.h>
+#include <thunar/thunar-favourites-pane.h>
+#include <thunar/thunar-gtk-extensions.h>
+#include <thunar/thunar-history.h>
+#include <thunar/thunar-icon-view.h>
+#include <thunar/thunar-location-buttons.h>
+#include <thunar/thunar-location-dialog.h>
+#include <thunar/thunar-location-entry.h>
+#include <thunar/thunar-preferences.h>
+#include <thunar/thunar-statusbar.h>
+#include <thunar/thunar-window.h>
+#include <thunar/thunar-window-ui.h>
+
+
+
+enum
+{
+ PROP_0,
+ PROP_CURRENT_DIRECTORY,
+ PROP_SHOW_HIDDEN,
+ PROP_UI_MANAGER,
+};
+
+
+
+static void thunar_window_class_init (ThunarWindowClass *klass);
+static void thunar_window_init (ThunarWindow *window);
+static void thunar_window_dispose (GObject *object);
+static void thunar_window_finalize (GObject *object);
+static void thunar_window_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void thunar_window_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void thunar_window_realize (GtkWidget *widget);
+static void thunar_window_unrealize (GtkWidget *widget);
+static void thunar_window_action_open_new_window (GtkAction *action,
+ ThunarWindow *window);
+static void thunar_window_action_close_all_windows (GtkAction *action,
+ ThunarWindow *window);
+static void thunar_window_action_close (GtkAction *action,
+ ThunarWindow *window);
+static void thunar_window_action_location_bar_changed (GtkRadioAction *action,
+ GtkRadioAction *current,
+ ThunarWindow *window);
+static void thunar_window_action_side_pane_changed (GtkRadioAction *action,
+ GtkRadioAction *current,
+ ThunarWindow *window);
+static void thunar_window_action_view_changed (GtkRadioAction *action,
+ GtkRadioAction *current,
+ ThunarWindow *window);
+static void thunar_window_action_go_up (GtkAction *action,
+ ThunarWindow *window);
+static void thunar_window_action_open_home (GtkAction *action,
+ ThunarWindow *window);
+static void thunar_window_action_open_location (GtkAction *action,
+ ThunarWindow *window);
+static void thunar_window_action_about (GtkAction *action,
+ ThunarWindow *window);
+static void thunar_window_action_show_hidden (GtkToggleAction *action,
+ ThunarWindow *window);
+static void thunar_window_current_directory_changed (ThunarFile *current_directory,
+ ThunarWindow *window);
+static void thunar_window_connect_proxy (GtkUIManager *manager,
+ GtkAction *action,
+ GtkWidget *proxy,
+ ThunarWindow *window);
+static void thunar_window_disconnect_proxy (GtkUIManager *manager,
+ GtkAction *action,
+ GtkWidget *proxy,
+ ThunarWindow *window);
+static void thunar_window_menu_item_selected (GtkWidget *menu_item,
+ ThunarWindow *window);
+static void thunar_window_menu_item_deselected (GtkWidget *menu_item,
+ ThunarWindow *window);
+static void thunar_window_notify_loading (ThunarView *view,
+ GParamSpec *pspec,
+ ThunarWindow *window);
+
+
+
+struct _ThunarWindowClass
+{
+ GtkWindowClass __parent__;
+};
+
+struct _ThunarWindow
+{
+ GtkWindow __parent__;
+
+ ThunarClipboardManager *clipboard;
+
+ ThunarPreferences *preferences;
+
+ ThunarIconFactory *icon_factory;
+
+ GtkActionGroup *action_group;
+ GtkUIManager *ui_manager;
+
+ /* closures for the menu_item_selected()/menu_item_deselected() callbacks */
+ GClosure *menu_item_selected_closure;
+ GClosure *menu_item_deselected_closure;
+ guint menu_item_tooltip_id;
+
+ GtkWidget *paned;
+ GtkWidget *location_bar;
+ GtkWidget *view_container;
+ GtkWidget *view;
+ GtkWidget *statusbar;
+
+ ThunarHistory *history;
+
+ ThunarFile *current_directory;
+};
+
+
+
+static const GtkActionEntry action_entries[] =
+{
+ { "file-menu", NULL, N_ ("_File"), NULL, },
+ { "open-new-window", NULL, N_ ("Open New _Window"), "<control>N", N_ ("Open a new Thunar window for the displayed location"), G_CALLBACK (thunar_window_action_open_new_window), },
+ { "close-all-windows", NULL, N_ ("Close _All Windows"), "<control><shift>W", N_ ("Close all Thunar windows"), G_CALLBACK (thunar_window_action_close_all_windows), },
+ { "close", GTK_STOCK_CLOSE, N_ ("_Close"), "<control>W", N_ ("Close this window"), G_CALLBACK (thunar_window_action_close), },
+ { "edit-menu", NULL, N_ ("_Edit"), NULL, },
+ { "view-menu", NULL, N_ ("_View"), NULL, },
+ { "view-location-bar-menu", NULL, N_ ("_Location Bar"), NULL, },
+ { "view-side-pane-menu", NULL, N_ ("_Side Pane"), NULL, },
+ { "go-menu", NULL, N_ ("_Go"), NULL, },
+ { "open-parent", GTK_STOCK_GO_UP, N_ ("Open _Parent"), "<alt>Up", N_ ("Open the parent folder"), G_CALLBACK (thunar_window_action_go_up), },
+ { "open-home", GTK_STOCK_HOME, N_ ("_Home"), "<alt>Home", N_ ("Open the home folder"), G_CALLBACK (thunar_window_action_open_home), },
+ { "open-location", NULL, N_ ("Open _Location..."), "<control>L", N_ ("Specify a location to open"), G_CALLBACK (thunar_window_action_open_location), },
+ { "help-menu", NULL, N_ ("_Help"), NULL, },
+#if GTK_CHECK_VERSION(2,6,0)
+ { "about", GTK_STOCK_ABOUT, N_ ("_About"), NULL, N_ ("Display information about Thunar"), G_CALLBACK (thunar_window_action_about), },
+#else
+ { "about", GTK_STOCK_DIALOG_INFO, N_ ("_About"), NULL, N_ ("Display information about Thunar"), G_CALLBACK (thunar_window_action_about), },
+#endif
+};
+
+static const GtkToggleActionEntry toggle_action_entries[] =
+{
+ { "show-hidden", NULL, N_("Show _Hidden Files"), "<control>H", N_("Toggles the display of hidden files in the current window"), G_CALLBACK (thunar_window_action_show_hidden), FALSE, },
+};
+
+
+
+G_DEFINE_TYPE (ThunarWindow, thunar_window, GTK_TYPE_WINDOW);
+
+
+
+static void
+thunar_window_class_init (ThunarWindowClass *klass)
+{
+ GtkWidgetClass *gtkwidget_class;
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->dispose = thunar_window_dispose;
+ gobject_class->finalize = thunar_window_finalize;
+ gobject_class->get_property = thunar_window_get_property;
+ gobject_class->set_property = thunar_window_set_property;
+
+ gtkwidget_class = GTK_WIDGET_CLASS (klass);
+ gtkwidget_class->realize = thunar_window_realize;
+ gtkwidget_class->unrealize = thunar_window_unrealize;
+
+ /**
+ * ThunarWindow:current-directory:
+ *
+ * The directory currently displayed within this #ThunarWindow
+ * or %NULL.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_CURRENT_DIRECTORY,
+ g_param_spec_object ("current-directory",
+ _("Current directory"),
+ _("The directory currently displayed within this window"),
+ THUNAR_TYPE_FILE,
+ EXO_PARAM_READWRITE));
+
+ /**
+ * ThunarWindow:show-hidden:
+ *
+ * Whether to show hidden files in the current window.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_SHOW_HIDDEN,
+ g_param_spec_boolean ("show-hidden",
+ _("Show hidden"),
+ _("Whether to display hidden files"),
+ FALSE,
+ EXO_PARAM_READABLE));
+
+ /**
+ * ThunarWindow:ui-manager:
+ *
+ * The #GtkUIManager used for this #ThunarWindow. This property
+ * can only be read and is garantied to always contain a valid
+ * #GtkUIManager instance (thus it's never %NULL).
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_UI_MANAGER,
+ g_param_spec_object ("ui-manager",
+ _("UI manager"),
+ _("The UI manager used within this window"),
+ GTK_TYPE_UI_MANAGER,
+ EXO_PARAM_READABLE));
+}
+
+
+
+static void
+thunar_window_init (ThunarWindow *window)
+{
+ GtkRadioAction *radio_action;
+ GtkAccelGroup *accel_group;
+ GtkAction *action;
+ GtkWidget *vbox;
+ GtkWidget *menubar;
+ GtkWidget *box;
+ gboolean show_hidden;
+ GSList *group;
+ gchar *type_name;
+ GType type;
+
+ /* grab a reference on the preferences */
+ window->preferences = thunar_preferences_get ();
+
+ /* allocate a closure for the menu_item_selected() callback */
+ window->menu_item_selected_closure = g_cclosure_new_object (G_CALLBACK (thunar_window_menu_item_selected), G_OBJECT (window));
+ g_closure_ref (window->menu_item_selected_closure);
+ g_closure_sink (window->menu_item_selected_closure);
+
+ /* allocate a closure for the menu_item_deselected() callback */
+ window->menu_item_deselected_closure = g_cclosure_new_object (G_CALLBACK (thunar_window_menu_item_deselected), G_OBJECT (window));
+ g_closure_ref (window->menu_item_deselected_closure);
+ g_closure_sink (window->menu_item_deselected_closure);
+
+ window->icon_factory = thunar_icon_factory_get_default ();
+
+ /* setup the action group for this window */
+ window->action_group = gtk_action_group_new ("thunar-window");
+ gtk_action_group_set_translation_domain (window->action_group, GETTEXT_PACKAGE);
+ gtk_action_group_add_actions (window->action_group, action_entries, G_N_ELEMENTS (action_entries), GTK_WIDGET (window));
+ gtk_action_group_add_toggle_actions (window->action_group, toggle_action_entries, G_N_ELEMENTS (toggle_action_entries), GTK_WIDGET (window));
+
+ /* initialize the "show-hidden" action using the default value from the preferences */
+ action = gtk_action_group_get_action (window->action_group, "show-hidden");
+ g_object_get (G_OBJECT (window->preferences), "default-show-hidden", &show_hidden, NULL);
+ gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), show_hidden);
+
+ /* setup the history support */
+ window->history = g_object_new (THUNAR_TYPE_HISTORY, "action-group", window->action_group, NULL);
+ g_signal_connect_swapped (G_OBJECT (window->history), "change-directory", G_CALLBACK (thunar_window_set_current_directory), window);
+ exo_binding_new (G_OBJECT (window), "current-directory", G_OBJECT (window->history), "current-directory");
+
+ /*
+ * add the side pane options
+ */
+ radio_action = gtk_radio_action_new ("view-side-pane-favourites", _("_Favourites"), NULL, NULL, THUNAR_TYPE_FAVOURITES_PANE);
+ gtk_action_group_add_action (window->action_group, GTK_ACTION (radio_action));
+ gtk_radio_action_set_group (radio_action, NULL);
+ group = gtk_radio_action_get_group (radio_action);
+ g_object_unref (G_OBJECT (radio_action));
+
+ radio_action = gtk_radio_action_new ("view-side-pane-hidden", _("_Hidden"), NULL, NULL, G_TYPE_NONE);
+ gtk_action_group_add_action (window->action_group, GTK_ACTION (radio_action));
+ gtk_radio_action_set_group (radio_action, group);
+ group = gtk_radio_action_get_group (radio_action);
+ g_object_unref (G_OBJECT (radio_action));
+
+ /*
+ * add the location bar options
+ */
+ radio_action = gtk_radio_action_new ("view-location-bar-buttons", _("_Button Style"), NULL, NULL, THUNAR_TYPE_LOCATION_BUTTONS);
+ gtk_action_group_add_action (window->action_group, GTK_ACTION (radio_action));
+ gtk_radio_action_set_group (radio_action, NULL);
+ group = gtk_radio_action_get_group (radio_action);
+ g_object_unref (G_OBJECT (radio_action));
+
+ radio_action = gtk_radio_action_new ("view-location-bar-entry", _("_Traditional Style"), NULL, NULL, THUNAR_TYPE_LOCATION_ENTRY);
+ gtk_action_group_add_action (window->action_group, GTK_ACTION (radio_action));
+ gtk_radio_action_set_group (radio_action, group);
+ group = gtk_radio_action_get_group (radio_action);
+ g_object_unref (G_OBJECT (radio_action));
+
+ radio_action = gtk_radio_action_new ("view-location-bar-hidden", _("_Hidden"), NULL, NULL, G_TYPE_NONE);
+ gtk_action_group_add_action (window->action_group, GTK_ACTION (radio_action));
+ gtk_radio_action_set_group (radio_action, group);
+ group = gtk_radio_action_get_group (radio_action);
+ g_object_unref (G_OBJECT (radio_action));
+
+ /*
+ * add view options
+ */
+ radio_action = gtk_radio_action_new ("view-as-icons", _("View as _Icons"), NULL, NULL, THUNAR_TYPE_ICON_VIEW);
+ gtk_action_group_add_action (window->action_group, GTK_ACTION (radio_action));
+ gtk_radio_action_set_group (radio_action, NULL);
+ group = gtk_radio_action_get_group (radio_action);
+ g_object_unref (G_OBJECT (radio_action));
+
+ radio_action = gtk_radio_action_new ("view-as-detailed-list", _("View as _Detailed List"), NULL, NULL, THUNAR_TYPE_DETAILS_VIEW);
+ gtk_action_group_add_action (window->action_group, GTK_ACTION (radio_action));
+ gtk_radio_action_set_group (radio_action, group);
+ group = gtk_radio_action_get_group (radio_action);
+ g_object_unref (G_OBJECT (radio_action));
+
+ window->ui_manager = gtk_ui_manager_new ();
+ g_signal_connect (G_OBJECT (window->ui_manager), "connect-proxy", G_CALLBACK (thunar_window_connect_proxy), window);
+ g_signal_connect (G_OBJECT (window->ui_manager), "disconnect-proxy", G_CALLBACK (thunar_window_disconnect_proxy), window);
+ gtk_ui_manager_insert_action_group (window->ui_manager, window->action_group, 0);
+ gtk_ui_manager_add_ui_from_string (window->ui_manager, thunar_window_ui, thunar_window_ui_length, NULL);
+
+ accel_group = gtk_ui_manager_get_accel_group (window->ui_manager);
+ gtk_window_add_accel_group (GTK_WINDOW (window), accel_group);
+
+ gtk_window_set_default_size (GTK_WINDOW (window), 640, 480);
+ gtk_window_set_title (GTK_WINDOW (window), _("Thunar"));
+
+ vbox = gtk_vbox_new (FALSE, 0);
+ gtk_container_add (GTK_CONTAINER (window), vbox);
+ gtk_widget_show (vbox);
+
+ menubar = gtk_ui_manager_get_widget (window->ui_manager, "/main-menu");
+ gtk_box_pack_start (GTK_BOX (vbox), menubar, FALSE, FALSE, 0);
+ gtk_widget_show (menubar);
+
+ window->paned = g_object_new (GTK_TYPE_HPANED, "border-width", 6, NULL);
+ gtk_box_pack_start (GTK_BOX (vbox), window->paned, TRUE, TRUE, 0);
+ gtk_widget_show (window->paned);
+
+ box = gtk_vbox_new (FALSE, 6);
+ gtk_paned_pack2 (GTK_PANED (window->paned), box, TRUE, FALSE);
+ gtk_widget_show (box);
+
+ window->location_bar = gtk_alignment_new (0.0f, 0.5f, 1.0f, 1.0f);
+ gtk_box_pack_start (GTK_BOX (box), window->location_bar, FALSE, FALSE, 0);
+ gtk_widget_show (window->location_bar);
+
+ window->view_container = gtk_alignment_new (0.5f, 0.5f, 1.0f, 1.0f);
+ gtk_box_pack_start (GTK_BOX (box), window->view_container, TRUE, TRUE, 0);
+ gtk_widget_show (window->view_container);
+
+ window->statusbar = thunar_statusbar_new ();
+ g_signal_connect_swapped (G_OBJECT (window->statusbar), "change-directory",
+ G_CALLBACK (thunar_window_set_current_directory), window);
+ exo_binding_new (G_OBJECT (window), "current-directory", G_OBJECT (window->statusbar), "current-directory");
+ gtk_box_pack_start (GTK_BOX (vbox), window->statusbar, FALSE, FALSE, 0);
+ gtk_widget_show (window->statusbar);
+
+ /* allocate a statusbar context for displaying tooltips of the selected menu item */
+ window->menu_item_tooltip_id = gtk_statusbar_get_context_id (GTK_STATUSBAR (window->statusbar), "menu-item-tooltip");
+
+ /* determine the selected side pane */
+ g_object_get (G_OBJECT (window->preferences), "last-side-pane", &type_name, NULL);
+ type = g_type_from_name (type_name);
+ g_free (type_name);
+
+ /* activate the selected side pane */
+ action = gtk_action_group_get_action (window->action_group, "view-side-pane-favourites");
+ exo_gtk_radio_action_set_current_value (GTK_RADIO_ACTION (action), g_type_is_a (type, THUNAR_TYPE_SIDE_PANE) ? type : G_TYPE_NONE);
+ g_signal_connect (G_OBJECT (action), "changed", G_CALLBACK (thunar_window_action_side_pane_changed), window);
+ thunar_window_action_side_pane_changed (GTK_RADIO_ACTION (action), GTK_RADIO_ACTION (action), window);
+
+ /* determine the selected location bar */
+ g_object_get (G_OBJECT (window->preferences), "last-location-bar", &type_name, NULL);
+ type = g_type_from_name (type_name);
+ g_free (type_name);
+
+ /* activate the selected location bar */
+ action = gtk_action_group_get_action (window->action_group, "view-location-bar-buttons");
+ exo_gtk_radio_action_set_current_value (GTK_RADIO_ACTION (action), g_type_is_a (type, THUNAR_TYPE_LOCATION_BAR) ? type : G_TYPE_NONE);
+ g_signal_connect (G_OBJECT (action), "changed", G_CALLBACK (thunar_window_action_location_bar_changed), window);
+ thunar_window_action_location_bar_changed (GTK_RADIO_ACTION (action), GTK_RADIO_ACTION (action), window);
+
+ /* determine the selected view */
+ g_object_get (G_OBJECT (window->preferences), "last-view", &type_name, NULL);
+ type = g_type_from_name (type_name);
+ g_free (type_name);
+
+ /* activate the selected view */
+ action = gtk_action_group_get_action (window->action_group, "view-as-icons");
+ exo_gtk_radio_action_set_current_value (GTK_RADIO_ACTION (action), g_type_is_a (type, THUNAR_TYPE_VIEW) ? type : THUNAR_TYPE_ICON_VIEW);
+ g_signal_connect (G_OBJECT (action), "changed", G_CALLBACK (thunar_window_action_view_changed), window);
+ thunar_window_action_view_changed (GTK_RADIO_ACTION (action), GTK_RADIO_ACTION (action), window);
+}
+
+
+
+static void
+thunar_window_dispose (GObject *object)
+{
+ ThunarWindow *window = THUNAR_WINDOW (object);
+
+ /* disconnect from the current-directory */
+ thunar_window_set_current_directory (window, NULL);
+
+ (*G_OBJECT_CLASS (thunar_window_parent_class)->dispose) (object);
+}
+
+
+
+static void
+thunar_window_finalize (GObject *object)
+{
+ ThunarWindow *window = THUNAR_WINDOW (object);
+
+ /* drop our references on the menu_item_selected()/menu_item_deselected() closures */
+ g_closure_unref (window->menu_item_deselected_closure);
+ g_closure_unref (window->menu_item_selected_closure);
+
+ /* disconnect from the ui manager */
+ g_signal_handlers_disconnect_matched (G_OBJECT (window->ui_manager), G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, window);
+ g_object_unref (G_OBJECT (window->ui_manager));
+
+ g_object_unref (G_OBJECT (window->action_group));
+ g_object_unref (G_OBJECT (window->icon_factory));
+ g_object_unref (G_OBJECT (window->history));
+
+ /* release the preferences reference */
+ g_object_unref (G_OBJECT (window->preferences));
+
+ (*G_OBJECT_CLASS (thunar_window_parent_class)->finalize) (object);
+}
+
+
+
+static void
+thunar_window_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarWindow *window = THUNAR_WINDOW (object);
+ GtkAction *action;
+
+ switch (prop_id)
+ {
+ case PROP_CURRENT_DIRECTORY:
+ g_value_set_object (value, thunar_window_get_current_directory (window));
+ break;
+
+ case PROP_SHOW_HIDDEN:
+ action = gtk_action_group_get_action (window->action_group, "show-hidden");
+ g_value_set_boolean (value, gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)));
+ break;
+
+ case PROP_UI_MANAGER:
+ g_value_set_object (value, window->ui_manager);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunar_window_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarWindow *window = THUNAR_WINDOW (object);
+
+ switch (prop_id)
+ {
+ case PROP_CURRENT_DIRECTORY:
+ thunar_window_set_current_directory (window, g_value_get_object (value));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunar_window_realize (GtkWidget *widget)
+{
+ ThunarWindow *window = THUNAR_WINDOW (widget);
+
+ /* let the GtkWidget class perform the realize operation */
+ (*GTK_WIDGET_CLASS (thunar_window_parent_class)->realize) (widget);
+
+ /* connect to the clipboard manager of the new display and be sure to redraw the window
+ * whenever the clipboard contents change to make sure we always display up2date state.
+ */
+ window->clipboard = thunar_clipboard_manager_get_for_display (gtk_widget_get_display (widget));
+ g_signal_connect_swapped (G_OBJECT (window->clipboard), "changed",
+ G_CALLBACK (gtk_widget_queue_draw), widget);
+}
+
+
+
+static void
+thunar_window_unrealize (GtkWidget *widget)
+{
+ ThunarWindow *window = THUNAR_WINDOW (widget);
+
+ /* disconnect from the clipboard manager */
+ g_signal_handlers_disconnect_by_func (G_OBJECT (window->clipboard), gtk_widget_queue_draw, widget);
+ g_object_unref (G_OBJECT (window->clipboard));
+
+ /* let the GtkWidget class unrealize the window */
+ (*GTK_WIDGET_CLASS (thunar_window_parent_class)->unrealize) (widget);
+}
+
+
+
+static void
+thunar_window_action_open_new_window (GtkAction *action,
+ ThunarWindow *window)
+{
+ ThunarApplication *application;
+
+ application = thunar_application_get ();
+ thunar_application_open_window (application, window->current_directory,
+ gtk_widget_get_screen (GTK_WIDGET (window)));
+ g_object_unref (G_OBJECT (application));
+}
+
+
+
+static void
+thunar_window_action_close_all_windows (GtkAction *action,
+ ThunarWindow *window)
+{
+ ThunarApplication *application;
+ GList *windows;
+
+ /* query the list of currently open windows */
+ application = thunar_application_get ();
+ windows = thunar_application_get_windows (application);
+ g_object_unref (G_OBJECT (application));
+
+ /* destroy all open windows */
+ g_list_foreach (windows, (GFunc) gtk_widget_destroy, NULL);
+ g_list_free (windows);
+}
+
+
+
+static void
+thunar_window_action_close (GtkAction *action,
+ ThunarWindow *window)
+{
+ gtk_widget_destroy (GTK_WIDGET (window));
+}
+
+
+
+static void
+thunar_window_action_location_bar_changed (GtkRadioAction *action,
+ GtkRadioAction *current,
+ ThunarWindow *window)
+{
+ GtkWidget *widget;
+ GType type;
+
+ /* drop the previous location bar (if any) */
+ widget = gtk_bin_get_child (GTK_BIN (window->location_bar));
+ if (G_LIKELY (widget != NULL))
+ gtk_widget_destroy (widget);
+
+ /* determine the new type of location bar */
+ type = gtk_radio_action_get_current_value (action);
+
+ /* activate the new location bar */
+ if (G_LIKELY (type != G_TYPE_NONE))
+ {
+ /* initialize the new location bar widget */
+ widget = g_object_new (type, NULL);
+ g_signal_connect_swapped (G_OBJECT (widget), "change-directory",
+ G_CALLBACK (thunar_window_set_current_directory), window);
+ exo_binding_new (G_OBJECT (window), "current-directory",
+ G_OBJECT (widget), "current-directory");
+ gtk_container_add (GTK_CONTAINER (window->location_bar), widget);
+ gtk_widget_show (widget);
+
+ /* display the location bar container */
+ gtk_widget_show (window->location_bar);
+ }
+ else
+ {
+ /* hide the location bar container */
+ gtk_widget_hide (window->location_bar);
+ }
+
+ /* remember the setting */
+ g_object_set (G_OBJECT (window->preferences), "last-location-bar", g_type_name (type), NULL);
+}
+
+
+
+static void
+thunar_window_action_side_pane_changed (GtkRadioAction *action,
+ GtkRadioAction *current,
+ ThunarWindow *window)
+{
+ GtkWidget *widget;
+ GType type;
+
+ /* drop the previous side pane (if any) */
+ widget = gtk_paned_get_child1 (GTK_PANED (window->paned));
+ if (G_LIKELY (widget != NULL))
+ gtk_widget_destroy (widget);
+
+ /* determine the new type of side pane */
+ type = gtk_radio_action_get_current_value (action);
+ if (G_LIKELY (type != G_TYPE_NONE))
+ {
+ widget = g_object_new (type, NULL);
+ exo_binding_new (G_OBJECT (window), "current-directory", G_OBJECT (widget), "current-directory");
+ g_signal_connect_swapped (G_OBJECT (widget), "change-directory", G_CALLBACK (thunar_window_set_current_directory), window);
+ gtk_paned_pack1 (GTK_PANED (window->paned), widget, FALSE, FALSE);
+ gtk_widget_show (widget);
+ }
+
+ /* remember the setting */
+ g_object_set (G_OBJECT (window->preferences), "last-side-pane", g_type_name (type), NULL);
+}
+
+
+
+static void
+thunar_window_action_view_changed (GtkRadioAction *action,
+ GtkRadioAction *current,
+ ThunarWindow *window)
+{
+ GType type;
+
+ /* drop the previous view (if any) */
+ if (G_LIKELY (window->view != NULL))
+ {
+ /* destroy and disconnect the previous view */
+ gtk_widget_destroy (window->view);
+
+ /* update the UI (else GtkUIManager will crash on merging) */
+ gtk_ui_manager_ensure_update (window->ui_manager);
+ }
+
+ /* determine the new type of view */
+ type = gtk_radio_action_get_current_value (action);
+
+ /* allocate a new view of the requested type */
+ if (G_LIKELY (type != G_TYPE_NONE))
+ {
+ window->view = g_object_new (type, "ui-manager", window->ui_manager, NULL);
+ g_signal_connect (G_OBJECT (window->view), "notify::loading", G_CALLBACK (thunar_window_notify_loading), window);
+ g_signal_connect_swapped (G_OBJECT (window->view), "change-directory", G_CALLBACK (thunar_window_set_current_directory), window);
+ exo_binding_new (G_OBJECT (window), "current-directory", G_OBJECT (window->view), "current-directory");
+ exo_binding_new (G_OBJECT (window), "show-hidden", G_OBJECT (window->view), "show-hidden");
+ exo_binding_new (G_OBJECT (window->view), "loading", G_OBJECT (window->statusbar), "loading");
+ exo_binding_new (G_OBJECT (window->view), "statusbar-text", G_OBJECT (window->statusbar), "text");
+ gtk_container_add (GTK_CONTAINER (window->view_container), window->view);
+ gtk_widget_grab_focus (window->view);
+ gtk_widget_show (window->view);
+ }
+ else
+ {
+ /* this should not happen under normal conditions */
+ window->view = NULL;
+ }
+
+ /* remember the setting */
+ g_object_set (G_OBJECT (window->preferences), "last-view", g_type_name (type), NULL);
+}
+
+
+
+static void
+thunar_window_action_go_up (GtkAction *action,
+ ThunarWindow *window)
+{
+ ThunarFile *parent;
+
+ // FIXME: error handling
+ parent = thunar_file_get_parent (window->current_directory, NULL);
+ thunar_window_set_current_directory (window, parent);
+ g_object_unref (G_OBJECT (parent));
+}
+
+
+
+static void
+thunar_window_action_open_home (GtkAction *action,
+ ThunarWindow *window)
+{
+ ThunarVfsPath *home_path;
+ ThunarFile *home_file;
+ GError *error = NULL;
+
+ g_return_if_fail (GTK_IS_ACTION (action));
+ g_return_if_fail (THUNAR_IS_WINDOW (window));
+
+ /* determine the path to the home directory */
+ home_path = thunar_vfs_path_get_for_home ();
+
+ /* determine the file for the home directory */
+ home_file = thunar_file_get_for_path (home_path, &error);
+ if (G_UNLIKELY (home_file == NULL))
+ {
+ /* display an error to the user */
+ thunar_dialogs_show_error (GTK_WIDGET (window), error, _("Failed to open home directory"));
+ g_error_free (error);
+ }
+ else
+ {
+ /* open the home folder */
+ thunar_window_set_current_directory (window, home_file);
+ g_object_unref (G_OBJECT (home_file));
+ }
+
+ /* release our reference on the home path */
+ thunar_vfs_path_unref (home_path);
+}
+
+
+
+static void
+thunar_window_action_open_location (GtkAction *action,
+ ThunarWindow *window)
+{
+ GtkWidget *dialog;
+ GtkWidget *widget;
+
+ /* bring up the "Open Location"-dialog if the window has no location bar or the location bar
+ * in the window does not support text entry by the user.
+ */
+ widget = gtk_bin_get_child (GTK_BIN (window->location_bar));
+ if (widget == NULL || !thunar_location_bar_accept_focus (THUNAR_LOCATION_BAR (widget)))
+ {
+ dialog = thunar_location_dialog_new ();
+ gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
+ gtk_window_set_destroy_with_parent (GTK_WINDOW (dialog), TRUE);
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (window));
+ thunar_location_dialog_set_selected_file (THUNAR_LOCATION_DIALOG (dialog), thunar_window_get_current_directory (window));
+ if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
+ thunar_window_set_current_directory (window, thunar_location_dialog_get_selected_file (THUNAR_LOCATION_DIALOG (dialog)));
+ gtk_widget_destroy (dialog);
+ }
+}
+
+
+
+static void
+thunar_window_action_about (GtkAction *action,
+ ThunarWindow *window)
+{
+ static const gchar *authors[] =
+ {
+ "Benedikt Meurer <benny at xfce.org>",
+ NULL,
+ };
+
+ static const gchar license[] =
+ "This program is free software; you can redistribute it and/or modify it\n"
+ "under the terms of the GNU General Public License as published by the Free\n"
+ "Software Foundation; either version 2 of the License, or (at your option)\n"
+ "any later version.\n"
+ "\n"
+ "This program is distributed in the hope that it will be useful, but WITHOUT\n"
+ "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\n"
+ "FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for\n"
+ "more details.\n"
+ "\n"
+ "You should have received a copy of the GNU General Public License along with\n"
+ "this program; if not, write to the Free Software Foundation, Inc., 59 Temple\n"
+ "Place, Suite 330, Boston, MA 02111-1307 USA.\n";
+
+ GdkPixbuf *logo;
+
+ /* try to load the about logo */
+ logo = gdk_pixbuf_new_from_file (DATADIR "/pixmaps/Thunar/Thunar-about-logo.png", NULL);
+
+ /* open the about dialog */
+ gtk_about_dialog_set_email_hook ((gpointer) exo_noop, NULL, NULL);
+ gtk_about_dialog_set_url_hook ((gpointer) exo_noop, NULL, NULL);
+ gtk_show_about_dialog (GTK_WINDOW (window),
+ "authors", authors,
+ "comments", _("Thunar is a fast and easy to use file manager\nfor the Xfce Desktop Environment."),
+ "copyright", "Copyright \302\251 2004-2005 Benedikt Meurer",
+ "license", license,
+ "logo", logo,
+ "name", PACKAGE_NAME,
+ "translator-credits", _("translator-credits"),
+ "version", PACKAGE_VERSION,
+ "website", "http://thunar.xfce.org/",
+ NULL);
+
+ /* release the about logo (if any) */
+ if (G_LIKELY (logo != NULL))
+ g_object_unref (G_OBJECT (logo));
+}
+
+
+
+static void
+thunar_window_action_show_hidden (GtkToggleAction *action,
+ ThunarWindow *window)
+{
+ g_return_if_fail (GTK_IS_TOGGLE_ACTION (action));
+ g_return_if_fail (THUNAR_IS_WINDOW (window));
+
+ /* just emit the "notify" signal for the "show-hidden"
+ * signal and the view will automatically sync its state.
+ */
+ g_object_notify (G_OBJECT (window), "show-hidden");
+}
+
+
+
+static void
+thunar_window_current_directory_changed (ThunarFile *current_directory,
+ ThunarWindow *window)
+{
+ GdkPixbuf *icon;
+
+ g_return_if_fail (THUNAR_IS_WINDOW (window));
+ g_return_if_fail (THUNAR_IS_FILE (current_directory));
+ g_return_if_fail (window->current_directory == current_directory);
+
+ /* set window title and icon */
+ icon = thunar_icon_factory_load_file_icon (window->icon_factory, current_directory, THUNAR_FILE_ICON_STATE_DEFAULT, 48);
+ gtk_window_set_title (GTK_WINDOW (window), thunar_file_get_special_name (current_directory));
+ gtk_window_set_icon (GTK_WINDOW (window), icon);
+ g_object_unref (G_OBJECT (icon));
+}
+
+
+
+static void
+thunar_window_connect_proxy (GtkUIManager *manager,
+ GtkAction *action,
+ GtkWidget *proxy,
+ ThunarWindow *window)
+{
+ /* we want to get informed when the user hovers a menu item */
+ if (GTK_IS_MENU_ITEM (proxy))
+ {
+ g_signal_connect_closure (G_OBJECT (proxy), "select", window->menu_item_selected_closure, FALSE);
+ g_signal_connect_closure (G_OBJECT (proxy), "deselect", window->menu_item_deselected_closure, FALSE);
+ }
+}
+
+
+
+static void
+thunar_window_disconnect_proxy (GtkUIManager *manager,
+ GtkAction *action,
+ GtkWidget *proxy,
+ ThunarWindow *window)
+{
+ /* undo what we did in connect_proxy() */
+ if (GTK_IS_MENU_ITEM (proxy))
+ {
+ g_signal_handlers_disconnect_matched (G_OBJECT (proxy), G_SIGNAL_MATCH_CLOSURE, 0, 0, window->menu_item_selected_closure, NULL, NULL);
+ g_signal_handlers_disconnect_matched (G_OBJECT (proxy), G_SIGNAL_MATCH_CLOSURE, 0, 0, window->menu_item_deselected_closure, NULL, NULL);
+ }
+}
+
+
+
+static void
+thunar_window_menu_item_selected (GtkWidget *menu_item,
+ ThunarWindow *window)
+{
+ GtkAction *action;
+ gchar *tooltip;
+
+ /* determine the action for the menu item */
+ action = g_object_get_data (G_OBJECT (menu_item), "gtk-action");
+ if (G_UNLIKELY (action == NULL))
+ return;
+
+ /* determine the tooltip from the action */
+ g_object_get (G_OBJECT (action), "tooltip", &tooltip, NULL);
+ if (G_LIKELY (tooltip != NULL))
+ {
+ gtk_statusbar_push (GTK_STATUSBAR (window->statusbar), window->menu_item_tooltip_id, tooltip);
+ g_free (tooltip);
+ }
+}
+
+
+
+static void
+thunar_window_menu_item_deselected (GtkWidget *menu_item,
+ ThunarWindow *window)
+{
+ /* drop the last tooltip from the statusbar */
+ gtk_statusbar_pop (GTK_STATUSBAR (window->statusbar), window->menu_item_tooltip_id);
+}
+
+
+
+static void
+thunar_window_notify_loading (ThunarView *view,
+ GParamSpec *pspec,
+ ThunarWindow *window)
+{
+ GdkCursor *cursor;
+
+ g_return_if_fail (THUNAR_IS_VIEW (view));
+ g_return_if_fail (THUNAR_IS_WINDOW (window));
+ g_return_if_fail (THUNAR_VIEW (window->view) == view);
+
+ if (GTK_WIDGET_REALIZED (window))
+ {
+ /* setup the proper cursor */
+ if (thunar_view_get_loading (view))
+ {
+ cursor = gdk_cursor_new (GDK_WATCH);
+ gdk_window_set_cursor (GTK_WIDGET (window)->window, cursor);
+ gdk_cursor_unref (cursor);
+ }
+ else
+ {
+ gdk_window_set_cursor (GTK_WIDGET (window)->window, NULL);
+ }
+ }
+}
+
+
+
+/**
+ * thunar_window_new:
+ *
+ * Allocates a new #ThunarWindow instance, which isn't
+ * associated with any directory.
+ *
+ * Return value: the newly allocated #ThunarWindow instance.
+ **/
+GtkWidget*
+thunar_window_new (void)
+{
+ return g_object_new (THUNAR_TYPE_WINDOW, NULL);
+}
+
+
+
+/**
+ * thunar_window_get_current_directory:
+ * @window : a #ThunarWindow instance.
+ *
+ * Queries the #ThunarFile instance, which represents the directory
+ * currently displayed within @window. %NULL is returned if @window
+ * is not currently associated with any directory.
+ *
+ * Return value: the directory currently displayed within @window or %NULL.
+ **/
+ThunarFile*
+thunar_window_get_current_directory (ThunarWindow *window)
+{
+ g_return_val_if_fail (THUNAR_IS_WINDOW (window), NULL);
+ return window->current_directory;
+}
+
+
+
+/**
+ * thunar_window_set_current_directory:
+ * @window : a #ThunarWindow instance.
+ * @current_directory : the new directory or %NULL.
+ **/
+void
+thunar_window_set_current_directory (ThunarWindow *window,
+ ThunarFile *current_directory)
+{
+ g_return_if_fail (THUNAR_IS_WINDOW (window));
+ g_return_if_fail (current_directory == NULL || THUNAR_IS_FILE (current_directory));
+
+ /* check if we already display the requested directory */
+ if (G_UNLIKELY (window->current_directory == current_directory))
+ return;
+
+ /* disconnect from the previously active directory */
+ if (G_LIKELY (window->current_directory != NULL))
+ {
+ g_signal_handlers_disconnect_by_func (G_OBJECT (window->current_directory), thunar_window_current_directory_changed, window);
+ g_object_unref (G_OBJECT (window->current_directory));
+ }
+
+ window->current_directory = current_directory;
+
+ /* connect to the new directory */
+ if (G_LIKELY (current_directory != NULL))
+ {
+ /* take a reference on the file and connect the "changed" signal */
+ g_signal_connect (G_OBJECT (current_directory), "changed", G_CALLBACK (thunar_window_current_directory_changed), window);
+ g_object_ref (G_OBJECT (current_directory));
+
+ /* update window icon and title */
+ thunar_window_current_directory_changed (current_directory, window);
+ }
+
+ /* enable the 'Open new window' action if we have a valid directory */
+ thunar_gtk_action_group_set_action_sensitive (window->action_group, "open-new-window", (current_directory != NULL));
+
+ /* enable the 'Up' action if possible for the new directory */
+ thunar_gtk_action_group_set_action_sensitive (window->action_group, "open-parent", (current_directory != NULL
+ && thunar_file_has_parent (current_directory)));
+
+ /* tell everybody that we have a new "current-directory",
+ * we do this first so other widgets display the new
+ * state already while the folder view is loading.
+ */
+ g_object_notify (G_OBJECT (window), "current-directory");
+}
+
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar/thunar-window.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar/thunar-window.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar/thunar-window.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,47 @@
+/* $Id: thunar-window.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __THUNAR_WINDOW_H__
+#define __THUNAR_WINDOW_H__
+
+#include <thunar/thunar-folder.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarWindowClass ThunarWindowClass;
+typedef struct _ThunarWindow ThunarWindow;
+
+#define THUNAR_TYPE_WINDOW (thunar_window_get_type ())
+#define THUNAR_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_TYPE_WINDOW, ThunarWindow))
+#define THUNAR_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_TYPE_WINDOW, ThunarWindowClass))
+#define THUNAR_IS_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_TYPE_WINDOW))
+#define THUNAR_IS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_TYPE_WINDOW))
+#define THUNAR_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_TYPE_WINDOW, ThunarWindowClass))
+
+GType thunar_window_get_type (void) G_GNUC_CONST;
+
+GtkWidget *thunar_window_new (void);
+
+ThunarFile *thunar_window_get_current_directory (ThunarWindow *window);
+void thunar_window_set_current_directory (ThunarWindow *window,
+ ThunarFile *current_directory);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_WINDOW_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/Makefile.am
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/Makefile.am 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/Makefile.am 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,216 @@
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+
+INCLUDES = \
+ -I$(top_srcdir) \
+ -DEXO_API_SUBJECT_TO_CHANGE \
+ -DEXO_DISABLE_DEPRECATED \
+ -DG_LOG_DOMAIN=\"thunar-vfs\" \
+ -DSN_API_NOT_YET_FROZEN \
+ -DTHUNAR_VFS_COMPILATION \
+ $(PLATFORM_CPPFLAGS)
+
+lib_LTLIBRARIES = \
+ libthunar-vfs-1.la
+
+libthunar_vfs_headers = \
+ thunar-vfs-config.h \
+ thunar-vfs-info.h \
+ thunar-vfs-interactive-job.h \
+ thunar-vfs-job.h \
+ thunar-vfs-mime-application.h \
+ thunar-vfs-mime-database.h \
+ thunar-vfs-mime-info.h \
+ thunar-vfs-monitor.h \
+ thunar-vfs-path.h \
+ thunar-vfs-thumb.h \
+ thunar-vfs-types.h \
+ thunar-vfs-user.h \
+ thunar-vfs-util.h \
+ thunar-vfs-volume.h
+
+libthunar_vfs_public_built_sources = \
+ thunar-vfs-enum-types.h
+
+libthunar_vfs_built_sources = \
+ $(libthunar_vfs_public_built_sources) \
+ thunar-vfs-alias.h \
+ thunar-vfs-aliasdef.c \
+ thunar-vfs-enum-types.c \
+ thunar-vfs-marshal.c \
+ thunar-vfs-marshal.h
+
+libthunar_vfs_includedir = \
+ $(includedir)/thunar-vfs-$(THUNAR_VERSION_API)/thunar-vfs
+libthunar_vfs_include_HEADERS = \
+ $(libthunar_vfs_headers) \
+ $(libthunar_vfs_public_built_sources) \
+ thunar-vfs.h
+
+libthunar_vfs_1_la_SOURCES = \
+ $(libthunar_vfs_built_sources) \
+ $(libthunar_vfs_headers) \
+ thunar-vfs-config.c \
+ thunar-vfs-exec.c \
+ thunar-vfs-exec.h \
+ thunar-vfs-info.c \
+ thunar-vfs-interactive-job.c \
+ thunar-vfs-job.c \
+ thunar-vfs-link-job.c \
+ thunar-vfs-link-job.h \
+ thunar-vfs-listdir-job.c \
+ thunar-vfs-listdir-job.h \
+ thunar-vfs-mime-application.c \
+ thunar-vfs-mime-cache.c \
+ thunar-vfs-mime-cache.h \
+ thunar-vfs-mime-database.c \
+ thunar-vfs-mime-info.c \
+ thunar-vfs-mime-legacy.c \
+ thunar-vfs-mime-legacy.h \
+ thunar-vfs-mime-parser.h \
+ thunar-vfs-mime-parser.c \
+ thunar-vfs-mime-provider.c \
+ thunar-vfs-mime-provider.h \
+ thunar-vfs-mime-sniffer.c \
+ thunar-vfs-mime-sniffer.h \
+ thunar-vfs-mkdir-job.c \
+ thunar-vfs-mkdir-job.h \
+ thunar-vfs-monitor.c \
+ thunar-vfs-path.c \
+ thunar-vfs-scandir.c \
+ thunar-vfs-scandir.h \
+ thunar-vfs-thumb-jpeg.c \
+ thunar-vfs-thumb-jpeg.h \
+ thunar-vfs-thumb.c \
+ thunar-vfs-transfer-job.c \
+ thunar-vfs-transfer-job.h \
+ thunar-vfs-unlink-job.c \
+ thunar-vfs-unlink-job.h \
+ thunar-vfs-user.c \
+ thunar-vfs-util.c \
+ thunar-vfs-volume.c \
+ thunar-vfs-volume-impl.c \
+ thunar-vfs-volume-impl.h \
+ thunar-vfs-xfer.c \
+ thunar-vfs-xfer.h \
+ thunar-vfs.c
+
+libthunar_vfs_1_la_CFLAGS = \
+ $(EXO_CFLAGS) \
+ $(GCONF_CFLAGS) \
+ $(GTHREAD_CFLAGS) \
+ $(LIBFAM_CFLAGS) \
+ $(LIBJPEG_CFLAGS) \
+ $(LIBPNG_CFLAGS) \
+ $(LIBSTARTUP_NOTIFICATION_CFLAGS) \
+ $(PLATFORM_CFLAGS)
+
+libthunar_vfs_1_la_LDFLAGS = \
+ -export-dynamic \
+ -export-symbols-regex "^[^_].*" \
+ -version-info $(THUNAR_VERINFO) \
+ $(PLATFORM_LDFLAGS)
+
+libthunar_vfs_1_la_LIBADD = \
+ $(EXO_LIBS) \
+ $(GCONF_LIBS) \
+ $(GTHREAD_LIBS) \
+ $(LIBFAM_LIBS) \
+ $(LIBJPEG_LIBS) \
+ $(LIBPNG_LIBS) \
+ $(LIBSTARTUP_NOTIFICATION_LIBS)
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = thunar-vfs-1.pc
+
+EXTRA_DIST = \
+ abicheck.sh \
+ make-thunar-vfs-alias.pl \
+ thunar-vfs.symbols \
+ thunar-vfs-alias.h \
+ thunar-vfs-aliasdef.c \
+ thunar-vfs-marshal.list \
+ thunar-vfs-volume-bsd.c \
+ thunar-vfs-volume-bsd.h \
+ thunar-vfs-volume-sysv.c \
+ thunar-vfs-volume-sysv.h
+
+##
+## Rules to auto-generate built sources
+##
+## This is a bit tricky with automake, and non-trivial to implement. The
+## rules below seem to work fine and don't seem to break the build, but
+## they are only enabled in maintainer mode, so arbitrary users don't get
+## trapped in automake's oddities. Therefore we ship the autogenerated
+## files as part of the dist tarball.
+##
+if MAINTAINER_MODE
+CLEANFILES = \
+ actual-abi \
+ expected-abi \
+ xgen-tvetc \
+ xgen-tveth \
+ xgen-tvmc \
+ xgen-tvmh
+
+DISTCLEANFILES = \
+ stamp-thunar-vfs-enum-types.h \
+ stamp-thunar-vfs-marshal.h \
+ $(libthunar_vfs_built_sources)
+
+BUILT_SOURCES = \
+ $(libthunar_vfs_built_sources)
+
+if HAVE_GNUC_VISIBILITY
+TESTS = \
+ abicheck.sh
+endif
+
+thunar-vfs-alias.h: make-thunar-vfs-alias.pl thunar-vfs.symbols
+ $(PERL) $(srcdir)/make-thunar-vfs-alias.pl < $(srcdir)/thunar-vfs.symbols > thunar-vfs-alias.h
+
+thunar-vfs-aliasdef.c: make-thunar-vfs-alias.pl thunar-vfs.symbols
+ $(PERL) $(srcdir)/make-thunar-vfs-alias.pl -def < $(srcdir)/thunar-vfs.symbols > thunar-vfs-aliasdef.c
+
+thunar-vfs-enum-types.h: stamp-thunar-vfs-enum-types.h
+ @true
+stamp-thunar-vfs-enum-types.h: $(libthunar_vfs_headers) Makefile
+ ( cd $(srcdir) && glib-mkenums \
+ --fhead "#ifndef __THUNAR_VFS_ENUM_TYPES_H__\n#define __THUNAR_VFS_ENUM_TYPES_H__\n#include <exo/exo.h>\nG_BEGIN_DECLS\n" \
+ --fprod "/* enumerations from \"@filename@\" */\n" \
+ --vhead "GType @enum_name at _get_type (void) G_GNUC_CONST;\n#define THUNAR_VFS_TYPE_ at ENUMSHORT@ (@enum_name at _get_type())\n" \
+ --ftail "G_END_DECLS\n\n#endif /* !__THUNAR_VFS_ENUM_TYPES_H__ */" \
+ $(libthunar_vfs_headers) ) >> xgen-tveth \
+ && ( cmp -s xgen-tveth thunar-vfs-enum-types.h || cp xgen-tveth thunar-vfs-enum-types.h ) \
+ && rm -f xgen-tveth \
+ && echo timestamp > $(@F)
+thunar-vfs-enum-types.c: $(libthunar_vfs_headers) Makefile
+ ( cd $(srcdir) && glib-mkenums \
+ --fhead "#undef GTK_DISABLE_DEPRECATED\n#define GTK_ENABLE_BROKEN\n#include <thunar-vfs/thunar-vfs.h>\n#include <thunar-vfs/thunar-vfs-alias.h>" \
+ --fprod "\n/* enumerations from \"@filename@\" */" \
+ --vhead "GType\n at enum_name@_get_type (void)\n{\n\tstatic GType type = 0;\n\tif (type == 0) {\n\tstatic const G at Type@Value values[] = {"\
+ --vprod "\t{ @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \
+ --vtail "\t{ 0, NULL, NULL }\n\t};\n\ttype = g_ at type@_register_static (\"@EnumName@\", values);\n }\n\treturn type;\n}\n" \
+ --ftail "\n#define __THUNAR_VFS_ENUM_TYPES_C__\n#include \"thunar-vfs-aliasdef.c\"\n" \
+ $(libthunar_vfs_headers) ) >> xgen-tvetc \
+ && cp xgen-tvetc thunar-vfs-enum-types.c \
+ && rm -f xgen-tvetc
+
+thunar-vfs-marshal.h: stamp-thunar-vfs-marshal.h
+ @true
+stamp-thunar-vfs-marshal.h: thunar-vfs-marshal.list Makefile
+ ( cd $(srcdir) && glib-genmarshal \
+ --prefix=_thunar_vfs_marshal \
+ --header thunar-vfs-marshal.list ) >> xgen-tvmh \
+ && ( cmp -s xgen-tvmh thunar-vfs-marshal.h || cp xgen-tvmh thunar-vfs-marshal.h ) \
+ && rm -f xgen-tvmh \
+ && echo timestamp > $(@F)
+
+thunar-vfs-marshal.c: thunar-vfs-marshal.list Makefile
+ ( cd $(srcdir) && glib-genmarshal \
+ --prefix=_thunar_vfs_marshal \
+ --body thunar-vfs-marshal.list ) >> xgen-tvmc \
+ && cp xgen-tvmc thunar-vfs-marshal.c \
+ && rm -f xgen-tvmc
+endif
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/Makefile.in
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/Makefile.in 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/Makefile.in 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,1191 @@
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004 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.
+
+ at SET_MAKE@
+
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+
+
+
+SOURCES = $(libthunar_vfs_1_la_SOURCES)
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+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@
+target_triplet = @target@
+subdir = thunar-vfs
+DIST_COMMON = $(libthunar_vfs_include_HEADERS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in $(srcdir)/thunar-vfs-1.pc.in \
+ $(srcdir)/thunar-vfs-config.h.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = thunar-vfs-1.pc thunar-vfs-config.h \
+ thunar-vfs-volume-impl.c thunar-vfs-volume-impl.h
+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 = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" \
+ "$(DESTDIR)$(libthunar_vfs_includedir)"
+libLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(lib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libthunar_vfs_1_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+am__objects_1 =
+am__objects_2 = $(am__objects_1) \
+ libthunar_vfs_1_la-thunar-vfs-aliasdef.lo \
+ libthunar_vfs_1_la-thunar-vfs-enum-types.lo \
+ libthunar_vfs_1_la-thunar-vfs-marshal.lo
+am_libthunar_vfs_1_la_OBJECTS = $(am__objects_2) $(am__objects_1) \
+ libthunar_vfs_1_la-thunar-vfs-config.lo \
+ libthunar_vfs_1_la-thunar-vfs-exec.lo \
+ libthunar_vfs_1_la-thunar-vfs-info.lo \
+ libthunar_vfs_1_la-thunar-vfs-interactive-job.lo \
+ libthunar_vfs_1_la-thunar-vfs-job.lo \
+ libthunar_vfs_1_la-thunar-vfs-link-job.lo \
+ libthunar_vfs_1_la-thunar-vfs-listdir-job.lo \
+ libthunar_vfs_1_la-thunar-vfs-mime-application.lo \
+ libthunar_vfs_1_la-thunar-vfs-mime-cache.lo \
+ libthunar_vfs_1_la-thunar-vfs-mime-database.lo \
+ libthunar_vfs_1_la-thunar-vfs-mime-info.lo \
+ libthunar_vfs_1_la-thunar-vfs-mime-legacy.lo \
+ libthunar_vfs_1_la-thunar-vfs-mime-parser.lo \
+ libthunar_vfs_1_la-thunar-vfs-mime-provider.lo \
+ libthunar_vfs_1_la-thunar-vfs-mime-sniffer.lo \
+ libthunar_vfs_1_la-thunar-vfs-mkdir-job.lo \
+ libthunar_vfs_1_la-thunar-vfs-monitor.lo \
+ libthunar_vfs_1_la-thunar-vfs-path.lo \
+ libthunar_vfs_1_la-thunar-vfs-scandir.lo \
+ libthunar_vfs_1_la-thunar-vfs-thumb-jpeg.lo \
+ libthunar_vfs_1_la-thunar-vfs-thumb.lo \
+ libthunar_vfs_1_la-thunar-vfs-transfer-job.lo \
+ libthunar_vfs_1_la-thunar-vfs-unlink-job.lo \
+ libthunar_vfs_1_la-thunar-vfs-user.lo \
+ libthunar_vfs_1_la-thunar-vfs-util.lo \
+ libthunar_vfs_1_la-thunar-vfs-volume.lo \
+ libthunar_vfs_1_la-thunar-vfs-volume-impl.lo \
+ libthunar_vfs_1_la-thunar-vfs-xfer.lo \
+ libthunar_vfs_1_la-thunar-vfs.lo
+libthunar_vfs_1_la_OBJECTS = $(am_libthunar_vfs_1_la_OBJECTS)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link --tag=CC $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(libthunar_vfs_1_la_SOURCES)
+DIST_SOURCES = $(libthunar_vfs_1_la_SOURCES)
+pkgconfigDATA_INSTALL = $(INSTALL_DATA)
+DATA = $(pkgconfig_DATA)
+libthunar_vfs_includeHEADERS_INSTALL = $(INSTALL_HEADER)
+HEADERS = $(libthunar_vfs_include_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CAIRO_REQUIRED_VERSION = @CAIRO_REQUIRED_VERSION@
+CAIRO_VERSION = @CAIRO_VERSION@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@
+ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@
+EXEEXT = @EXEEXT@
+EXO_CFLAGS = @EXO_CFLAGS@
+EXO_LIBS = @EXO_LIBS@
+EXO_REQUIRED_VERSION = @EXO_REQUIRED_VERSION@
+EXO_VERSION = @EXO_VERSION@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GCONF_CFLAGS = @GCONF_CFLAGS@
+GCONF_LIBS = @GCONF_LIBS@
+GCONF_REQUIRED_VERSION = @GCONF_REQUIRED_VERSION@
+GCONF_VERSION = @GCONF_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_REQUIRED_VERSION = @GLIB_REQUIRED_VERSION@
+GLIB_VERSION = @GLIB_VERSION@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTHREAD_REQUIRED_VERSION = @GTHREAD_REQUIRED_VERSION@
+GTHREAD_VERSION = @GTHREAD_VERSION@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+GTK_LIBS = @GTK_LIBS@
+GTK_REQUIRED_VERSION = @GTK_REQUIRED_VERSION@
+GTK_VERSION = @GTK_VERSION@
+HAVE_CAIRO_FALSE = @HAVE_CAIRO_FALSE@
+HAVE_CAIRO_TRUE = @HAVE_CAIRO_TRUE@
+HAVE_GCONF_FALSE = @HAVE_GCONF_FALSE@
+HAVE_GCONF_TRUE = @HAVE_GCONF_TRUE@
+HAVE_GNUC_VISIBILITY_FALSE = @HAVE_GNUC_VISIBILITY_FALSE@
+HAVE_GNUC_VISIBILITY_TRUE = @HAVE_GNUC_VISIBILITY_TRUE@
+HAVE_LIBSTARTUP_NOTIFICATION_FALSE = @HAVE_LIBSTARTUP_NOTIFICATION_FALSE@
+HAVE_LIBSTARTUP_NOTIFICATION_TRUE = @HAVE_LIBSTARTUP_NOTIFICATION_TRUE@
+HTML_DIR = @HTML_DIR@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LIBFAM_CFLAGS = @LIBFAM_CFLAGS@
+LIBFAM_LIBS = @LIBFAM_LIBS@
+LIBFAM_REQUIRED_VERSION = @LIBFAM_REQUIRED_VERSION@
+LIBFAM_VERSION = @LIBFAM_VERSION@
+LIBJPEG_CFLAGS = @LIBJPEG_CFLAGS@
+LIBJPEG_LIBS = @LIBJPEG_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
+LIBPNG_LIBS = @LIBPNG_LIBS@
+LIBPNG_REQUIRED_VERSION = @LIBPNG_REQUIRED_VERSION@
+LIBPNG_VERSION = @LIBPNG_VERSION@
+LIBS = @LIBS@
+LIBSTARTUP_NOTIFICATION_CFLAGS = @LIBSTARTUP_NOTIFICATION_CFLAGS@
+LIBSTARTUP_NOTIFICATION_LIBS = @LIBSTARTUP_NOTIFICATION_LIBS@
+LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION = @LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION@
+LIBSTARTUP_NOTIFICATION_VERSION = @LIBSTARTUP_NOTIFICATION_VERSION@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_CFLAGS = @PLATFORM_CFLAGS@
+PLATFORM_CPPFLAGS = @PLATFORM_CPPFLAGS@
+PLATFORM_LDFLAGS = @PLATFORM_LDFLAGS@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TDB_U32_TYPE = @TDB_U32_TYPE@
+THUNAR_VERINFO = @THUNAR_VERINFO@
+THUNAR_VERSION_API = @THUNAR_VERSION_API@
+THUNAR_VERSION_MAJOR = @THUNAR_VERSION_MAJOR@
+THUNAR_VERSION_MICRO = @THUNAR_VERSION_MICRO@
+THUNAR_VERSION_MINOR = @THUNAR_VERSION_MINOR@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_ARGS = @XGETTEXT_ARGS@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+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@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+INCLUDES = \
+ -I$(top_srcdir) \
+ -DEXO_API_SUBJECT_TO_CHANGE \
+ -DEXO_DISABLE_DEPRECATED \
+ -DG_LOG_DOMAIN=\"thunar-vfs\" \
+ -DSN_API_NOT_YET_FROZEN \
+ -DTHUNAR_VFS_COMPILATION \
+ $(PLATFORM_CPPFLAGS)
+
+lib_LTLIBRARIES = \
+ libthunar-vfs-1.la
+
+libthunar_vfs_headers = \
+ thunar-vfs-config.h \
+ thunar-vfs-info.h \
+ thunar-vfs-interactive-job.h \
+ thunar-vfs-job.h \
+ thunar-vfs-mime-application.h \
+ thunar-vfs-mime-database.h \
+ thunar-vfs-mime-info.h \
+ thunar-vfs-monitor.h \
+ thunar-vfs-path.h \
+ thunar-vfs-thumb.h \
+ thunar-vfs-types.h \
+ thunar-vfs-user.h \
+ thunar-vfs-util.h \
+ thunar-vfs-volume.h
+
+libthunar_vfs_public_built_sources = \
+ thunar-vfs-enum-types.h
+
+libthunar_vfs_built_sources = \
+ $(libthunar_vfs_public_built_sources) \
+ thunar-vfs-alias.h \
+ thunar-vfs-aliasdef.c \
+ thunar-vfs-enum-types.c \
+ thunar-vfs-marshal.c \
+ thunar-vfs-marshal.h
+
+libthunar_vfs_includedir = \
+ $(includedir)/thunar-vfs-$(THUNAR_VERSION_API)/thunar-vfs
+
+libthunar_vfs_include_HEADERS = \
+ $(libthunar_vfs_headers) \
+ $(libthunar_vfs_public_built_sources) \
+ thunar-vfs.h
+
+libthunar_vfs_1_la_SOURCES = \
+ $(libthunar_vfs_built_sources) \
+ $(libthunar_vfs_headers) \
+ thunar-vfs-config.c \
+ thunar-vfs-exec.c \
+ thunar-vfs-exec.h \
+ thunar-vfs-info.c \
+ thunar-vfs-interactive-job.c \
+ thunar-vfs-job.c \
+ thunar-vfs-link-job.c \
+ thunar-vfs-link-job.h \
+ thunar-vfs-listdir-job.c \
+ thunar-vfs-listdir-job.h \
+ thunar-vfs-mime-application.c \
+ thunar-vfs-mime-cache.c \
+ thunar-vfs-mime-cache.h \
+ thunar-vfs-mime-database.c \
+ thunar-vfs-mime-info.c \
+ thunar-vfs-mime-legacy.c \
+ thunar-vfs-mime-legacy.h \
+ thunar-vfs-mime-parser.h \
+ thunar-vfs-mime-parser.c \
+ thunar-vfs-mime-provider.c \
+ thunar-vfs-mime-provider.h \
+ thunar-vfs-mime-sniffer.c \
+ thunar-vfs-mime-sniffer.h \
+ thunar-vfs-mkdir-job.c \
+ thunar-vfs-mkdir-job.h \
+ thunar-vfs-monitor.c \
+ thunar-vfs-path.c \
+ thunar-vfs-scandir.c \
+ thunar-vfs-scandir.h \
+ thunar-vfs-thumb-jpeg.c \
+ thunar-vfs-thumb-jpeg.h \
+ thunar-vfs-thumb.c \
+ thunar-vfs-transfer-job.c \
+ thunar-vfs-transfer-job.h \
+ thunar-vfs-unlink-job.c \
+ thunar-vfs-unlink-job.h \
+ thunar-vfs-user.c \
+ thunar-vfs-util.c \
+ thunar-vfs-volume.c \
+ thunar-vfs-volume-impl.c \
+ thunar-vfs-volume-impl.h \
+ thunar-vfs-xfer.c \
+ thunar-vfs-xfer.h \
+ thunar-vfs.c
+
+libthunar_vfs_1_la_CFLAGS = \
+ $(EXO_CFLAGS) \
+ $(GCONF_CFLAGS) \
+ $(GTHREAD_CFLAGS) \
+ $(LIBFAM_CFLAGS) \
+ $(LIBJPEG_CFLAGS) \
+ $(LIBPNG_CFLAGS) \
+ $(LIBSTARTUP_NOTIFICATION_CFLAGS) \
+ $(PLATFORM_CFLAGS)
+
+libthunar_vfs_1_la_LDFLAGS = \
+ -export-dynamic \
+ -export-symbols-regex "^[^_].*" \
+ -version-info $(THUNAR_VERINFO) \
+ $(PLATFORM_LDFLAGS)
+
+libthunar_vfs_1_la_LIBADD = \
+ $(EXO_LIBS) \
+ $(GCONF_LIBS) \
+ $(GTHREAD_LIBS) \
+ $(LIBFAM_LIBS) \
+ $(LIBJPEG_LIBS) \
+ $(LIBPNG_LIBS) \
+ $(LIBSTARTUP_NOTIFICATION_LIBS)
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = thunar-vfs-1.pc
+EXTRA_DIST = \
+ abicheck.sh \
+ make-thunar-vfs-alias.pl \
+ thunar-vfs.symbols \
+ thunar-vfs-alias.h \
+ thunar-vfs-aliasdef.c \
+ thunar-vfs-marshal.list \
+ thunar-vfs-volume-bsd.c \
+ thunar-vfs-volume-bsd.h \
+ thunar-vfs-volume-sysv.c \
+ thunar-vfs-volume-sysv.h
+
+ at MAINTAINER_MODE_TRUE@CLEANFILES = \
+ at MAINTAINER_MODE_TRUE@ actual-abi \
+ at MAINTAINER_MODE_TRUE@ expected-abi \
+ at MAINTAINER_MODE_TRUE@ xgen-tvetc \
+ at MAINTAINER_MODE_TRUE@ xgen-tveth \
+ at MAINTAINER_MODE_TRUE@ xgen-tvmc \
+ at MAINTAINER_MODE_TRUE@ xgen-tvmh
+
+ at MAINTAINER_MODE_TRUE@DISTCLEANFILES = \
+ at MAINTAINER_MODE_TRUE@ stamp-thunar-vfs-enum-types.h \
+ at MAINTAINER_MODE_TRUE@ stamp-thunar-vfs-marshal.h \
+ at MAINTAINER_MODE_TRUE@ $(libthunar_vfs_built_sources)
+
+ at MAINTAINER_MODE_TRUE@BUILT_SOURCES = \
+ at MAINTAINER_MODE_TRUE@ $(libthunar_vfs_built_sources)
+
+ at HAVE_GNUC_VISIBILITY_TRUE@@MAINTAINER_MODE_TRUE at TESTS = \
+ at HAVE_GNUC_VISIBILITY_TRUE@@MAINTAINER_MODE_TRUE@ abicheck.sh
+
+all: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) 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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu thunar-vfs/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu thunar-vfs/Makefile
+.PRECIOUS: 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
+thunar-vfs-1.pc: $(top_builddir)/config.status $(srcdir)/thunar-vfs-1.pc.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+thunar-vfs-config.h: $(top_builddir)/config.status $(srcdir)/thunar-vfs-config.h.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
+ $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-libLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
+ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
+ done
+
+clean-libLTLIBRARIES:
+ -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libthunar-vfs-1.la: $(libthunar_vfs_1_la_OBJECTS) $(libthunar_vfs_1_la_DEPENDENCIES)
+ $(LINK) -rpath $(libdir) $(libthunar_vfs_1_la_LDFLAGS) $(libthunar_vfs_1_la_OBJECTS) $(libthunar_vfs_1_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-aliasdef.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-config.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-enum-types.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-exec.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-info.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-interactive-job.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-job.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-link-job.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-listdir-job.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-marshal.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-application.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-cache.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-database.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-info.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-legacy.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-parser.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-provider.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-sniffer.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mkdir-job.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-monitor.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-path.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-scandir.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-thumb-jpeg.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-thumb.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-transfer-job.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-unlink-job.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-user.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-util.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-volume-impl.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-volume.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-xfer.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libthunar_vfs_1_la-thunar-vfs-aliasdef.lo: thunar-vfs-aliasdef.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -MT libthunar_vfs_1_la-thunar-vfs-aliasdef.lo -MD -MP -MF "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-aliasdef.Tpo" -c -o libthunar_vfs_1_la-thunar-vfs-aliasdef.lo `test -f 'thunar-vfs-aliasdef.c' || echo '$(srcdir)/'`thunar-vfs-aliasdef.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-aliasdef.Tpo" "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-aliasdef.Plo"; else rm -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-aliasdef.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-vfs-aliasdef.c' object='libthunar_vfs_1_la-thunar-vfs-aliasdef.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -c -o libthunar_vfs_1_la-thunar-vfs-aliasdef.lo `test -f 'thunar-vfs-aliasdef.c' || echo '$(srcdir)/'`thunar-vfs-aliasdef.c
+
+libthunar_vfs_1_la-thunar-vfs-enum-types.lo: thunar-vfs-enum-types.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -MT libthunar_vfs_1_la-thunar-vfs-enum-types.lo -MD -MP -MF "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-enum-types.Tpo" -c -o libthunar_vfs_1_la-thunar-vfs-enum-types.lo `test -f 'thunar-vfs-enum-types.c' || echo '$(srcdir)/'`thunar-vfs-enum-types.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-enum-types.Tpo" "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-enum-types.Plo"; else rm -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-enum-types.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-vfs-enum-types.c' object='libthunar_vfs_1_la-thunar-vfs-enum-types.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -c -o libthunar_vfs_1_la-thunar-vfs-enum-types.lo `test -f 'thunar-vfs-enum-types.c' || echo '$(srcdir)/'`thunar-vfs-enum-types.c
+
+libthunar_vfs_1_la-thunar-vfs-marshal.lo: thunar-vfs-marshal.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -MT libthunar_vfs_1_la-thunar-vfs-marshal.lo -MD -MP -MF "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-marshal.Tpo" -c -o libthunar_vfs_1_la-thunar-vfs-marshal.lo `test -f 'thunar-vfs-marshal.c' || echo '$(srcdir)/'`thunar-vfs-marshal.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-marshal.Tpo" "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-marshal.Plo"; else rm -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-marshal.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-vfs-marshal.c' object='libthunar_vfs_1_la-thunar-vfs-marshal.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -c -o libthunar_vfs_1_la-thunar-vfs-marshal.lo `test -f 'thunar-vfs-marshal.c' || echo '$(srcdir)/'`thunar-vfs-marshal.c
+
+libthunar_vfs_1_la-thunar-vfs-config.lo: thunar-vfs-config.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -MT libthunar_vfs_1_la-thunar-vfs-config.lo -MD -MP -MF "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-config.Tpo" -c -o libthunar_vfs_1_la-thunar-vfs-config.lo `test -f 'thunar-vfs-config.c' || echo '$(srcdir)/'`thunar-vfs-config.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-config.Tpo" "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-config.Plo"; else rm -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-config.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-vfs-config.c' object='libthunar_vfs_1_la-thunar-vfs-config.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -c -o libthunar_vfs_1_la-thunar-vfs-config.lo `test -f 'thunar-vfs-config.c' || echo '$(srcdir)/'`thunar-vfs-config.c
+
+libthunar_vfs_1_la-thunar-vfs-exec.lo: thunar-vfs-exec.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -MT libthunar_vfs_1_la-thunar-vfs-exec.lo -MD -MP -MF "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-exec.Tpo" -c -o libthunar_vfs_1_la-thunar-vfs-exec.lo `test -f 'thunar-vfs-exec.c' || echo '$(srcdir)/'`thunar-vfs-exec.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-exec.Tpo" "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-exec.Plo"; else rm -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-exec.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-vfs-exec.c' object='libthunar_vfs_1_la-thunar-vfs-exec.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -c -o libthunar_vfs_1_la-thunar-vfs-exec.lo `test -f 'thunar-vfs-exec.c' || echo '$(srcdir)/'`thunar-vfs-exec.c
+
+libthunar_vfs_1_la-thunar-vfs-info.lo: thunar-vfs-info.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -MT libthunar_vfs_1_la-thunar-vfs-info.lo -MD -MP -MF "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-info.Tpo" -c -o libthunar_vfs_1_la-thunar-vfs-info.lo `test -f 'thunar-vfs-info.c' || echo '$(srcdir)/'`thunar-vfs-info.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-info.Tpo" "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-info.Plo"; else rm -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-info.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-vfs-info.c' object='libthunar_vfs_1_la-thunar-vfs-info.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -c -o libthunar_vfs_1_la-thunar-vfs-info.lo `test -f 'thunar-vfs-info.c' || echo '$(srcdir)/'`thunar-vfs-info.c
+
+libthunar_vfs_1_la-thunar-vfs-interactive-job.lo: thunar-vfs-interactive-job.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -MT libthunar_vfs_1_la-thunar-vfs-interactive-job.lo -MD -MP -MF "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-interactive-job.Tpo" -c -o libthunar_vfs_1_la-thunar-vfs-interactive-job.lo `test -f 'thunar-vfs-interactive-job.c' || echo '$(srcdir)/'`thunar-vfs-interactive-job.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-interactive-job.Tpo" "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-interactive-job.Plo"; else rm -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-interactive-job.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-vfs-interactive-job.c' object='libthunar_vfs_1_la-thunar-vfs-interactive-job.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -c -o libthunar_vfs_1_la-thunar-vfs-interactive-job.lo `test -f 'thunar-vfs-interactive-job.c' || echo '$(srcdir)/'`thunar-vfs-interactive-job.c
+
+libthunar_vfs_1_la-thunar-vfs-job.lo: thunar-vfs-job.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -MT libthunar_vfs_1_la-thunar-vfs-job.lo -MD -MP -MF "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-job.Tpo" -c -o libthunar_vfs_1_la-thunar-vfs-job.lo `test -f 'thunar-vfs-job.c' || echo '$(srcdir)/'`thunar-vfs-job.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-job.Tpo" "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-job.Plo"; else rm -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-job.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-vfs-job.c' object='libthunar_vfs_1_la-thunar-vfs-job.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -c -o libthunar_vfs_1_la-thunar-vfs-job.lo `test -f 'thunar-vfs-job.c' || echo '$(srcdir)/'`thunar-vfs-job.c
+
+libthunar_vfs_1_la-thunar-vfs-link-job.lo: thunar-vfs-link-job.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -MT libthunar_vfs_1_la-thunar-vfs-link-job.lo -MD -MP -MF "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-link-job.Tpo" -c -o libthunar_vfs_1_la-thunar-vfs-link-job.lo `test -f 'thunar-vfs-link-job.c' || echo '$(srcdir)/'`thunar-vfs-link-job.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-link-job.Tpo" "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-link-job.Plo"; else rm -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-link-job.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-vfs-link-job.c' object='libthunar_vfs_1_la-thunar-vfs-link-job.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -c -o libthunar_vfs_1_la-thunar-vfs-link-job.lo `test -f 'thunar-vfs-link-job.c' || echo '$(srcdir)/'`thunar-vfs-link-job.c
+
+libthunar_vfs_1_la-thunar-vfs-listdir-job.lo: thunar-vfs-listdir-job.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -MT libthunar_vfs_1_la-thunar-vfs-listdir-job.lo -MD -MP -MF "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-listdir-job.Tpo" -c -o libthunar_vfs_1_la-thunar-vfs-listdir-job.lo `test -f 'thunar-vfs-listdir-job.c' || echo '$(srcdir)/'`thunar-vfs-listdir-job.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-listdir-job.Tpo" "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-listdir-job.Plo"; else rm -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-listdir-job.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-vfs-listdir-job.c' object='libthunar_vfs_1_la-thunar-vfs-listdir-job.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -c -o libthunar_vfs_1_la-thunar-vfs-listdir-job.lo `test -f 'thunar-vfs-listdir-job.c' || echo '$(srcdir)/'`thunar-vfs-listdir-job.c
+
+libthunar_vfs_1_la-thunar-vfs-mime-application.lo: thunar-vfs-mime-application.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -MT libthunar_vfs_1_la-thunar-vfs-mime-application.lo -MD -MP -MF "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-application.Tpo" -c -o libthunar_vfs_1_la-thunar-vfs-mime-application.lo `test -f 'thunar-vfs-mime-application.c' || echo '$(srcdir)/'`thunar-vfs-mime-application.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-application.Tpo" "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-application.Plo"; else rm -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-application.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-vfs-mime-application.c' object='libthunar_vfs_1_la-thunar-vfs-mime-application.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -c -o libthunar_vfs_1_la-thunar-vfs-mime-application.lo `test -f 'thunar-vfs-mime-application.c' || echo '$(srcdir)/'`thunar-vfs-mime-application.c
+
+libthunar_vfs_1_la-thunar-vfs-mime-cache.lo: thunar-vfs-mime-cache.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -MT libthunar_vfs_1_la-thunar-vfs-mime-cache.lo -MD -MP -MF "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-cache.Tpo" -c -o libthunar_vfs_1_la-thunar-vfs-mime-cache.lo `test -f 'thunar-vfs-mime-cache.c' || echo '$(srcdir)/'`thunar-vfs-mime-cache.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-cache.Tpo" "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-cache.Plo"; else rm -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-cache.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-vfs-mime-cache.c' object='libthunar_vfs_1_la-thunar-vfs-mime-cache.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -c -o libthunar_vfs_1_la-thunar-vfs-mime-cache.lo `test -f 'thunar-vfs-mime-cache.c' || echo '$(srcdir)/'`thunar-vfs-mime-cache.c
+
+libthunar_vfs_1_la-thunar-vfs-mime-database.lo: thunar-vfs-mime-database.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -MT libthunar_vfs_1_la-thunar-vfs-mime-database.lo -MD -MP -MF "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-database.Tpo" -c -o libthunar_vfs_1_la-thunar-vfs-mime-database.lo `test -f 'thunar-vfs-mime-database.c' || echo '$(srcdir)/'`thunar-vfs-mime-database.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-database.Tpo" "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-database.Plo"; else rm -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-database.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-vfs-mime-database.c' object='libthunar_vfs_1_la-thunar-vfs-mime-database.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -c -o libthunar_vfs_1_la-thunar-vfs-mime-database.lo `test -f 'thunar-vfs-mime-database.c' || echo '$(srcdir)/'`thunar-vfs-mime-database.c
+
+libthunar_vfs_1_la-thunar-vfs-mime-info.lo: thunar-vfs-mime-info.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -MT libthunar_vfs_1_la-thunar-vfs-mime-info.lo -MD -MP -MF "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-info.Tpo" -c -o libthunar_vfs_1_la-thunar-vfs-mime-info.lo `test -f 'thunar-vfs-mime-info.c' || echo '$(srcdir)/'`thunar-vfs-mime-info.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-info.Tpo" "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-info.Plo"; else rm -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-info.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-vfs-mime-info.c' object='libthunar_vfs_1_la-thunar-vfs-mime-info.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -c -o libthunar_vfs_1_la-thunar-vfs-mime-info.lo `test -f 'thunar-vfs-mime-info.c' || echo '$(srcdir)/'`thunar-vfs-mime-info.c
+
+libthunar_vfs_1_la-thunar-vfs-mime-legacy.lo: thunar-vfs-mime-legacy.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -MT libthunar_vfs_1_la-thunar-vfs-mime-legacy.lo -MD -MP -MF "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-legacy.Tpo" -c -o libthunar_vfs_1_la-thunar-vfs-mime-legacy.lo `test -f 'thunar-vfs-mime-legacy.c' || echo '$(srcdir)/'`thunar-vfs-mime-legacy.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-legacy.Tpo" "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-legacy.Plo"; else rm -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-legacy.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-vfs-mime-legacy.c' object='libthunar_vfs_1_la-thunar-vfs-mime-legacy.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -c -o libthunar_vfs_1_la-thunar-vfs-mime-legacy.lo `test -f 'thunar-vfs-mime-legacy.c' || echo '$(srcdir)/'`thunar-vfs-mime-legacy.c
+
+libthunar_vfs_1_la-thunar-vfs-mime-parser.lo: thunar-vfs-mime-parser.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -MT libthunar_vfs_1_la-thunar-vfs-mime-parser.lo -MD -MP -MF "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-parser.Tpo" -c -o libthunar_vfs_1_la-thunar-vfs-mime-parser.lo `test -f 'thunar-vfs-mime-parser.c' || echo '$(srcdir)/'`thunar-vfs-mime-parser.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-parser.Tpo" "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-parser.Plo"; else rm -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-parser.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-vfs-mime-parser.c' object='libthunar_vfs_1_la-thunar-vfs-mime-parser.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -c -o libthunar_vfs_1_la-thunar-vfs-mime-parser.lo `test -f 'thunar-vfs-mime-parser.c' || echo '$(srcdir)/'`thunar-vfs-mime-parser.c
+
+libthunar_vfs_1_la-thunar-vfs-mime-provider.lo: thunar-vfs-mime-provider.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -MT libthunar_vfs_1_la-thunar-vfs-mime-provider.lo -MD -MP -MF "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-provider.Tpo" -c -o libthunar_vfs_1_la-thunar-vfs-mime-provider.lo `test -f 'thunar-vfs-mime-provider.c' || echo '$(srcdir)/'`thunar-vfs-mime-provider.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-provider.Tpo" "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-provider.Plo"; else rm -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-provider.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-vfs-mime-provider.c' object='libthunar_vfs_1_la-thunar-vfs-mime-provider.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -c -o libthunar_vfs_1_la-thunar-vfs-mime-provider.lo `test -f 'thunar-vfs-mime-provider.c' || echo '$(srcdir)/'`thunar-vfs-mime-provider.c
+
+libthunar_vfs_1_la-thunar-vfs-mime-sniffer.lo: thunar-vfs-mime-sniffer.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -MT libthunar_vfs_1_la-thunar-vfs-mime-sniffer.lo -MD -MP -MF "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-sniffer.Tpo" -c -o libthunar_vfs_1_la-thunar-vfs-mime-sniffer.lo `test -f 'thunar-vfs-mime-sniffer.c' || echo '$(srcdir)/'`thunar-vfs-mime-sniffer.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-sniffer.Tpo" "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-sniffer.Plo"; else rm -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mime-sniffer.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-vfs-mime-sniffer.c' object='libthunar_vfs_1_la-thunar-vfs-mime-sniffer.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -c -o libthunar_vfs_1_la-thunar-vfs-mime-sniffer.lo `test -f 'thunar-vfs-mime-sniffer.c' || echo '$(srcdir)/'`thunar-vfs-mime-sniffer.c
+
+libthunar_vfs_1_la-thunar-vfs-mkdir-job.lo: thunar-vfs-mkdir-job.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -MT libthunar_vfs_1_la-thunar-vfs-mkdir-job.lo -MD -MP -MF "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mkdir-job.Tpo" -c -o libthunar_vfs_1_la-thunar-vfs-mkdir-job.lo `test -f 'thunar-vfs-mkdir-job.c' || echo '$(srcdir)/'`thunar-vfs-mkdir-job.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mkdir-job.Tpo" "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mkdir-job.Plo"; else rm -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-mkdir-job.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-vfs-mkdir-job.c' object='libthunar_vfs_1_la-thunar-vfs-mkdir-job.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -c -o libthunar_vfs_1_la-thunar-vfs-mkdir-job.lo `test -f 'thunar-vfs-mkdir-job.c' || echo '$(srcdir)/'`thunar-vfs-mkdir-job.c
+
+libthunar_vfs_1_la-thunar-vfs-monitor.lo: thunar-vfs-monitor.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -MT libthunar_vfs_1_la-thunar-vfs-monitor.lo -MD -MP -MF "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-monitor.Tpo" -c -o libthunar_vfs_1_la-thunar-vfs-monitor.lo `test -f 'thunar-vfs-monitor.c' || echo '$(srcdir)/'`thunar-vfs-monitor.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-monitor.Tpo" "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-monitor.Plo"; else rm -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-monitor.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-vfs-monitor.c' object='libthunar_vfs_1_la-thunar-vfs-monitor.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -c -o libthunar_vfs_1_la-thunar-vfs-monitor.lo `test -f 'thunar-vfs-monitor.c' || echo '$(srcdir)/'`thunar-vfs-monitor.c
+
+libthunar_vfs_1_la-thunar-vfs-path.lo: thunar-vfs-path.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -MT libthunar_vfs_1_la-thunar-vfs-path.lo -MD -MP -MF "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-path.Tpo" -c -o libthunar_vfs_1_la-thunar-vfs-path.lo `test -f 'thunar-vfs-path.c' || echo '$(srcdir)/'`thunar-vfs-path.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-path.Tpo" "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-path.Plo"; else rm -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-path.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-vfs-path.c' object='libthunar_vfs_1_la-thunar-vfs-path.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -c -o libthunar_vfs_1_la-thunar-vfs-path.lo `test -f 'thunar-vfs-path.c' || echo '$(srcdir)/'`thunar-vfs-path.c
+
+libthunar_vfs_1_la-thunar-vfs-scandir.lo: thunar-vfs-scandir.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -MT libthunar_vfs_1_la-thunar-vfs-scandir.lo -MD -MP -MF "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-scandir.Tpo" -c -o libthunar_vfs_1_la-thunar-vfs-scandir.lo `test -f 'thunar-vfs-scandir.c' || echo '$(srcdir)/'`thunar-vfs-scandir.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-scandir.Tpo" "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-scandir.Plo"; else rm -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-scandir.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-vfs-scandir.c' object='libthunar_vfs_1_la-thunar-vfs-scandir.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -c -o libthunar_vfs_1_la-thunar-vfs-scandir.lo `test -f 'thunar-vfs-scandir.c' || echo '$(srcdir)/'`thunar-vfs-scandir.c
+
+libthunar_vfs_1_la-thunar-vfs-thumb-jpeg.lo: thunar-vfs-thumb-jpeg.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -MT libthunar_vfs_1_la-thunar-vfs-thumb-jpeg.lo -MD -MP -MF "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-thumb-jpeg.Tpo" -c -o libthunar_vfs_1_la-thunar-vfs-thumb-jpeg.lo `test -f 'thunar-vfs-thumb-jpeg.c' || echo '$(srcdir)/'`thunar-vfs-thumb-jpeg.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-thumb-jpeg.Tpo" "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-thumb-jpeg.Plo"; else rm -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-thumb-jpeg.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-vfs-thumb-jpeg.c' object='libthunar_vfs_1_la-thunar-vfs-thumb-jpeg.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -c -o libthunar_vfs_1_la-thunar-vfs-thumb-jpeg.lo `test -f 'thunar-vfs-thumb-jpeg.c' || echo '$(srcdir)/'`thunar-vfs-thumb-jpeg.c
+
+libthunar_vfs_1_la-thunar-vfs-thumb.lo: thunar-vfs-thumb.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -MT libthunar_vfs_1_la-thunar-vfs-thumb.lo -MD -MP -MF "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-thumb.Tpo" -c -o libthunar_vfs_1_la-thunar-vfs-thumb.lo `test -f 'thunar-vfs-thumb.c' || echo '$(srcdir)/'`thunar-vfs-thumb.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-thumb.Tpo" "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-thumb.Plo"; else rm -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-thumb.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-vfs-thumb.c' object='libthunar_vfs_1_la-thunar-vfs-thumb.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -c -o libthunar_vfs_1_la-thunar-vfs-thumb.lo `test -f 'thunar-vfs-thumb.c' || echo '$(srcdir)/'`thunar-vfs-thumb.c
+
+libthunar_vfs_1_la-thunar-vfs-transfer-job.lo: thunar-vfs-transfer-job.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -MT libthunar_vfs_1_la-thunar-vfs-transfer-job.lo -MD -MP -MF "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-transfer-job.Tpo" -c -o libthunar_vfs_1_la-thunar-vfs-transfer-job.lo `test -f 'thunar-vfs-transfer-job.c' || echo '$(srcdir)/'`thunar-vfs-transfer-job.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-transfer-job.Tpo" "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-transfer-job.Plo"; else rm -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-transfer-job.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-vfs-transfer-job.c' object='libthunar_vfs_1_la-thunar-vfs-transfer-job.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -c -o libthunar_vfs_1_la-thunar-vfs-transfer-job.lo `test -f 'thunar-vfs-transfer-job.c' || echo '$(srcdir)/'`thunar-vfs-transfer-job.c
+
+libthunar_vfs_1_la-thunar-vfs-unlink-job.lo: thunar-vfs-unlink-job.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -MT libthunar_vfs_1_la-thunar-vfs-unlink-job.lo -MD -MP -MF "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-unlink-job.Tpo" -c -o libthunar_vfs_1_la-thunar-vfs-unlink-job.lo `test -f 'thunar-vfs-unlink-job.c' || echo '$(srcdir)/'`thunar-vfs-unlink-job.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-unlink-job.Tpo" "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-unlink-job.Plo"; else rm -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-unlink-job.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-vfs-unlink-job.c' object='libthunar_vfs_1_la-thunar-vfs-unlink-job.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -c -o libthunar_vfs_1_la-thunar-vfs-unlink-job.lo `test -f 'thunar-vfs-unlink-job.c' || echo '$(srcdir)/'`thunar-vfs-unlink-job.c
+
+libthunar_vfs_1_la-thunar-vfs-user.lo: thunar-vfs-user.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -MT libthunar_vfs_1_la-thunar-vfs-user.lo -MD -MP -MF "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-user.Tpo" -c -o libthunar_vfs_1_la-thunar-vfs-user.lo `test -f 'thunar-vfs-user.c' || echo '$(srcdir)/'`thunar-vfs-user.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-user.Tpo" "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-user.Plo"; else rm -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-user.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-vfs-user.c' object='libthunar_vfs_1_la-thunar-vfs-user.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -c -o libthunar_vfs_1_la-thunar-vfs-user.lo `test -f 'thunar-vfs-user.c' || echo '$(srcdir)/'`thunar-vfs-user.c
+
+libthunar_vfs_1_la-thunar-vfs-util.lo: thunar-vfs-util.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -MT libthunar_vfs_1_la-thunar-vfs-util.lo -MD -MP -MF "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-util.Tpo" -c -o libthunar_vfs_1_la-thunar-vfs-util.lo `test -f 'thunar-vfs-util.c' || echo '$(srcdir)/'`thunar-vfs-util.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-util.Tpo" "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-util.Plo"; else rm -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-util.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-vfs-util.c' object='libthunar_vfs_1_la-thunar-vfs-util.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -c -o libthunar_vfs_1_la-thunar-vfs-util.lo `test -f 'thunar-vfs-util.c' || echo '$(srcdir)/'`thunar-vfs-util.c
+
+libthunar_vfs_1_la-thunar-vfs-volume.lo: thunar-vfs-volume.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -MT libthunar_vfs_1_la-thunar-vfs-volume.lo -MD -MP -MF "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-volume.Tpo" -c -o libthunar_vfs_1_la-thunar-vfs-volume.lo `test -f 'thunar-vfs-volume.c' || echo '$(srcdir)/'`thunar-vfs-volume.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-volume.Tpo" "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-volume.Plo"; else rm -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-volume.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-vfs-volume.c' object='libthunar_vfs_1_la-thunar-vfs-volume.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -c -o libthunar_vfs_1_la-thunar-vfs-volume.lo `test -f 'thunar-vfs-volume.c' || echo '$(srcdir)/'`thunar-vfs-volume.c
+
+libthunar_vfs_1_la-thunar-vfs-volume-impl.lo: thunar-vfs-volume-impl.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -MT libthunar_vfs_1_la-thunar-vfs-volume-impl.lo -MD -MP -MF "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-volume-impl.Tpo" -c -o libthunar_vfs_1_la-thunar-vfs-volume-impl.lo `test -f 'thunar-vfs-volume-impl.c' || echo '$(srcdir)/'`thunar-vfs-volume-impl.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-volume-impl.Tpo" "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-volume-impl.Plo"; else rm -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-volume-impl.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-vfs-volume-impl.c' object='libthunar_vfs_1_la-thunar-vfs-volume-impl.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -c -o libthunar_vfs_1_la-thunar-vfs-volume-impl.lo `test -f 'thunar-vfs-volume-impl.c' || echo '$(srcdir)/'`thunar-vfs-volume-impl.c
+
+libthunar_vfs_1_la-thunar-vfs-xfer.lo: thunar-vfs-xfer.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -MT libthunar_vfs_1_la-thunar-vfs-xfer.lo -MD -MP -MF "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-xfer.Tpo" -c -o libthunar_vfs_1_la-thunar-vfs-xfer.lo `test -f 'thunar-vfs-xfer.c' || echo '$(srcdir)/'`thunar-vfs-xfer.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-xfer.Tpo" "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-xfer.Plo"; else rm -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs-xfer.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-vfs-xfer.c' object='libthunar_vfs_1_la-thunar-vfs-xfer.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -c -o libthunar_vfs_1_la-thunar-vfs-xfer.lo `test -f 'thunar-vfs-xfer.c' || echo '$(srcdir)/'`thunar-vfs-xfer.c
+
+libthunar_vfs_1_la-thunar-vfs.lo: thunar-vfs.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -MT libthunar_vfs_1_la-thunar-vfs.lo -MD -MP -MF "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs.Tpo" -c -o libthunar_vfs_1_la-thunar-vfs.lo `test -f 'thunar-vfs.c' || echo '$(srcdir)/'`thunar-vfs.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs.Tpo" "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs.Plo"; else rm -f "$(DEPDIR)/libthunar_vfs_1_la-thunar-vfs.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunar-vfs.c' object='libthunar_vfs_1_la-thunar-vfs.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunar_vfs_1_la_CFLAGS) $(CFLAGS) -c -o libthunar_vfs_1_la-thunar-vfs.lo `test -f 'thunar-vfs.c' || echo '$(srcdir)/'`thunar-vfs.c
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+install-pkgconfigDATA: $(pkgconfig_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkgconfigdir)" || $(mkdir_p) "$(DESTDIR)$(pkgconfigdir)"
+ @list='$(pkgconfig_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(pkgconfigDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
+ $(pkgconfigDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgconfigdir)/$$f"; \
+ done
+
+uninstall-pkgconfigDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkgconfig_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(pkgconfigdir)/$$f"; \
+ done
+install-libthunar_vfs_includeHEADERS: $(libthunar_vfs_include_HEADERS)
+ @$(NORMAL_INSTALL)
+ test -z "$(libthunar_vfs_includedir)" || $(mkdir_p) "$(DESTDIR)$(libthunar_vfs_includedir)"
+ @list='$(libthunar_vfs_include_HEADERS)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(libthunar_vfs_includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(libthunar_vfs_includedir)/$$f'"; \
+ $(libthunar_vfs_includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(libthunar_vfs_includedir)/$$f"; \
+ done
+
+uninstall-libthunar_vfs_includeHEADERS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(libthunar_vfs_include_HEADERS)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(libthunar_vfs_includedir)/$$f'"; \
+ rm -f "$(DESTDIR)$(libthunar_vfs_includedir)/$$f"; \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list='$(TESTS)'; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *" $$tst "*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *" $$tst "*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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-TESTS
+check: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS)
+installdirs:
+ for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(libthunar_vfs_includedir)"; 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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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)
+clean: clean-am
+
+clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-libthunar_vfs_includeHEADERS \
+ install-pkgconfigDATA
+
+install-exec-am: install-libLTLIBRARIES
+
+install-info: install-info-am
+
+install-man:
+
+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-info-am uninstall-libLTLIBRARIES \
+ uninstall-libthunar_vfs_includeHEADERS uninstall-pkgconfigDATA
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-generic clean-libLTLIBRARIES clean-libtool ctags \
+ distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-exec install-exec-am install-info \
+ install-info-am install-libLTLIBRARIES \
+ install-libthunar_vfs_includeHEADERS install-man \
+ install-pkgconfigDATA install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am uninstall-info-am \
+ uninstall-libLTLIBRARIES \
+ uninstall-libthunar_vfs_includeHEADERS uninstall-pkgconfigDATA
+
+
+ at MAINTAINER_MODE_TRUE@thunar-vfs-alias.h: make-thunar-vfs-alias.pl thunar-vfs.symbols
+ at MAINTAINER_MODE_TRUE@ $(PERL) $(srcdir)/make-thunar-vfs-alias.pl < $(srcdir)/thunar-vfs.symbols > thunar-vfs-alias.h
+
+ at MAINTAINER_MODE_TRUE@thunar-vfs-aliasdef.c: make-thunar-vfs-alias.pl thunar-vfs.symbols
+ at MAINTAINER_MODE_TRUE@ $(PERL) $(srcdir)/make-thunar-vfs-alias.pl -def < $(srcdir)/thunar-vfs.symbols > thunar-vfs-aliasdef.c
+
+ at MAINTAINER_MODE_TRUE@thunar-vfs-enum-types.h: stamp-thunar-vfs-enum-types.h
+ at MAINTAINER_MODE_TRUE@ @true
+ at MAINTAINER_MODE_TRUE@stamp-thunar-vfs-enum-types.h: $(libthunar_vfs_headers) Makefile
+ at MAINTAINER_MODE_TRUE@ ( cd $(srcdir) && glib-mkenums \
+ at MAINTAINER_MODE_TRUE@ --fhead "#ifndef __THUNAR_VFS_ENUM_TYPES_H__\n#define __THUNAR_VFS_ENUM_TYPES_H__\n#include <exo/exo.h>\nG_BEGIN_DECLS\n" \
+ at MAINTAINER_MODE_TRUE@ --fprod "/* enumerations from \"@filename@\" */\n" \
+ at MAINTAINER_MODE_TRUE@ --vhead "GType @enum_name at _get_type (void) G_GNUC_CONST;\n#define THUNAR_VFS_TYPE_ at ENUMSHORT@ (@enum_name at _get_type())\n" \
+ at MAINTAINER_MODE_TRUE@ --ftail "G_END_DECLS\n\n#endif /* !__THUNAR_VFS_ENUM_TYPES_H__ */" \
+ at MAINTAINER_MODE_TRUE@ $(libthunar_vfs_headers) ) >> xgen-tveth \
+ at MAINTAINER_MODE_TRUE@ && ( cmp -s xgen-tveth thunar-vfs-enum-types.h || cp xgen-tveth thunar-vfs-enum-types.h ) \
+ at MAINTAINER_MODE_TRUE@ && rm -f xgen-tveth \
+ at MAINTAINER_MODE_TRUE@ && echo timestamp > $(@F)
+ at MAINTAINER_MODE_TRUE@thunar-vfs-enum-types.c: $(libthunar_vfs_headers) Makefile
+ at MAINTAINER_MODE_TRUE@ ( cd $(srcdir) && glib-mkenums \
+ at MAINTAINER_MODE_TRUE@ --fhead "#undef GTK_DISABLE_DEPRECATED\n#define GTK_ENABLE_BROKEN\n#include <thunar-vfs/thunar-vfs.h>\n#include <thunar-vfs/thunar-vfs-alias.h>" \
+ at MAINTAINER_MODE_TRUE@ --fprod "\n/* enumerations from \"@filename@\" */" \
+ at MAINTAINER_MODE_TRUE@ --vhead "GType\n at enum_name@_get_type (void)\n{\n\tstatic GType type = 0;\n\tif (type == 0) {\n\tstatic const G at Type@Value values[] = {"\
+ at MAINTAINER_MODE_TRUE@ --vprod "\t{ @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \
+ at MAINTAINER_MODE_TRUE@ --vtail "\t{ 0, NULL, NULL }\n\t};\n\ttype = g_ at type@_register_static (\"@EnumName@\", values);\n }\n\treturn type;\n}\n" \
+ at MAINTAINER_MODE_TRUE@ --ftail "\n#define __THUNAR_VFS_ENUM_TYPES_C__\n#include \"thunar-vfs-aliasdef.c\"\n" \
+ at MAINTAINER_MODE_TRUE@ $(libthunar_vfs_headers) ) >> xgen-tvetc \
+ at MAINTAINER_MODE_TRUE@ && cp xgen-tvetc thunar-vfs-enum-types.c \
+ at MAINTAINER_MODE_TRUE@ && rm -f xgen-tvetc
+
+ at MAINTAINER_MODE_TRUE@thunar-vfs-marshal.h: stamp-thunar-vfs-marshal.h
+ at MAINTAINER_MODE_TRUE@ @true
+ at MAINTAINER_MODE_TRUE@stamp-thunar-vfs-marshal.h: thunar-vfs-marshal.list Makefile
+ at MAINTAINER_MODE_TRUE@ ( cd $(srcdir) && glib-genmarshal \
+ at MAINTAINER_MODE_TRUE@ --prefix=_thunar_vfs_marshal \
+ at MAINTAINER_MODE_TRUE@ --header thunar-vfs-marshal.list ) >> xgen-tvmh \
+ at MAINTAINER_MODE_TRUE@ && ( cmp -s xgen-tvmh thunar-vfs-marshal.h || cp xgen-tvmh thunar-vfs-marshal.h ) \
+ at MAINTAINER_MODE_TRUE@ && rm -f xgen-tvmh \
+ at MAINTAINER_MODE_TRUE@ && echo timestamp > $(@F)
+
+ at MAINTAINER_MODE_TRUE@thunar-vfs-marshal.c: thunar-vfs-marshal.list Makefile
+ at MAINTAINER_MODE_TRUE@ ( cd $(srcdir) && glib-genmarshal \
+ at MAINTAINER_MODE_TRUE@ --prefix=_thunar_vfs_marshal \
+ at MAINTAINER_MODE_TRUE@ --body thunar-vfs-marshal.list ) >> xgen-tvmc \
+ at MAINTAINER_MODE_TRUE@ && cp xgen-tvmc thunar-vfs-marshal.c \
+ at MAINTAINER_MODE_TRUE@ && rm -f xgen-tvmc
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
+# 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:
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/abicheck.sh
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/abicheck.sh 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/abicheck.sh 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,24 @@
+#!/bin/sh
+#
+# Copyright (c) 2004 The GLib Development Team.
+# Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public
+# License along with this library; if not, write to the
+# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+#
+
+cpp -P -DINCLUDE_INTERNAL_SYMBOLS -DALL_FILES ${srcdir:-.}/thunar-vfs.symbols | sed -e '/^$/d' -e 's/ G_GNUC.*$//' -e 's/ PRIVATE//' | sort > expected-abi
+nm -D .libs/libthunar-vfs-1.so | grep " R\|T " | cut -d ' ' -f 3 | grep -v '^_.*' | sort > actual-abi
+diff -u expected-abi actual-abi && rm expected-abi actual-abi
Property changes on: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/abicheck.sh
___________________________________________________________________
Name: svn:executable
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/make-thunar-vfs-alias.pl
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/make-thunar-vfs-alias.pl 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/make-thunar-vfs-alias.pl 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,155 @@
+#!/usr/bin/env perl -w
+#
+# Copyright (c) 2004 The GLib Development Team.
+# Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public
+# License along with this library; if not, write to the
+# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+#
+
+my $option_def = 0;
+
+if (($#ARGV >= 0) && ($ARGV[0] eq "-def"))
+ {
+ shift;
+ $option_def = 1;
+ }
+
+print <<EOF;
+/* Generated by make-thunar-vfs-alias.pl. Do not edit this file. */
+
+#ifdef HAVE_GNUC_VISIBILITY
+
+#include <glib.h>
+
+EOF
+
+if ($option_def)
+ {
+ print <<EOF
+#undef IN_HEADER
+#define IN_HEADER(x) 1
+
+#undef IN_SOURCE
+#define IN_SOURCE defined
+
+EOF
+ }
+else
+ {
+ print <<EOF
+#define IN_HEADER defined
+#define IN_SOURCE(x) 1
+
+EOF
+ }
+
+my $in_comment = 0;
+my $in_skipped_section = 0;
+
+while (<>)
+ {
+ # ignore empty lines
+ next if /^\s*$/;
+
+ # skip comments
+ if ($_ =~ /^\s*\/\*/)
+ {
+ $in_comment = 1;
+ }
+
+ if ($in_comment)
+ {
+ if ($_ =~ /\*\/\s$/)
+ {
+ $in_comment = 0;
+ }
+ next;
+ }
+
+ # handle ifdefs
+ if ($_ =~ /^\#endif/)
+ {
+ if (!$in_skipped_section)
+ {
+ print $_;
+ }
+
+ $in_skipped_section = 0;
+ next;
+ }
+
+ if ($_ =~ /^\#ifdef\s+(INCLUDE_VARIABLES|INCLUDE_INTERNAL_SYMBOLS|ALL_FILES)/)
+ {
+ $in_skipped_section = 1;
+ }
+
+ if ($in_skipped_section)
+ {
+ next;
+ }
+
+ if ($_ =~ /^\#ifn?def\s+G/)
+ {
+ print $_;
+ next;
+ }
+
+ if ($_ =~ /^\#if.*(IN_SOURCE|IN_HEADER)/)
+ {
+ print $_;
+ next;
+ }
+
+ chop;
+ my $line = $_;
+ my @words;
+ my $attributes = "";
+
+ @words = split (/ /, $line);
+ my $symbol = shift (@words);
+ chomp ($symbol);
+ my $alias = "IA__".$symbol;
+
+ # Drop any Win32 specific .def file syntax, but keep attributes
+ foreach $word (@words)
+ {
+ $attributes = "$attributes $word" unless $word eq "PRIVATE";
+ }
+
+ if (!$option_def)
+ {
+ print <<EOF
+extern __typeof ($symbol) $alias __attribute((visibility("hidden")))$attributes;
+\#define $symbol $alias
+
+EOF
+ }
+ else
+ {
+ print <<EOF
+\#undef $symbol
+extern __typeof ($symbol) $symbol __attribute((alias("$alias"), visibility("default")));
+
+EOF
+ }
+ }
+
+print <<EOF;
+
+#endif /* HAVE_GNUC_VISIBILITY */
+EOF
+
+
Property changes on: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/make-thunar-vfs-alias.pl
___________________________________________________________________
Name: svn:executable
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-1.pc.in
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-1.pc.in 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-1.pc.in 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: thunar-vfs
+Description: ThunarVFS library
+Requires: exo-0.3
+Version: @PACKAGE_VERSION@
+Libs: -L${libdir} -lthunar-vfs- at THUNAR_VERSION_API@
+Cflags: -I${includedir}/thunar-vfs- at THUNAR_VERSION_API@
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-alias.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-alias.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-alias.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,477 @@
+/* Generated by make-thunar-vfs-alias.pl. Do not edit this file. */
+
+#ifdef HAVE_GNUC_VISIBILITY
+
+#include <glib.h>
+
+#define IN_HEADER defined
+#define IN_SOURCE(x) 1
+
+#if IN_HEADER(__THUNAR_VFS_H__)
+#if IN_SOURCE(__THUNAR_VFS_C__)
+extern __typeof (thunar_vfs_init) IA__thunar_vfs_init __attribute((visibility("hidden")));
+#define thunar_vfs_init IA__thunar_vfs_init
+
+extern __typeof (thunar_vfs_shutdown) IA__thunar_vfs_shutdown __attribute((visibility("hidden")));
+#define thunar_vfs_shutdown IA__thunar_vfs_shutdown
+
+extern __typeof (thunar_vfs_listdir) IA__thunar_vfs_listdir __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define thunar_vfs_listdir IA__thunar_vfs_listdir
+
+extern __typeof (thunar_vfs_copy_file) IA__thunar_vfs_copy_file __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define thunar_vfs_copy_file IA__thunar_vfs_copy_file
+
+extern __typeof (thunar_vfs_copy_files) IA__thunar_vfs_copy_files __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define thunar_vfs_copy_files IA__thunar_vfs_copy_files
+
+extern __typeof (thunar_vfs_link_file) IA__thunar_vfs_link_file __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define thunar_vfs_link_file IA__thunar_vfs_link_file
+
+extern __typeof (thunar_vfs_link_files) IA__thunar_vfs_link_files __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define thunar_vfs_link_files IA__thunar_vfs_link_files
+
+extern __typeof (thunar_vfs_move_file) IA__thunar_vfs_move_file __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define thunar_vfs_move_file IA__thunar_vfs_move_file
+
+extern __typeof (thunar_vfs_move_files) IA__thunar_vfs_move_files __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define thunar_vfs_move_files IA__thunar_vfs_move_files
+
+extern __typeof (thunar_vfs_unlink_file) IA__thunar_vfs_unlink_file __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define thunar_vfs_unlink_file IA__thunar_vfs_unlink_file
+
+extern __typeof (thunar_vfs_unlink_files) IA__thunar_vfs_unlink_files __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define thunar_vfs_unlink_files IA__thunar_vfs_unlink_files
+
+extern __typeof (thunar_vfs_make_directory) IA__thunar_vfs_make_directory __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define thunar_vfs_make_directory IA__thunar_vfs_make_directory
+
+extern __typeof (thunar_vfs_make_directories) IA__thunar_vfs_make_directories __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define thunar_vfs_make_directories IA__thunar_vfs_make_directories
+
+#endif
+#endif
+#if IN_HEADER(__THUNAR_VFS_CONFIG_H__)
+#if IN_SOURCE(__THUNAR_VFS_CONFIG_C__)
+extern __typeof (thunar_vfs_major_version) IA__thunar_vfs_major_version __attribute((visibility("hidden")));
+#define thunar_vfs_major_version IA__thunar_vfs_major_version
+
+extern __typeof (thunar_vfs_minor_version) IA__thunar_vfs_minor_version __attribute((visibility("hidden")));
+#define thunar_vfs_minor_version IA__thunar_vfs_minor_version
+
+extern __typeof (thunar_vfs_micro_version) IA__thunar_vfs_micro_version __attribute((visibility("hidden")));
+#define thunar_vfs_micro_version IA__thunar_vfs_micro_version
+
+extern __typeof (thunar_vfs_check_version) IA__thunar_vfs_check_version __attribute((visibility("hidden")));
+#define thunar_vfs_check_version IA__thunar_vfs_check_version
+
+#endif
+#endif
+#if IN_HEADER(__THUNAR_VFS_INFO_H__)
+#if IN_SOURCE(__THUNAR_VFS_INFO_C__)
+extern __typeof (thunar_vfs_info_get_type) IA__thunar_vfs_info_get_type __attribute((visibility("hidden")));
+#define thunar_vfs_info_get_type IA__thunar_vfs_info_get_type
+
+extern __typeof (thunar_vfs_info_new_for_path) IA__thunar_vfs_info_new_for_path __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define thunar_vfs_info_new_for_path IA__thunar_vfs_info_new_for_path
+
+extern __typeof (thunar_vfs_info_unref) IA__thunar_vfs_info_unref __attribute((visibility("hidden")));
+#define thunar_vfs_info_unref IA__thunar_vfs_info_unref
+
+extern __typeof (thunar_vfs_info_copy) IA__thunar_vfs_info_copy __attribute((visibility("hidden")));
+#define thunar_vfs_info_copy IA__thunar_vfs_info_copy
+
+extern __typeof (thunar_vfs_info_execute) IA__thunar_vfs_info_execute __attribute((visibility("hidden")));
+#define thunar_vfs_info_execute IA__thunar_vfs_info_execute
+
+extern __typeof (thunar_vfs_info_rename) IA__thunar_vfs_info_rename __attribute((visibility("hidden")));
+#define thunar_vfs_info_rename IA__thunar_vfs_info_rename
+
+extern __typeof (thunar_vfs_info_matches) IA__thunar_vfs_info_matches __attribute((visibility("hidden")));
+#define thunar_vfs_info_matches IA__thunar_vfs_info_matches
+
+#endif
+#endif
+#if IN_HEADER(__THUNAR_VFS_ENUM_TYPES_H__)
+#if IN_SOURCE(__THUNAR_VFS_ENUM_TYPES_C__)
+extern __typeof (thunar_vfs_file_flags_get_type) IA__thunar_vfs_file_flags_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define thunar_vfs_file_flags_get_type IA__thunar_vfs_file_flags_get_type
+
+extern __typeof (thunar_vfs_file_mode_get_type) IA__thunar_vfs_file_mode_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define thunar_vfs_file_mode_get_type IA__thunar_vfs_file_mode_get_type
+
+extern __typeof (thunar_vfs_file_type_get_type) IA__thunar_vfs_file_type_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define thunar_vfs_file_type_get_type IA__thunar_vfs_file_type_get_type
+
+extern __typeof (thunar_vfs_interactive_job_response_get_type) IA__thunar_vfs_interactive_job_response_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define thunar_vfs_interactive_job_response_get_type IA__thunar_vfs_interactive_job_response_get_type
+
+extern __typeof (thunar_vfs_mime_application_error_get_type) IA__thunar_vfs_mime_application_error_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define thunar_vfs_mime_application_error_get_type IA__thunar_vfs_mime_application_error_get_type
+
+extern __typeof (thunar_vfs_mime_application_flags_get_type) IA__thunar_vfs_mime_application_flags_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define thunar_vfs_mime_application_flags_get_type IA__thunar_vfs_mime_application_flags_get_type
+
+extern __typeof (thunar_vfs_monitor_event_get_type) IA__thunar_vfs_monitor_event_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define thunar_vfs_monitor_event_get_type IA__thunar_vfs_monitor_event_get_type
+
+extern __typeof (thunar_vfs_thumb_size_get_type) IA__thunar_vfs_thumb_size_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define thunar_vfs_thumb_size_get_type IA__thunar_vfs_thumb_size_get_type
+
+extern __typeof (thunar_vfs_volume_kind_get_type) IA__thunar_vfs_volume_kind_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define thunar_vfs_volume_kind_get_type IA__thunar_vfs_volume_kind_get_type
+
+extern __typeof (thunar_vfs_volume_status_get_type) IA__thunar_vfs_volume_status_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define thunar_vfs_volume_status_get_type IA__thunar_vfs_volume_status_get_type
+
+#endif
+#endif
+#if IN_HEADER(__THUNAR_VFS_INTERACTIVE_JOB_H__)
+#if IN_SOURCE(__THUNAR_VFS_INTERACTIVE_JOB_C__)
+extern __typeof (thunar_vfs_interactive_job_get_type) IA__thunar_vfs_interactive_job_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define thunar_vfs_interactive_job_get_type IA__thunar_vfs_interactive_job_get_type
+
+#endif
+#endif
+#if IN_HEADER(__THUNAR_VFS_JOB_H__)
+#if IN_SOURCE(__THUNAR_VFS_JOB_C__)
+extern __typeof (thunar_vfs_job_get_type) IA__thunar_vfs_job_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define thunar_vfs_job_get_type IA__thunar_vfs_job_get_type
+
+extern __typeof (thunar_vfs_job_launch) IA__thunar_vfs_job_launch __attribute((visibility("hidden")));
+#define thunar_vfs_job_launch IA__thunar_vfs_job_launch
+
+extern __typeof (thunar_vfs_job_cancel) IA__thunar_vfs_job_cancel __attribute((visibility("hidden")));
+#define thunar_vfs_job_cancel IA__thunar_vfs_job_cancel
+
+#endif
+#endif
+#if IN_HEADER(__THUNAR_VFS_MIME_APPLICATION_H__)
+#if IN_SOURCE(__THUNAR_VFS_MIME_APPLICATION_C__)
+extern __typeof (thunar_vfs_mime_application_error_quark) IA__thunar_vfs_mime_application_error_quark __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define thunar_vfs_mime_application_error_quark IA__thunar_vfs_mime_application_error_quark
+
+extern __typeof (thunar_vfs_mime_application_get_type) IA__thunar_vfs_mime_application_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define thunar_vfs_mime_application_get_type IA__thunar_vfs_mime_application_get_type
+
+extern __typeof (thunar_vfs_mime_application_new_from_desktop_id) IA__thunar_vfs_mime_application_new_from_desktop_id __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define thunar_vfs_mime_application_new_from_desktop_id IA__thunar_vfs_mime_application_new_from_desktop_id
+
+extern __typeof (thunar_vfs_mime_application_new_from_file) IA__thunar_vfs_mime_application_new_from_file __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define thunar_vfs_mime_application_new_from_file IA__thunar_vfs_mime_application_new_from_file
+
+extern __typeof (thunar_vfs_mime_application_ref) IA__thunar_vfs_mime_application_ref __attribute((visibility("hidden")));
+#define thunar_vfs_mime_application_ref IA__thunar_vfs_mime_application_ref
+
+extern __typeof (thunar_vfs_mime_application_unref) IA__thunar_vfs_mime_application_unref __attribute((visibility("hidden")));
+#define thunar_vfs_mime_application_unref IA__thunar_vfs_mime_application_unref
+
+extern __typeof (thunar_vfs_mime_application_get_command) IA__thunar_vfs_mime_application_get_command __attribute((visibility("hidden")));
+#define thunar_vfs_mime_application_get_command IA__thunar_vfs_mime_application_get_command
+
+extern __typeof (thunar_vfs_mime_application_get_desktop_id) IA__thunar_vfs_mime_application_get_desktop_id __attribute((visibility("hidden")));
+#define thunar_vfs_mime_application_get_desktop_id IA__thunar_vfs_mime_application_get_desktop_id
+
+extern __typeof (thunar_vfs_mime_application_get_flags) IA__thunar_vfs_mime_application_get_flags __attribute((visibility("hidden")));
+#define thunar_vfs_mime_application_get_flags IA__thunar_vfs_mime_application_get_flags
+
+extern __typeof (thunar_vfs_mime_application_get_name) IA__thunar_vfs_mime_application_get_name __attribute((visibility("hidden")));
+#define thunar_vfs_mime_application_get_name IA__thunar_vfs_mime_application_get_name
+
+extern __typeof (thunar_vfs_mime_application_get_mime_types) IA__thunar_vfs_mime_application_get_mime_types __attribute((visibility("hidden")));
+#define thunar_vfs_mime_application_get_mime_types IA__thunar_vfs_mime_application_get_mime_types
+
+extern __typeof (thunar_vfs_mime_application_exec) IA__thunar_vfs_mime_application_exec __attribute((visibility("hidden")));
+#define thunar_vfs_mime_application_exec IA__thunar_vfs_mime_application_exec
+
+extern __typeof (thunar_vfs_mime_application_exec_with_env) IA__thunar_vfs_mime_application_exec_with_env __attribute((visibility("hidden")));
+#define thunar_vfs_mime_application_exec_with_env IA__thunar_vfs_mime_application_exec_with_env
+
+extern __typeof (thunar_vfs_mime_application_lookup_icon_name) IA__thunar_vfs_mime_application_lookup_icon_name __attribute((visibility("hidden")));
+#define thunar_vfs_mime_application_lookup_icon_name IA__thunar_vfs_mime_application_lookup_icon_name
+
+extern __typeof (thunar_vfs_mime_application_hash) IA__thunar_vfs_mime_application_hash __attribute((visibility("hidden")));
+#define thunar_vfs_mime_application_hash IA__thunar_vfs_mime_application_hash
+
+extern __typeof (thunar_vfs_mime_application_equal) IA__thunar_vfs_mime_application_equal __attribute((visibility("hidden")));
+#define thunar_vfs_mime_application_equal IA__thunar_vfs_mime_application_equal
+
+#endif
+#endif
+#if IN_HEADER(__THUNAR_VFS_MIME_DATABASE_H__)
+#if IN_SOURCE(__THUNAR_VFS_MIME_DATABASE_C__)
+extern __typeof (thunar_vfs_mime_database_get_type) IA__thunar_vfs_mime_database_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define thunar_vfs_mime_database_get_type IA__thunar_vfs_mime_database_get_type
+
+extern __typeof (thunar_vfs_mime_database_get_default) IA__thunar_vfs_mime_database_get_default __attribute((visibility("hidden")));
+#define thunar_vfs_mime_database_get_default IA__thunar_vfs_mime_database_get_default
+
+extern __typeof (thunar_vfs_mime_database_get_info) IA__thunar_vfs_mime_database_get_info __attribute((visibility("hidden")));
+#define thunar_vfs_mime_database_get_info IA__thunar_vfs_mime_database_get_info
+
+extern __typeof (thunar_vfs_mime_database_get_info_for_data) IA__thunar_vfs_mime_database_get_info_for_data __attribute((visibility("hidden")));
+#define thunar_vfs_mime_database_get_info_for_data IA__thunar_vfs_mime_database_get_info_for_data
+
+extern __typeof (thunar_vfs_mime_database_get_info_for_name) IA__thunar_vfs_mime_database_get_info_for_name __attribute((visibility("hidden")));
+#define thunar_vfs_mime_database_get_info_for_name IA__thunar_vfs_mime_database_get_info_for_name
+
+extern __typeof (thunar_vfs_mime_database_get_info_for_file) IA__thunar_vfs_mime_database_get_info_for_file __attribute((visibility("hidden")));
+#define thunar_vfs_mime_database_get_info_for_file IA__thunar_vfs_mime_database_get_info_for_file
+
+extern __typeof (thunar_vfs_mime_database_get_infos_for_info) IA__thunar_vfs_mime_database_get_infos_for_info __attribute((visibility("hidden")));
+#define thunar_vfs_mime_database_get_infos_for_info IA__thunar_vfs_mime_database_get_infos_for_info
+
+extern __typeof (thunar_vfs_mime_database_get_applications) IA__thunar_vfs_mime_database_get_applications __attribute((visibility("hidden")));
+#define thunar_vfs_mime_database_get_applications IA__thunar_vfs_mime_database_get_applications
+
+extern __typeof (thunar_vfs_mime_database_get_default_application) IA__thunar_vfs_mime_database_get_default_application __attribute((visibility("hidden")));
+#define thunar_vfs_mime_database_get_default_application IA__thunar_vfs_mime_database_get_default_application
+
+extern __typeof (thunar_vfs_mime_database_set_default_application) IA__thunar_vfs_mime_database_set_default_application __attribute((visibility("hidden")));
+#define thunar_vfs_mime_database_set_default_application IA__thunar_vfs_mime_database_set_default_application
+
+extern __typeof (thunar_vfs_mime_database_add_application) IA__thunar_vfs_mime_database_add_application __attribute((visibility("hidden")));
+#define thunar_vfs_mime_database_add_application IA__thunar_vfs_mime_database_add_application
+
+#endif
+#endif
+#if IN_HEADER(__THUNAR_VFS_MIME_INFO_H__)
+#if IN_SOURCE(__THUNAR_VFS_MIME_INFO_C__)
+extern __typeof (thunar_vfs_mime_info_get_type) IA__thunar_vfs_mime_info_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define thunar_vfs_mime_info_get_type IA__thunar_vfs_mime_info_get_type
+
+extern __typeof (thunar_vfs_mime_info_new) IA__thunar_vfs_mime_info_new __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define thunar_vfs_mime_info_new IA__thunar_vfs_mime_info_new
+
+extern __typeof (thunar_vfs_mime_info_unref) IA__thunar_vfs_mime_info_unref __attribute((visibility("hidden")));
+#define thunar_vfs_mime_info_unref IA__thunar_vfs_mime_info_unref
+
+extern __typeof (thunar_vfs_mime_info_get_comment) IA__thunar_vfs_mime_info_get_comment __attribute((visibility("hidden")));
+#define thunar_vfs_mime_info_get_comment IA__thunar_vfs_mime_info_get_comment
+
+extern __typeof (thunar_vfs_mime_info_get_media) IA__thunar_vfs_mime_info_get_media __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define thunar_vfs_mime_info_get_media IA__thunar_vfs_mime_info_get_media
+
+extern __typeof (thunar_vfs_mime_info_get_subtype) IA__thunar_vfs_mime_info_get_subtype __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define thunar_vfs_mime_info_get_subtype IA__thunar_vfs_mime_info_get_subtype
+
+extern __typeof (thunar_vfs_mime_info_hash) IA__thunar_vfs_mime_info_hash __attribute((visibility("hidden")));
+#define thunar_vfs_mime_info_hash IA__thunar_vfs_mime_info_hash
+
+extern __typeof (thunar_vfs_mime_info_equal) IA__thunar_vfs_mime_info_equal __attribute((visibility("hidden")));
+#define thunar_vfs_mime_info_equal IA__thunar_vfs_mime_info_equal
+
+extern __typeof (thunar_vfs_mime_info_lookup_icon_name) IA__thunar_vfs_mime_info_lookup_icon_name __attribute((visibility("hidden")));
+#define thunar_vfs_mime_info_lookup_icon_name IA__thunar_vfs_mime_info_lookup_icon_name
+
+#endif
+#endif
+#if IN_HEADER(__THUNAR_VFS_MONITOR_H__)
+#if IN_SOURCE(__THUNAR_VFS_MONITOR_C__)
+extern __typeof (thunar_vfs_monitor_get_type) IA__thunar_vfs_monitor_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define thunar_vfs_monitor_get_type IA__thunar_vfs_monitor_get_type
+
+extern __typeof (thunar_vfs_monitor_get_default) IA__thunar_vfs_monitor_get_default __attribute((visibility("hidden")));
+#define thunar_vfs_monitor_get_default IA__thunar_vfs_monitor_get_default
+
+extern __typeof (thunar_vfs_monitor_add_directory) IA__thunar_vfs_monitor_add_directory __attribute((visibility("hidden")));
+#define thunar_vfs_monitor_add_directory IA__thunar_vfs_monitor_add_directory
+
+extern __typeof (thunar_vfs_monitor_add_file) IA__thunar_vfs_monitor_add_file __attribute((visibility("hidden")));
+#define thunar_vfs_monitor_add_file IA__thunar_vfs_monitor_add_file
+
+extern __typeof (thunar_vfs_monitor_remove) IA__thunar_vfs_monitor_remove __attribute((visibility("hidden")));
+#define thunar_vfs_monitor_remove IA__thunar_vfs_monitor_remove
+
+extern __typeof (thunar_vfs_monitor_feed) IA__thunar_vfs_monitor_feed __attribute((visibility("hidden")));
+#define thunar_vfs_monitor_feed IA__thunar_vfs_monitor_feed
+
+extern __typeof (thunar_vfs_monitor_wait) IA__thunar_vfs_monitor_wait __attribute((visibility("hidden")));
+#define thunar_vfs_monitor_wait IA__thunar_vfs_monitor_wait
+
+#endif
+#endif
+#if IN_HEADER(__THUNAR_VFS_PATH_H__)
+#if IN_SOURCE(__THUNAR_VFS_PATH_C__)
+extern __typeof (thunar_vfs_path_get_type) IA__thunar_vfs_path_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define thunar_vfs_path_get_type IA__thunar_vfs_path_get_type
+
+extern __typeof (thunar_vfs_path_new) IA__thunar_vfs_path_new __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define thunar_vfs_path_new IA__thunar_vfs_path_new
+
+extern __typeof (thunar_vfs_path_get_for_home) IA__thunar_vfs_path_get_for_home __attribute((visibility("hidden")));
+#define thunar_vfs_path_get_for_home IA__thunar_vfs_path_get_for_home
+
+extern __typeof (thunar_vfs_path_get_for_root) IA__thunar_vfs_path_get_for_root __attribute((visibility("hidden")));
+#define thunar_vfs_path_get_for_root IA__thunar_vfs_path_get_for_root
+
+extern __typeof (thunar_vfs_path_unref) IA__thunar_vfs_path_unref __attribute((visibility("hidden")));
+#define thunar_vfs_path_unref IA__thunar_vfs_path_unref
+
+extern __typeof (thunar_vfs_path_hash) IA__thunar_vfs_path_hash __attribute((visibility("hidden")));
+#define thunar_vfs_path_hash IA__thunar_vfs_path_hash
+
+extern __typeof (thunar_vfs_path_equal) IA__thunar_vfs_path_equal __attribute((visibility("hidden")));
+#define thunar_vfs_path_equal IA__thunar_vfs_path_equal
+
+extern __typeof (thunar_vfs_path_relative) IA__thunar_vfs_path_relative __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define thunar_vfs_path_relative IA__thunar_vfs_path_relative
+
+extern __typeof (thunar_vfs_path_is_home) IA__thunar_vfs_path_is_home __attribute((visibility("hidden")));
+#define thunar_vfs_path_is_home IA__thunar_vfs_path_is_home
+
+extern __typeof (thunar_vfs_path_dup_string) IA__thunar_vfs_path_dup_string __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define thunar_vfs_path_dup_string IA__thunar_vfs_path_dup_string
+
+extern __typeof (thunar_vfs_path_to_string) IA__thunar_vfs_path_to_string __attribute((visibility("hidden")));
+#define thunar_vfs_path_to_string IA__thunar_vfs_path_to_string
+
+extern __typeof (thunar_vfs_path_dup_uri) IA__thunar_vfs_path_dup_uri __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define thunar_vfs_path_dup_uri IA__thunar_vfs_path_dup_uri
+
+extern __typeof (thunar_vfs_path_to_uri) IA__thunar_vfs_path_to_uri __attribute((visibility("hidden")));
+#define thunar_vfs_path_to_uri IA__thunar_vfs_path_to_uri
+
+extern __typeof (thunar_vfs_path_list_from_string) IA__thunar_vfs_path_list_from_string __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define thunar_vfs_path_list_from_string IA__thunar_vfs_path_list_from_string
+
+extern __typeof (thunar_vfs_path_list_to_string) IA__thunar_vfs_path_list_to_string __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define thunar_vfs_path_list_to_string IA__thunar_vfs_path_list_to_string
+
+#endif
+#endif
+#if IN_HEADER(__THUNAR_VFS_THUMB_H__)
+#if IN_SOURCE(__THUNAR_VFS_THUMB_C__)
+extern __typeof (thunar_vfs_thumb_factory_get_type) IA__thunar_vfs_thumb_factory_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define thunar_vfs_thumb_factory_get_type IA__thunar_vfs_thumb_factory_get_type
+
+extern __typeof (thunar_vfs_thumb_factory_new) IA__thunar_vfs_thumb_factory_new __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define thunar_vfs_thumb_factory_new IA__thunar_vfs_thumb_factory_new
+
+extern __typeof (thunar_vfs_thumb_factory_lookup_thumbnail) IA__thunar_vfs_thumb_factory_lookup_thumbnail __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define thunar_vfs_thumb_factory_lookup_thumbnail IA__thunar_vfs_thumb_factory_lookup_thumbnail
+
+extern __typeof (thunar_vfs_thumb_factory_can_thumbnail) IA__thunar_vfs_thumb_factory_can_thumbnail __attribute((visibility("hidden")));
+#define thunar_vfs_thumb_factory_can_thumbnail IA__thunar_vfs_thumb_factory_can_thumbnail
+
+extern __typeof (thunar_vfs_thumb_factory_has_failed_thumbnail) IA__thunar_vfs_thumb_factory_has_failed_thumbnail __attribute((visibility("hidden")));
+#define thunar_vfs_thumb_factory_has_failed_thumbnail IA__thunar_vfs_thumb_factory_has_failed_thumbnail
+
+extern __typeof (thunar_vfs_thumb_factory_generate_thumbnail) IA__thunar_vfs_thumb_factory_generate_thumbnail __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define thunar_vfs_thumb_factory_generate_thumbnail IA__thunar_vfs_thumb_factory_generate_thumbnail
+
+extern __typeof (thunar_vfs_thumb_factory_store_thumbnail) IA__thunar_vfs_thumb_factory_store_thumbnail __attribute((visibility("hidden")));
+#define thunar_vfs_thumb_factory_store_thumbnail IA__thunar_vfs_thumb_factory_store_thumbnail
+
+#endif
+#endif
+#if IN_HEADER(__THUNAR_VFS_THUMB_H__)
+#if IN_SOURCE(__THUNAR_VFS_THUMB_C__)
+extern __typeof (thunar_vfs_thumbnail_for_path) IA__thunar_vfs_thumbnail_for_path __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define thunar_vfs_thumbnail_for_path IA__thunar_vfs_thumbnail_for_path
+
+extern __typeof (thunar_vfs_thumbnail_is_valid) IA__thunar_vfs_thumbnail_is_valid __attribute((visibility("hidden")));
+#define thunar_vfs_thumbnail_is_valid IA__thunar_vfs_thumbnail_is_valid
+
+#endif
+#endif
+#if IN_HEADER(__THUNAR_VFS_USER_H__)
+#if IN_SOURCE(__THUNAR_VFS_USER_C__)
+extern __typeof (thunar_vfs_group_get_type) IA__thunar_vfs_group_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define thunar_vfs_group_get_type IA__thunar_vfs_group_get_type
+
+extern __typeof (thunar_vfs_group_get_id) IA__thunar_vfs_group_get_id __attribute((visibility("hidden")));
+#define thunar_vfs_group_get_id IA__thunar_vfs_group_get_id
+
+extern __typeof (thunar_vfs_group_get_name) IA__thunar_vfs_group_get_name __attribute((visibility("hidden")));
+#define thunar_vfs_group_get_name IA__thunar_vfs_group_get_name
+
+extern __typeof (thunar_vfs_user_get_type) IA__thunar_vfs_user_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define thunar_vfs_user_get_type IA__thunar_vfs_user_get_type
+
+extern __typeof (thunar_vfs_user_get_groups) IA__thunar_vfs_user_get_groups __attribute((visibility("hidden")));
+#define thunar_vfs_user_get_groups IA__thunar_vfs_user_get_groups
+
+extern __typeof (thunar_vfs_user_get_primary_group) IA__thunar_vfs_user_get_primary_group __attribute((visibility("hidden")));
+#define thunar_vfs_user_get_primary_group IA__thunar_vfs_user_get_primary_group
+
+extern __typeof (thunar_vfs_user_get_id) IA__thunar_vfs_user_get_id __attribute((visibility("hidden")));
+#define thunar_vfs_user_get_id IA__thunar_vfs_user_get_id
+
+extern __typeof (thunar_vfs_user_get_name) IA__thunar_vfs_user_get_name __attribute((visibility("hidden")));
+#define thunar_vfs_user_get_name IA__thunar_vfs_user_get_name
+
+extern __typeof (thunar_vfs_user_get_real_name) IA__thunar_vfs_user_get_real_name __attribute((visibility("hidden")));
+#define thunar_vfs_user_get_real_name IA__thunar_vfs_user_get_real_name
+
+extern __typeof (thunar_vfs_user_is_me) IA__thunar_vfs_user_is_me __attribute((visibility("hidden")));
+#define thunar_vfs_user_is_me IA__thunar_vfs_user_is_me
+
+extern __typeof (thunar_vfs_user_manager_get_type) IA__thunar_vfs_user_manager_get_type __attribute((visibility("hidden")));
+#define thunar_vfs_user_manager_get_type IA__thunar_vfs_user_manager_get_type
+
+extern __typeof (thunar_vfs_user_manager_get_default) IA__thunar_vfs_user_manager_get_default __attribute((visibility("hidden")));
+#define thunar_vfs_user_manager_get_default IA__thunar_vfs_user_manager_get_default
+
+extern __typeof (thunar_vfs_user_manager_get_group_by_id) IA__thunar_vfs_user_manager_get_group_by_id __attribute((visibility("hidden")));
+#define thunar_vfs_user_manager_get_group_by_id IA__thunar_vfs_user_manager_get_group_by_id
+
+extern __typeof (thunar_vfs_user_manager_get_user_by_id) IA__thunar_vfs_user_manager_get_user_by_id __attribute((visibility("hidden")));
+#define thunar_vfs_user_manager_get_user_by_id IA__thunar_vfs_user_manager_get_user_by_id
+
+#endif
+#endif
+#if IN_HEADER(__THUNAR_VFS_UTIL_H__)
+#if IN_SOURCE(__THUNAR_VFS_UTIL_C__)
+extern __typeof (thunar_vfs_humanize_size) IA__thunar_vfs_humanize_size __attribute((visibility("hidden")));
+#define thunar_vfs_humanize_size IA__thunar_vfs_humanize_size
+
+#endif
+#endif
+#if IN_HEADER(__THUNAR_VFS_VOLUME_H__)
+#if IN_SOURCE(__THUNAR_VFS_VOLUME_C__)
+extern __typeof (thunar_vfs_volume_get_type) IA__thunar_vfs_volume_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define thunar_vfs_volume_get_type IA__thunar_vfs_volume_get_type
+
+extern __typeof (thunar_vfs_volume_get_kind) IA__thunar_vfs_volume_get_kind __attribute((visibility("hidden")));
+#define thunar_vfs_volume_get_kind IA__thunar_vfs_volume_get_kind
+
+extern __typeof (thunar_vfs_volume_get_name) IA__thunar_vfs_volume_get_name __attribute((visibility("hidden")));
+#define thunar_vfs_volume_get_name IA__thunar_vfs_volume_get_name
+
+extern __typeof (thunar_vfs_volume_get_status) IA__thunar_vfs_volume_get_status __attribute((visibility("hidden")));
+#define thunar_vfs_volume_get_status IA__thunar_vfs_volume_get_status
+
+extern __typeof (thunar_vfs_volume_get_mount_point) IA__thunar_vfs_volume_get_mount_point __attribute((visibility("hidden")));
+#define thunar_vfs_volume_get_mount_point IA__thunar_vfs_volume_get_mount_point
+
+extern __typeof (thunar_vfs_volume_is_mounted) IA__thunar_vfs_volume_is_mounted __attribute((visibility("hidden")));
+#define thunar_vfs_volume_is_mounted IA__thunar_vfs_volume_is_mounted
+
+extern __typeof (thunar_vfs_volume_is_present) IA__thunar_vfs_volume_is_present __attribute((visibility("hidden")));
+#define thunar_vfs_volume_is_present IA__thunar_vfs_volume_is_present
+
+extern __typeof (thunar_vfs_volume_is_removable) IA__thunar_vfs_volume_is_removable __attribute((visibility("hidden")));
+#define thunar_vfs_volume_is_removable IA__thunar_vfs_volume_is_removable
+
+extern __typeof (thunar_vfs_volume_get_free_space) IA__thunar_vfs_volume_get_free_space __attribute((visibility("hidden")));
+#define thunar_vfs_volume_get_free_space IA__thunar_vfs_volume_get_free_space
+
+extern __typeof (thunar_vfs_volume_lookup_icon_name) IA__thunar_vfs_volume_lookup_icon_name __attribute((visibility("hidden")));
+#define thunar_vfs_volume_lookup_icon_name IA__thunar_vfs_volume_lookup_icon_name
+
+extern __typeof (thunar_vfs_volume_manager_get_type) IA__thunar_vfs_volume_manager_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define thunar_vfs_volume_manager_get_type IA__thunar_vfs_volume_manager_get_type
+
+extern __typeof (thunar_vfs_volume_manager_get_default) IA__thunar_vfs_volume_manager_get_default __attribute((visibility("hidden")));
+#define thunar_vfs_volume_manager_get_default IA__thunar_vfs_volume_manager_get_default
+
+extern __typeof (thunar_vfs_volume_manager_get_volume_by_info) IA__thunar_vfs_volume_manager_get_volume_by_info __attribute((visibility("hidden")));
+#define thunar_vfs_volume_manager_get_volume_by_info IA__thunar_vfs_volume_manager_get_volume_by_info
+
+extern __typeof (thunar_vfs_volume_manager_get_volumes) IA__thunar_vfs_volume_manager_get_volumes __attribute((visibility("hidden")));
+#define thunar_vfs_volume_manager_get_volumes IA__thunar_vfs_volume_manager_get_volumes
+
+#endif
+#endif
+
+#endif /* HAVE_GNUC_VISIBILITY */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-aliasdef.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-aliasdef.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-aliasdef.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,480 @@
+/* Generated by make-thunar-vfs-alias.pl. Do not edit this file. */
+
+#ifdef HAVE_GNUC_VISIBILITY
+
+#include <glib.h>
+
+#undef IN_HEADER
+#define IN_HEADER(x) 1
+
+#undef IN_SOURCE
+#define IN_SOURCE defined
+
+#if IN_HEADER(__THUNAR_VFS_H__)
+#if IN_SOURCE(__THUNAR_VFS_C__)
+#undef thunar_vfs_init
+extern __typeof (thunar_vfs_init) thunar_vfs_init __attribute((alias("IA__thunar_vfs_init"), visibility("default")));
+
+#undef thunar_vfs_shutdown
+extern __typeof (thunar_vfs_shutdown) thunar_vfs_shutdown __attribute((alias("IA__thunar_vfs_shutdown"), visibility("default")));
+
+#undef thunar_vfs_listdir
+extern __typeof (thunar_vfs_listdir) thunar_vfs_listdir __attribute((alias("IA__thunar_vfs_listdir"), visibility("default")));
+
+#undef thunar_vfs_copy_file
+extern __typeof (thunar_vfs_copy_file) thunar_vfs_copy_file __attribute((alias("IA__thunar_vfs_copy_file"), visibility("default")));
+
+#undef thunar_vfs_copy_files
+extern __typeof (thunar_vfs_copy_files) thunar_vfs_copy_files __attribute((alias("IA__thunar_vfs_copy_files"), visibility("default")));
+
+#undef thunar_vfs_link_file
+extern __typeof (thunar_vfs_link_file) thunar_vfs_link_file __attribute((alias("IA__thunar_vfs_link_file"), visibility("default")));
+
+#undef thunar_vfs_link_files
+extern __typeof (thunar_vfs_link_files) thunar_vfs_link_files __attribute((alias("IA__thunar_vfs_link_files"), visibility("default")));
+
+#undef thunar_vfs_move_file
+extern __typeof (thunar_vfs_move_file) thunar_vfs_move_file __attribute((alias("IA__thunar_vfs_move_file"), visibility("default")));
+
+#undef thunar_vfs_move_files
+extern __typeof (thunar_vfs_move_files) thunar_vfs_move_files __attribute((alias("IA__thunar_vfs_move_files"), visibility("default")));
+
+#undef thunar_vfs_unlink_file
+extern __typeof (thunar_vfs_unlink_file) thunar_vfs_unlink_file __attribute((alias("IA__thunar_vfs_unlink_file"), visibility("default")));
+
+#undef thunar_vfs_unlink_files
+extern __typeof (thunar_vfs_unlink_files) thunar_vfs_unlink_files __attribute((alias("IA__thunar_vfs_unlink_files"), visibility("default")));
+
+#undef thunar_vfs_make_directory
+extern __typeof (thunar_vfs_make_directory) thunar_vfs_make_directory __attribute((alias("IA__thunar_vfs_make_directory"), visibility("default")));
+
+#undef thunar_vfs_make_directories
+extern __typeof (thunar_vfs_make_directories) thunar_vfs_make_directories __attribute((alias("IA__thunar_vfs_make_directories"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__THUNAR_VFS_CONFIG_H__)
+#if IN_SOURCE(__THUNAR_VFS_CONFIG_C__)
+#undef thunar_vfs_major_version
+extern __typeof (thunar_vfs_major_version) thunar_vfs_major_version __attribute((alias("IA__thunar_vfs_major_version"), visibility("default")));
+
+#undef thunar_vfs_minor_version
+extern __typeof (thunar_vfs_minor_version) thunar_vfs_minor_version __attribute((alias("IA__thunar_vfs_minor_version"), visibility("default")));
+
+#undef thunar_vfs_micro_version
+extern __typeof (thunar_vfs_micro_version) thunar_vfs_micro_version __attribute((alias("IA__thunar_vfs_micro_version"), visibility("default")));
+
+#undef thunar_vfs_check_version
+extern __typeof (thunar_vfs_check_version) thunar_vfs_check_version __attribute((alias("IA__thunar_vfs_check_version"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__THUNAR_VFS_INFO_H__)
+#if IN_SOURCE(__THUNAR_VFS_INFO_C__)
+#undef thunar_vfs_info_get_type
+extern __typeof (thunar_vfs_info_get_type) thunar_vfs_info_get_type __attribute((alias("IA__thunar_vfs_info_get_type"), visibility("default")));
+
+#undef thunar_vfs_info_new_for_path
+extern __typeof (thunar_vfs_info_new_for_path) thunar_vfs_info_new_for_path __attribute((alias("IA__thunar_vfs_info_new_for_path"), visibility("default")));
+
+#undef thunar_vfs_info_unref
+extern __typeof (thunar_vfs_info_unref) thunar_vfs_info_unref __attribute((alias("IA__thunar_vfs_info_unref"), visibility("default")));
+
+#undef thunar_vfs_info_copy
+extern __typeof (thunar_vfs_info_copy) thunar_vfs_info_copy __attribute((alias("IA__thunar_vfs_info_copy"), visibility("default")));
+
+#undef thunar_vfs_info_execute
+extern __typeof (thunar_vfs_info_execute) thunar_vfs_info_execute __attribute((alias("IA__thunar_vfs_info_execute"), visibility("default")));
+
+#undef thunar_vfs_info_rename
+extern __typeof (thunar_vfs_info_rename) thunar_vfs_info_rename __attribute((alias("IA__thunar_vfs_info_rename"), visibility("default")));
+
+#undef thunar_vfs_info_matches
+extern __typeof (thunar_vfs_info_matches) thunar_vfs_info_matches __attribute((alias("IA__thunar_vfs_info_matches"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__THUNAR_VFS_ENUM_TYPES_H__)
+#if IN_SOURCE(__THUNAR_VFS_ENUM_TYPES_C__)
+#undef thunar_vfs_file_flags_get_type
+extern __typeof (thunar_vfs_file_flags_get_type) thunar_vfs_file_flags_get_type __attribute((alias("IA__thunar_vfs_file_flags_get_type"), visibility("default")));
+
+#undef thunar_vfs_file_mode_get_type
+extern __typeof (thunar_vfs_file_mode_get_type) thunar_vfs_file_mode_get_type __attribute((alias("IA__thunar_vfs_file_mode_get_type"), visibility("default")));
+
+#undef thunar_vfs_file_type_get_type
+extern __typeof (thunar_vfs_file_type_get_type) thunar_vfs_file_type_get_type __attribute((alias("IA__thunar_vfs_file_type_get_type"), visibility("default")));
+
+#undef thunar_vfs_interactive_job_response_get_type
+extern __typeof (thunar_vfs_interactive_job_response_get_type) thunar_vfs_interactive_job_response_get_type __attribute((alias("IA__thunar_vfs_interactive_job_response_get_type"), visibility("default")));
+
+#undef thunar_vfs_mime_application_error_get_type
+extern __typeof (thunar_vfs_mime_application_error_get_type) thunar_vfs_mime_application_error_get_type __attribute((alias("IA__thunar_vfs_mime_application_error_get_type"), visibility("default")));
+
+#undef thunar_vfs_mime_application_flags_get_type
+extern __typeof (thunar_vfs_mime_application_flags_get_type) thunar_vfs_mime_application_flags_get_type __attribute((alias("IA__thunar_vfs_mime_application_flags_get_type"), visibility("default")));
+
+#undef thunar_vfs_monitor_event_get_type
+extern __typeof (thunar_vfs_monitor_event_get_type) thunar_vfs_monitor_event_get_type __attribute((alias("IA__thunar_vfs_monitor_event_get_type"), visibility("default")));
+
+#undef thunar_vfs_thumb_size_get_type
+extern __typeof (thunar_vfs_thumb_size_get_type) thunar_vfs_thumb_size_get_type __attribute((alias("IA__thunar_vfs_thumb_size_get_type"), visibility("default")));
+
+#undef thunar_vfs_volume_kind_get_type
+extern __typeof (thunar_vfs_volume_kind_get_type) thunar_vfs_volume_kind_get_type __attribute((alias("IA__thunar_vfs_volume_kind_get_type"), visibility("default")));
+
+#undef thunar_vfs_volume_status_get_type
+extern __typeof (thunar_vfs_volume_status_get_type) thunar_vfs_volume_status_get_type __attribute((alias("IA__thunar_vfs_volume_status_get_type"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__THUNAR_VFS_INTERACTIVE_JOB_H__)
+#if IN_SOURCE(__THUNAR_VFS_INTERACTIVE_JOB_C__)
+#undef thunar_vfs_interactive_job_get_type
+extern __typeof (thunar_vfs_interactive_job_get_type) thunar_vfs_interactive_job_get_type __attribute((alias("IA__thunar_vfs_interactive_job_get_type"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__THUNAR_VFS_JOB_H__)
+#if IN_SOURCE(__THUNAR_VFS_JOB_C__)
+#undef thunar_vfs_job_get_type
+extern __typeof (thunar_vfs_job_get_type) thunar_vfs_job_get_type __attribute((alias("IA__thunar_vfs_job_get_type"), visibility("default")));
+
+#undef thunar_vfs_job_launch
+extern __typeof (thunar_vfs_job_launch) thunar_vfs_job_launch __attribute((alias("IA__thunar_vfs_job_launch"), visibility("default")));
+
+#undef thunar_vfs_job_cancel
+extern __typeof (thunar_vfs_job_cancel) thunar_vfs_job_cancel __attribute((alias("IA__thunar_vfs_job_cancel"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__THUNAR_VFS_MIME_APPLICATION_H__)
+#if IN_SOURCE(__THUNAR_VFS_MIME_APPLICATION_C__)
+#undef thunar_vfs_mime_application_error_quark
+extern __typeof (thunar_vfs_mime_application_error_quark) thunar_vfs_mime_application_error_quark __attribute((alias("IA__thunar_vfs_mime_application_error_quark"), visibility("default")));
+
+#undef thunar_vfs_mime_application_get_type
+extern __typeof (thunar_vfs_mime_application_get_type) thunar_vfs_mime_application_get_type __attribute((alias("IA__thunar_vfs_mime_application_get_type"), visibility("default")));
+
+#undef thunar_vfs_mime_application_new_from_desktop_id
+extern __typeof (thunar_vfs_mime_application_new_from_desktop_id) thunar_vfs_mime_application_new_from_desktop_id __attribute((alias("IA__thunar_vfs_mime_application_new_from_desktop_id"), visibility("default")));
+
+#undef thunar_vfs_mime_application_new_from_file
+extern __typeof (thunar_vfs_mime_application_new_from_file) thunar_vfs_mime_application_new_from_file __attribute((alias("IA__thunar_vfs_mime_application_new_from_file"), visibility("default")));
+
+#undef thunar_vfs_mime_application_ref
+extern __typeof (thunar_vfs_mime_application_ref) thunar_vfs_mime_application_ref __attribute((alias("IA__thunar_vfs_mime_application_ref"), visibility("default")));
+
+#undef thunar_vfs_mime_application_unref
+extern __typeof (thunar_vfs_mime_application_unref) thunar_vfs_mime_application_unref __attribute((alias("IA__thunar_vfs_mime_application_unref"), visibility("default")));
+
+#undef thunar_vfs_mime_application_get_command
+extern __typeof (thunar_vfs_mime_application_get_command) thunar_vfs_mime_application_get_command __attribute((alias("IA__thunar_vfs_mime_application_get_command"), visibility("default")));
+
+#undef thunar_vfs_mime_application_get_desktop_id
+extern __typeof (thunar_vfs_mime_application_get_desktop_id) thunar_vfs_mime_application_get_desktop_id __attribute((alias("IA__thunar_vfs_mime_application_get_desktop_id"), visibility("default")));
+
+#undef thunar_vfs_mime_application_get_flags
+extern __typeof (thunar_vfs_mime_application_get_flags) thunar_vfs_mime_application_get_flags __attribute((alias("IA__thunar_vfs_mime_application_get_flags"), visibility("default")));
+
+#undef thunar_vfs_mime_application_get_name
+extern __typeof (thunar_vfs_mime_application_get_name) thunar_vfs_mime_application_get_name __attribute((alias("IA__thunar_vfs_mime_application_get_name"), visibility("default")));
+
+#undef thunar_vfs_mime_application_get_mime_types
+extern __typeof (thunar_vfs_mime_application_get_mime_types) thunar_vfs_mime_application_get_mime_types __attribute((alias("IA__thunar_vfs_mime_application_get_mime_types"), visibility("default")));
+
+#undef thunar_vfs_mime_application_exec
+extern __typeof (thunar_vfs_mime_application_exec) thunar_vfs_mime_application_exec __attribute((alias("IA__thunar_vfs_mime_application_exec"), visibility("default")));
+
+#undef thunar_vfs_mime_application_exec_with_env
+extern __typeof (thunar_vfs_mime_application_exec_with_env) thunar_vfs_mime_application_exec_with_env __attribute((alias("IA__thunar_vfs_mime_application_exec_with_env"), visibility("default")));
+
+#undef thunar_vfs_mime_application_lookup_icon_name
+extern __typeof (thunar_vfs_mime_application_lookup_icon_name) thunar_vfs_mime_application_lookup_icon_name __attribute((alias("IA__thunar_vfs_mime_application_lookup_icon_name"), visibility("default")));
+
+#undef thunar_vfs_mime_application_hash
+extern __typeof (thunar_vfs_mime_application_hash) thunar_vfs_mime_application_hash __attribute((alias("IA__thunar_vfs_mime_application_hash"), visibility("default")));
+
+#undef thunar_vfs_mime_application_equal
+extern __typeof (thunar_vfs_mime_application_equal) thunar_vfs_mime_application_equal __attribute((alias("IA__thunar_vfs_mime_application_equal"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__THUNAR_VFS_MIME_DATABASE_H__)
+#if IN_SOURCE(__THUNAR_VFS_MIME_DATABASE_C__)
+#undef thunar_vfs_mime_database_get_type
+extern __typeof (thunar_vfs_mime_database_get_type) thunar_vfs_mime_database_get_type __attribute((alias("IA__thunar_vfs_mime_database_get_type"), visibility("default")));
+
+#undef thunar_vfs_mime_database_get_default
+extern __typeof (thunar_vfs_mime_database_get_default) thunar_vfs_mime_database_get_default __attribute((alias("IA__thunar_vfs_mime_database_get_default"), visibility("default")));
+
+#undef thunar_vfs_mime_database_get_info
+extern __typeof (thunar_vfs_mime_database_get_info) thunar_vfs_mime_database_get_info __attribute((alias("IA__thunar_vfs_mime_database_get_info"), visibility("default")));
+
+#undef thunar_vfs_mime_database_get_info_for_data
+extern __typeof (thunar_vfs_mime_database_get_info_for_data) thunar_vfs_mime_database_get_info_for_data __attribute((alias("IA__thunar_vfs_mime_database_get_info_for_data"), visibility("default")));
+
+#undef thunar_vfs_mime_database_get_info_for_name
+extern __typeof (thunar_vfs_mime_database_get_info_for_name) thunar_vfs_mime_database_get_info_for_name __attribute((alias("IA__thunar_vfs_mime_database_get_info_for_name"), visibility("default")));
+
+#undef thunar_vfs_mime_database_get_info_for_file
+extern __typeof (thunar_vfs_mime_database_get_info_for_file) thunar_vfs_mime_database_get_info_for_file __attribute((alias("IA__thunar_vfs_mime_database_get_info_for_file"), visibility("default")));
+
+#undef thunar_vfs_mime_database_get_infos_for_info
+extern __typeof (thunar_vfs_mime_database_get_infos_for_info) thunar_vfs_mime_database_get_infos_for_info __attribute((alias("IA__thunar_vfs_mime_database_get_infos_for_info"), visibility("default")));
+
+#undef thunar_vfs_mime_database_get_applications
+extern __typeof (thunar_vfs_mime_database_get_applications) thunar_vfs_mime_database_get_applications __attribute((alias("IA__thunar_vfs_mime_database_get_applications"), visibility("default")));
+
+#undef thunar_vfs_mime_database_get_default_application
+extern __typeof (thunar_vfs_mime_database_get_default_application) thunar_vfs_mime_database_get_default_application __attribute((alias("IA__thunar_vfs_mime_database_get_default_application"), visibility("default")));
+
+#undef thunar_vfs_mime_database_set_default_application
+extern __typeof (thunar_vfs_mime_database_set_default_application) thunar_vfs_mime_database_set_default_application __attribute((alias("IA__thunar_vfs_mime_database_set_default_application"), visibility("default")));
+
+#undef thunar_vfs_mime_database_add_application
+extern __typeof (thunar_vfs_mime_database_add_application) thunar_vfs_mime_database_add_application __attribute((alias("IA__thunar_vfs_mime_database_add_application"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__THUNAR_VFS_MIME_INFO_H__)
+#if IN_SOURCE(__THUNAR_VFS_MIME_INFO_C__)
+#undef thunar_vfs_mime_info_get_type
+extern __typeof (thunar_vfs_mime_info_get_type) thunar_vfs_mime_info_get_type __attribute((alias("IA__thunar_vfs_mime_info_get_type"), visibility("default")));
+
+#undef thunar_vfs_mime_info_new
+extern __typeof (thunar_vfs_mime_info_new) thunar_vfs_mime_info_new __attribute((alias("IA__thunar_vfs_mime_info_new"), visibility("default")));
+
+#undef thunar_vfs_mime_info_unref
+extern __typeof (thunar_vfs_mime_info_unref) thunar_vfs_mime_info_unref __attribute((alias("IA__thunar_vfs_mime_info_unref"), visibility("default")));
+
+#undef thunar_vfs_mime_info_get_comment
+extern __typeof (thunar_vfs_mime_info_get_comment) thunar_vfs_mime_info_get_comment __attribute((alias("IA__thunar_vfs_mime_info_get_comment"), visibility("default")));
+
+#undef thunar_vfs_mime_info_get_media
+extern __typeof (thunar_vfs_mime_info_get_media) thunar_vfs_mime_info_get_media __attribute((alias("IA__thunar_vfs_mime_info_get_media"), visibility("default")));
+
+#undef thunar_vfs_mime_info_get_subtype
+extern __typeof (thunar_vfs_mime_info_get_subtype) thunar_vfs_mime_info_get_subtype __attribute((alias("IA__thunar_vfs_mime_info_get_subtype"), visibility("default")));
+
+#undef thunar_vfs_mime_info_hash
+extern __typeof (thunar_vfs_mime_info_hash) thunar_vfs_mime_info_hash __attribute((alias("IA__thunar_vfs_mime_info_hash"), visibility("default")));
+
+#undef thunar_vfs_mime_info_equal
+extern __typeof (thunar_vfs_mime_info_equal) thunar_vfs_mime_info_equal __attribute((alias("IA__thunar_vfs_mime_info_equal"), visibility("default")));
+
+#undef thunar_vfs_mime_info_lookup_icon_name
+extern __typeof (thunar_vfs_mime_info_lookup_icon_name) thunar_vfs_mime_info_lookup_icon_name __attribute((alias("IA__thunar_vfs_mime_info_lookup_icon_name"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__THUNAR_VFS_MONITOR_H__)
+#if IN_SOURCE(__THUNAR_VFS_MONITOR_C__)
+#undef thunar_vfs_monitor_get_type
+extern __typeof (thunar_vfs_monitor_get_type) thunar_vfs_monitor_get_type __attribute((alias("IA__thunar_vfs_monitor_get_type"), visibility("default")));
+
+#undef thunar_vfs_monitor_get_default
+extern __typeof (thunar_vfs_monitor_get_default) thunar_vfs_monitor_get_default __attribute((alias("IA__thunar_vfs_monitor_get_default"), visibility("default")));
+
+#undef thunar_vfs_monitor_add_directory
+extern __typeof (thunar_vfs_monitor_add_directory) thunar_vfs_monitor_add_directory __attribute((alias("IA__thunar_vfs_monitor_add_directory"), visibility("default")));
+
+#undef thunar_vfs_monitor_add_file
+extern __typeof (thunar_vfs_monitor_add_file) thunar_vfs_monitor_add_file __attribute((alias("IA__thunar_vfs_monitor_add_file"), visibility("default")));
+
+#undef thunar_vfs_monitor_remove
+extern __typeof (thunar_vfs_monitor_remove) thunar_vfs_monitor_remove __attribute((alias("IA__thunar_vfs_monitor_remove"), visibility("default")));
+
+#undef thunar_vfs_monitor_feed
+extern __typeof (thunar_vfs_monitor_feed) thunar_vfs_monitor_feed __attribute((alias("IA__thunar_vfs_monitor_feed"), visibility("default")));
+
+#undef thunar_vfs_monitor_wait
+extern __typeof (thunar_vfs_monitor_wait) thunar_vfs_monitor_wait __attribute((alias("IA__thunar_vfs_monitor_wait"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__THUNAR_VFS_PATH_H__)
+#if IN_SOURCE(__THUNAR_VFS_PATH_C__)
+#undef thunar_vfs_path_get_type
+extern __typeof (thunar_vfs_path_get_type) thunar_vfs_path_get_type __attribute((alias("IA__thunar_vfs_path_get_type"), visibility("default")));
+
+#undef thunar_vfs_path_new
+extern __typeof (thunar_vfs_path_new) thunar_vfs_path_new __attribute((alias("IA__thunar_vfs_path_new"), visibility("default")));
+
+#undef thunar_vfs_path_get_for_home
+extern __typeof (thunar_vfs_path_get_for_home) thunar_vfs_path_get_for_home __attribute((alias("IA__thunar_vfs_path_get_for_home"), visibility("default")));
+
+#undef thunar_vfs_path_get_for_root
+extern __typeof (thunar_vfs_path_get_for_root) thunar_vfs_path_get_for_root __attribute((alias("IA__thunar_vfs_path_get_for_root"), visibility("default")));
+
+#undef thunar_vfs_path_unref
+extern __typeof (thunar_vfs_path_unref) thunar_vfs_path_unref __attribute((alias("IA__thunar_vfs_path_unref"), visibility("default")));
+
+#undef thunar_vfs_path_hash
+extern __typeof (thunar_vfs_path_hash) thunar_vfs_path_hash __attribute((alias("IA__thunar_vfs_path_hash"), visibility("default")));
+
+#undef thunar_vfs_path_equal
+extern __typeof (thunar_vfs_path_equal) thunar_vfs_path_equal __attribute((alias("IA__thunar_vfs_path_equal"), visibility("default")));
+
+#undef thunar_vfs_path_relative
+extern __typeof (thunar_vfs_path_relative) thunar_vfs_path_relative __attribute((alias("IA__thunar_vfs_path_relative"), visibility("default")));
+
+#undef thunar_vfs_path_is_home
+extern __typeof (thunar_vfs_path_is_home) thunar_vfs_path_is_home __attribute((alias("IA__thunar_vfs_path_is_home"), visibility("default")));
+
+#undef thunar_vfs_path_dup_string
+extern __typeof (thunar_vfs_path_dup_string) thunar_vfs_path_dup_string __attribute((alias("IA__thunar_vfs_path_dup_string"), visibility("default")));
+
+#undef thunar_vfs_path_to_string
+extern __typeof (thunar_vfs_path_to_string) thunar_vfs_path_to_string __attribute((alias("IA__thunar_vfs_path_to_string"), visibility("default")));
+
+#undef thunar_vfs_path_dup_uri
+extern __typeof (thunar_vfs_path_dup_uri) thunar_vfs_path_dup_uri __attribute((alias("IA__thunar_vfs_path_dup_uri"), visibility("default")));
+
+#undef thunar_vfs_path_to_uri
+extern __typeof (thunar_vfs_path_to_uri) thunar_vfs_path_to_uri __attribute((alias("IA__thunar_vfs_path_to_uri"), visibility("default")));
+
+#undef thunar_vfs_path_list_from_string
+extern __typeof (thunar_vfs_path_list_from_string) thunar_vfs_path_list_from_string __attribute((alias("IA__thunar_vfs_path_list_from_string"), visibility("default")));
+
+#undef thunar_vfs_path_list_to_string
+extern __typeof (thunar_vfs_path_list_to_string) thunar_vfs_path_list_to_string __attribute((alias("IA__thunar_vfs_path_list_to_string"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__THUNAR_VFS_THUMB_H__)
+#if IN_SOURCE(__THUNAR_VFS_THUMB_C__)
+#undef thunar_vfs_thumb_factory_get_type
+extern __typeof (thunar_vfs_thumb_factory_get_type) thunar_vfs_thumb_factory_get_type __attribute((alias("IA__thunar_vfs_thumb_factory_get_type"), visibility("default")));
+
+#undef thunar_vfs_thumb_factory_new
+extern __typeof (thunar_vfs_thumb_factory_new) thunar_vfs_thumb_factory_new __attribute((alias("IA__thunar_vfs_thumb_factory_new"), visibility("default")));
+
+#undef thunar_vfs_thumb_factory_lookup_thumbnail
+extern __typeof (thunar_vfs_thumb_factory_lookup_thumbnail) thunar_vfs_thumb_factory_lookup_thumbnail __attribute((alias("IA__thunar_vfs_thumb_factory_lookup_thumbnail"), visibility("default")));
+
+#undef thunar_vfs_thumb_factory_can_thumbnail
+extern __typeof (thunar_vfs_thumb_factory_can_thumbnail) thunar_vfs_thumb_factory_can_thumbnail __attribute((alias("IA__thunar_vfs_thumb_factory_can_thumbnail"), visibility("default")));
+
+#undef thunar_vfs_thumb_factory_has_failed_thumbnail
+extern __typeof (thunar_vfs_thumb_factory_has_failed_thumbnail) thunar_vfs_thumb_factory_has_failed_thumbnail __attribute((alias("IA__thunar_vfs_thumb_factory_has_failed_thumbnail"), visibility("default")));
+
+#undef thunar_vfs_thumb_factory_generate_thumbnail
+extern __typeof (thunar_vfs_thumb_factory_generate_thumbnail) thunar_vfs_thumb_factory_generate_thumbnail __attribute((alias("IA__thunar_vfs_thumb_factory_generate_thumbnail"), visibility("default")));
+
+#undef thunar_vfs_thumb_factory_store_thumbnail
+extern __typeof (thunar_vfs_thumb_factory_store_thumbnail) thunar_vfs_thumb_factory_store_thumbnail __attribute((alias("IA__thunar_vfs_thumb_factory_store_thumbnail"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__THUNAR_VFS_THUMB_H__)
+#if IN_SOURCE(__THUNAR_VFS_THUMB_C__)
+#undef thunar_vfs_thumbnail_for_path
+extern __typeof (thunar_vfs_thumbnail_for_path) thunar_vfs_thumbnail_for_path __attribute((alias("IA__thunar_vfs_thumbnail_for_path"), visibility("default")));
+
+#undef thunar_vfs_thumbnail_is_valid
+extern __typeof (thunar_vfs_thumbnail_is_valid) thunar_vfs_thumbnail_is_valid __attribute((alias("IA__thunar_vfs_thumbnail_is_valid"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__THUNAR_VFS_USER_H__)
+#if IN_SOURCE(__THUNAR_VFS_USER_C__)
+#undef thunar_vfs_group_get_type
+extern __typeof (thunar_vfs_group_get_type) thunar_vfs_group_get_type __attribute((alias("IA__thunar_vfs_group_get_type"), visibility("default")));
+
+#undef thunar_vfs_group_get_id
+extern __typeof (thunar_vfs_group_get_id) thunar_vfs_group_get_id __attribute((alias("IA__thunar_vfs_group_get_id"), visibility("default")));
+
+#undef thunar_vfs_group_get_name
+extern __typeof (thunar_vfs_group_get_name) thunar_vfs_group_get_name __attribute((alias("IA__thunar_vfs_group_get_name"), visibility("default")));
+
+#undef thunar_vfs_user_get_type
+extern __typeof (thunar_vfs_user_get_type) thunar_vfs_user_get_type __attribute((alias("IA__thunar_vfs_user_get_type"), visibility("default")));
+
+#undef thunar_vfs_user_get_groups
+extern __typeof (thunar_vfs_user_get_groups) thunar_vfs_user_get_groups __attribute((alias("IA__thunar_vfs_user_get_groups"), visibility("default")));
+
+#undef thunar_vfs_user_get_primary_group
+extern __typeof (thunar_vfs_user_get_primary_group) thunar_vfs_user_get_primary_group __attribute((alias("IA__thunar_vfs_user_get_primary_group"), visibility("default")));
+
+#undef thunar_vfs_user_get_id
+extern __typeof (thunar_vfs_user_get_id) thunar_vfs_user_get_id __attribute((alias("IA__thunar_vfs_user_get_id"), visibility("default")));
+
+#undef thunar_vfs_user_get_name
+extern __typeof (thunar_vfs_user_get_name) thunar_vfs_user_get_name __attribute((alias("IA__thunar_vfs_user_get_name"), visibility("default")));
+
+#undef thunar_vfs_user_get_real_name
+extern __typeof (thunar_vfs_user_get_real_name) thunar_vfs_user_get_real_name __attribute((alias("IA__thunar_vfs_user_get_real_name"), visibility("default")));
+
+#undef thunar_vfs_user_is_me
+extern __typeof (thunar_vfs_user_is_me) thunar_vfs_user_is_me __attribute((alias("IA__thunar_vfs_user_is_me"), visibility("default")));
+
+#undef thunar_vfs_user_manager_get_type
+extern __typeof (thunar_vfs_user_manager_get_type) thunar_vfs_user_manager_get_type __attribute((alias("IA__thunar_vfs_user_manager_get_type"), visibility("default")));
+
+#undef thunar_vfs_user_manager_get_default
+extern __typeof (thunar_vfs_user_manager_get_default) thunar_vfs_user_manager_get_default __attribute((alias("IA__thunar_vfs_user_manager_get_default"), visibility("default")));
+
+#undef thunar_vfs_user_manager_get_group_by_id
+extern __typeof (thunar_vfs_user_manager_get_group_by_id) thunar_vfs_user_manager_get_group_by_id __attribute((alias("IA__thunar_vfs_user_manager_get_group_by_id"), visibility("default")));
+
+#undef thunar_vfs_user_manager_get_user_by_id
+extern __typeof (thunar_vfs_user_manager_get_user_by_id) thunar_vfs_user_manager_get_user_by_id __attribute((alias("IA__thunar_vfs_user_manager_get_user_by_id"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__THUNAR_VFS_UTIL_H__)
+#if IN_SOURCE(__THUNAR_VFS_UTIL_C__)
+#undef thunar_vfs_humanize_size
+extern __typeof (thunar_vfs_humanize_size) thunar_vfs_humanize_size __attribute((alias("IA__thunar_vfs_humanize_size"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__THUNAR_VFS_VOLUME_H__)
+#if IN_SOURCE(__THUNAR_VFS_VOLUME_C__)
+#undef thunar_vfs_volume_get_type
+extern __typeof (thunar_vfs_volume_get_type) thunar_vfs_volume_get_type __attribute((alias("IA__thunar_vfs_volume_get_type"), visibility("default")));
+
+#undef thunar_vfs_volume_get_kind
+extern __typeof (thunar_vfs_volume_get_kind) thunar_vfs_volume_get_kind __attribute((alias("IA__thunar_vfs_volume_get_kind"), visibility("default")));
+
+#undef thunar_vfs_volume_get_name
+extern __typeof (thunar_vfs_volume_get_name) thunar_vfs_volume_get_name __attribute((alias("IA__thunar_vfs_volume_get_name"), visibility("default")));
+
+#undef thunar_vfs_volume_get_status
+extern __typeof (thunar_vfs_volume_get_status) thunar_vfs_volume_get_status __attribute((alias("IA__thunar_vfs_volume_get_status"), visibility("default")));
+
+#undef thunar_vfs_volume_get_mount_point
+extern __typeof (thunar_vfs_volume_get_mount_point) thunar_vfs_volume_get_mount_point __attribute((alias("IA__thunar_vfs_volume_get_mount_point"), visibility("default")));
+
+#undef thunar_vfs_volume_is_mounted
+extern __typeof (thunar_vfs_volume_is_mounted) thunar_vfs_volume_is_mounted __attribute((alias("IA__thunar_vfs_volume_is_mounted"), visibility("default")));
+
+#undef thunar_vfs_volume_is_present
+extern __typeof (thunar_vfs_volume_is_present) thunar_vfs_volume_is_present __attribute((alias("IA__thunar_vfs_volume_is_present"), visibility("default")));
+
+#undef thunar_vfs_volume_is_removable
+extern __typeof (thunar_vfs_volume_is_removable) thunar_vfs_volume_is_removable __attribute((alias("IA__thunar_vfs_volume_is_removable"), visibility("default")));
+
+#undef thunar_vfs_volume_get_free_space
+extern __typeof (thunar_vfs_volume_get_free_space) thunar_vfs_volume_get_free_space __attribute((alias("IA__thunar_vfs_volume_get_free_space"), visibility("default")));
+
+#undef thunar_vfs_volume_lookup_icon_name
+extern __typeof (thunar_vfs_volume_lookup_icon_name) thunar_vfs_volume_lookup_icon_name __attribute((alias("IA__thunar_vfs_volume_lookup_icon_name"), visibility("default")));
+
+#undef thunar_vfs_volume_manager_get_type
+extern __typeof (thunar_vfs_volume_manager_get_type) thunar_vfs_volume_manager_get_type __attribute((alias("IA__thunar_vfs_volume_manager_get_type"), visibility("default")));
+
+#undef thunar_vfs_volume_manager_get_default
+extern __typeof (thunar_vfs_volume_manager_get_default) thunar_vfs_volume_manager_get_default __attribute((alias("IA__thunar_vfs_volume_manager_get_default"), visibility("default")));
+
+#undef thunar_vfs_volume_manager_get_volume_by_info
+extern __typeof (thunar_vfs_volume_manager_get_volume_by_info) thunar_vfs_volume_manager_get_volume_by_info __attribute((alias("IA__thunar_vfs_volume_manager_get_volume_by_info"), visibility("default")));
+
+#undef thunar_vfs_volume_manager_get_volumes
+extern __typeof (thunar_vfs_volume_manager_get_volumes) thunar_vfs_volume_manager_get_volumes __attribute((alias("IA__thunar_vfs_volume_manager_get_volumes"), visibility("default")));
+
+#endif
+#endif
+
+#endif /* HAVE_GNUC_VISIBILITY */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-config.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-config.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-config.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,126 @@
+/* $Id: thunar-vfs-config.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <thunar-vfs/thunar-vfs-config.h>
+#include <thunar-vfs/thunar-vfs-alias.h>
+
+
+
+/**
+ * thunar_vfs_major_version:
+ *
+ * The major version number of the
+ * <systemitem class="library">thunar-vfs</systemitem> library (e.g. in
+ * version 0.5.1 this is 0).
+ *
+ * This variable is in the library, so represents the
+ * <systemitem class="library">thunar-vfs</systemitem> library you have
+ * linked against. Contrast with the #THUNAR_VFS_MAJOR_VERSION macro, which
+ * represents the major version of the
+ * <systemitem class="library">thunar-vfs</systemitem> headers you have
+ * included.
+ **/
+const guint thunar_vfs_major_version = THUNAR_VFS_MAJOR_VERSION;
+
+
+
+/**
+ * thunar_vfs_minor_version:
+ *
+ * The minor version number of the
+ * <systemitem class="library">thunar-vfs</systemitem> library (e.g. in
+ * version 0.5.1 this is 5).
+ *
+ * This variable is in the library, so represents the
+ * <systemitem class="library">thunar-vfs</systemitem> library you have
+ * linked against. Contrast with the #THUNAR_VFS_MINOR_VERSION macro, which
+ * represents the minor version of the
+ * <systemitem class="library">thunar-vfs</systemitem> headers you have
+ * included.
+ **/
+const guint thunar_vfs_minor_version = THUNAR_VFS_MINOR_VERSION;
+
+
+
+/**
+ * thunar_vfs_micro_version:
+ *
+ * The micro version number of the
+ * <systemitem class="library">thunar-vfs</systemitem> library (e.g. in
+ * version 0.5.1 this is 1).
+ *
+ * This variable is in the library, so represents the
+ * <systemitem class="library">thunar-vfs</systemitem> library you have
+ * linked against. Contrast with the #THUNAR_VFS_MICRO_VERSION macro, which
+ * represents the micro version of the
+ * <systemitem class="library">thunar-vfs</systemitem> headers you have
+ * included.
+ **/
+const guint thunar_vfs_micro_version = THUNAR_VFS_MICRO_VERSION;
+
+
+
+/**
+ * thunar_vfs_check_version:
+ * @required_major : the required major version.
+ * @required_minor : the required minor version.
+ * @required_micro : the required micro version.
+ *
+ * Checks that the <systemitem class="library">thunar-vfs</systemitem> library
+ * in use is compatible with the given version. Generally you would pass in
+ * the constants #THUNAR_VFS_MAJOR_VERSION, #THUNAR_VFS_MINOR_VERSION and
+ * #THUNAR_VFS_VERSION_MICRO as the three arguments to this function; that produces
+ * a check that the library in use is compatible with the version of
+ * <systemitem class="library">thunar-vfs</systemitem> the extension was
+ * compiled against.
+ *
+ * <example>
+ * <title>Checking the runtime version of the Thunar VFS library</title>
+ * <programlisting>
+ * const gchar *mismatch;
+ * mismatch = thunar_vfs_check_version (THUNAR_VFS_VERSION_MAJOR,
+ * THUNAR_VFS_VERSION_MINOR,
+ * THUNAR_VFS_VERSION_MICRO);
+ * if (G_UNLIKELY (mismatch != NULL))
+ * g_error ("Version mismatch: %<!---->s", mismatch);
+ * </programlisting>
+ * </example>
+ *
+ * Return value: %NULL if the library is compatible with the given version,
+ * or a string describing the version mismatch. The returned
+ * string is owned by the library and must not be freed or
+ * modified by the caller.
+ **/
+const gchar*
+thunar_vfs_check_version (guint required_major,
+ guint required_minor,
+ guint required_micro)
+{
+ return NULL;
+}
+
+
+
+#define __THUNAR_VFS_CONFIG_C__
+#include <thunar-vfs/thunar-vfs-aliasdef.c>
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-config.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-config.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-config.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,54 @@
+/* $Id$ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __THUNAR_VFS_CONFIG_H__
+#define __THUNAR_VFS_CONFIG_H__
+
+#include <exo/exo.h>
+
+#if !defined (THUNAR_VFS_INSIDE_THUNAR_VFS_H) && !defined (THUNAR_VFS_COMPILATION)
+#error "Only <thunar-vfs/thunar-vfs.h> can be included directly, this file may disappear or change contents."
+#endif
+
+G_BEGIN_DECLS;
+
+#define THUNAR_VFS_MAJOR_VERSION 0
+#define THUNAR_VFS_MINOR_VERSION 1
+#define THUNAR_VFS_MICRO_VERSION 4
+
+#define THUNAR_VFS_CHECK_VERSION(major,minor,micro) \
+ (THUNAR_VFS_MAJOR_VERSION > (major) \
+ || (THUNAR_VFS_MAJOR_VERSION == (major) \
+ && THUNAR_VFS_MINOR_VERSION > (minor)) \
+ || (THUNAR_VFS_MAJOR_VERSION == (major) \
+ && THUNAR_VFS_MINOR_VERSION == (minor) \
+ && THUNAR_VFS_MICRO_VERSION >= (micro)))
+
+extern const guint thunar_vfs_major_version;
+extern const guint thunar_vfs_minor_version;
+extern const guint thunar_vfs_micro_version;
+
+const gchar *thunar_vfs_check_version (guint required_major,
+ guint required_minor,
+ guint required_micro);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VFS_CONFIG_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-config.h.in
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-config.h.in 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-config.h.in 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,54 @@
+/* $Id$ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __THUNAR_VFS_CONFIG_H__
+#define __THUNAR_VFS_CONFIG_H__
+
+#include <exo/exo.h>
+
+#if !defined (THUNAR_VFS_INSIDE_THUNAR_VFS_H) && !defined (THUNAR_VFS_COMPILATION)
+#error "Only <thunar-vfs/thunar-vfs.h> can be included directly, this file may disappear or change contents."
+#endif
+
+G_BEGIN_DECLS;
+
+#define THUNAR_VFS_MAJOR_VERSION @THUNAR_VERSION_MAJOR@
+#define THUNAR_VFS_MINOR_VERSION @THUNAR_VERSION_MINOR@
+#define THUNAR_VFS_MICRO_VERSION @THUNAR_VERSION_MICRO@
+
+#define THUNAR_VFS_CHECK_VERSION(major,minor,micro) \
+ (THUNAR_VFS_MAJOR_VERSION > (major) \
+ || (THUNAR_VFS_MAJOR_VERSION == (major) \
+ && THUNAR_VFS_MINOR_VERSION > (minor)) \
+ || (THUNAR_VFS_MAJOR_VERSION == (major) \
+ && THUNAR_VFS_MINOR_VERSION == (minor) \
+ && THUNAR_VFS_MICRO_VERSION >= (micro)))
+
+extern const guint thunar_vfs_major_version;
+extern const guint thunar_vfs_minor_version;
+extern const guint thunar_vfs_micro_version;
+
+const gchar *thunar_vfs_check_version (guint required_major,
+ guint required_minor,
+ guint required_micro);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VFS_CONFIG_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-enum-types.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-enum-types.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-enum-types.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,193 @@
+
+/* Generated data (by glib-mkenums) */
+
+#undef GTK_DISABLE_DEPRECATED
+#define GTK_ENABLE_BROKEN
+#include <thunar-vfs/thunar-vfs.h>
+#include <thunar-vfs/thunar-vfs-alias.h>
+
+/* enumerations from "thunar-vfs-interactive-job.h" */
+GType
+thunar_vfs_interactive_job_response_get_type (void)
+{
+ static GType type = 0;
+ if (type == 0) {
+ static const GFlagsValue values[] = {
+ { THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_YES, "THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_YES", "yes" },
+ { THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_YES_ALL, "THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_YES_ALL", "yes-all" },
+ { THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_NO, "THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_NO", "no" },
+ { THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_CANCEL, "THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_CANCEL", "cancel" },
+ { 0, NULL, NULL }
+ };
+ type = g_flags_register_static ("ThunarVfsInteractiveJobResponse", values);
+ }
+ return type;
+}
+
+/* enumerations from "thunar-vfs-mime-application.h" */
+GType
+thunar_vfs_mime_application_error_get_type (void)
+{
+ static GType type = 0;
+ if (type == 0) {
+ static const GEnumValue values[] = {
+ { THUNAR_VFS_MIME_APPLICATION_ERROR_LOCAL_FILES_ONLY, "THUNAR_VFS_MIME_APPLICATION_ERROR_LOCAL_FILES_ONLY", "only" },
+ { 0, NULL, NULL }
+ };
+ type = g_enum_register_static ("ThunarVfsMimeApplicationError", values);
+ }
+ return type;
+}
+GType
+thunar_vfs_mime_application_flags_get_type (void)
+{
+ static GType type = 0;
+ if (type == 0) {
+ static const GFlagsValue values[] = {
+ { THUNAR_VFS_MIME_APPLICATION_HIDDEN, "THUNAR_VFS_MIME_APPLICATION_HIDDEN", "hidden" },
+ { THUNAR_VFS_MIME_APPLICATION_REQUIRES_TERMINAL, "THUNAR_VFS_MIME_APPLICATION_REQUIRES_TERMINAL", "requires-terminal" },
+ { THUNAR_VFS_MIME_APPLICATION_SUPPORTS_STARTUP_NOTIFY, "THUNAR_VFS_MIME_APPLICATION_SUPPORTS_STARTUP_NOTIFY", "supports-startup-notify" },
+ { THUNAR_VFS_MIME_APPLICATION_SUPPORTS_MULTI, "THUNAR_VFS_MIME_APPLICATION_SUPPORTS_MULTI", "supports-multi" },
+ { 0, NULL, NULL }
+ };
+ type = g_flags_register_static ("ThunarVfsMimeApplicationFlags", values);
+ }
+ return type;
+}
+
+/* enumerations from "thunar-vfs-monitor.h" */
+GType
+thunar_vfs_monitor_event_get_type (void)
+{
+ static GType type = 0;
+ if (type == 0) {
+ static const GEnumValue values[] = {
+ { THUNAR_VFS_MONITOR_EVENT_CHANGED, "THUNAR_VFS_MONITOR_EVENT_CHANGED", "changed" },
+ { THUNAR_VFS_MONITOR_EVENT_CREATED, "THUNAR_VFS_MONITOR_EVENT_CREATED", "created" },
+ { THUNAR_VFS_MONITOR_EVENT_DELETED, "THUNAR_VFS_MONITOR_EVENT_DELETED", "deleted" },
+ { 0, NULL, NULL }
+ };
+ type = g_enum_register_static ("ThunarVfsMonitorEvent", values);
+ }
+ return type;
+}
+
+/* enumerations from "thunar-vfs-thumb.h" */
+GType
+thunar_vfs_thumb_size_get_type (void)
+{
+ static GType type = 0;
+ if (type == 0) {
+ static const GEnumValue values[] = {
+ { THUNAR_VFS_THUMB_SIZE_NORMAL, "THUNAR_VFS_THUMB_SIZE_NORMAL", "normal" },
+ { THUNAR_VFS_THUMB_SIZE_LARGE, "THUNAR_VFS_THUMB_SIZE_LARGE", "large" },
+ { 0, NULL, NULL }
+ };
+ type = g_enum_register_static ("ThunarVfsThumbSize", values);
+ }
+ return type;
+}
+
+/* enumerations from "thunar-vfs-types.h" */
+GType
+thunar_vfs_file_type_get_type (void)
+{
+ static GType type = 0;
+ if (type == 0) {
+ static const GEnumValue values[] = {
+ { THUNAR_VFS_FILE_TYPE_SOCKET, "THUNAR_VFS_FILE_TYPE_SOCKET", "socket" },
+ { THUNAR_VFS_FILE_TYPE_SYMLINK, "THUNAR_VFS_FILE_TYPE_SYMLINK", "symlink" },
+ { THUNAR_VFS_FILE_TYPE_REGULAR, "THUNAR_VFS_FILE_TYPE_REGULAR", "regular" },
+ { THUNAR_VFS_FILE_TYPE_BLOCKDEV, "THUNAR_VFS_FILE_TYPE_BLOCKDEV", "blockdev" },
+ { THUNAR_VFS_FILE_TYPE_DIRECTORY, "THUNAR_VFS_FILE_TYPE_DIRECTORY", "directory" },
+ { THUNAR_VFS_FILE_TYPE_CHARDEV, "THUNAR_VFS_FILE_TYPE_CHARDEV", "chardev" },
+ { THUNAR_VFS_FILE_TYPE_FIFO, "THUNAR_VFS_FILE_TYPE_FIFO", "fifo" },
+ { THUNAR_VFS_FILE_TYPE_UNKNOWN, "THUNAR_VFS_FILE_TYPE_UNKNOWN", "unknown" },
+ { 0, NULL, NULL }
+ };
+ type = g_enum_register_static ("ThunarVfsFileType", values);
+ }
+ return type;
+}
+GType
+thunar_vfs_file_mode_get_type (void)
+{
+ static GType type = 0;
+ if (type == 0) {
+ static const GFlagsValue values[] = {
+ { THUNAR_VFS_FILE_MODE_SUID, "THUNAR_VFS_FILE_MODE_SUID", "suid" },
+ { THUNAR_VFS_FILE_MODE_SGID, "THUNAR_VFS_FILE_MODE_SGID", "sgid" },
+ { THUNAR_VFS_FILE_MODE_STICKY, "THUNAR_VFS_FILE_MODE_STICKY", "sticky" },
+ { THUNAR_VFS_FILE_MODE_USR_ALL, "THUNAR_VFS_FILE_MODE_USR_ALL", "usr-all" },
+ { THUNAR_VFS_FILE_MODE_USR_READ, "THUNAR_VFS_FILE_MODE_USR_READ", "usr-read" },
+ { THUNAR_VFS_FILE_MODE_USR_WRITE, "THUNAR_VFS_FILE_MODE_USR_WRITE", "usr-write" },
+ { THUNAR_VFS_FILE_MODE_USR_EXEC, "THUNAR_VFS_FILE_MODE_USR_EXEC", "usr-exec" },
+ { THUNAR_VFS_FILE_MODE_GRP_ALL, "THUNAR_VFS_FILE_MODE_GRP_ALL", "grp-all" },
+ { THUNAR_VFS_FILE_MODE_GRP_READ, "THUNAR_VFS_FILE_MODE_GRP_READ", "grp-read" },
+ { THUNAR_VFS_FILE_MODE_GRP_WRITE, "THUNAR_VFS_FILE_MODE_GRP_WRITE", "grp-write" },
+ { THUNAR_VFS_FILE_MODE_GRP_EXEC, "THUNAR_VFS_FILE_MODE_GRP_EXEC", "grp-exec" },
+ { THUNAR_VFS_FILE_MODE_OTH_ALL, "THUNAR_VFS_FILE_MODE_OTH_ALL", "oth-all" },
+ { THUNAR_VFS_FILE_MODE_OTH_READ, "THUNAR_VFS_FILE_MODE_OTH_READ", "oth-read" },
+ { THUNAR_VFS_FILE_MODE_OTH_WRITE, "THUNAR_VFS_FILE_MODE_OTH_WRITE", "oth-write" },
+ { THUNAR_VFS_FILE_MODE_OTH_EXEC, "THUNAR_VFS_FILE_MODE_OTH_EXEC", "oth-exec" },
+ { 0, NULL, NULL }
+ };
+ type = g_flags_register_static ("ThunarVfsFileMode", values);
+ }
+ return type;
+}
+GType
+thunar_vfs_file_flags_get_type (void)
+{
+ static GType type = 0;
+ if (type == 0) {
+ static const GFlagsValue values[] = {
+ { THUNAR_VFS_FILE_FLAGS_NONE, "THUNAR_VFS_FILE_FLAGS_NONE", "none" },
+ { THUNAR_VFS_FILE_FLAGS_SYMLINK, "THUNAR_VFS_FILE_FLAGS_SYMLINK", "symlink" },
+ { THUNAR_VFS_FILE_FLAGS_EXECUTABLE, "THUNAR_VFS_FILE_FLAGS_EXECUTABLE", "executable" },
+ { 0, NULL, NULL }
+ };
+ type = g_flags_register_static ("ThunarVfsFileFlags", values);
+ }
+ return type;
+}
+
+/* enumerations from "thunar-vfs-volume.h" */
+GType
+thunar_vfs_volume_kind_get_type (void)
+{
+ static GType type = 0;
+ if (type == 0) {
+ static const GEnumValue values[] = {
+ { THUNAR_VFS_VOLUME_KIND_UNKNOWN, "THUNAR_VFS_VOLUME_KIND_UNKNOWN", "unknown" },
+ { THUNAR_VFS_VOLUME_KIND_CDROM, "THUNAR_VFS_VOLUME_KIND_CDROM", "cdrom" },
+ { THUNAR_VFS_VOLUME_KIND_DVD, "THUNAR_VFS_VOLUME_KIND_DVD", "dvd" },
+ { THUNAR_VFS_VOLUME_KIND_FLOPPY, "THUNAR_VFS_VOLUME_KIND_FLOPPY", "floppy" },
+ { THUNAR_VFS_VOLUME_KIND_HARDDISK, "THUNAR_VFS_VOLUME_KIND_HARDDISK", "harddisk" },
+ { THUNAR_VFS_VOLUME_KIND_USBSTICK, "THUNAR_VFS_VOLUME_KIND_USBSTICK", "usbstick" },
+ { 0, NULL, NULL }
+ };
+ type = g_enum_register_static ("ThunarVfsVolumeKind", values);
+ }
+ return type;
+}
+GType
+thunar_vfs_volume_status_get_type (void)
+{
+ static GType type = 0;
+ if (type == 0) {
+ static const GFlagsValue values[] = {
+ { THUNAR_VFS_VOLUME_STATUS_MOUNTED, "THUNAR_VFS_VOLUME_STATUS_MOUNTED", "mounted" },
+ { THUNAR_VFS_VOLUME_STATUS_PRESENT, "THUNAR_VFS_VOLUME_STATUS_PRESENT", "present" },
+ { 0, NULL, NULL }
+ };
+ type = g_flags_register_static ("ThunarVfsVolumeStatus", values);
+ }
+ return type;
+}
+
+#define __THUNAR_VFS_ENUM_TYPES_C__
+#include "thunar-vfs-aliasdef.c"
+
+/* Generated data ends here */
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-enum-types.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-enum-types.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-enum-types.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,39 @@
+
+/* Generated data (by glib-mkenums) */
+
+#ifndef __THUNAR_VFS_ENUM_TYPES_H__
+#define __THUNAR_VFS_ENUM_TYPES_H__
+#include <exo/exo.h>
+G_BEGIN_DECLS
+/* enumerations from "thunar-vfs-interactive-job.h" */
+GType thunar_vfs_interactive_job_response_get_type (void) G_GNUC_CONST;
+#define THUNAR_VFS_TYPE_VFS_INTERACTIVE_JOB_RESPONSE (thunar_vfs_interactive_job_response_get_type())
+/* enumerations from "thunar-vfs-mime-application.h" */
+GType thunar_vfs_mime_application_error_get_type (void) G_GNUC_CONST;
+#define THUNAR_VFS_TYPE_VFS_MIME_APPLICATION_ERROR (thunar_vfs_mime_application_error_get_type())
+GType thunar_vfs_mime_application_flags_get_type (void) G_GNUC_CONST;
+#define THUNAR_VFS_TYPE_VFS_MIME_APPLICATION_FLAGS (thunar_vfs_mime_application_flags_get_type())
+/* enumerations from "thunar-vfs-monitor.h" */
+GType thunar_vfs_monitor_event_get_type (void) G_GNUC_CONST;
+#define THUNAR_VFS_TYPE_VFS_MONITOR_EVENT (thunar_vfs_monitor_event_get_type())
+/* enumerations from "thunar-vfs-thumb.h" */
+GType thunar_vfs_thumb_size_get_type (void) G_GNUC_CONST;
+#define THUNAR_VFS_TYPE_VFS_THUMB_SIZE (thunar_vfs_thumb_size_get_type())
+/* enumerations from "thunar-vfs-types.h" */
+GType thunar_vfs_file_type_get_type (void) G_GNUC_CONST;
+#define THUNAR_VFS_TYPE_VFS_FILE_TYPE (thunar_vfs_file_type_get_type())
+GType thunar_vfs_file_mode_get_type (void) G_GNUC_CONST;
+#define THUNAR_VFS_TYPE_VFS_FILE_MODE (thunar_vfs_file_mode_get_type())
+GType thunar_vfs_file_flags_get_type (void) G_GNUC_CONST;
+#define THUNAR_VFS_TYPE_VFS_FILE_FLAGS (thunar_vfs_file_flags_get_type())
+/* enumerations from "thunar-vfs-volume.h" */
+GType thunar_vfs_volume_kind_get_type (void) G_GNUC_CONST;
+#define THUNAR_VFS_TYPE_VFS_VOLUME_KIND (thunar_vfs_volume_kind_get_type())
+GType thunar_vfs_volume_status_get_type (void) G_GNUC_CONST;
+#define THUNAR_VFS_TYPE_VFS_VOLUME_STATUS (thunar_vfs_volume_status_get_type())
+G_END_DECLS
+
+#endif /* !__THUNAR_VFS_ENUM_TYPES_H__ */
+
+/* Generated data ends here */
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-exec.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-exec.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-exec.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,467 @@
+/* $Id: thunar-vfs-exec.c 18847 2005-11-14 19:07:49Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#include <thunar-vfs/thunar-vfs-exec.h>
+#include <thunar-vfs/thunar-vfs-path.h>
+#include <thunar-vfs/thunar-vfs-alias.h>
+
+#ifdef GDK_WINDOWING_X11
+#include <X11/Xatom.h>
+#include <gdk/gdkx.h>
+#endif
+
+
+
+/**
+ * thunar_vfs_exec_parse:
+ * @exec : the value of the <literal>Exec</literal> field.
+ * @path_list : the list of #ThunarVfsPath<!---->s.
+ * @icon : value of the <literal>Icon</literal> field or %NULL.
+ * @name : translated value for the <literal>Name</literal> field or %NULL.
+ * @path : full path to the desktop file or %NULL.
+ * @terminal : whether to execute the command in a terminal.
+ * @argc : return location for the number of items placed into @argv.
+ * @argv : return location for the argument vector.
+ * @error : return location for errors or %NULL.
+ *
+ * Substitutes <literal>Exec</literal> parameter variables according
+ * to the <ulink href="http://freedesktop.org/wiki/Standards_2fdesktop_2dentry_2dspec"
+ * type="http">Desktop Entry Specification</ulink> and returns the
+ * parsed argument vector (in @argv) and the number of items placed
+ * into @argv (in @argc).
+ *
+ * The @icon, @name and @path fields are optional and may be %NULL
+ * if you don't know their values. The @icon parameter should be
+ * the value of the <literal>Icon</literal> field from the desktop
+ * file, the @name parameter should be the translated <literal>Name</literal>
+ * value, while the @path parameter should refer to the full path
+ * to the desktop file, whose <literal>Exec</literal> field is
+ * being parsed here.
+ *
+ * Return value: %TRUE on success, else %FALSE.
+ **/
+gboolean
+thunar_vfs_exec_parse (const gchar *exec,
+ GList *path_list,
+ const gchar *icon,
+ const gchar *name,
+ const gchar *path,
+ gboolean terminal,
+ gint *argc,
+ gchar ***argv,
+ GError **error)
+{
+ const ThunarVfsPath *parent;
+ const gchar *p;
+ gboolean result = FALSE;
+ GString *command_line = g_string_new (NULL);
+ GList *lp;
+ gchar buffer[THUNAR_VFS_PATH_MAXURILEN];
+ gchar *quoted;
+
+ /* prepend terminal command if required */
+ if (G_UNLIKELY (terminal))
+ {
+ g_string_append (command_line, "Terminal ");
+ if (G_LIKELY (name != NULL))
+ {
+ quoted = g_shell_quote (name);
+ g_string_append (command_line, "-T ");
+ g_string_append (command_line, quoted);
+ g_string_append_c (command_line, ' ');
+ g_free (quoted);
+ }
+ g_string_append (command_line, "-x ");
+ }
+
+ for (p = exec; *p != '\0'; ++p)
+ {
+ if (p[0] == '%' && p[1] != '\0')
+ {
+ switch (*++p)
+ {
+ case 'f':
+ if (G_LIKELY (path_list != NULL))
+ {
+ if (thunar_vfs_path_to_string (path_list->data, buffer, sizeof (buffer), error) < 0)
+ goto done;
+
+ quoted = g_shell_quote (buffer);
+ g_string_append (command_line, quoted);
+ g_free (quoted);
+ }
+ break;
+
+ case 'F':
+ for (lp = path_list; lp != NULL; lp = lp->next)
+ {
+ if (G_LIKELY (lp != path_list))
+ g_string_append_c (command_line, ' ');
+
+ if (thunar_vfs_path_to_string (lp->data, buffer, sizeof (buffer), error) < 0)
+ goto done;
+
+ quoted = g_shell_quote (buffer);
+ g_string_append (command_line, quoted);
+ g_free (quoted);
+ }
+ break;
+
+ case 'u':
+ if (G_LIKELY (path_list != NULL))
+ {
+ if (thunar_vfs_path_to_uri (path_list->data, buffer, sizeof (buffer), error) < 0)
+ goto done;
+
+ quoted = g_shell_quote (buffer);
+ g_string_append (command_line, quoted);
+ g_free (quoted);
+ }
+ break;
+
+ case 'U':
+ for (lp = path_list; lp != NULL; lp = lp->next)
+ {
+ if (G_LIKELY (lp != path_list))
+ g_string_append_c (command_line, ' ');
+
+ if (thunar_vfs_path_to_uri (lp->data, buffer, sizeof (buffer), error) < 0)
+ goto done;
+
+ quoted = g_shell_quote (buffer);
+ g_string_append (command_line, quoted);
+ g_free (quoted);
+ }
+ break;
+
+ case 'd':
+ if (G_LIKELY (path_list != NULL))
+ {
+ parent = thunar_vfs_path_get_parent (path_list->data);
+ if (G_LIKELY (parent != NULL))
+ {
+ if (thunar_vfs_path_to_string (parent, buffer, sizeof (buffer), error) < 0)
+ goto done;
+
+ quoted = g_shell_quote (buffer);
+ g_string_append (command_line, quoted);
+ g_free (quoted);
+ }
+ }
+ break;
+
+ case 'D':
+ for (lp = path_list; lp != NULL; lp = lp->next)
+ {
+ parent = thunar_vfs_path_get_parent (lp->data);
+ if (G_LIKELY (parent != NULL))
+ {
+ if (G_LIKELY (lp != path_list))
+ g_string_append_c (command_line, ' ');
+
+ if (thunar_vfs_path_to_string (parent, buffer, sizeof (buffer), error) < 0)
+ goto done;
+
+ quoted = g_shell_quote (buffer);
+ g_string_append (command_line, quoted);
+ g_free (quoted);
+ }
+ }
+ break;
+
+ case 'n':
+ if (G_LIKELY (path_list != NULL))
+ {
+ quoted = g_shell_quote (thunar_vfs_path_get_name (path_list->data));
+ g_string_append (command_line, quoted);
+ g_free (quoted);
+ }
+ break;
+
+ case 'N':
+ for (lp = path_list; lp != NULL; lp = lp->next)
+ {
+ if (G_LIKELY (lp != path_list))
+ g_string_append_c (command_line, ' ');
+ quoted = g_shell_quote (thunar_vfs_path_get_name (lp->data));
+ g_string_append (command_line, quoted);
+ g_free (quoted);
+ }
+ break;
+
+ case 'i':
+ if (G_LIKELY (icon != NULL))
+ {
+ quoted = g_shell_quote (icon);
+ g_string_append (command_line, "--icon ");
+ g_string_append (command_line, quoted);
+ g_free (quoted);
+ }
+ break;
+
+ case 'c':
+ if (G_LIKELY (name != NULL))
+ {
+ quoted = g_shell_quote (name);
+ g_string_append (command_line, quoted);
+ g_free (quoted);
+ }
+ break;
+
+ case 'k':
+ if (G_LIKELY (path != NULL))
+ {
+ quoted = g_shell_quote (path);
+ g_string_append (command_line, path);
+ g_free (quoted);
+ }
+ break;
+
+ case '%':
+ g_string_append_c (command_line, '%');
+ break;
+ }
+ }
+ else
+ {
+ g_string_append_c (command_line, *p);
+ }
+ }
+
+ result = g_shell_parse_argv (command_line->str, argc, argv, error);
+
+done:
+ g_string_free (command_line, TRUE);
+ return result;
+}
+
+
+
+#ifdef HAVE_LIBSTARTUP_NOTIFICATION
+#include <libsn/sn.h>
+
+/* the max. timeout for an application to startup */
+#define TVSN_STARTUP_TIMEOUT (30 * 1000)
+
+static gboolean
+tvsn_startup_timeout (gpointer data)
+{
+ SnLauncherContext *sn_launcher = data;
+ GTimeVal now;
+ gdouble elapsed;
+ glong tv_sec;
+ glong tv_usec;
+
+ GDK_THREADS_ENTER ();
+
+ /* determine the amount of elapsed time */
+ g_get_current_time (&now);
+ sn_launcher_context_get_last_active_time (sn_launcher, &tv_sec, &tv_usec);
+ elapsed = (((gdouble) now.tv_sec - tv_sec) * G_USEC_PER_SEC + (now.tv_usec - tv_usec)) / 1000.0;
+
+ /* check if the timeout was reached */
+ if (elapsed >= TVSN_STARTUP_TIMEOUT)
+ {
+ /* abort the startup notification */
+ sn_launcher_context_complete (sn_launcher);
+ sn_launcher_context_unref (sn_launcher);
+ }
+
+ GDK_THREADS_LEAVE ();
+
+ /* keep the startup timeout if not elapsed */
+ return (elapsed < TVSN_STARTUP_TIMEOUT);
+}
+
+static gint
+tvsn_get_active_workspace_number (GdkScreen *screen)
+{
+ GdkWindow *root;
+ gulong bytes_after_ret = 0;
+ gulong nitems_ret = 0;
+ guint *prop_ret = NULL;
+ Atom _NET_CURRENT_DESKTOP;
+ Atom _WIN_WORKSPACE;
+ Atom type_ret = None;
+ gint format_ret;
+ gint ws_num = 0;
+
+ gdk_error_trap_push ();
+
+ root = gdk_screen_get_root_window (screen);
+
+ /* determine the X atom values */
+ _NET_CURRENT_DESKTOP = XInternAtom (GDK_WINDOW_XDISPLAY (root), "_NET_CURRENT_DESKTOP", False);
+ _WIN_WORKSPACE = XInternAtom (GDK_WINDOW_XDISPLAY (root), "_WIN_WORKSPACE", False);
+
+ if (XGetWindowProperty (GDK_WINDOW_XDISPLAY (root), GDK_WINDOW_XWINDOW (root),
+ _NET_CURRENT_DESKTOP, 0, 32, False, XA_CARDINAL,
+ &type_ret, &format_ret, &nitems_ret, &bytes_after_ret,
+ (unsigned char **) &prop_ret) != Success)
+ {
+ if (XGetWindowProperty (GDK_WINDOW_XDISPLAY (root), GDK_WINDOW_XWINDOW (root),
+ _WIN_WORKSPACE, 0, 32, False, XA_CARDINAL,
+ &type_ret, &format_ret, &nitems_ret, &bytes_after_ret,
+ (unsigned char **) &prop_ret) != Success)
+ {
+ if (G_UNLIKELY (prop_ret != NULL))
+ {
+ XFree (prop_ret);
+ prop_ret = NULL;
+ }
+ }
+ }
+
+ if (G_LIKELY (prop_ret != NULL))
+ {
+ if (G_LIKELY (type_ret != None && format_ret != 0))
+ ws_num = *prop_ret;
+ XFree (prop_ret);
+ }
+
+ gdk_error_trap_pop ();
+
+ return ws_num;
+}
+#endif
+
+
+
+/**
+ * thunar_vfs_exec_on_screen:
+ * @screen : a #GdkScreen.
+ * @working_directory : child's current working directory or %NULL to inherit parent's.
+ * @argv : child's argument vector.
+ * @envp : child's environment vector or %NULL to inherit parent's.
+ * @flags : flags from #GSpawnFlags.
+ * @startup_notify : whether to use startup notification.
+ * @error : return location for errors or %NULL.
+ *
+ * Like gdk_spawn_on_screen(), but also supports startup notification
+ * (if Thunar-VFS was built with startup notification support).
+ *
+ * Return value: %TRUE on success, %FALSE if @error is set.
+ **/
+gboolean
+thunar_vfs_exec_on_screen (GdkScreen *screen,
+ const gchar *working_directory,
+ gchar **argv,
+ gchar **envp,
+ GSpawnFlags flags,
+ gboolean startup_notify,
+ GError **error)
+{
+#ifdef HAVE_LIBSTARTUP_NOTIFICATION
+ SnLauncherContext *sn_launcher = NULL;
+ extern char **environ;
+ SnDisplay *sn_display = NULL;
+ gint sn_workspace;
+ gint n, m;
+#endif
+ gboolean succeed;
+ gchar **sn_envp = envp;
+
+#ifdef HAVE_LIBSTARTUP_NOTIFICATION
+ /* initialize the sn launcher context */
+ if (G_LIKELY (startup_notify))
+ {
+ sn_display = sn_display_new (GDK_SCREEN_XDISPLAY (screen),
+ (SnDisplayErrorTrapPush) gdk_error_trap_push,
+ (SnDisplayErrorTrapPop) gdk_error_trap_pop);
+
+ if (G_LIKELY (sn_display != NULL))
+ {
+ sn_launcher = sn_launcher_context_new (sn_display, GDK_SCREEN_XNUMBER (screen));
+
+ if (G_LIKELY (sn_launcher != NULL && !sn_launcher_context_get_initiated (sn_launcher)))
+ {
+ /* initiate the sn launcher context */
+ sn_workspace = tvsn_get_active_workspace_number (screen);
+ sn_launcher_context_set_binary_name (sn_launcher, argv[0]);
+ sn_launcher_context_set_workspace (sn_launcher, sn_workspace);
+ sn_launcher_context_initiate (sn_launcher, g_get_prgname (), argv[0], CurrentTime);
+
+ /* setup the child environment */
+ if (G_LIKELY (envp == NULL))
+ envp = (gchar **) environ;
+ for (n = 0; envp[n] != NULL; ++n)
+ ;
+ sn_envp = g_new (gchar *, n + 2);
+ for (n = m = 0; envp[n] != NULL; ++n)
+ if (strncmp (envp[n], "DESKTOP_STARTUP_ID", 18) != 0)
+ sn_envp[m++] = g_strdup (envp[n]);
+ sn_envp[m++] = g_strconcat ("DESKTOP_STARTUP_ID=", sn_launcher_context_get_startup_id (sn_launcher), NULL);
+ sn_envp[m] = NULL;
+ }
+ }
+ }
+#endif
+
+ /* try to spawn the new process */
+ succeed = gdk_spawn_on_screen (screen, working_directory, argv, sn_envp, flags, NULL, NULL, NULL, error);
+
+#ifdef HAVE_LIBSTARTUP_NOTIFICATION
+ /* handle the sn launcher context */
+ if (G_LIKELY (sn_launcher != NULL))
+ {
+ if (G_UNLIKELY (!succeed))
+ {
+ /* abort the sn sequence */
+ sn_launcher_context_complete (sn_launcher);
+ sn_launcher_context_unref (sn_launcher);
+ }
+ else
+ {
+ /* schedule a startup notification timeout */
+ g_timeout_add (TVSN_STARTUP_TIMEOUT, tvsn_startup_timeout, sn_launcher);
+ }
+ }
+
+ /* release the sn display */
+ if (G_LIKELY (sn_display != NULL))
+ sn_display_unref (sn_display);
+#endif
+
+ /* release the environment */
+ if (G_UNLIKELY (sn_envp != envp))
+ g_strfreev (sn_envp);
+
+ return succeed;
+}
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-exec.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-exec.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-exec.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,48 @@
+/* $Id: thunar-vfs-exec.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __THUNAR_VFS_EXEC_H__
+#define __THUNAR_VFS_EXEC_H__
+
+#include <gdk/gdk.h>
+
+G_BEGIN_DECLS;
+
+gboolean thunar_vfs_exec_parse (const gchar *exec,
+ GList *path_list,
+ const gchar *icon,
+ const gchar *name,
+ const gchar *path,
+ gboolean terminal,
+ gint *argc,
+ gchar ***argv,
+ GError **error) G_GNUC_INTERNAL;
+
+gboolean thunar_vfs_exec_on_screen (GdkScreen *screen,
+ const gchar *working_directory,
+ gchar **argv,
+ gchar **envp,
+ GSpawnFlags flags,
+ gboolean startup_notify,
+ GError **error) G_GNUC_INTERNAL;
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VFS_EXEC_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-info.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-info.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-info.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,802 @@
+/* $Id: thunar-vfs-info.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#include <stdio.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+/* implement thunar-vfs-info's inline functions */
+#define G_IMPLEMENT_INLINES 1
+#define __THUNAR_VFS_INFO_C__
+#include <thunar-vfs/thunar-vfs-info.h>
+
+#include <thunar-vfs/thunar-vfs-exec.h>
+#include <thunar-vfs/thunar-vfs-mime-database.h>
+#include <thunar-vfs/thunar-vfs-alias.h>
+
+/* Use g_access() if possible */
+#if GLIB_CHECK_VERSION(2,8,0)
+#include <glib/gstdio.h>
+#else
+#define g_access(path, mode) (access ((path), (mode)))
+#endif
+
+/* Use g_rename() if possible */
+#if GLIB_CHECK_VERSION(2,6,0)
+#include <glib/gstdio.h>
+#else
+#define g_rename(from, to) (rename ((from), (to)))
+#endif
+
+
+
+static ThunarVfsMimeDatabase *mime_database;
+static ThunarVfsMimeInfo *mime_application_x_shellscript;
+static ThunarVfsMimeInfo *mime_application_x_executable;
+static ThunarVfsMimeInfo *mime_application_x_desktop;
+static ThunarVfsMimeInfo *mime_inode_blockdevice;
+static ThunarVfsMimeInfo *mime_inode_chardevice;
+static ThunarVfsMimeInfo *mime_inode_directory;
+static ThunarVfsMimeInfo *mime_inode_symlink;
+static ThunarVfsMimeInfo *mime_inode_socket;
+static ThunarVfsMimeInfo *mime_inode_fifo;
+
+
+
+GType
+thunar_vfs_info_get_type (void)
+{
+ static GType type = G_TYPE_INVALID;
+
+ if (G_UNLIKELY (type == G_TYPE_INVALID))
+ {
+ type = g_boxed_type_register_static ("ThunarVfsInfo",
+ (GBoxedCopyFunc) thunar_vfs_info_ref,
+ (GBoxedFreeFunc) thunar_vfs_info_unref);
+ }
+
+ return type;
+}
+
+
+
+/**
+ * thunar_vfs_info_new_for_path:
+ * @path : the #ThunarVfsPath of the file whose info should be queried.
+ * @error : return location for errors or %NULL.
+ *
+ * Queries the #ThunarVfsInfo for the given @path. Returns the
+ * #ThunarVfsInfo if the operation is successfull, else %NULL.
+ * In the latter case, @error will be set to point to a #GError
+ * describing the cause of the failure.
+ *
+ * Return value: the #ThunarVfsInfo for @path or %NULL.
+ **/
+ThunarVfsInfo*
+thunar_vfs_info_new_for_path (ThunarVfsPath *path,
+ GError **error)
+{
+ gchar absolute_path[PATH_MAX + 1];
+ if (thunar_vfs_path_to_string (path, absolute_path, sizeof (absolute_path), error) < 0)
+ return NULL;
+ return _thunar_vfs_info_new_internal (path, absolute_path, error);
+}
+
+
+
+/**
+ * thunar_vfs_info_unref:
+ * @info : a #ThunarVfsInfo.
+ *
+ * Decrements the reference count on @info by 1 and if
+ * the reference count drops to zero as a result of this
+ * operation, the @info will be freed completely.
+ **/
+void
+thunar_vfs_info_unref (ThunarVfsInfo *info)
+{
+ if (exo_atomic_dec (&info->ref_count))
+ {
+ /* free the display name if dynamically allocated */
+ if (info->display_name != thunar_vfs_path_get_name (info->path))
+ g_free (info->display_name);
+
+ /* free the custom icon name */
+ g_free (info->custom_icon);
+
+ /* drop the public info part */
+ thunar_vfs_mime_info_unref (info->mime_info);
+ thunar_vfs_path_unref (info->path);
+
+#ifndef G_DISABLE_CHECKS
+ memset (info, 0xaa, sizeof (*info));
+#endif
+
+ g_free (info);
+ }
+}
+
+
+
+/**
+ * thunar_vfs_info_copy:
+ * @info : a #ThunarVfsInfo.
+ *
+ * Takes a deep copy of the @info and returns
+ * it.
+ *
+ * Return value: a deep copy of @info.
+ **/
+ThunarVfsInfo*
+thunar_vfs_info_copy (const ThunarVfsInfo *info)
+{
+ ThunarVfsInfo *dst;
+
+ g_return_val_if_fail (info != NULL, NULL);
+
+ dst = g_new (ThunarVfsInfo, 1);
+ dst->type = info->type;
+ dst->mode = info->mode;
+ dst->flags = info->flags;
+ dst->uid = info->uid;
+ dst->gid = info->gid;
+ dst->size = info->size;
+ dst->atime = info->atime;
+ dst->mtime = info->mtime;
+ dst->ctime = info->ctime;
+ dst->inode = info->inode;
+ dst->device = info->device;
+ dst->mime_info = thunar_vfs_mime_info_ref (info->mime_info);
+ dst->path = thunar_vfs_path_ref (info->path);
+ dst->custom_icon = g_strdup (info->custom_icon);
+ dst->display_name = g_strdup (info->display_name);
+ dst->ref_count = 1;
+
+ return dst;
+}
+
+
+
+/**
+ * thunar_vfs_info_execute:
+ * @info : a #ThunarVfsInfo.
+ * @screen : a #GdkScreen or %NULL to use the default #GdkScreen.
+ * @path_list : the list of #ThunarVfsPath<!---->s to give as parameters
+ * to the file referred to by @info on execution.
+ * @error : return location for errors or %NULL.
+ *
+ * Executes the file referred to by @info, given @path_list as parameters,
+ * on the specified @screen. @info may refer to either a regular,
+ * executable file, or a <filename>.desktop</filename> file, whose
+ * type is <literal>Application</literal>.
+ *
+ * Return value: %TRUE on success, else %FALSE.
+ **/
+gboolean
+thunar_vfs_info_execute (const ThunarVfsInfo *info,
+ GdkScreen *screen,
+ GList *path_list,
+ GError **error)
+{
+ ThunarVfsPath *parent;
+ const gchar *icon;
+ const gchar *name;
+ gboolean startup_notify = FALSE;
+ gboolean terminal;
+ gboolean result = FALSE;
+ XfceRc *rc;
+ gchar absolute_path[PATH_MAX + 1];
+ gchar *working_directory;
+ gchar *path_escaped;
+ gchar **argv = NULL;
+ gchar *exec;
+
+ g_return_val_if_fail (info != NULL, FALSE);
+ g_return_val_if_fail (info->ref_count > 0, FALSE);
+ g_return_val_if_fail (screen == NULL || GDK_IS_SCREEN (screen), FALSE);
+ g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+
+ /* fallback to the default screen if none given */
+ if (G_UNLIKELY (screen == NULL))
+ screen = gdk_screen_get_default ();
+
+ /* determine the absolute path */
+ if (thunar_vfs_path_to_string (info->path, absolute_path, sizeof (absolute_path), error) < 0)
+ return FALSE;
+
+ /* check if we have a .desktop (and NOT a .directory) file here */
+ if (G_UNLIKELY (info->mime_info == mime_application_x_desktop && strcmp (thunar_vfs_path_get_name (info->path), ".directory") != 0))
+ {
+ rc = xfce_rc_simple_open (absolute_path, TRUE);
+ if (G_LIKELY (rc != NULL))
+ {
+ /* check if we have a valid Exec field */
+ exec = (gchar *) xfce_rc_read_entry_untranslated (rc, "Exec", NULL);
+ if (G_LIKELY (exec != NULL))
+ {
+ /* parse the Exec field */
+ name = xfce_rc_read_entry (rc, "Name", NULL);
+ icon = xfce_rc_read_entry_untranslated (rc, "Icon", NULL);
+ terminal = xfce_rc_read_bool_entry (rc, "Terminal", FALSE);
+ startup_notify = xfce_rc_read_bool_entry (rc, "StartupNotify", FALSE) || xfce_rc_read_bool_entry (rc, "X-KDE-StartupNotify", FALSE);
+ result = thunar_vfs_exec_parse (exec, path_list, icon, name, absolute_path, terminal, NULL, &argv, error);
+ }
+ else
+ {
+ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_INVAL, _("No Exec field specified"));
+ }
+
+ /* close the rc file */
+ xfce_rc_close (rc);
+ }
+ else
+ {
+ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_INVAL, _("Unable to parse file"));
+ }
+ }
+ else
+ {
+ /* fake the Exec line */
+ path_escaped = g_shell_quote (absolute_path);
+ exec = g_strconcat (path_escaped, " %F", NULL);
+ result = thunar_vfs_exec_parse (exec, path_list, NULL, NULL, NULL, FALSE, NULL, &argv, error);
+ g_free (path_escaped);
+ g_free (exec);
+ }
+
+ if (G_LIKELY (result))
+ {
+ /* determine the working directory */
+ if (G_LIKELY (path_list != NULL))
+ {
+ /* use the directory of the first list item */
+ parent = thunar_vfs_path_get_parent (path_list->data);
+ working_directory = (parent != NULL) ? thunar_vfs_path_dup_string (parent) : NULL;
+ }
+ else
+ {
+ /* use the directory of the executable file */
+ working_directory = g_path_get_dirname (absolute_path);
+ }
+
+ /* execute the command */
+ result = thunar_vfs_exec_on_screen (screen, working_directory, argv, NULL, G_SPAWN_SEARCH_PATH, startup_notify, error);
+
+ /* release the working directory */
+ g_free (working_directory);
+ }
+
+ /* clean up */
+ g_strfreev (argv);
+
+ return result;
+}
+
+
+
+/**
+ * thunar_vfs_info_rename:
+ * @info : a #ThunarVfsInfo.
+ * @name : the new file name in UTF-8 encoding.
+ * @error : return location for errors or %NULL.
+ *
+ * Tries to rename the file referred to by @info to the
+ * new @name.
+ *
+ * The rename operation is smart in that it checks the
+ * type of @info first, and if @info refers to a
+ * <filename>.desktop</filename> file, the file name
+ * won't be touched, but instead the <literal>Name</literal>
+ * field of the <filename>.desktop</filename> will be
+ * changed to @name. Else, if @info refers to a regular
+ * file or directory, the file will be given a new
+ * name.
+ *
+ * Return value: %TRUE on success, else %FALSE.
+ **/
+gboolean
+thunar_vfs_info_rename (ThunarVfsInfo *info,
+ const gchar *name,
+ GError **error)
+{
+ const gchar * const *locale;
+ ThunarVfsMimeInfo *mime_info;
+ GKeyFile *key_file;
+ gsize data_length;
+ gchar *data;
+ gchar *key;
+ gchar src_path[PATH_MAX + 1];
+ gchar *dir_name;
+ gchar *dst_name;
+ gchar *dst_path;
+#if !GLIB_CHECK_VERSION(2,8,0)
+ FILE *fp;
+#endif
+
+ g_return_val_if_fail (info != NULL, FALSE);
+ g_return_val_if_fail (info->ref_count > 0, FALSE);
+ g_return_val_if_fail (g_utf8_validate (name, -1, NULL), FALSE);
+ g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+
+ /* validate the name */
+ if (*name == '\0' || strchr (name, '/') != NULL)
+ {
+ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_INVAL, _("Invalid file name"));
+ return FALSE;
+ }
+
+ /* determine the source path */
+ if (thunar_vfs_path_to_string (info->path, src_path, sizeof (src_path), error) < 0)
+ return FALSE;
+
+ /* check if we have a .desktop (and NOT a .directory) file here */
+ if (G_UNLIKELY (info->mime_info == mime_application_x_desktop && strcmp (thunar_vfs_path_get_name (info->path), ".directory") != 0))
+ {
+ /* try to open the .desktop file */
+ key_file = g_key_file_new ();
+ if (!g_key_file_load_from_file (key_file, src_path, G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS, error))
+ {
+ g_key_file_free (key_file);
+ return FALSE;
+ }
+
+ /* check if the file is valid */
+ if (G_UNLIKELY (!g_key_file_has_group (key_file, "Desktop Entry")))
+ {
+ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_INVAL, _("Invalid desktop file"));
+ g_key_file_free (key_file);
+ return FALSE;
+ }
+
+ /* save the new name (localized if required) */
+ for (locale = g_get_language_names (); *locale != NULL; ++locale)
+ {
+ key = g_strdup_printf ("Name[%s]", *locale);
+ if (g_key_file_has_key (key_file, "Desktop Entry", key, NULL))
+ {
+ g_key_file_set_string (key_file, "Desktop Entry", key, name);
+ g_free (key);
+ break;
+ }
+ g_free (key);
+ }
+
+ /* fallback to unlocalized name */
+ if (G_UNLIKELY (*locale == NULL))
+ g_key_file_set_string (key_file, "Desktop Entry", "Name", name);
+
+ /* serialize the key file to a buffer */
+ data = g_key_file_to_data (key_file, &data_length, error);
+ g_key_file_free (key_file);
+ if (G_UNLIKELY (data == NULL))
+ return FALSE;
+
+ /* write the data back to the file */
+#if GLIB_CHECK_VERSION(2,8,0)
+ if (!g_file_set_contents (src_path, data, data_length, error))
+ {
+ g_free (data);
+ return FALSE;
+ }
+#else
+ fp = fopen (src_path, "w");
+ if (G_UNLIKELY (fp == NULL))
+ {
+ g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno), g_strerror (errno));
+ g_free (data);
+ return FALSE;
+ }
+ fwrite (data, data_length, 1, fp);
+ fclose (fp);
+#endif
+
+ /* release the previous display name */
+ if (G_LIKELY (info->display_name != thunar_vfs_path_get_name (info->path)))
+ g_free (info->display_name);
+
+ /* apply the new display name */
+ info->display_name = g_strdup (name);
+
+ /* clean up */
+ g_free (data);
+ }
+ else
+ {
+ /* convert the destination file to local encoding */
+ dst_name = g_filename_from_utf8 (name, -1, NULL, NULL, error);
+ if (G_UNLIKELY (dst_name == NULL))
+ return FALSE;
+
+ /* determine the destination path */
+ dir_name = g_path_get_dirname (src_path);
+ dst_path = g_build_filename (dir_name, dst_name, NULL);
+ g_free (dst_name);
+ g_free (dir_name);
+
+ /* verify that the rename target does not already exist */
+ if (G_UNLIKELY (g_file_test (dst_path, G_FILE_TEST_EXISTS)))
+ {
+ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_EXIST, g_strerror (EEXIST));
+ g_free (dst_path);
+ return FALSE;
+ }
+
+ /* perform the rename */
+ if (G_UNLIKELY (g_rename (src_path, dst_path) < 0))
+ {
+ g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno), g_strerror (errno));
+ g_free (dst_path);
+ return FALSE;
+ }
+
+ /* update the info's display name */
+ if (info->display_name != thunar_vfs_path_get_name (info->path))
+ g_free (info->display_name);
+ info->display_name = g_strdup (name);
+
+ /* update the info's path */
+ thunar_vfs_path_unref (info->path);
+ info->path = thunar_vfs_path_new (dst_path, NULL);
+
+ /* if we have a regular file here, then we'll need to determine
+ * the mime type again, as it may be based on the file name
+ */
+ if (G_LIKELY (info->type == THUNAR_VFS_FILE_TYPE_REGULAR))
+ {
+ mime_info = info->mime_info;
+ info->mime_info = thunar_vfs_mime_database_get_info_for_file (mime_database, dst_path, info->display_name);
+ thunar_vfs_mime_info_unref (mime_info);
+ }
+
+ /* clean up */
+ g_free (dst_path);
+ }
+
+ return TRUE;
+}
+
+
+
+/**
+ * thunar_vfs_info_matches:
+ * @a : a #ThunarVfsInfo.
+ * @b : a #ThunarVfsInfo.
+ *
+ * Checks whether @a and @b refer to the same file
+ * and share the same properties.
+ *
+ * Return value: %TRUE if @a and @b match.
+ **/
+gboolean
+thunar_vfs_info_matches (const ThunarVfsInfo *a,
+ const ThunarVfsInfo *b)
+{
+ g_return_val_if_fail (a != NULL, FALSE);
+ g_return_val_if_fail (b != NULL, FALSE);
+ g_return_val_if_fail (a->ref_count > 0, FALSE);
+ g_return_val_if_fail (b->ref_count > 0, FALSE);
+
+ return a->type == b->type
+ && a->mode == b->mode
+ && a->flags == b->flags
+ && a->uid == b->uid
+ && a->gid == b->gid
+ && a->size == b->size
+ && a->atime == b->atime
+ && a->mtime == b->mtime
+ && a->ctime == b->ctime
+ && a->inode == b->inode
+ && a->device == b->device
+ && a->mime_info == b->mime_info
+ && thunar_vfs_path_equal (a->path, b->path)
+ && strcmp (a->display_name, b->display_name) == 0;
+}
+
+
+
+/**
+ * _thunar_vfs_info_init:
+ *
+ * Initializes the info component of the Thunar-VFS
+ * library.
+ **/
+void
+_thunar_vfs_info_init (void)
+{
+ /* grab a reference on the mime database */
+ mime_database = thunar_vfs_mime_database_get_default ();
+
+ /* pre-determine the most important mime types */
+ mime_inode_fifo = thunar_vfs_mime_database_get_info (mime_database, "inode/fifo");
+ mime_inode_socket = thunar_vfs_mime_database_get_info (mime_database, "inode/socket");
+ mime_inode_symlink = thunar_vfs_mime_database_get_info (mime_database, "inode/symlink");
+ mime_inode_directory = thunar_vfs_mime_database_get_info (mime_database, "inode/directory");
+ mime_inode_chardevice = thunar_vfs_mime_database_get_info (mime_database, "inode/chardevice");
+ mime_inode_blockdevice = thunar_vfs_mime_database_get_info (mime_database, "inode/blockdevice");
+ mime_application_x_desktop = thunar_vfs_mime_database_get_info (mime_database, "application/x-desktop");
+ mime_application_x_executable = thunar_vfs_mime_database_get_info (mime_database, "application/x-executable");
+ mime_application_x_shellscript = thunar_vfs_mime_database_get_info (mime_database, "application/x-shellscript");
+}
+
+
+
+/**
+ * _thunar_vfs_info_shutdown:
+ *
+ * Shuts down the info component of the Thunar-VFS
+ * library.
+ **/
+void
+_thunar_vfs_info_shutdown (void)
+{
+ /* release the mime type references */
+ thunar_vfs_mime_info_unref (mime_application_x_shellscript);
+ thunar_vfs_mime_info_unref (mime_application_x_executable);
+ thunar_vfs_mime_info_unref (mime_application_x_desktop);
+ thunar_vfs_mime_info_unref (mime_inode_blockdevice);
+ thunar_vfs_mime_info_unref (mime_inode_chardevice);
+ thunar_vfs_mime_info_unref (mime_inode_directory);
+ thunar_vfs_mime_info_unref (mime_inode_symlink);
+ thunar_vfs_mime_info_unref (mime_inode_socket);
+ thunar_vfs_mime_info_unref (mime_inode_fifo);
+
+ /* release the reference on the mime database */
+ g_object_unref (G_OBJECT (mime_database));
+ mime_database = NULL;
+}
+
+
+
+/**
+ * _thunar_vfs_info_new_internal:
+ * @path
+ * @absolute_path
+ * @error : return location for errors or %NULL.
+ *
+ * Return value:
+ **/
+ThunarVfsInfo*
+_thunar_vfs_info_new_internal (ThunarVfsPath *path,
+ const gchar *absolute_path,
+ GError **error)
+{
+ ThunarVfsInfo *info;
+ const guchar *s;
+ const gchar *name;
+ const gchar *str;
+ struct stat lsb;
+ struct stat sb;
+ XfceRc *rc;
+ GList *mime_infos;
+ GList *lp;
+ gchar *p;
+
+ g_return_val_if_fail (g_path_is_absolute (absolute_path), NULL);
+ g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+ if (G_UNLIKELY (lstat (absolute_path, &lsb) < 0))
+ {
+ g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno),
+ _("Failed to stat file `%s': %s"),
+ absolute_path, g_strerror (errno));
+ return NULL;
+ }
+
+ info = g_new (ThunarVfsInfo, 1);
+ info->path = thunar_vfs_path_ref (path);
+ info->ref_count = 1;
+ info->custom_icon = NULL;
+
+ /* determine the display name of the file */
+ name = thunar_vfs_path_get_name (path);
+ for (s = (const guchar *) name; *s >= 32 && *s <= 127; ++s)
+ ;
+ if (G_LIKELY (*s == '\0'))
+ {
+ /* we don't need to perform any transformation if
+ * the file contains only valid ASCII characters.
+ */
+ info->display_name = (gchar *) name;
+ }
+ else
+ {
+ /* determine the displayname using various tricks */
+ info->display_name = g_filename_display_name (name);
+ }
+
+ /* determine the POSIX file attributes */
+ if (G_LIKELY (!S_ISLNK (lsb.st_mode)))
+ {
+ info->type = (lsb.st_mode & S_IFMT) >> 12;
+ info->mode = lsb.st_mode & 07777;
+ info->flags = THUNAR_VFS_FILE_FLAGS_NONE;
+ info->uid = lsb.st_uid;
+ info->gid = lsb.st_gid;
+ info->size = lsb.st_size;
+ info->atime = lsb.st_atime;
+ info->ctime = lsb.st_ctime;
+ info->mtime = lsb.st_mtime;
+ info->inode = lsb.st_ino;
+ info->device = lsb.st_dev;
+ }
+ else
+ {
+ if (stat (absolute_path, &sb) == 0)
+ {
+ info->type = (sb.st_mode & S_IFMT) >> 12;
+ info->mode = sb.st_mode & 07777;
+ info->flags = THUNAR_VFS_FILE_FLAGS_SYMLINK;
+ info->uid = sb.st_uid;
+ info->gid = sb.st_gid;
+ info->size = sb.st_size;
+ info->atime = sb.st_atime;
+ info->ctime = sb.st_ctime;
+ info->mtime = sb.st_mtime;
+ info->inode = sb.st_ino;
+ info->device = sb.st_dev;
+ }
+ else
+ {
+ info->type = THUNAR_VFS_FILE_TYPE_SYMLINK;
+ info->mode = lsb.st_mode & 07777;
+ info->flags = THUNAR_VFS_FILE_FLAGS_SYMLINK;
+ info->uid = lsb.st_uid;
+ info->gid = lsb.st_gid;
+ info->size = lsb.st_size;
+ info->atime = lsb.st_atime;
+ info->ctime = lsb.st_ctime;
+ info->mtime = lsb.st_mtime;
+ info->inode = lsb.st_ino;
+ info->device = lsb.st_dev;
+ }
+ }
+
+ /* determine the file's mime type */
+ switch (info->type)
+ {
+ case THUNAR_VFS_FILE_TYPE_SOCKET:
+ info->mime_info = thunar_vfs_mime_info_ref (mime_inode_socket);
+ break;
+
+ case THUNAR_VFS_FILE_TYPE_SYMLINK:
+ info->mime_info = thunar_vfs_mime_info_ref (mime_inode_symlink);
+ break;
+
+ case THUNAR_VFS_FILE_TYPE_BLOCKDEV:
+ info->mime_info = thunar_vfs_mime_info_ref (mime_inode_blockdevice);
+ break;
+
+ case THUNAR_VFS_FILE_TYPE_DIRECTORY:
+ info->mime_info = thunar_vfs_mime_info_ref (mime_inode_directory);
+ break;
+
+ case THUNAR_VFS_FILE_TYPE_CHARDEV:
+ info->mime_info = thunar_vfs_mime_info_ref (mime_inode_chardevice);
+ break;
+
+ case THUNAR_VFS_FILE_TYPE_FIFO:
+ info->mime_info = thunar_vfs_mime_info_ref (mime_inode_fifo);
+ break;
+
+ case THUNAR_VFS_FILE_TYPE_REGULAR:
+ /* determine the MIME-type for the regular file */
+ info->mime_info = thunar_vfs_mime_database_get_info_for_file (mime_database, absolute_path, info->display_name);
+
+ /* check if the file is executable (for security reasons
+ * we only allow execution of well known file types).
+ */
+ if ((info->mode & 0444) != 0 && g_access (absolute_path, X_OK) == 0)
+ {
+ mime_infos = thunar_vfs_mime_database_get_infos_for_info (mime_database, info->mime_info);
+ for (lp = mime_infos; lp != NULL; lp = lp->next)
+ {
+ if (lp->data == mime_application_x_executable || lp->data == mime_application_x_shellscript)
+ {
+ info->flags |= THUNAR_VFS_FILE_FLAGS_EXECUTABLE;
+ break;
+ }
+ }
+ thunar_vfs_mime_info_list_free (mime_infos);
+ }
+
+ /* check if we have a .desktop (and NOT a .directory) file here */
+ if (G_UNLIKELY (info->mime_info == mime_application_x_desktop && strcmp (thunar_vfs_path_get_name (info->path), ".directory") != 0))
+ {
+ /* try to query the hints from the .desktop file */
+ rc = xfce_rc_simple_open (absolute_path, TRUE);
+ if (G_LIKELY (rc != NULL))
+ {
+ /* we're only interested in the desktop data */
+ xfce_rc_set_group (rc, "Desktop Entry");
+
+ /* check if we have a valid icon info */
+ str = xfce_rc_read_entry_untranslated (rc, "Icon", NULL);
+ if (G_LIKELY (str != NULL && *str != '\0'))
+ {
+ /* setup the custom icon */
+ info->custom_icon = g_strdup (str);
+
+ /* drop any suffix (e.g. '.png') from themed icons */
+ if (!g_path_is_absolute (info->custom_icon))
+ {
+ p = strrchr (info->custom_icon, '.');
+ if (G_UNLIKELY (p != NULL))
+ *p = '\0';
+ }
+ }
+
+ /* check if we have a valid name info */
+ str = xfce_rc_read_entry (rc, "Name", NULL);
+ if (G_LIKELY (str != NULL && *str != '\0'))
+ {
+ /* release the previous display name */
+ if (G_UNLIKELY (info->display_name != thunar_vfs_path_get_name (info->path)))
+ g_free (info->path);
+
+ /* use the name specified by the .desktop file as display name */
+ info->display_name = g_strdup (str);
+ }
+
+ /* check if the desktop file refers to an application
+ * and has a non-NULL Exec field set.
+ */
+ str = xfce_rc_read_entry_untranslated (rc, "Type", "Application");
+ if (G_LIKELY (exo_str_is_equal (str, "Application"))
+ && xfce_rc_read_entry (rc, "Exec", NULL) != NULL)
+ {
+ info->flags |= THUNAR_VFS_FILE_FLAGS_EXECUTABLE;
+ }
+
+ /* close the file */
+ xfce_rc_close (rc);
+ }
+ }
+ break;
+
+ default:
+ g_assert_not_reached ();
+ break;
+ }
+
+ return info;
+}
+
+
+
+#define __THUNAR_VFS_INFO_C__
+#include <thunar-vfs/thunar-vfs-aliasdef.c>
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-info.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-info.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-info.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,194 @@
+/* $Id: thunar-vfs-info.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#if !defined (THUNAR_VFS_INSIDE_THUNAR_VFS_H) && !defined (THUNAR_VFS_COMPILATION)
+#error "Only <thunar-vfs/thunar-vfs.h> can be included directly, this file may disappear or change contents."
+#endif
+
+#ifndef __THUNAR_VFS_INFO_H__
+#define __THUNAR_VFS_INFO_H__
+
+#include <thunar-vfs/thunar-vfs-mime-info.h>
+#include <thunar-vfs/thunar-vfs-path.h>
+#include <thunar-vfs/thunar-vfs-types.h>
+
+G_BEGIN_DECLS;
+
+#define THUNAR_VFS_TYPE_INFO (thunar_vfs_info_get_type ())
+
+/**
+ * ThunarVfsInfo:
+ *
+ * The #ThunarVfsInfo structure provides information about a file system
+ * entity.
+ **/
+typedef struct _ThunarVfsInfo ThunarVfsInfo;
+struct _ThunarVfsInfo
+{
+ /* File type */
+ ThunarVfsFileType type;
+
+ /* File permissions and special mode flags */
+ ThunarVfsFileMode mode;
+
+ /* File flags */
+ ThunarVfsFileFlags flags;
+
+ /* Owner's user id */
+ ThunarVfsUserId uid;
+
+ /* Owner's group id */
+ ThunarVfsGroupId gid;
+
+ /* Size in bytes */
+ ThunarVfsFileSize size;
+
+ /* time of last access */
+ ThunarVfsFileTime atime;
+
+ /* time of last modification */
+ ThunarVfsFileTime mtime;
+
+ /* time of last status change */
+ ThunarVfsFileTime ctime;
+
+ /* inode id */
+ ThunarVfsFileInode inode;
+
+ /* device id */
+ ThunarVfsFileDevice device;
+
+ /* file's mime type */
+ ThunarVfsMimeInfo *mime_info;
+
+ /* file's absolute path */
+ ThunarVfsPath *path;
+
+ /* file's custom icon (path or themed icon name) */
+ gchar *custom_icon;
+
+ /* file's display name (UTF-8) */
+ gchar *display_name;
+
+ /*< private >*/
+ gint ref_count;
+};
+
+GType thunar_vfs_info_get_type (void) G_GNUC_CONST;
+
+ThunarVfsInfo *thunar_vfs_info_new_for_path (ThunarVfsPath *path,
+ GError **error) G_GNUC_MALLOC;
+
+G_INLINE_FUNC ThunarVfsInfo *thunar_vfs_info_ref (ThunarVfsInfo *info);
+void thunar_vfs_info_unref (ThunarVfsInfo *info);
+
+ThunarVfsInfo *thunar_vfs_info_copy (const ThunarVfsInfo *info) G_GNUC_MALLOC;
+
+G_INLINE_FUNC const gchar *thunar_vfs_info_get_custom_icon (const ThunarVfsInfo *info);
+
+gboolean thunar_vfs_info_execute (const ThunarVfsInfo *info,
+ GdkScreen *screen,
+ GList *path_list,
+ GError **error);
+
+gboolean thunar_vfs_info_rename (ThunarVfsInfo *info,
+ const gchar *name,
+ GError **error);
+
+gboolean thunar_vfs_info_matches (const ThunarVfsInfo *a,
+ const ThunarVfsInfo *b);
+
+G_INLINE_FUNC void thunar_vfs_info_list_free (GList *info_list);
+
+
+/* inline functions implementations */
+#if defined(G_CAN_INLINE) || defined(__THUNAR_VFS_INFO_C__)
+/**
+ * thunar_vfs_info_ref:
+ * @info : a #ThunarVfsInfo.
+ *
+ * Increments the reference count on @info by 1 and
+ * returns a pointer to @info.
+ *
+ * Return value: a pointer to @info.
+ **/
+G_INLINE_FUNC ThunarVfsInfo*
+thunar_vfs_info_ref (ThunarVfsInfo *info)
+{
+ exo_atomic_inc (&info->ref_count);
+ return info;
+}
+
+/**
+ * thunar_vfs_info_get_custom_icon:
+ * @info : a #ThunarVfsInfo.
+ *
+ * Returns the custom icon for @info if there's
+ * a custom icon, else %NULL.
+ *
+ * The custom icon can be a themed icon name or
+ * an absolute path to an icon file in the local
+ * file system.
+ *
+ * Return value: the custom icon for @info or %NULL.
+ **/
+G_INLINE_FUNC const gchar*
+thunar_vfs_info_get_custom_icon (const ThunarVfsInfo *info)
+{
+ return info->custom_icon;
+}
+
+/**
+ * thunar_vfs_info_list_free:
+ * @info_list : a list #ThunarVfsInfo<!---->s.
+ *
+ * Unrefs all #ThunarVfsInfo<!---->s in @info_list and
+ * frees the list itself.
+ *
+ * This method always returns %NULL for the convenience of
+ * being able to do:
+ * <informalexample><programlisting>
+ * info_list = thunar_vfs_info_list_free (info_list);
+ * </programlisting></informalexample>
+ *
+ * Return value: the empty list (%NULL).
+ **/
+G_INLINE_FUNC void
+thunar_vfs_info_list_free (GList *info_list)
+{
+ GList *lp;
+ for (lp = info_list; lp != NULL; lp = lp->next)
+ thunar_vfs_info_unref (lp->data);
+ g_list_free (info_list);
+}
+#endif /* G_CAN_INLINE || __THUNAR_VFS_INFO_C__ */
+
+
+#if defined(THUNAR_VFS_COMPILATION)
+void _thunar_vfs_info_init (void) G_GNUC_INTERNAL;
+void _thunar_vfs_info_shutdown (void) G_GNUC_INTERNAL;
+ThunarVfsInfo *_thunar_vfs_info_new_internal (ThunarVfsPath *path,
+ const gchar *absolute_path,
+ GError **error) G_GNUC_INTERNAL;
+#endif
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VFS_INFO_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-interactive-job.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-interactive-job.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-interactive-job.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,410 @@
+/* $Id: thunar-vfs-interactive-job.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+
+#include <thunar-vfs/thunar-vfs-enum-types.h>
+#include <thunar-vfs/thunar-vfs-interactive-job.h>
+#include <thunar-vfs/thunar-vfs-marshal.h>
+#include <thunar-vfs/thunar-vfs-alias.h>
+
+
+
+enum
+{
+ ASK,
+ INFO_MESSAGE,
+ NEW_FILES,
+ PERCENT,
+ LAST_SIGNAL,
+};
+
+
+
+static void thunar_vfs_interactive_job_class_init (ThunarVfsInteractiveJobClass *klass);
+static void thunar_vfs_interactive_job_init (ThunarVfsInteractiveJob *interactive_job);
+static void thunar_vfs_interactive_job_finalize (GObject *object);
+static ThunarVfsInteractiveJobResponse thunar_vfs_interactive_job_real_ask (ThunarVfsInteractiveJob *interactive_job,
+ const gchar *message,
+ ThunarVfsInteractiveJobResponse choices);
+static ThunarVfsInteractiveJobResponse thunar_vfs_interactive_job_ask (ThunarVfsInteractiveJob *interactive_job,
+ const gchar *message,
+ ThunarVfsInteractiveJobResponse choices);
+
+
+
+static guint interactive_signals[LAST_SIGNAL];
+
+
+
+G_DEFINE_ABSTRACT_TYPE (ThunarVfsInteractiveJob, thunar_vfs_interactive_job, THUNAR_VFS_TYPE_JOB);
+
+
+
+static gboolean
+ask_accumulator (GSignalInvocationHint *ihint,
+ GValue *return_accu,
+ const GValue *handler_return,
+ gpointer data)
+{
+ g_value_copy (handler_return, return_accu);
+ return FALSE;
+}
+
+
+
+static void
+thunar_vfs_interactive_job_class_init (ThunarVfsInteractiveJobClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_vfs_interactive_job_finalize;
+
+ klass->ask = thunar_vfs_interactive_job_real_ask;
+
+ /**
+ * ThunarVfsInteractiveJob::ask:
+ * @job : a #ThunarVfsJob.
+ * @message : question to display to the user.
+ * @choices : a combination of #ThunarVfsInteractiveJobResponse<!---->s.
+ *
+ * The @message is garantied to contain valid UTF-8.
+ *
+ * Return value: the selected choice.
+ **/
+ interactive_signals[ASK] =
+ g_signal_new ("ask",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_NO_HOOKS | G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (ThunarVfsInteractiveJobClass, ask),
+ ask_accumulator, NULL,
+ _thunar_vfs_marshal_FLAGS__STRING_FLAGS,
+ THUNAR_VFS_TYPE_VFS_INTERACTIVE_JOB_RESPONSE,
+ 2, G_TYPE_STRING,
+ THUNAR_VFS_TYPE_VFS_INTERACTIVE_JOB_RESPONSE);
+
+ /**
+ * ThunarVfsInteractiveJob::new-files:
+ * @job : a #ThunarVfsJob.
+ * @path_list : a list of #ThunarVfsPath<!---->s that were created by @job.
+ *
+ * This signal is emitted by the @job right before the @job is terminated
+ * and informs the application about the list of created files in @path_list.
+ * @path_list contains only the toplevel path items, that were specified by
+ * the application on creation of the @job.
+ **/
+ interactive_signals[NEW_FILES] =
+ g_signal_new ("new-files",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_NO_HOOKS, 0, NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1, G_TYPE_POINTER);
+
+ /**
+ * ThunarVfsInteractiveJob::info-message:
+ * @job : a #ThunarVfsJob.
+ * @message : information to be displayed about @job.
+ *
+ * This signal is emitted to display information about the
+ * @job. Examples of messages are "Preparing..." or
+ * "Cleaning up...".
+ *
+ * The @message is garantied to contain valid UTF-8, so
+ * it can be displayed by #GtkWidget<!---->s out of the
+ * box.
+ **/
+ interactive_signals[INFO_MESSAGE] =
+ g_signal_new ("info-message",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_NO_HOOKS, 0, NULL, NULL,
+ g_cclosure_marshal_VOID__STRING,
+ G_TYPE_NONE, 1, G_TYPE_STRING);
+
+ /**
+ * ThunarVfsInteractiveJob::percent:
+ * @job : a #ThunarVfsJob.
+ * @percent : the percentage of completeness.
+ *
+ * This signal is emitted to present the state
+ * of the overall progress.
+ **/
+ interactive_signals[PERCENT] =
+ g_signal_new ("percent",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_NO_HOOKS, 0, NULL, NULL,
+ g_cclosure_marshal_VOID__DOUBLE,
+ G_TYPE_NONE, 1, G_TYPE_DOUBLE);
+}
+
+
+
+static void
+thunar_vfs_interactive_job_init (ThunarVfsInteractiveJob *interactive_job)
+{
+ /* grab a reference on the default vfs monitor */
+ interactive_job->monitor = thunar_vfs_monitor_get_default ();
+}
+
+
+
+static void
+thunar_vfs_interactive_job_finalize (GObject *object)
+{
+ ThunarVfsInteractiveJob *interactive_job = THUNAR_VFS_INTERACTIVE_JOB (object);
+
+ /* release the reference on the default vfs monitor */
+ g_object_unref (G_OBJECT (interactive_job->monitor));
+
+ (*G_OBJECT_CLASS (thunar_vfs_interactive_job_parent_class)->finalize) (object);
+}
+
+
+
+static ThunarVfsInteractiveJobResponse
+thunar_vfs_interactive_job_real_ask (ThunarVfsInteractiveJob *interactive_job,
+ const gchar *message,
+ ThunarVfsInteractiveJobResponse choices)
+{
+ return THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_CANCEL;
+}
+
+
+
+static ThunarVfsInteractiveJobResponse
+thunar_vfs_interactive_job_ask (ThunarVfsInteractiveJob *interactive_job,
+ const gchar *message,
+ ThunarVfsInteractiveJobResponse choices)
+{
+ ThunarVfsInteractiveJobResponse response;
+ thunar_vfs_job_emit (THUNAR_VFS_JOB (interactive_job), interactive_signals[ASK], 0, message, choices, &response);
+ return response;
+}
+
+
+
+/**
+ * thunar_vfs_interactive_job_info_message:
+ * @interactive_job : a #ThunarVfsInteractiveJob.
+ * @message : an informational message about @interactive_job.
+ *
+ * Emits the ::info-message signal on @interactive_job with @message.
+ *
+ * The text contained in @message must be valid UTF-8.
+ **/
+void
+thunar_vfs_interactive_job_info_message (ThunarVfsInteractiveJob *interactive_job,
+ const gchar *message)
+{
+ g_return_if_fail (THUNAR_VFS_IS_INTERACTIVE_JOB (interactive_job));
+ g_return_if_fail (g_utf8_validate (message, -1, NULL));
+
+ thunar_vfs_job_emit (THUNAR_VFS_JOB (interactive_job), interactive_signals[INFO_MESSAGE], 0, message);
+}
+
+
+
+/**
+ * thunar_vfs_interactive_job_percent:
+ * @interactive_job : a #ThunarVfsInteractiveJob.
+ * @percent : the percentage of completeness (in the range of 0.0 to 100.0).
+ *
+ * Emits the ::percent signal on @interactive_job with @percent.
+ **/
+void
+thunar_vfs_interactive_job_percent (ThunarVfsInteractiveJob *interactive_job,
+ gdouble percent)
+{
+ struct timeval tv;
+ guint64 time;
+
+ g_return_if_fail (THUNAR_VFS_IS_INTERACTIVE_JOB (interactive_job));
+ g_return_if_fail (percent >= 0.0 && percent <= 100.0);
+
+ /* determine the current time in msecs */
+ gettimeofday (&tv, NULL);
+ time = tv.tv_sec * 1000 + tv.tv_usec / 1000;
+
+ /* don't fire the "percent" signal more than ten times per second
+ * to avoid unneccessary load on the main thread.
+ */
+ if (G_UNLIKELY (time - interactive_job->last_percent_time > 100))
+ {
+ thunar_vfs_job_emit (THUNAR_VFS_JOB (interactive_job), interactive_signals[PERCENT], 0, percent);
+ interactive_job->last_percent_time = time;
+ }
+}
+
+
+
+/**
+ * thunar_vfs_interactive_job_new_files:
+ * @interactive_job : a #ThunarVfsInteractiveJob.
+ * @path_list : the #ThunarVfsPath<!---->s that were created by @interactive_job.
+ *
+ * Emits the ::created signal on @interactive_job with @info_list.
+ **/
+void
+thunar_vfs_interactive_job_new_files (ThunarVfsInteractiveJob *interactive_job,
+ const GList *path_list)
+{
+ g_return_if_fail (THUNAR_VFS_IS_INTERACTIVE_JOB (interactive_job));
+
+ /* wait for the monitor to process all pending events */
+ thunar_vfs_monitor_wait (interactive_job->monitor);
+
+ /* emit the new-files signal */
+ thunar_vfs_job_emit (THUNAR_VFS_JOB (interactive_job), interactive_signals[NEW_FILES], 0, path_list);
+}
+
+
+
+/**
+ * thunar_vfs_interactive_job_overwrite:
+ * @interactive_job : a #ThunarVfsInteractiveJob.
+ * @message : the message to be displayed in valid UTF-8.
+ *
+ * Asks the user whether to overwrite a certain file as described by
+ * @message.
+ *
+ * The return value may be %TRUE to perform the overwrite, or %FALSE,
+ * which means to either skip the file or cancel the @interactive_job.
+ * The caller must check using thunar_vfs_job_cancelled() if %FALSE
+ * is returned.
+ *
+ * Return value: %TRUE to overwrite or %FALSE to leave it or cancel
+ * the @interactive_job.
+ **/
+gboolean
+thunar_vfs_interactive_job_overwrite (ThunarVfsInteractiveJob *interactive_job,
+ const gchar *message)
+{
+ ThunarVfsInteractiveJobResponse response;
+
+ g_return_val_if_fail (THUNAR_VFS_IS_INTERACTIVE_JOB (interactive_job), FALSE);
+ g_return_val_if_fail (g_utf8_validate (message, -1, NULL), FALSE);
+
+ /* check if the user cancelled the job already */
+ if (thunar_vfs_job_cancelled (THUNAR_VFS_JOB (interactive_job)))
+ return FALSE;
+
+ /* check if the user said "overwrite all" earlier */
+ if (interactive_job->overwrite_all)
+ return TRUE;
+
+ /* ask the user */
+ response = thunar_vfs_interactive_job_ask (interactive_job, message,
+ THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_YES |
+ THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_YES_ALL |
+ THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_NO |
+ THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_CANCEL);
+
+ /* evaluate the response */
+ switch (response)
+ {
+ case THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_YES_ALL:
+ interactive_job->overwrite_all = TRUE;
+ /* FALL-THROUGH */
+
+ case THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_YES:
+ return TRUE;
+
+ case THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_CANCEL:
+ thunar_vfs_job_cancel (THUNAR_VFS_JOB (interactive_job));
+ /* FALL-THROUGH */
+
+ case THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_NO:
+ return FALSE;
+
+ default:
+ g_assert_not_reached ();
+ return FALSE;
+ }
+}
+
+
+
+/**
+ * thunar_vfs_interactive_job_skip:
+ * @interactive_job : a #ThunarVfsInteractiveJob.
+ * @message : the message to be displayed as valid UTF-8.
+ *
+ * Asks the user whether to skip a certain file as described by
+ * @message.
+ *
+ * The return value may be %TRUE to perform the skip, or %FALSE,
+ * which means to cancel the @interactive_job.
+ *
+ * Return value: %TRUE to overwrite or %FALSE to cancel
+ * the @interactive_job.
+ **/
+gboolean
+thunar_vfs_interactive_job_skip (ThunarVfsInteractiveJob *interactive_job,
+ const gchar *message)
+{
+ ThunarVfsInteractiveJobResponse response;
+
+ g_return_val_if_fail (THUNAR_VFS_IS_INTERACTIVE_JOB (interactive_job), FALSE);
+ g_return_val_if_fail (g_utf8_validate (message, -1, NULL), FALSE);
+
+ /* check if the user cancelled the job already */
+ if (thunar_vfs_job_cancelled (THUNAR_VFS_JOB (interactive_job)))
+ return FALSE;
+
+ /* check if the user said "skip all" earlier */
+ if (interactive_job->skip_all)
+ return TRUE;
+
+ /* ask the user */
+ response = thunar_vfs_interactive_job_ask (interactive_job, message,
+ THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_YES |
+ THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_YES_ALL |
+ THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_CANCEL);
+
+ /* evaluate the response */
+ switch (response)
+ {
+ case THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_YES_ALL:
+ interactive_job->skip_all = TRUE;
+ /* FALL-THROUGH */
+
+ case THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_YES:
+ return TRUE;
+
+ case THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_CANCEL:
+ thunar_vfs_job_cancel (THUNAR_VFS_JOB (interactive_job));
+ return FALSE;
+
+ default:
+ g_assert_not_reached ();
+ return FALSE;
+ }
+}
+
+
+
+#define __THUNAR_VFS_INTERACTIVE_JOB_C__
+#include <thunar-vfs/thunar-vfs-aliasdef.c>
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-interactive-job.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-interactive-job.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-interactive-job.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,100 @@
+/* $Id: thunar-vfs-interactive-job.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __THUNAR_VFS_INTERACTIVE_JOB_H__
+#define __THUNAR_VFS_INTERACTIVE_JOB_H__
+
+#include <thunar-vfs/thunar-vfs-job.h>
+#include <thunar-vfs/thunar-vfs-monitor.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarVfsInteractiveJobClass ThunarVfsInteractiveJobClass;
+typedef struct _ThunarVfsInteractiveJob ThunarVfsInteractiveJob;
+
+#define THUNAR_VFS_TYPE_INTERACTIVE_JOB (thunar_vfs_interactive_job_get_type ())
+#define THUNAR_VFS_INTERACTIVE_JOB(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_VFS_TYPE_INTERACTIVE_JOB, ThunarVfsInteractiveJob))
+#define THUNAR_VFS_INTERACTIVE_JOB_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_VFS_TYPE_INTERACTIVE_JOB, ThunarVfsInteractiveJobClass))
+#define THUNAR_VFS_IS_INTERACTIVE_JOB(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_VFS_TYPE_INTERACTIVE_JOB))
+#define THUNAR_VFS_IS_INTERACTIVE_JOB_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_VFS_TYPE_INTERACTIVE_JOB))
+#define THUNAR_VFS_INTERACTIVE_JOB_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_VFS_TYPE_INTERACTIVE_JOB, ThunarVfsInteractiveJobClass))
+
+/**
+ * ThunarVfsInteractiveJobResponse:
+ * @THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_YES :
+ * @THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_YES_ALL :
+ * @THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_NO :
+ * @THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_CANCEL :
+ **/
+typedef enum /*< flags >*/
+{
+ THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_YES = 1 << 0,
+ THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_YES_ALL = 1 << 1,
+ THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_NO = 1 << 2,
+ THUNAR_VFS_INTERACTIVE_JOB_RESPONSE_CANCEL = 1 << 3,
+} ThunarVfsInteractiveJobResponse;
+
+struct _ThunarVfsInteractiveJobClass
+{
+ ThunarVfsJobClass __parent__;
+
+ /* signals */
+ ThunarVfsInteractiveJobResponse (*ask) (ThunarVfsInteractiveJob *interactive_job,
+ const gchar *message,
+ ThunarVfsInteractiveJobResponse choices);
+
+ /*< private >*/
+ void (*reserved1) (void);
+ void (*reserved2) (void);
+ void (*reserved3) (void);
+};
+
+struct _ThunarVfsInteractiveJob
+{
+ ThunarVfsJob __parent__;
+
+ /* the last time we fired the "percent" signal (in msecs) */
+ guint64 last_percent_time;
+
+ /* connection to the default ThunarVfsMonitor */
+ ThunarVfsMonitor *monitor;
+
+ guint overwrite_all : 1;
+ guint skip_all : 1;
+};
+
+GType thunar_vfs_interactive_job_get_type (void) G_GNUC_CONST;
+
+void thunar_vfs_interactive_job_info_message (ThunarVfsInteractiveJob *interactive_job,
+ const gchar *message) G_GNUC_INTERNAL;
+void thunar_vfs_interactive_job_percent (ThunarVfsInteractiveJob *interactive_job,
+ gdouble percent) G_GNUC_INTERNAL;
+
+void thunar_vfs_interactive_job_new_files (ThunarVfsInteractiveJob *interactive_job,
+ const GList *path_list) G_GNUC_INTERNAL;
+
+gboolean thunar_vfs_interactive_job_overwrite (ThunarVfsInteractiveJob *interactive_job,
+ const gchar *message) G_GNUC_INTERNAL;
+gboolean thunar_vfs_interactive_job_skip (ThunarVfsInteractiveJob *interactive_job,
+ const gchar *message) G_GNUC_INTERNAL;
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VFS_INTERACTIVE_JOB_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-job.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-job.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-job.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,451 @@
+/* $Id: thunar-vfs-job.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+/* implement thunar-vfs-job's inline functions */
+#define G_IMPLEMENT_INLINES 1
+#define __THUNAR_VFS_JOB_C__
+#include <thunar-vfs/thunar-vfs-job.h>
+
+#include <thunar-vfs/thunar-vfs-alias.h>
+
+#include <gdk/gdk.h>
+
+
+
+#define THUNAR_VFS_JOB_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), THUNAR_VFS_TYPE_JOB, ThunarVfsJobPrivate))
+
+
+
+/* Signal identifiers */
+enum
+{
+ ERROR,
+ FINISHED,
+ LAST_SIGNAL,
+};
+
+
+
+/* signal emission details */
+typedef struct
+{
+ ThunarVfsJob *job;
+ guint signal_id;
+ GQuark signal_detail;
+ va_list var_args;
+ volatile gboolean pending;
+} ThunarVfsJobEmitDetails;
+
+
+
+static void thunar_vfs_job_class_init (ThunarVfsJobClass *klass);
+static void thunar_vfs_job_init (ThunarVfsJob *job);
+static void thunar_vfs_job_finalize (GObject *object);
+static void thunar_vfs_job_execute (gpointer data,
+ gpointer user_data);
+static gboolean thunar_vfs_job_emit_idle (gpointer user_data);
+static gboolean thunar_vfs_job_launch_idle (gpointer user_data);
+
+
+
+struct _ThunarVfsJobPrivate
+{
+ GCond *cond;
+ GMutex *mutex;
+ GMainLoop *loop;
+ gint launch_idle_id;
+};
+
+
+
+static GObjectClass *thunar_vfs_job_parent_class;
+static guint job_signals[LAST_SIGNAL];
+static GThreadPool *job_pool = NULL;
+
+
+
+GType
+thunar_vfs_job_get_type (void)
+{
+ static GType type = G_TYPE_INVALID;
+
+ if (G_UNLIKELY (type == G_TYPE_INVALID))
+ {
+ static const GTypeInfo info =
+ {
+ sizeof (ThunarVfsJobClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) thunar_vfs_job_class_init,
+ NULL,
+ NULL,
+ sizeof (ThunarVfsJob),
+ 0,
+ (GInstanceInitFunc) thunar_vfs_job_init,
+ NULL,
+ };
+
+ type = g_type_register_static (G_TYPE_OBJECT, "ThunarVfsJob", &info, G_TYPE_FLAG_ABSTRACT);
+ }
+
+ return type;
+}
+
+
+
+static void
+thunar_vfs_job_class_init (ThunarVfsJobClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ /* add our private data for this class */
+ g_type_class_add_private (klass, sizeof (ThunarVfsJobPrivate));
+
+ /* determine the parent class */
+ thunar_vfs_job_parent_class = g_type_class_peek_parent (klass);
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_vfs_job_finalize;
+
+ /**
+ * ThunarVfsJob::error:
+ * @job : a #ThunarVfsJob.
+ * @error : a #GError describing the cause.
+ *
+ * Emitted whenever an error occurs while executing the
+ * @job.
+ **/
+ job_signals[ERROR] =
+ g_signal_new ("error",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_NO_HOOKS, 0, NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1, G_TYPE_POINTER);
+
+ /**
+ * ThunarVfsJob::finished:
+ * @job : a #ThunarVfsJob.
+ *
+ * This signal will be automatically emitted once the
+ * @job finishes its execution, no matter whether @job
+ * completed successfully or was cancelled by the
+ * user.
+ **/
+ job_signals[FINISHED] =
+ g_signal_new ("finished",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_NO_HOOKS, 0, NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+}
+
+
+
+static void
+thunar_vfs_job_init (ThunarVfsJob *job)
+{
+ job->priv = THUNAR_VFS_JOB_GET_PRIVATE (job);
+ job->priv->cond = g_cond_new ();
+ job->priv->mutex = g_mutex_new ();
+ job->priv->launch_idle_id = -1;
+}
+
+
+
+static void
+thunar_vfs_job_finalize (GObject *object)
+{
+ ThunarVfsJob *job = THUNAR_VFS_JOB (object);
+
+ g_return_if_fail (THUNAR_VFS_IS_JOB (job));
+ g_return_if_fail (job->priv->loop == NULL);
+
+ /* drop the launch idle source if it's active */
+ if (G_LIKELY (job->priv->launch_idle_id >= 0))
+ g_source_remove (job->priv->launch_idle_id);
+
+ /* destroy the synchronization entities */
+ g_mutex_free (job->priv->mutex);
+ g_cond_free (job->priv->cond);
+
+ /* invoke the parent's finalize method */
+ (*G_OBJECT_CLASS (thunar_vfs_job_parent_class)->finalize) (object);
+}
+
+
+
+static void
+thunar_vfs_job_execute (gpointer data,
+ gpointer user_data)
+{
+ ThunarVfsJob *job = THUNAR_VFS_JOB (data);
+
+ g_return_if_fail (THUNAR_VFS_IS_JOB (job));
+ g_return_if_fail (job->priv->loop != NULL);
+
+ /* perform the real work */
+ (*THUNAR_VFS_JOB_GET_CLASS (job)->execute) (job);
+
+ /* exit from the execution loop */
+ g_main_loop_quit (job->priv->loop);
+}
+
+
+
+static gboolean
+thunar_vfs_job_emit_idle (gpointer user_data)
+{
+ ThunarVfsJobEmitDetails *details = user_data;
+ ThunarVfsJob *job = details->job;
+
+ g_return_val_if_fail (THUNAR_VFS_IS_JOB (job), FALSE);
+
+ g_mutex_lock (job->priv->mutex);
+
+ /* emit the signal */
+ GDK_THREADS_ENTER ();
+ g_signal_emit_valist (job, details->signal_id, details->signal_detail, details->var_args);
+ GDK_THREADS_LEAVE ();
+
+ /* tell the other thread, that we're done */
+ details->pending = FALSE;
+ g_cond_signal (job->priv->cond);
+ g_mutex_unlock (job->priv->mutex);
+
+ /* remove the idle source */
+ return FALSE;
+}
+
+
+
+static gboolean
+thunar_vfs_job_launch_idle (gpointer user_data)
+{
+ ThunarVfsJob *job = THUNAR_VFS_JOB (user_data);
+
+ g_return_val_if_fail (THUNAR_VFS_IS_JOB (job), FALSE);
+ g_return_val_if_fail (job_pool != NULL, FALSE);
+
+ /* take an additional reference on the job */
+ g_object_ref (G_OBJECT (job));
+
+ /* allocate a main loop for this job */
+ job->priv->loop = g_main_loop_new (NULL, FALSE);
+
+ /* schedule a thread to handle the job */
+ g_thread_pool_push (job_pool, job, NULL);
+
+ /* wait for the job to finish */
+ g_main_loop_run (job->priv->loop);
+
+ /* emit the "finished" signal */
+ g_signal_emit (G_OBJECT (job), job_signals[FINISHED], 0);
+
+ /* drop the main loop */
+ g_main_loop_unref (job->priv->loop);
+ job->priv->loop = NULL;
+
+ /* drop the additional reference on the job */
+ g_object_unref (G_OBJECT (job));
+
+ return FALSE;
+}
+
+
+
+/**
+ * thunar_vfs_job_launch:
+ * @job : a #ThunarVfsJob.
+ *
+ * This functions schedules @job to be run as soon
+ * as possible, in a separate thread.
+ *
+ * Return value: a pointer to @job.
+ **/
+ThunarVfsJob*
+thunar_vfs_job_launch (ThunarVfsJob *job)
+{
+ g_return_val_if_fail (THUNAR_VFS_IS_JOB (job), NULL);
+ g_return_val_if_fail (job->priv->launch_idle_id < 0, NULL);
+ g_return_val_if_fail (job_pool != NULL, NULL);
+
+ /* schedule the launch idle source */
+ job->priv->launch_idle_id = g_idle_add_full (G_PRIORITY_HIGH, thunar_vfs_job_launch_idle, job, NULL);
+
+ return job;
+}
+
+
+
+/**
+ * thunar_vfs_job_cancel:
+ * @job : a #ThunarVfsJob.
+ *
+ * Attempts to cancel the operation currently
+ * performed by @job. Even after the cancellation
+ * of @job, it may still emit signals, so you
+ * must take care of disconnecting all handlers
+ * appropriately if you cannot handle signals
+ * after cancellation.
+ **/
+void
+thunar_vfs_job_cancel (ThunarVfsJob *job)
+{
+ g_return_if_fail (THUNAR_VFS_IS_JOB (job));
+ job->cancelled = TRUE;
+}
+
+
+
+/**
+ * thunar_vfs_job_emit:
+ * @job : a #ThunarVfsJob.
+ * @signal_id : the id of the signal to emit on @job.
+ * @signal_detail : the detail.
+ * @var_args : a list of paramters to be passed to the signal,
+ * folled by a location for the return value. If
+ * the return type of the signals is %G_TYPE_NONE,
+ * the return value location can be omitted.
+ *
+ * Emits the signal identified by @signal_id on @job in
+ * the context of the main thread. This method doesn't
+ * return until the signal was emitted.
+ **/
+void
+thunar_vfs_job_emit_valist (ThunarVfsJob *job,
+ guint signal_id,
+ GQuark signal_detail,
+ va_list var_args)
+{
+ ThunarVfsJobEmitDetails details;
+
+ g_return_if_fail (THUNAR_VFS_IS_JOB (job));
+ g_return_if_fail (job->priv->loop != NULL);
+
+ details.job = job;
+ details.signal_id = signal_id;
+ details.signal_detail = signal_detail;
+ details.pending = TRUE;
+
+ /* copy the variable argument list (portable) */
+ G_VA_COPY (details.var_args, var_args);
+
+ g_mutex_lock (job->priv->mutex);
+ g_idle_add_full (G_PRIORITY_HIGH, thunar_vfs_job_emit_idle, &details, NULL);
+ while (G_UNLIKELY (details.pending))
+ g_cond_wait (job->priv->cond, job->priv->mutex);
+ g_mutex_unlock (job->priv->mutex);
+}
+
+
+
+/**
+ * thunar_vfs_job_emit:
+ * @job : a #ThunarVfsJob.
+ * @signal_id : the id of the signal to emit on qjob.
+ * @signal_detail : the signal detail.
+ * @... : a list of parameters to be passed to the signal.
+ *
+ * Convenience wrapper for thunar_vfs_job_emit_valist().
+ **/
+void
+thunar_vfs_job_emit (ThunarVfsJob *job,
+ guint signal_id,
+ GQuark signal_detail,
+ ...)
+{
+ va_list var_args;
+
+ va_start (var_args, signal_detail);
+ thunar_vfs_job_emit_valist (job, signal_id, signal_detail, var_args);
+ va_end (var_args);
+}
+
+
+
+/**
+ * thunar_vfs_job_error:
+ * @job : a #ThunarVfsJob.
+ * @error : a #GError describing the error cause.
+ *
+ * Emits the ::error signal on @job with the given @error. Whether
+ * or not the @job continues after emitting the error depends on
+ * the particular implementation of @job, but most jobs will
+ * terminate instantly after emitting an error.
+ **/
+void
+thunar_vfs_job_error (ThunarVfsJob *job,
+ GError *error)
+{
+ g_return_if_fail (THUNAR_VFS_IS_JOB (job));
+ g_return_if_fail (error != NULL && error->message != NULL);
+
+ thunar_vfs_job_emit (job, job_signals[ERROR], 0, error);
+}
+
+
+
+
+/**
+ * _thunar_vfs_job_init:
+ *
+ * Initializes the jobs module of the Thunar-VFS
+ * library.
+ **/
+void
+_thunar_vfs_job_init (void)
+{
+ g_return_if_fail (job_pool == NULL);
+
+ job_pool = g_thread_pool_new (thunar_vfs_job_execute, NULL, 8, FALSE, NULL);
+}
+
+
+
+/**
+ * _thunar_vfs_job_shutdown:
+ *
+ * Shuts down the jobs module of the Thunar-VFS
+ * library.
+ **/
+void
+_thunar_vfs_job_shutdown (void)
+{
+ g_return_if_fail (job_pool != NULL);
+
+ g_thread_pool_free (job_pool, FALSE, TRUE);
+ job_pool = NULL;
+}
+
+
+
+#define __THUNAR_VFS_JOB_C__
+#include <thunar-vfs/thunar-vfs-aliasdef.c>
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-job.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-job.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-job.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,118 @@
+/* $Id: thunar-vfs-job.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#if !defined (THUNAR_VFS_INSIDE_THUNAR_VFS_H) && !defined (THUNAR_VFS_COMPILATION)
+#error "Only <thunar-vfs/thunar-vfs.h> can be included directly, this file may disappear or change contents."
+#endif
+
+#ifndef __THUNAR_VFS_JOB_H__
+#define __THUNAR_VFS_JOB_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarVfsJobPrivate ThunarVfsJobPrivate;
+typedef struct _ThunarVfsJobClass ThunarVfsJobClass;
+typedef struct _ThunarVfsJob ThunarVfsJob;
+
+#define THUNAR_VFS_TYPE_JOB (thunar_vfs_job_get_type ())
+#define THUNAR_VFS_JOB(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_VFS_TYPE_JOB, ThunarVfsJob))
+#define THUNAR_VFS_JOB_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_VFS_TYPE_JOB, ThunarVfsJobClass))
+#define THUNAR_VFS_IS_JOB(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_VFS_TYPE_JOB))
+#define THUNAR_VFS_IS_JOB_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_VFS_TYPE_JOB))
+#define THUNAR_VFS_JOB_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_VFS_TYPE_JOB, ThunarVfsJobClass))
+
+struct _ThunarVfsJobClass
+{
+ GObjectClass __parent__;
+
+ /* virtual methods */
+ void (*execute) (ThunarVfsJob *job);
+
+ /* signals */
+ void (*finished) (ThunarVfsJob *job);
+
+ /*< private >*/
+ void (*reserved1) (void);
+ void (*reserved2) (void);
+ void (*reserved3) (void);
+ void (*reserved4) (void);
+};
+
+struct _ThunarVfsJob
+{
+ GObject __parent__;
+
+ /*< private >*/
+ volatile gboolean cancelled;
+ ThunarVfsJobPrivate *priv;
+};
+
+GType thunar_vfs_job_get_type (void) G_GNUC_CONST;
+
+/* public API */
+ThunarVfsJob *thunar_vfs_job_launch (ThunarVfsJob *job);
+void thunar_vfs_job_cancel (ThunarVfsJob *job);
+G_INLINE_FUNC gboolean thunar_vfs_job_cancelled (const ThunarVfsJob *job);
+
+
+
+/* module API */
+void thunar_vfs_job_emit_valist (ThunarVfsJob *job,
+ guint signal_id,
+ GQuark signal_detail,
+ va_list var_args) G_GNUC_INTERNAL;
+void thunar_vfs_job_emit (ThunarVfsJob *job,
+ guint signal_id,
+ GQuark signal_detail,
+ ...) G_GNUC_INTERNAL;
+void thunar_vfs_job_error (ThunarVfsJob *job,
+ GError *error) G_GNUC_INTERNAL;
+
+
+/* inline function implementations */
+#if defined(G_CAN_INLINE) || defined(__THUNAR_VFS_JOB_C__)
+/**
+ * thunar_vfs_job_cancelled:
+ * @job : a #ThunarVfsJob.
+ *
+ * Checks whether @job was previously cancelled
+ * by a call to thunar_vfs_job_cancel().
+ *
+ * Return value: %TRUE if @job is cancelled.
+ **/
+G_INLINE_FUNC gboolean
+thunar_vfs_job_cancelled (const ThunarVfsJob *job)
+{
+ g_return_val_if_fail (THUNAR_VFS_IS_JOB (job), FALSE);
+ return job->cancelled;
+}
+#endif /* G_CAN_INLINE || __THUNAR_VFS_JOB_C__ */
+
+
+#if defined(THUNAR_VFS_COMPILATION)
+void _thunar_vfs_job_init (void) G_GNUC_INTERNAL;
+void _thunar_vfs_job_shutdown (void) G_GNUC_INTERNAL;
+#endif
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VFS_JOB_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-link-job.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-link-job.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-link-job.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,271 @@
+/* $Id: thunar-vfs-link-job.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <thunar-vfs/thunar-vfs-link-job.h>
+#include <thunar-vfs/thunar-vfs-xfer.h>
+#include <thunar-vfs/thunar-vfs-alias.h>
+
+#if GLIB_CHECK_VERSION(2,6,0)
+#include <glib/gstdio.h>
+#else
+#define g_unlink(path) (unlink ((path)))
+#endif
+
+
+
+static void thunar_vfs_link_job_class_init (ThunarVfsLinkJobClass *klass);
+static void thunar_vfs_link_job_finalize (GObject *object);
+static void thunar_vfs_link_job_execute (ThunarVfsJob *job);
+
+
+
+struct _ThunarVfsLinkJobClass
+{
+ ThunarVfsInteractiveJobClass __parent__;
+};
+
+struct _ThunarVfsLinkJob
+{
+ ThunarVfsInteractiveJob __parent__;
+
+ /* source and target path list */
+ GList *source_path_list;
+ GList *target_path_list;
+};
+
+
+
+static GObjectClass *thunar_vfs_link_job_parent_class;
+
+
+
+GType
+thunar_vfs_link_job_get_type (void)
+{
+ static GType type = G_TYPE_INVALID;
+
+ if (G_UNLIKELY (type == G_TYPE_INVALID))
+ {
+ static const GTypeInfo info =
+ {
+ sizeof (ThunarVfsLinkJobClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) thunar_vfs_link_job_class_init,
+ NULL,
+ NULL,
+ sizeof (ThunarVfsLinkJob),
+ 0,
+ NULL,
+ NULL,
+ };
+
+ type = g_type_register_static (THUNAR_VFS_TYPE_INTERACTIVE_JOB,
+ "ThunarVfsLinkJob", &info, 0);
+ }
+
+ return type;
+}
+
+
+
+static void
+thunar_vfs_link_job_class_init (ThunarVfsLinkJobClass *klass)
+{
+ ThunarVfsJobClass *thunarvfs_job_class;
+ GObjectClass *gobject_class;
+
+ /* determine the parent class */
+ thunar_vfs_link_job_parent_class = g_type_class_peek_parent (klass);
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_vfs_link_job_finalize;
+
+ thunarvfs_job_class = THUNAR_VFS_JOB_CLASS (klass);
+ thunarvfs_job_class->execute = thunar_vfs_link_job_execute;
+}
+
+
+
+static void
+thunar_vfs_link_job_finalize (GObject *object)
+{
+ ThunarVfsLinkJob *link_job = THUNAR_VFS_LINK_JOB (object);
+
+ /* release the target path list */
+ thunar_vfs_path_list_free (link_job->target_path_list);
+
+ /* release the source path list */
+ thunar_vfs_path_list_free (link_job->source_path_list);
+
+ (*G_OBJECT_CLASS (thunar_vfs_link_job_parent_class)->finalize) (object);
+}
+
+
+
+static void
+thunar_vfs_link_job_execute (ThunarVfsJob *job)
+{
+ ThunarVfsLinkJob *link_job = THUNAR_VFS_LINK_JOB (job);
+ ThunarVfsPath *target_path;
+ gboolean overwrite;
+ gdouble percent;
+ GError *error = NULL;
+ gchar target_absolute_path[THUNAR_VFS_PATH_MAXSTRLEN];
+ gchar *display_name;
+ gchar *message;
+ guint completed = 0;
+ guint total;
+ GList *target_path_list = NULL;
+ GList *sp;
+ GList *tp;
+
+ /* determine the total number of source files */
+ total = g_list_length (link_job->source_path_list);
+
+ /* process all files */
+ for (sp = link_job->source_path_list, tp = link_job->target_path_list; sp != NULL && tp != NULL; sp = sp->next, tp = tp->next)
+ {
+ /* check if the job was cancelled */
+ if (thunar_vfs_job_cancelled (job))
+ break;
+
+ /* update the progress message */
+ display_name = g_filename_display_name (thunar_vfs_path_get_name (sp->data));
+ thunar_vfs_interactive_job_info_message (THUNAR_VFS_INTERACTIVE_JOB (link_job), display_name);
+ g_free (display_name);
+
+again:
+ /* try to perform the symlink operation */
+ if (thunar_vfs_xfer_link (sp->data, tp->data, &target_path, &error))
+ {
+ /* add the item to the target path list */
+ target_path_list = g_list_prepend (target_path_list, target_path);
+ }
+ else if (error->domain == G_FILE_ERROR && error->code == G_FILE_ERROR_EXIST)
+ {
+ /* ask the user whether we should remove the target first */
+ message = g_strdup_printf (_("%s.\n\nDo you want to overwrite it?"), error->message);
+ overwrite = thunar_vfs_interactive_job_overwrite (THUNAR_VFS_INTERACTIVE_JOB (link_job), message);
+ g_free (message);
+
+ /* release the error */
+ g_clear_error (&error);
+
+ if (G_LIKELY (overwrite))
+ {
+ /* determine the absolute path to the target file */
+ if (thunar_vfs_path_to_string (tp->data, target_absolute_path, sizeof (target_absolute_path), &error) < 0)
+ {
+error_and_cancel:
+ /* notify the user about the error */
+ thunar_vfs_job_error (job, error);
+ thunar_vfs_job_cancel (job);
+ g_clear_error (&error);
+ break;
+ }
+
+ /* try to unlink the target file */
+ if (g_unlink (target_absolute_path) < 0 && errno != ENOENT)
+ {
+ error = g_error_new (G_FILE_ERROR, g_file_error_from_errno (errno),
+ _("Failed to remove `%s': %s"), target_absolute_path,
+ g_strerror (errno));
+ goto error_and_cancel;
+ }
+
+ /* try again... */
+ goto again;
+ }
+ }
+ else
+ {
+ /* ask the user whether to skip this file (used for cancellation only) */
+ message = g_strdup_printf (_("%s.\n\nDo you want to skip it?"), error->message);
+ thunar_vfs_interactive_job_skip (THUNAR_VFS_INTERACTIVE_JOB (link_job), message);
+ g_free (message);
+
+ /* reset the error */
+ g_clear_error (&error);
+ }
+
+ /* update the progress status */
+ percent = (++completed * 100.0) / total;
+ percent = CLAMP (percent, 0.0, 100.0);
+ thunar_vfs_interactive_job_percent (THUNAR_VFS_INTERACTIVE_JOB (link_job), percent);
+ }
+
+ /* emit the "new-files" signal if we have any new files */
+ if (G_LIKELY (target_path_list != NULL))
+ {
+ thunar_vfs_interactive_job_new_files (THUNAR_VFS_INTERACTIVE_JOB (link_job), target_path_list);
+ thunar_vfs_path_list_free (target_path_list);
+ }
+}
+
+
+
+/**
+ * thunar_vfs_link_job_new:
+ * @source_path_list : the list of #ThunarVfsPath<!---->s to the source files.
+ * @target_path_list : the list of #ThunarVfsPath<!---->s to the target files.
+ * @error : return location for errors or %NULL.
+ *
+ * Allocates a new #ThunarVfsLinkJob, that symlinks all files from @source_path_list
+ * to the paths listed in @target_path_list.
+ *
+ * The caller is responsible to free the returned object using g_object_unref() when
+ * no longer needed.
+ *
+ * Return value: the newly allocated #ThunarVfsLinkJob or %NULL on error.
+ **/
+ThunarVfsJob*
+thunar_vfs_link_job_new (GList *source_path_list,
+ GList *target_path_list,
+ GError **error)
+{
+ ThunarVfsLinkJob *link_job;
+
+ g_return_val_if_fail (g_list_length (source_path_list) == g_list_length (target_path_list), NULL);
+ g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+ /* allocate the new job */
+ link_job = g_object_new (THUNAR_VFS_TYPE_LINK_JOB, NULL);
+ link_job->source_path_list = thunar_vfs_path_list_copy (source_path_list);
+ link_job->target_path_list = thunar_vfs_path_list_copy (target_path_list);
+
+ return THUNAR_VFS_JOB (link_job);
+}
+
+
+
+#define __THUNAR_VFS_LINK_JOB_C__
+#include <thunar-vfs/thunar-vfs-aliasdef.c>
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-link-job.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-link-job.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-link-job.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,50 @@
+/* $Id: thunar-vfs-link-job.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#if !defined (THUNAR_VFS_INSIDE_THUNAR_VFS_H) && !defined (THUNAR_VFS_COMPILATION)
+#error "Only <thunar-vfs/thunar-vfs.h> can be included directly, this file may disappear or change contents."
+#endif
+
+#ifndef __THUNAR_VFS_LINK_JOB_H__
+#define __THUNAR_VFS_LINK_JOB_H__
+
+#include <thunar-vfs/thunar-vfs-interactive-job.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarVfsLinkJobClass ThunarVfsLinkJobClass;
+typedef struct _ThunarVfsLinkJob ThunarVfsLinkJob;
+
+#define THUNAR_VFS_TYPE_LINK_JOB (thunar_vfs_link_job_get_type ())
+#define THUNAR_VFS_LINK_JOB(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_VFS_TYPE_LINK_JOB, ThunarVfsLinkJob))
+#define THUNAR_VFS_LINK_JOB_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_VFS_TYPE_LINK_JOB, ThunarVfsLinkJobClass))
+#define THUNAR_VFS_IS_LINK_JOB(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_VFS_TYPE_LINK_JOB))
+#define THUNAR_VFS_IS_LINK_JOB_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_VFS_TYPE_LINK_JOB))
+#define THUNAR_VFS_LINK_JOB_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_VFS_TYPE_LINK_JOB, ThunarVfsLinkJobClass))
+
+GType thunar_vfs_link_job_get_type (void) G_GNUC_CONST G_GNUC_INTERNAL;
+
+ThunarVfsJob *thunar_vfs_link_job_new (GList *source_path_list,
+ GList *target_path_list,
+ GError **error) G_GNUC_INTERNAL G_GNUC_MALLOC;
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VFS_LINK_JOB_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-listdir-job.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-listdir-job.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-listdir-job.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,351 @@
+/* $Id: thunar-vfs-listdir-job.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#include <thunar-vfs/thunar-vfs-info.h>
+#include <thunar-vfs/thunar-vfs-listdir-job.h>
+#include <thunar-vfs/thunar-vfs-scandir.h>
+#include <thunar-vfs/thunar-vfs-alias.h>
+
+
+
+enum
+{
+ INFOS_READY,
+ LAST_SIGNAL,
+};
+
+
+
+typedef struct _ThunarVfsListdirJobTask ThunarVfsListdirJobTask;
+
+
+
+static void thunar_vfs_listdir_job_class_init (ThunarVfsJobClass *klass);
+static void thunar_vfs_listdir_job_finalize (GObject *object);
+static void thunar_vfs_listdir_job_execute (ThunarVfsJob *job);
+static void thunar_vfs_listdir_job_task (ThunarVfsListdirJobTask *task);
+
+
+struct _ThunarVfsListdirJobClass
+{
+ ThunarVfsJobClass __parent__;
+};
+
+struct _ThunarVfsListdirJob
+{
+ ThunarVfsJob __parent__;
+ ThunarVfsPath *path;
+};
+
+struct _ThunarVfsListdirJobTask
+{
+ GList *first;
+ GList *last;
+ guint floc;
+ gchar fpath[THUNAR_VFS_PATH_MAXSTRLEN + 128];
+};
+
+
+
+static GObjectClass *thunar_vfs_listdir_job_parent_class;
+static guint listdir_signals[LAST_SIGNAL];
+
+
+
+GType
+thunar_vfs_listdir_job_get_type (void)
+{
+ static GType type = G_TYPE_INVALID;
+
+ if (G_UNLIKELY (type == G_TYPE_INVALID))
+ {
+ static const GTypeInfo info =
+ {
+ sizeof (ThunarVfsListdirJobClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) thunar_vfs_listdir_job_class_init,
+ NULL,
+ NULL,
+ sizeof (ThunarVfsListdirJob),
+ 0,
+ NULL,
+ NULL,
+ };
+
+ type = g_type_register_static (THUNAR_VFS_TYPE_JOB,
+ "ThunarVfsListdirJob",
+ &info, 0);
+ }
+
+ return type;
+}
+
+
+
+static void
+thunar_vfs_listdir_job_class_init (ThunarVfsJobClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ /* determine the parent class */
+ thunar_vfs_listdir_job_parent_class = g_type_class_peek_parent (klass);
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_vfs_listdir_job_finalize;
+
+ klass->execute = thunar_vfs_listdir_job_execute;
+
+ /**
+ * ThunarVfsListdirJob::infos-ready:
+ * @job : a #ThunarVfsJob.
+ * @infos : a list of #ThunarVfsInfo<!---->s.
+ *
+ * This signal is emitted whenever there's a new bunch of
+ * #ThunarVfsInfo<!---->s ready. This signal is garantied
+ * to be never emitted with an @infos parameter of %NULL.
+ **/
+ listdir_signals[INFOS_READY] =
+ g_signal_new ("infos-ready",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_NO_HOOKS, 0, NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1, G_TYPE_POINTER);
+}
+
+
+
+static void
+thunar_vfs_listdir_job_finalize (GObject *object)
+{
+ ThunarVfsListdirJob *listdir_job = THUNAR_VFS_LISTDIR_JOB (object);
+
+ /* free the folder path */
+ if (G_LIKELY (listdir_job->path != NULL))
+ thunar_vfs_path_unref (listdir_job->path);
+
+ /* call the parents finalize method */
+ (*G_OBJECT_CLASS (thunar_vfs_listdir_job_parent_class)->finalize) (object);
+}
+
+
+
+static gint
+pathcmp (gconstpointer a,
+ gconstpointer b)
+{
+ return -strcmp (thunar_vfs_path_get_name (a),
+ thunar_vfs_path_get_name (b));
+}
+
+
+
+static void
+thunar_vfs_listdir_job_execute (ThunarVfsJob *job)
+{
+ GThreadPool *pool;
+ GError *error = NULL;
+ GList *list = NULL;
+ GList *lp;
+ GList *hp;
+ guint n;
+
+ /* scan the given directory */
+ list = thunar_vfs_scandir (THUNAR_VFS_LISTDIR_JOB (job)->path, THUNAR_VFS_SCANDIR_FOLLOW_LINKS, pathcmp, &error);
+ if (G_LIKELY (list != NULL))
+ {
+ for (lp = hp = list, n = 0; lp != NULL; lp = lp->next, ++n)
+ if ((n % 2) == 0)
+ hp = hp->next;
+
+ /* no need to parallelize for really small folders */
+ if (G_UNLIKELY (n < 50))
+ {
+ /* initialize the task struct */
+ ThunarVfsListdirJobTask task;
+ task.first = list;
+ task.last = NULL;
+
+ /* put in the absolute path to the folder */
+ task.floc = thunar_vfs_path_to_string (THUNAR_VFS_LISTDIR_JOB (job)->path, task.fpath, sizeof (task.fpath), &error);
+ if (G_LIKELY (task.floc > 0))
+ {
+ /* append a path separator to the absolute folder path, so we can easily generate child paths */
+ task.fpath[task.floc - 1] = G_DIR_SEPARATOR;
+
+ /* run the task */
+ thunar_vfs_listdir_job_task (&task);
+ }
+ }
+ else
+ {
+ /* allocate memory for 2 tasks */
+ ThunarVfsListdirJobTask tasks[2];
+
+ /* initialize the first task */
+ tasks[0].first = list;
+ tasks[0].last = NULL;
+
+ /* put in the absolute path to the folder */
+ tasks[0].floc = thunar_vfs_path_to_string (THUNAR_VFS_LISTDIR_JOB (job)->path, tasks[0].fpath, sizeof (tasks[0].fpath), &error);
+ if (G_LIKELY (tasks[0].floc > 0))
+ {
+ /* allocate a thread pool for the first task */
+ pool = g_thread_pool_new ((GFunc) thunar_vfs_listdir_job_task, NULL, 1, FALSE, NULL);
+
+ /* append a path separator to the absolute folder path, so we can easily generate child paths */
+ tasks[0].fpath[tasks[0].floc - 1] = G_DIR_SEPARATOR;
+
+ /* terminate the list for the first task */
+ hp->prev->next = NULL;
+ hp->prev = NULL;
+
+ /* launch the first task */
+ g_thread_pool_push (pool, &tasks[0], NULL);
+
+ /* initialize the second task */
+ tasks[1].first = hp;
+ tasks[1].last = NULL;
+ tasks[1].floc = tasks[0].floc;
+ memcpy (tasks[1].fpath, tasks[0].fpath, tasks[0].floc);
+
+ /* run the second task */
+ thunar_vfs_listdir_job_task (&tasks[1]);
+
+ /* wait for the first task to finish */
+ g_thread_pool_free (pool, FALSE, TRUE);
+
+ /* concatenate the info lists */
+ if (G_UNLIKELY (tasks[0].last == NULL))
+ {
+ list = tasks[1].first;
+ }
+ else
+ {
+ tasks[0].last->next = tasks[1].first;
+ if (G_LIKELY (tasks[1].first != NULL))
+ tasks[1].first->prev = tasks[0].last;
+ }
+ }
+ }
+
+ /* release the path list in case of an early error */
+ if (G_UNLIKELY (error != NULL))
+ {
+ thunar_vfs_path_list_free (list);
+ list = NULL;
+ }
+ }
+
+ /* emit appropriate signals */
+ if (G_UNLIKELY (error != NULL))
+ {
+ thunar_vfs_job_error (job, error);
+ g_error_free (error);
+ }
+ else if (G_LIKELY (list != NULL))
+ {
+ thunar_vfs_job_emit (job, listdir_signals[INFOS_READY], 0, list);
+ }
+
+ /* cleanup */
+ thunar_vfs_info_list_free (list);
+}
+
+
+
+static void
+thunar_vfs_listdir_job_task (ThunarVfsListdirJobTask *task)
+{
+ ThunarVfsInfo *info;
+ GList *sp;
+ GList *tp;
+
+ for (sp = tp = task->first; sp != NULL; sp = sp->next)
+ {
+ /* generate the absolute path to the file */
+ g_strlcpy (task->fpath + task->floc, thunar_vfs_path_get_name (sp->data), sizeof (task->fpath) - task->floc);
+
+ /* try to determine the file info */
+ info = _thunar_vfs_info_new_internal (sp->data, task->fpath, NULL);
+
+ /* release the reference on the path (the info holds the reference now) */
+ thunar_vfs_path_unref (sp->data);
+
+ /* replace the path with the info on the list */
+ if (G_LIKELY (info != NULL))
+ {
+ task->last = tp;
+ tp->data = info;
+ tp = tp->next;
+ }
+ }
+
+ /* release the not-filled list items (only non-NULL in case of an info error) */
+ if (G_UNLIKELY (tp != NULL))
+ {
+ if (G_LIKELY (tp->prev != NULL))
+ tp->prev->next = NULL;
+ g_list_free (tp);
+ }
+}
+
+
+
+/**
+ * thunar_vfs_job_new:
+ * @folder_path : the #ThunarVfsPath of the directory whose contents to query.
+ *
+ * Allocates a new #ThunarVfsListdirJob object, which can be used to
+ * query the contents of the directory @folder_path.
+ *
+ * You need to call thunar_vfs_job_launch() in order to start the
+ * job. You may want to connect to ::finished, ::error-occurred and
+ * ::infos-ready prior to launching the job.
+ *
+ * The caller is responsible to call g_object_unref() on the
+ * returned object.
+ *
+ * Return value: the newly allocated #ThunarVfsJob, which performs the
+ * directory listing.
+ **/
+ThunarVfsJob*
+thunar_vfs_listdir_job_new (ThunarVfsPath *folder_path)
+{
+ ThunarVfsListdirJob *listdir_job;
+
+ listdir_job = g_object_new (THUNAR_VFS_TYPE_LISTDIR_JOB, NULL);
+ listdir_job->path = thunar_vfs_path_ref (folder_path);
+
+ return THUNAR_VFS_JOB (listdir_job);
+}
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-listdir-job.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-listdir-job.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-listdir-job.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,45 @@
+/* $Id: thunar-vfs-listdir-job.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __THUNAR_VFS_LISTDIR_JOB_H__
+#define __THUNAR_VFS_LISTDIR_JOB_H__
+
+#include <thunar-vfs/thunar-vfs-job.h>
+#include <thunar-vfs/thunar-vfs-path.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarVfsListdirJobClass ThunarVfsListdirJobClass;
+typedef struct _ThunarVfsListdirJob ThunarVfsListdirJob;
+
+#define THUNAR_VFS_TYPE_LISTDIR_JOB (thunar_vfs_listdir_job_get_type ())
+#define THUNAR_VFS_LISTDIR_JOB(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_VFS_TYPE_LISTDIR_JOB, ThunarVfsListdirJob))
+#define THUNAR_VFS_LISTDIR_JOB_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_VFS_TYPE_LISTDIR_JOB, ThunarVfsListdirJobClass))
+#define THUNAR_VFS_IS_LISTDIR_JOB(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_VFS_TYPE_LISTDIR_JOB))
+#define THUNAR_VFS_IS_LISTDIR_JOB_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_VFS_TYPE_LISTDIR_JOB))
+#define THUNAR_VFS_LISTDIR_JOB_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_VFS_TYPE_LISTDIR_JOB, ThunarVfsListdirJobClass))
+
+GType thunar_vfs_listdir_job_get_type (void) G_GNUC_CONST G_GNUC_INTERNAL;
+
+ThunarVfsJob *thunar_vfs_listdir_job_new (ThunarVfsPath *folder_path) G_GNUC_INTERNAL G_GNUC_MALLOC;
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VFS_LISTDIR_JOB_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-marshal.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-marshal.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-marshal.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,90 @@
+
+#include <glib-object.h>
+
+
+#ifdef G_ENABLE_DEBUG
+#define g_marshal_value_peek_boolean(v) g_value_get_boolean (v)
+#define g_marshal_value_peek_char(v) g_value_get_char (v)
+#define g_marshal_value_peek_uchar(v) g_value_get_uchar (v)
+#define g_marshal_value_peek_int(v) g_value_get_int (v)
+#define g_marshal_value_peek_uint(v) g_value_get_uint (v)
+#define g_marshal_value_peek_long(v) g_value_get_long (v)
+#define g_marshal_value_peek_ulong(v) g_value_get_ulong (v)
+#define g_marshal_value_peek_int64(v) g_value_get_int64 (v)
+#define g_marshal_value_peek_uint64(v) g_value_get_uint64 (v)
+#define g_marshal_value_peek_enum(v) g_value_get_enum (v)
+#define g_marshal_value_peek_flags(v) g_value_get_flags (v)
+#define g_marshal_value_peek_float(v) g_value_get_float (v)
+#define g_marshal_value_peek_double(v) g_value_get_double (v)
+#define g_marshal_value_peek_string(v) (char*) g_value_get_string (v)
+#define g_marshal_value_peek_param(v) g_value_get_param (v)
+#define g_marshal_value_peek_boxed(v) g_value_get_boxed (v)
+#define g_marshal_value_peek_pointer(v) g_value_get_pointer (v)
+#define g_marshal_value_peek_object(v) g_value_get_object (v)
+#else /* !G_ENABLE_DEBUG */
+/* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
+ * Do not access GValues directly in your code. Instead, use the
+ * g_value_get_*() functions
+ */
+#define g_marshal_value_peek_boolean(v) (v)->data[0].v_int
+#define g_marshal_value_peek_char(v) (v)->data[0].v_int
+#define g_marshal_value_peek_uchar(v) (v)->data[0].v_uint
+#define g_marshal_value_peek_int(v) (v)->data[0].v_int
+#define g_marshal_value_peek_uint(v) (v)->data[0].v_uint
+#define g_marshal_value_peek_long(v) (v)->data[0].v_long
+#define g_marshal_value_peek_ulong(v) (v)->data[0].v_ulong
+#define g_marshal_value_peek_int64(v) (v)->data[0].v_int64
+#define g_marshal_value_peek_uint64(v) (v)->data[0].v_uint64
+#define g_marshal_value_peek_enum(v) (v)->data[0].v_long
+#define g_marshal_value_peek_flags(v) (v)->data[0].v_ulong
+#define g_marshal_value_peek_float(v) (v)->data[0].v_float
+#define g_marshal_value_peek_double(v) (v)->data[0].v_double
+#define g_marshal_value_peek_string(v) (v)->data[0].v_pointer
+#define g_marshal_value_peek_param(v) (v)->data[0].v_pointer
+#define g_marshal_value_peek_boxed(v) (v)->data[0].v_pointer
+#define g_marshal_value_peek_pointer(v) (v)->data[0].v_pointer
+#define g_marshal_value_peek_object(v) (v)->data[0].v_pointer
+#endif /* !G_ENABLE_DEBUG */
+
+
+/* FLAGS:STRING,FLAGS (thunar-vfs-marshal.list:1) */
+void
+_thunar_vfs_marshal_FLAGS__STRING_FLAGS (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data)
+{
+ typedef guint (*GMarshalFunc_FLAGS__STRING_FLAGS) (gpointer data1,
+ gpointer arg_1,
+ guint arg_2,
+ gpointer data2);
+ register GMarshalFunc_FLAGS__STRING_FLAGS callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+ guint v_return;
+
+ g_return_if_fail (return_value != NULL);
+ g_return_if_fail (n_param_values == 3);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_FLAGS__STRING_FLAGS) (marshal_data ? marshal_data : cc->callback);
+
+ v_return = callback (data1,
+ g_marshal_value_peek_string (param_values + 1),
+ g_marshal_value_peek_flags (param_values + 2),
+ data2);
+
+ g_value_set_flags (return_value, v_return);
+}
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-marshal.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-marshal.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-marshal.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,20 @@
+
+#ifndef ___thunar_vfs_marshal_MARSHAL_H__
+#define ___thunar_vfs_marshal_MARSHAL_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+/* FLAGS:STRING,FLAGS (thunar-vfs-marshal.list:1) */
+extern void _thunar_vfs_marshal_FLAGS__STRING_FLAGS (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+G_END_DECLS
+
+#endif /* ___thunar_vfs_marshal_MARSHAL_H__ */
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-marshal.list
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-marshal.list 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-marshal.list 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1 @@
+FLAGS:STRING,FLAGS
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-application.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-application.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-application.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,587 @@
+/* $Id: thunar-vfs-mime-application.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#include <exo/exo.h>
+
+#include <thunar-vfs/thunar-vfs-exec.h>
+#include <thunar-vfs/thunar-vfs-mime-application.h>
+#include <thunar-vfs/thunar-vfs-util.h>
+#include <thunar-vfs/thunar-vfs-alias.h>
+
+
+
+GQuark
+thunar_vfs_mime_application_error_quark (void)
+{
+ static GQuark quark = 0;
+ if (G_UNLIKELY (quark == 0))
+ quark = g_quark_from_static_string ("thunar-vfs-mime-application-error-quark");
+ return quark;
+}
+
+
+
+
+static gboolean thunar_vfs_mime_application_get_argv (const ThunarVfsMimeApplication *application,
+ GList *path_list,
+ gint *argc,
+ gchar ***argv,
+ GError **error);
+
+
+
+struct _ThunarVfsMimeApplication
+{
+ gint ref_count;
+ gchar *binary_name;
+ gchar *desktop_id;
+ gchar *exec;
+ gchar *icon;
+ gchar *name;
+ gchar **mime_types;
+ ThunarVfsMimeApplicationFlags flags;
+};
+
+
+
+GType
+thunar_vfs_mime_application_get_type (void)
+{
+ static GType type = G_TYPE_INVALID;
+
+ if (G_UNLIKELY (type == G_TYPE_INVALID))
+ {
+ type = g_boxed_type_register_static ("ThunarVfsMimeApplication",
+ (GBoxedCopyFunc) thunar_vfs_mime_application_ref,
+ (GBoxedFreeFunc) thunar_vfs_mime_application_unref);
+ }
+
+ return type;
+}
+
+
+
+static gboolean
+thunar_vfs_mime_application_get_argv (const ThunarVfsMimeApplication *application,
+ GList *path_list,
+ gint *argc,
+ gchar ***argv,
+ GError **error)
+{
+ return thunar_vfs_exec_parse (application->exec, path_list, application->icon, application->name, NULL,
+ (application->flags & THUNAR_VFS_MIME_APPLICATION_REQUIRES_TERMINAL) != 0,
+ argc, argv, error);
+}
+
+
+
+/**
+ * thunar_vfs_mime_application_new_from_desktop_id:
+ * @desktop_id : the id of an application's .desktop file.
+ *
+ * Generates a #ThunarVfsMimeApplication instance for the application
+ * referenced by @desktop_id. Returns %NULL if @desktop_id is not valid.
+ *
+ * The caller is responsible to free the returned instance using
+ * thunar_vfs_mime_application_unref().
+ *
+ * Return value: the #ThunarVfsMimeApplication for @desktop_id or %NULL.
+ **/
+ThunarVfsMimeApplication*
+thunar_vfs_mime_application_new_from_desktop_id (const gchar *desktop_id)
+{
+ ThunarVfsMimeApplication *application = NULL;
+ gchar *spec;
+ gchar *path = NULL;
+ gchar *s;
+
+ g_return_val_if_fail (desktop_id != NULL, NULL);
+
+ /* lookup the .desktop file by the given desktop-id */
+ s = spec = g_build_filename ("applications", desktop_id, NULL);
+ do
+ {
+ path = xfce_resource_lookup (XFCE_RESOURCE_DATA, spec);
+ if (G_LIKELY (path != NULL))
+ break;
+
+ for (; *s != '\0' && *s != '-'; ++s) ;
+ if (G_LIKELY (*s == '-'))
+ *s++ = G_DIR_SEPARATOR;
+ }
+ while (*s != '\0');
+ g_free (spec);
+
+ /* check if we found a file */
+ if (G_UNLIKELY (path == NULL))
+ return NULL;
+
+ /* try to load the application from the path */
+ application = thunar_vfs_mime_application_new_from_file (path, desktop_id);
+
+ /* cleanup */
+ g_free (path);
+
+ return application;
+}
+
+
+
+/**
+ * thunar_vfs_mime_application_new_from_file:
+ * @path : the absolute path to the desktop file.
+ * @desktop_id : the desktop-id of the file.
+ *
+ * Generates a new #ThunarVfsMimeApplication for the application
+ * described by @path and @desktop_id.
+ *
+ * The caller is responsible to free the returned instance using
+ * thunar_vfs_mime_application_unref().
+ *
+ * You should really seldomly use this function and always
+ * prefer thunar_vfs_mime_application_new_from_desktop_id().
+ *
+ * Return value: the #ThunarVfsMimeApplication for @desktop_id
+ * or %NULL.
+ **/
+ThunarVfsMimeApplication*
+thunar_vfs_mime_application_new_from_file (const gchar *path,
+ const gchar *desktop_id)
+{
+ ThunarVfsMimeApplication *application = NULL;
+ const gchar *exec;
+ const gchar *icon;
+ const gchar *name;
+ XfceRc *rc;
+ gchar **argv;
+ gchar **ms;
+ gchar **mt;
+ gint argc;
+
+ g_return_val_if_fail (g_path_is_absolute (path), NULL);
+ g_return_val_if_fail (desktop_id != NULL && *desktop_id != '\0', NULL);
+
+ /* try to open the .desktop file */
+ rc = xfce_rc_simple_open (path, TRUE);
+ if (G_UNLIKELY (rc == NULL))
+ return NULL;
+
+ /* parse the file */
+ xfce_rc_set_group (rc, "Desktop Entry");
+ exec = xfce_rc_read_entry (rc, "Exec", NULL);
+ name = xfce_rc_read_entry (rc, "Name", NULL);
+ icon = xfce_rc_read_entry (rc, "Icon", NULL);
+
+ /* generate the application object */
+ if (G_LIKELY (exec != NULL && name != NULL && g_shell_parse_argv (exec, &argc, &argv, NULL)))
+ {
+ application = g_new0 (ThunarVfsMimeApplication, 1);
+ application->ref_count = 1;
+
+ application->binary_name = g_path_get_basename (argv[0]);
+ application->desktop_id = g_strdup (desktop_id);
+ application->name = g_strdup (name);
+ application->icon = g_strdup (icon);
+
+ /* strip off known suffixes for image files if a themed icon is specified */
+ if (application->icon != NULL && !g_path_is_absolute (application->icon) && g_str_has_suffix (application->icon, ".png"))
+ application->icon[strlen (application->icon) - 4] = '\0';
+
+ /* determine the list of mime types supported by the application */
+ application->mime_types = xfce_rc_read_list_entry (rc, "MimeType", ";");
+ if (G_LIKELY (application->mime_types != NULL))
+ {
+ /* strip off the useless mime types */
+ for (ms = mt = application->mime_types; *ms != NULL; ++ms)
+ {
+ /* ignore empty entries, GNOME pseudo mime types and KDE junk */
+ if (**ms == '\0' || g_str_equal (*ms, "x-directory/gnome-default-handler") || g_str_has_prefix (*ms, "print/"))
+ g_free (*ms);
+ else
+ *mt++ = *ms;
+ }
+
+ /* verify that we have atleast one mime type left */
+ if (G_UNLIKELY (mt == application->mime_types))
+ {
+ g_free (application->mime_types);
+ application->mime_types = NULL;
+ }
+ else
+ {
+ /* be sure to zero-terminate the new list */
+ *mt = NULL;
+ }
+ }
+
+ /* we assume %f if the application hasn't set anything else,
+ * as that's also what KDE and Gnome do in this case.
+ */
+ if (strstr (exec, "%f") == NULL && strstr (exec, "%F") == NULL && strstr (exec, "%u") == NULL && strstr (exec, "%U") == NULL)
+ application->exec = g_strconcat (exec, " %f", NULL);
+ else
+ application->exec = g_strdup (exec);
+
+ if (G_UNLIKELY (xfce_rc_read_bool_entry (rc, "Terminal", FALSE)))
+ application->flags |= THUNAR_VFS_MIME_APPLICATION_REQUIRES_TERMINAL;
+
+ if (xfce_rc_read_bool_entry (rc, "Hidden", FALSE) || xfce_rc_read_bool_entry (rc, "NoDisplay", FALSE))
+ application->flags |= THUNAR_VFS_MIME_APPLICATION_HIDDEN;
+
+ if (xfce_rc_read_bool_entry (rc, "StartupNotify", FALSE) || xfce_rc_read_bool_entry (rc, "X-KDE-StartupNotify", FALSE))
+ application->flags |= THUNAR_VFS_MIME_APPLICATION_SUPPORTS_STARTUP_NOTIFY;
+
+ if ((strstr (application->exec, "%F") != NULL) || (strstr (application->exec, "%U") != NULL))
+ application->flags |= THUNAR_VFS_MIME_APPLICATION_SUPPORTS_MULTI;
+
+ g_strfreev (argv);
+ }
+
+ /* close the file */
+ xfce_rc_close (rc);
+
+ return application;
+}
+
+
+
+/**
+ * thunar_vfs_mime_application_ref:
+ * @application : a #ThunarVfsMimeApplication.
+ *
+ * Increases the reference count on @application by one
+ * and returns the reference to @application.
+ *
+ * Return value: a reference to @application.
+ **/
+ThunarVfsMimeApplication*
+thunar_vfs_mime_application_ref (ThunarVfsMimeApplication *application)
+{
+ exo_atomic_inc (&application->ref_count);
+ return application;
+}
+
+
+
+/**
+ * thunar_vfs_mime_application_unref:
+ * @application : a #ThunarVfsMimeApplication.
+ *
+ * Decreases the reference count on @application and frees
+ * the @application object once the reference count drops
+ * to zero.
+ **/
+void
+thunar_vfs_mime_application_unref (ThunarVfsMimeApplication *application)
+{
+ if (exo_atomic_dec (&application->ref_count))
+ {
+ /* free resources */
+ g_strfreev (application->mime_types);
+ g_free (application->binary_name);
+ g_free (application->desktop_id);
+ g_free (application->exec);
+ g_free (application->icon);
+ g_free (application->name);
+ g_free (application);
+ }
+}
+
+
+
+/**
+ * thunar_vfs_mime_application_get_command:
+ * @application : a #ThunarVfsMimeApplication.
+ *
+ * Returns the command line to run @application.
+ *
+ * Return value: the command to run @application.
+ **/
+const gchar*
+thunar_vfs_mime_application_get_command (const ThunarVfsMimeApplication *application)
+{
+ return application->exec;
+}
+
+
+
+/**
+ * thunar_vfs_mime_application_get_desktop_id:
+ * @application : a #ThunarVfsMimeApplication.
+ *
+ * Returns the desktop-id of @application.
+ *
+ * Return value: the desktop-id of @application.
+ **/
+const gchar*
+thunar_vfs_mime_application_get_desktop_id (const ThunarVfsMimeApplication *application)
+{
+ return application->desktop_id;
+}
+
+
+
+/**
+ * thunar_vfs_mime_application_get_flags:
+ * @application : a #ThunarVfsMimeApplication.
+ *
+ * Returns the flags for @application.
+ *
+ * Return value: the flags for @application.
+ **/
+ThunarVfsMimeApplicationFlags
+thunar_vfs_mime_application_get_flags (const ThunarVfsMimeApplication *application)
+{
+ return application->flags;
+}
+
+
+
+/**
+ * thunar_vfs_mime_application_get_name:
+ * @application : a #ThunarVfsMimeApplication.
+ *
+ * Returns the generic name of @application.
+ *
+ * Return value: the generic name of @application.
+ **/
+const gchar*
+thunar_vfs_mime_application_get_name (const ThunarVfsMimeApplication *application)
+{
+ return application->name;
+}
+
+
+
+/**
+ * thunar_vfs_mime_application_get_mime_types:
+ * @application : a #ThunarVfsMimeApplication.
+ *
+ * Returns the list of MIME-types supported by @application
+ * or %NULL if the @application doesn't support any MIME-types
+ * at all.
+ *
+ * The returned %NULL-terminated string array is owned by
+ * @application and must not be free by the caller.
+ *
+ * Return value: the list of supported MIME-types for @application.
+ **/
+const gchar* const*
+thunar_vfs_mime_application_get_mime_types (const ThunarVfsMimeApplication *application)
+{
+ return (gconstpointer) application->mime_types;
+}
+
+
+
+/**
+ * thunar_vfs_mime_application_exec:
+ * @application : a #ThunarVfsMimeApplication.
+ * @screen : a #GdkScreen or %NULL to use the default screen.
+ * @path_list : a list of #ThunarVfsPath<!---->s to open.
+ * @error : return location for errors or %NULL.
+ *
+ * Wrapper to thunar_vfs_mime_application_exec_with_env(), which
+ * simply passes a %NULL pointer for the environment variables.
+ *
+ * Return value: %TRUE if the execution succeed, else %FALSE.
+ **/
+gboolean
+thunar_vfs_mime_application_exec (const ThunarVfsMimeApplication *application,
+ GdkScreen *screen,
+ GList *path_list,
+ GError **error)
+{
+ return thunar_vfs_mime_application_exec_with_env (application, screen, path_list, NULL, error);
+}
+
+
+
+/**
+ * thunar_vfs_mime_application_exec_with_env:
+ * @application : a #ThunarVfsMimeApplication.
+ * @screen : a #GdkScreen or %NULL to use the default screen.
+ * @path_list : a list of #ThunarVfsPath<!---->s to open.
+ * @envp : child's environment or %NULL to inherit parent's.
+ * @error : return location for errors or %NULL.
+ *
+ * Executes @application on @screen using the given @path_list. If
+ * @path_list contains more than one #ThunarVfsPath and @application
+ * doesn't support opening multiple documents at once, one
+ * instance of @application will be spawned for every #ThunarVfsPath
+ * given in @path_list.
+ *
+ * Return value: %TRUE if the execution succeed, else %FALSE.
+ **/
+gboolean
+thunar_vfs_mime_application_exec_with_env (const ThunarVfsMimeApplication *application,
+ GdkScreen *screen,
+ GList *path_list,
+ gchar **envp,
+ GError **error)
+{
+ ThunarVfsPath *parent;
+ gboolean result = TRUE;
+ GList list;
+ GList *lp;
+ gchar *working_directory;
+ gchar **argv;
+ gint argc;
+
+ g_return_val_if_fail (screen == NULL || GDK_IS_SCREEN (screen), FALSE);
+ g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+
+ /* fallback to the default screen if no screen is given */
+ if (G_UNLIKELY (screen == NULL))
+ screen = gdk_screen_get_default ();
+
+ /* check whether the application can open multiple documents at once */
+ if (G_LIKELY ((application->flags & THUNAR_VFS_MIME_APPLICATION_SUPPORTS_MULTI) == 0))
+ {
+ for (lp = path_list; lp != NULL; lp = lp->next)
+ {
+ /* use a short list with only one entry */
+ list.data = lp->data;
+ list.next = NULL;
+ list.prev = NULL;
+
+ /* figure out the argument vector to run the application */
+ if (!thunar_vfs_mime_application_get_argv (application, &list, &argc, &argv, error))
+ return FALSE;
+
+ /* use the paths base directory as working directory for the application */
+ parent = thunar_vfs_path_get_parent (list.data);
+ working_directory = (parent != NULL) ? thunar_vfs_path_dup_string (parent) : NULL;
+
+ /* try to spawn the application */
+ result = thunar_vfs_exec_on_screen (screen, working_directory, argv, envp, G_SPAWN_SEARCH_PATH,
+ application->flags & THUNAR_VFS_MIME_APPLICATION_SUPPORTS_STARTUP_NOTIFY, error);
+
+ /* cleanup */
+ g_free (working_directory);
+ g_strfreev (argv);
+
+ /* check if we succeed */
+ if (G_UNLIKELY (!result))
+ break;
+ }
+ }
+ else
+ {
+ /* we can open all documents at once */
+ if (!thunar_vfs_mime_application_get_argv (application, path_list, &argc, &argv, error))
+ return FALSE;
+
+ /* use the first paths base directory as working directory for the application */
+ parent = (path_list != NULL) ? thunar_vfs_path_get_parent (path_list->data) : NULL;
+ working_directory = (parent != NULL) ? thunar_vfs_path_dup_string (parent) : NULL;
+
+ /* try to spawn the application */
+ result = thunar_vfs_exec_on_screen (screen, working_directory, argv, envp, G_SPAWN_SEARCH_PATH,
+ application->flags & THUNAR_VFS_MIME_APPLICATION_SUPPORTS_STARTUP_NOTIFY, error);
+
+ /* cleanup */
+ g_free (working_directory);
+ g_strfreev (argv);
+ }
+
+ return result;
+}
+
+
+
+/**
+ * thunar_vfs_mime_application_lookup_icon_name:
+ * @application : a #ThunarVfsMimeApplication.
+ * @icon_theme : a #GtkIconTheme.
+ *
+ * Looks up the icon name for @application in
+ * @icon_theme. Returns %NULL if no suitable
+ * icon is present in @icon_theme.
+ *
+ * Return value: the icon name for @application or
+ * %NULL.
+ **/
+const gchar*
+thunar_vfs_mime_application_lookup_icon_name (const ThunarVfsMimeApplication *application,
+ GtkIconTheme *icon_theme)
+{
+ if (application->icon != NULL && (g_path_is_absolute (application->icon) || gtk_icon_theme_has_icon (icon_theme, application->icon)))
+ return application->icon;
+ else if (application->binary_name != NULL && gtk_icon_theme_has_icon (icon_theme, application->binary_name))
+ return application->binary_name;
+ else
+ return NULL;
+}
+
+
+
+/**
+ * thunar_vfs_mime_application_hash:
+ * @application : a #ThunarVfsMimeApplication.
+ *
+ * Converts @application to a hash value. It can be passed
+ * to g_hash_table_new() as the @hash_func parameter,
+ * when using #ThunarVfsMimeApplication<!---->s as keys
+ * in a #GHashTable.
+ *
+ * Return value: a hash value corresponding to the key.
+ **/
+guint
+thunar_vfs_mime_application_hash (gconstpointer application)
+{
+ return g_str_hash (((const ThunarVfsMimeApplication *) application)->desktop_id);
+}
+
+
+
+/**
+ * thunar_vfs_mime_application_equal:
+ * @a : a #ThunarVfsMimeApplication.
+ * @b : a #ThunarVfsMimeApplication.
+ *
+ * Checks whether @a and @b refer to the same application.
+ *
+ * Return value: %TRUE if @a and @b are equal.
+ **/
+gboolean
+thunar_vfs_mime_application_equal (gconstpointer a,
+ gconstpointer b)
+{
+ const ThunarVfsMimeApplication *a_application = a;
+ const ThunarVfsMimeApplication *b_application = b;
+ return (strcmp (a_application->desktop_id, b_application->desktop_id) == 0);
+}
+
+
+
+#define __THUNAR_VFS_MIME_APPLICATION_C__
+#include <thunar-vfs/thunar-vfs-aliasdef.c>
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-application.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-application.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-application.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,96 @@
+/* $Id: thunar-vfs-mime-application.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __THUNAR_VFS_MIME_APPLICATION_H__
+#define __THUNAR_VFS_MIME_APPLICATION_H__
+
+#include <gdk/gdk.h>
+
+#include <thunar-vfs/thunar-vfs-path.h>
+
+G_BEGIN_DECLS;
+
+#define THUNAR_VFS_MIME_APPLICATION_ERROR (thunar_vfs_mime_application_error_quark ())
+
+typedef enum
+{
+ THUNAR_VFS_MIME_APPLICATION_ERROR_LOCAL_FILES_ONLY,
+} ThunarVfsMimeApplicationError;
+
+GQuark thunar_vfs_mime_application_error_quark (void) G_GNUC_CONST;
+
+
+/**
+ * ThunarVfsMimeApplicationFlags:
+ * @THUNAR_VFS_MIME_APPLICATION_HIDDEN : the application should not be displayed in the menu system.
+ * @THUNAR_VFS_MIME_APPLICATION_REQUIRES_TERMINAL : the application must be run in a terminal.
+ * @THUNAR_VFS_MIME_APPLICATION_SUPPORTS_STARTUP_NOTIFY : the application supports startup notification.
+ * @THUNAR_VFS_MIME_APPLICATION_SUPPORTS_MULTI : the application supports opening multiple documents at once (%F or %U).
+ *
+ * Various flags associated with a #ThunarVfsMimeApplication.
+ **/
+typedef enum /*< flags >*/
+{
+ THUNAR_VFS_MIME_APPLICATION_HIDDEN = (1 << 0L),
+ THUNAR_VFS_MIME_APPLICATION_REQUIRES_TERMINAL = (1 << 1L),
+ THUNAR_VFS_MIME_APPLICATION_SUPPORTS_STARTUP_NOTIFY = (1 << 2L),
+ THUNAR_VFS_MIME_APPLICATION_SUPPORTS_MULTI = (1 << 3L),
+} ThunarVfsMimeApplicationFlags;
+
+
+typedef struct _ThunarVfsMimeApplication ThunarVfsMimeApplication;
+
+#define THUNAR_VFS_TYPE_MIME_APPLICATION (thunar_vfs_mime_application_get_type ())
+
+GType thunar_vfs_mime_application_get_type (void) G_GNUC_CONST;
+
+ThunarVfsMimeApplication *thunar_vfs_mime_application_new_from_desktop_id (const gchar *desktop_id) G_GNUC_MALLOC;
+ThunarVfsMimeApplication *thunar_vfs_mime_application_new_from_file (const gchar *path,
+ const gchar *desktop_id) G_GNUC_MALLOC;
+
+ThunarVfsMimeApplication *thunar_vfs_mime_application_ref (ThunarVfsMimeApplication *application);
+void thunar_vfs_mime_application_unref (ThunarVfsMimeApplication *application);
+
+const gchar *thunar_vfs_mime_application_get_command (const ThunarVfsMimeApplication *application);
+const gchar *thunar_vfs_mime_application_get_desktop_id (const ThunarVfsMimeApplication *application);
+ThunarVfsMimeApplicationFlags thunar_vfs_mime_application_get_flags (const ThunarVfsMimeApplication *application);
+const gchar *thunar_vfs_mime_application_get_name (const ThunarVfsMimeApplication *application);
+const gchar * const *thunar_vfs_mime_application_get_mime_types (const ThunarVfsMimeApplication *application);
+
+gboolean thunar_vfs_mime_application_exec (const ThunarVfsMimeApplication *application,
+ GdkScreen *screen,
+ GList *path_list,
+ GError **error);
+gboolean thunar_vfs_mime_application_exec_with_env (const ThunarVfsMimeApplication *application,
+ GdkScreen *screen,
+ GList *path_list,
+ gchar **envp,
+ GError **error);
+
+const gchar *thunar_vfs_mime_application_lookup_icon_name (const ThunarVfsMimeApplication *application,
+ GtkIconTheme *icon_theme);
+
+guint thunar_vfs_mime_application_hash (gconstpointer application);
+gboolean thunar_vfs_mime_application_equal (gconstpointer a,
+ gconstpointer b);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VFS_MIME_APPLICATION_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-cache.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-cache.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-cache.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,588 @@
+/* $Id: thunar-vfs-mime-cache.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Based on code initially written by Matthias Clasen <mclasen at redhat.com>
+ * for the xdgmime library.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_MMAN_H
+#include <sys/mman.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#ifdef HAVE_FNMATCH_H
+#include <fnmatch.h>
+#endif
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <thunar-vfs/thunar-vfs-mime-cache.h>
+
+#if GLIB_CHECK_VERSION(2,6,0)
+#include <glib/gstdio.h>
+#else
+#define g_open(path, flags, mode) (open ((path), (flags), (mode)))
+#endif
+
+
+
+#define CACHE_MAJOR_VERSION (1)
+#define CACHE_MINOR_VERSION (0)
+
+#define CACHE_READ16(cache, offset) (GUINT16_FROM_BE (*((guint16 *) ((cache) + (offset)))))
+#define CACHE_READ32(cache, offset) (GUINT32_FROM_BE (*((guint32 *) ((cache) + (offset)))))
+
+
+
+static void thunar_vfs_mime_cache_class_init (ThunarVfsMimeCacheClass *klass);
+static void thunar_vfs_mime_cache_finalize (GObject *object);
+static const gchar *thunar_vfs_mime_cache_lookup_data (ThunarVfsMimeProvider *provider,
+ gconstpointer data,
+ gsize length,
+ gint *priority);
+static const gchar *thunar_vfs_mime_cache_lookup_literal (ThunarVfsMimeProvider *provider,
+ const gchar *filename);
+static const gchar *thunar_vfs_mime_cache_lookup_suffix (ThunarVfsMimeProvider *provider,
+ const gchar *suffix,
+ gboolean ignore_case);
+static const gchar *thunar_vfs_mime_cache_lookup_glob (ThunarVfsMimeProvider *provider,
+ const gchar *filename);
+static const gchar *thunar_vfs_mime_cache_lookup_alias (ThunarVfsMimeProvider *provider,
+ const gchar *alias);
+static guint thunar_vfs_mime_cache_lookup_parents (ThunarVfsMimeProvider *provider,
+ const gchar *mime_type,
+ gchar **parents,
+ guint max_parents);
+static GList *thunar_vfs_mime_cache_get_stop_characters (ThunarVfsMimeProvider *provider);
+static gsize thunar_vfs_mime_cache_get_max_buffer_extents (ThunarVfsMimeProvider *provider);
+
+
+
+struct _ThunarVfsMimeCacheClass
+{
+ ThunarVfsMimeProviderClass __parent__;
+};
+
+struct _ThunarVfsMimeCache
+{
+ ThunarVfsMimeProvider __parent__;
+
+ gchar *buffer;
+ gsize bufsize;
+};
+
+
+
+static GObjectClass *thunar_vfs_mime_cache_parent_class;
+
+
+
+GType
+thunar_vfs_mime_cache_get_type (void)
+{
+ static GType type = G_TYPE_INVALID;
+
+ if (G_UNLIKELY (type == G_TYPE_INVALID))
+ {
+ static const GTypeInfo info =
+ {
+ sizeof (ThunarVfsMimeCacheClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) thunar_vfs_mime_cache_class_init,
+ NULL,
+ NULL,
+ sizeof (ThunarVfsMimeCache),
+ 0,
+ NULL,
+ NULL,
+ };
+
+ type = g_type_register_static (THUNAR_VFS_TYPE_MIME_PROVIDER,
+ "ThunarVfsMimeCache", &info, 0);
+ }
+
+ return type;
+}
+
+
+
+static void
+thunar_vfs_mime_cache_class_init (ThunarVfsMimeCacheClass *klass)
+{
+ ThunarVfsMimeProviderClass *thunarvfs_mime_provider_class;
+ GObjectClass *gobject_class;
+
+ thunar_vfs_mime_cache_parent_class = g_type_class_peek_parent (klass);
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_vfs_mime_cache_finalize;
+
+ thunarvfs_mime_provider_class = THUNAR_VFS_MIME_PROVIDER_CLASS (klass);
+ thunarvfs_mime_provider_class->lookup_data = thunar_vfs_mime_cache_lookup_data;
+ thunarvfs_mime_provider_class->lookup_literal = thunar_vfs_mime_cache_lookup_literal;
+ thunarvfs_mime_provider_class->lookup_suffix = thunar_vfs_mime_cache_lookup_suffix;
+ thunarvfs_mime_provider_class->lookup_glob = thunar_vfs_mime_cache_lookup_glob;
+ thunarvfs_mime_provider_class->lookup_alias = thunar_vfs_mime_cache_lookup_alias;
+ thunarvfs_mime_provider_class->lookup_parents = thunar_vfs_mime_cache_lookup_parents;
+ thunarvfs_mime_provider_class->get_stop_characters = thunar_vfs_mime_cache_get_stop_characters;
+ thunarvfs_mime_provider_class->get_max_buffer_extents = thunar_vfs_mime_cache_get_max_buffer_extents;
+}
+
+
+
+static void
+thunar_vfs_mime_cache_finalize (GObject *object)
+{
+ ThunarVfsMimeCache *cache = THUNAR_VFS_MIME_CACHE (object);
+
+#ifdef HAVE_MMAP
+ if (G_LIKELY (cache->buffer != NULL))
+ munmap (cache->buffer, cache->bufsize);
+#endif
+
+ (*G_OBJECT_CLASS (thunar_vfs_mime_cache_parent_class)->finalize) (object);
+}
+
+
+
+static gboolean
+cache_magic_matchlet_compare_to_data (const gchar *buffer,
+ guint32 offset,
+ gconstpointer data,
+ gsize length)
+{
+ gboolean valid_matchlet;
+ guint32 range_start = CACHE_READ32 (buffer, offset);
+ guint32 range_length = CACHE_READ32 (buffer, offset + 4);
+ guint32 data_length = CACHE_READ32 (buffer, offset + 12);
+ guint32 data_offset = CACHE_READ32 (buffer, offset + 16);
+ guint32 mask_offset = CACHE_READ32 (buffer, offset + 20);
+ guint32 i, j;
+
+ for (i = range_start; i <= range_start + range_length; i++)
+ {
+ valid_matchlet = TRUE;
+
+ if (i + data_length > length)
+ return FALSE;
+
+ if (mask_offset)
+ {
+ for (j = 0; j < data_length; j++)
+ if ((buffer[data_offset + j] & buffer[mask_offset + j]) != ((((gchar *) data)[j + i]) & buffer[mask_offset + j]))
+ {
+ valid_matchlet = FALSE;
+ break;
+ }
+ }
+ else
+ {
+ for (j = 0; j < data_length; j++)
+ if (buffer[data_offset + j] != ((gchar *) data)[j + i])
+ {
+ valid_matchlet = FALSE;
+ break;
+ }
+ }
+
+ if (valid_matchlet)
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+
+
+static gboolean
+cache_magic_matchlet_compare (const gchar *buffer,
+ guint32 offset,
+ gconstpointer data,
+ gsize length)
+{
+ guint32 n_children = CACHE_READ32 (buffer, offset + 24);
+ guint32 child_offset = CACHE_READ32 (buffer, offset + 28);
+ guint32 i;
+
+ if (cache_magic_matchlet_compare_to_data (buffer, offset, data, length))
+ {
+ if (n_children == 0)
+ return TRUE;
+
+ for (i = 0; i < n_children; i++)
+ if (cache_magic_matchlet_compare (buffer, child_offset + 32 * i, data, length))
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+
+
+static const gchar*
+thunar_vfs_mime_cache_lookup_data (ThunarVfsMimeProvider *provider,
+ gconstpointer data,
+ gsize length,
+ gint *priority)
+{
+ const gchar *buffer = THUNAR_VFS_MIME_CACHE (provider)->buffer;
+ guint32 matchlet_offset;
+ guint32 offset;
+ guint32 n, m;
+
+ offset = CACHE_READ32 (buffer, 24);
+ n = CACHE_READ32 (buffer, offset);
+ offset = CACHE_READ32 (buffer, offset + 8);
+
+ for (; n-- > 0; offset += 16)
+ {
+ matchlet_offset = CACHE_READ32 (buffer, offset + 12);
+ for (m = CACHE_READ32 (buffer, offset + 8); m-- > 0; matchlet_offset += 32)
+ if (cache_magic_matchlet_compare (buffer, matchlet_offset, data, length))
+ {
+ if (G_LIKELY (priority != NULL))
+ *priority = (gint) CACHE_READ32 (buffer, offset);
+ return buffer + CACHE_READ32 (buffer, offset + 4);
+ }
+ }
+
+ return NULL;
+}
+
+
+
+static const gchar*
+thunar_vfs_mime_cache_lookup_literal (ThunarVfsMimeProvider *provider,
+ const gchar *filename)
+{
+ const gchar *buffer = THUNAR_VFS_MIME_CACHE (provider)->buffer;
+ guint32 list_offset = CACHE_READ32 (buffer, 12);
+ guint32 n_entries = CACHE_READ32 (buffer, list_offset);
+ guint32 offset;
+ gint min;
+ gint mid;
+ gint max;
+ gint cmp;
+
+ for (min = 0, max = (gint) n_entries - 1; max >= min; )
+ {
+ mid = (min + max) / 2;
+
+ offset = CACHE_READ32 (buffer, list_offset + 4 + 8 * mid);
+ cmp = strcmp (buffer + offset, filename);
+
+ if (cmp < 0)
+ min = mid + 1;
+ else if (cmp > 0)
+ max = mid - 1;
+ else
+ return buffer + CACHE_READ32 (buffer, list_offset + 4 + 8 * mid + 4);
+ }
+
+ return NULL;
+}
+
+
+
+static const gchar*
+cache_node_lookup_suffix (const gchar *buffer,
+ guint32 n_entries,
+ guint32 offset,
+ const gchar *suffix,
+ gboolean ignore_case)
+{
+ const gchar *type;
+ gunichar character;
+ gunichar match_char;
+ gint min, max, mid;
+
+next:
+ character = g_utf8_get_char (suffix);
+ if (ignore_case)
+ character = g_unichar_tolower (character);
+
+ for (min = 0, max = (gint) n_entries - 1; max >= min; )
+ {
+ mid = (min + max) / 2;
+
+ match_char = (gunichar) CACHE_READ32 (buffer, offset + 16 * mid);
+
+ if (match_char < character)
+ min = mid + 1;
+ else if (match_char > character)
+ max = mid - 1;
+ else
+ {
+ suffix = g_utf8_next_char (suffix);
+ if (*suffix == '\0')
+ {
+ /* need to verify the type here, as the stopchars may be
+ * misleading, which in turn may lead to the problem of
+ * returning '' here, which in turn will cause the mime
+ * database to return application/octet-stream for those
+ * files!
+ */
+ type = buffer + CACHE_READ32 (buffer, offset + 16 * mid + 4);
+ if (G_LIKELY (*type != '\0'))
+ return type;
+ }
+ else
+ {
+ /* We emulate a recursive call to cache_node_lookup_suffix()
+ * here. This optimization works because the algorithm is
+ * tail-recursive. The goto is not necessarily nice, but it
+ * works for our purpose and doesn't decrease readability.
+ * If we'd use a recursive call here, the code would look
+ * like this:
+ *
+ * return cache_node_lookup_suffix (buffer, CACHE_READ32 (buffer, offset + 16 * mid + 8),
+ * CACHE_READ32 (buffer, offset + 16 * mid + 12),
+ * suffix, ignore_case);
+ */
+ n_entries = CACHE_READ32 (buffer, offset + 16 * mid + 8);
+ offset = CACHE_READ32 (buffer, offset + 16 * mid + 12);
+ goto next;
+ }
+ }
+ }
+
+ return NULL;
+}
+
+
+
+static const gchar*
+thunar_vfs_mime_cache_lookup_suffix (ThunarVfsMimeProvider *provider,
+ const gchar *suffix,
+ gboolean ignore_case)
+{
+ const gchar *buffer = THUNAR_VFS_MIME_CACHE (provider)->buffer;
+ guint32 offset = CACHE_READ32 (buffer, 16);
+
+ g_return_val_if_fail (g_utf8_validate (suffix, -1, NULL), NULL);
+
+ return cache_node_lookup_suffix (buffer, CACHE_READ32 (buffer, offset),
+ CACHE_READ32 (buffer, offset + 4),
+ suffix, ignore_case);
+}
+
+
+
+static const gchar*
+thunar_vfs_mime_cache_lookup_glob (ThunarVfsMimeProvider *provider,
+ const gchar *filename)
+{
+ const gchar *buffer = THUNAR_VFS_MIME_CACHE (provider)->buffer;
+ guint32 list_offset = CACHE_READ32 (buffer, 20);
+ guint32 n_entries = CACHE_READ32 (buffer, list_offset);
+ guint32 n;
+
+ for (n = 0; n < n_entries; ++n)
+ if (fnmatch (buffer + CACHE_READ32 (buffer, list_offset + 4 + 8 * n), filename, 0) == 0)
+ return buffer + CACHE_READ32 (buffer, list_offset + 4 + 8 * n + 4);
+
+ return NULL;
+}
+
+
+
+static const gchar*
+thunar_vfs_mime_cache_lookup_alias (ThunarVfsMimeProvider *provider,
+ const gchar *alias)
+{
+ const gchar *buffer = THUNAR_VFS_MIME_CACHE (provider)->buffer;
+ guint32 list_offset = CACHE_READ32 (buffer, 4);
+ gint max;
+ gint mid;
+ gint min;
+ gint n;
+
+ for (max = ((gint) CACHE_READ32 (buffer, list_offset)) - 1, min = 0; max >= min; )
+ {
+ mid = (min + max) / 2;
+
+ n = strcmp (buffer + CACHE_READ32 (buffer, list_offset + 4 + 8 * mid), alias);
+ if (n < 0)
+ min = mid + 1;
+ else if (n > 0)
+ max = mid - 1;
+ else
+ return buffer + CACHE_READ32 (buffer, list_offset + 4 + 8 * mid + 4);
+ }
+
+ return NULL;
+}
+
+
+
+static guint
+thunar_vfs_mime_cache_lookup_parents (ThunarVfsMimeProvider *provider,
+ const gchar *mime_type,
+ gchar **parents,
+ guint max_parents)
+{
+ const gchar *buffer = THUNAR_VFS_MIME_CACHE (provider)->buffer;
+ guint32 parents_offset;
+ guint32 list_offset = CACHE_READ32 (buffer, 8);
+ guint32 n_entries = CACHE_READ32 (buffer, list_offset);
+ guint32 n_parents;
+ guint32 i, j, l;
+
+ for (i = j = 0; i < n_entries && j < max_parents; ++i)
+ if (strcmp (buffer + CACHE_READ32 (buffer, list_offset + 4 + 8 * i), mime_type) == 0)
+ {
+ parents_offset = CACHE_READ32 (buffer, list_offset + 4 + 8 * i + 4);
+ n_parents = CACHE_READ32 (buffer, parents_offset);
+
+ for (l = 0; l < n_parents && j < max_parents; ++l, ++j)
+ parents[j] = (gchar *) (buffer + CACHE_READ32 (buffer, parents_offset + 4 + 4 * l));
+ }
+
+ return j;
+}
+
+
+
+static GList*
+thunar_vfs_mime_cache_get_stop_characters (ThunarVfsMimeProvider *provider)
+{
+ const gchar *buffer = THUNAR_VFS_MIME_CACHE (provider)->buffer;
+ gunichar character;
+ guint32 offset = CACHE_READ32 (buffer, 16);
+ guint32 n = CACHE_READ32 (buffer, offset);
+ GList *list = NULL;
+
+ for (offset = CACHE_READ32 (buffer, offset + 4); n-- > 0; offset += 16)
+ {
+ /* query the suffix start character */
+ character = (gunichar) CACHE_READ32 (buffer, offset);
+ if (G_UNLIKELY (character >= 128))
+ continue;
+
+ /* prepend the character to the list (if not already present) */
+ if (G_UNLIKELY (g_list_find (list, GUINT_TO_POINTER (character)) == NULL))
+ list = g_list_prepend (list, GUINT_TO_POINTER (character));
+ }
+
+ return list;
+}
+
+
+
+static gsize
+thunar_vfs_mime_cache_get_max_buffer_extents (ThunarVfsMimeProvider *provider)
+{
+ const gchar *buffer = THUNAR_VFS_MIME_CACHE (provider)->buffer;
+
+ /* get the MAX_EXTENTS entry from the MagicList */
+ return CACHE_READ32 (buffer, CACHE_READ32 (buffer, 24) + 4);
+}
+
+
+
+/**
+ * thunar_vfs_mime_cache_new:
+ * @directory : the mime base directory.
+ *
+ * Creates a new #ThunarVfsMimeCache for @directory. Returns
+ * %NULL if for some reason, @directory could not be opened
+ * as a #ThunarVfsMimeCache.
+ *
+ * The caller is responsible to call g_object_unref()
+ * on the returned instance.
+ *
+ * Return value: a #ThunarVfsMimeCache for @directory or %NULL.
+ **/
+ThunarVfsMimeProvider*
+thunar_vfs_mime_cache_new (const gchar *directory)
+{
+ ThunarVfsMimeCache *cache = NULL;
+
+#ifdef HAVE_MMAP
+ struct stat stat;
+ gchar *buffer;
+ gchar *path;
+ gint fd;
+
+ /* try to open the mime.cache file */
+ path = g_build_filename (directory, "mime.cache", NULL);
+ fd = g_open (path, O_RDONLY, 0);
+ g_free (path);
+
+ if (G_UNLIKELY (fd < 0))
+ return NULL;
+
+ /* stat the file to get proper size info */
+ if (fstat (fd, &stat) < 0 || stat.st_size < 4)
+ goto done;
+
+ /* try to map the file into memory */
+ buffer = (gchar *) mmap (NULL, stat.st_size, PROT_READ, MAP_SHARED, fd, 0);
+ if (G_UNLIKELY (buffer == MAP_FAILED))
+ goto done;
+
+ /* check that we actually support the file version */
+ if (CACHE_READ16 (buffer, 0) != CACHE_MAJOR_VERSION || CACHE_READ16 (buffer, 2) != CACHE_MINOR_VERSION)
+ {
+ munmap (buffer, stat.st_size);
+ goto done;
+ }
+
+ /* allocate a new cache provider */
+ cache = g_object_new (THUNAR_VFS_TYPE_MIME_CACHE, NULL);
+ cache->buffer = buffer;
+ cache->bufsize = stat.st_size;
+
+ /* tell the system that we'll use this buffer quite often */
+#ifdef HAVE_POSIX_MADVISE
+ posix_madvise (buffer, stat.st_size, POSIX_MADV_WILLNEED);
+#endif
+
+ /* cleanup */
+done:
+ if (G_LIKELY (fd >= 0))
+ close (fd);
+#endif /* !HAVE_MMAP */
+
+ return (ThunarVfsMimeProvider *) cache;
+}
+
+
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-cache.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-cache.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-cache.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,44 @@
+/* $Id: thunar-vfs-mime-cache.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __THUNAR_VFS_MIME_CACHE_H__
+#define __THUNAR_VFS_MIME_CACHE_H__
+
+#include <thunar-vfs/thunar-vfs-mime-provider.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarVfsMimeCacheClass ThunarVfsMimeCacheClass;
+typedef struct _ThunarVfsMimeCache ThunarVfsMimeCache;
+
+#define THUNAR_VFS_TYPE_MIME_CACHE (thunar_vfs_mime_cache_get_type ())
+#define THUNAR_VFS_MIME_CACHE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_VFS_TYPE_MIME_CACHE, ThunarVfsMimeCache))
+#define THUNAR_VFS_MIME_CACHE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_VFS_TYPE_MIME_CACHE, ThunarVfsMimeCacheClass))
+#define THUNAR_VFS_IS_MIME_CACHE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_VFS_TYPE_MIME_CACHE))
+#define THUNAR_VFS_IS_MIME_CACHE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_VFS_TYPE_MIME_CACHE))
+#define THUNAR_VFS_MIME_CACHE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_VFS_TYPE_MIME_CACHE, ThunarVfsMimeCacheClass))
+
+GType thunar_vfs_mime_cache_get_type (void) G_GNUC_CONST G_GNUC_INTERNAL;
+
+ThunarVfsMimeProvider *thunar_vfs_mime_cache_new (const gchar *directory) G_GNUC_INTERNAL G_GNUC_MALLOC;
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VFS_MIME_CACHE_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-database.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-database.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-database.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,1639 @@
+/* $Id: thunar-vfs-mime-database.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Based on code initially written by Matthias Clasen <mclasen at redhat.com>
+ * for the xdgmime library.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_EXTATTR_H
+#include <sys/extattr.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#ifdef HAVE_SYS_XATTR_H
+#include <sys/xattr.h>
+#endif
+
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#include <stdio.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <exo/exo.h>
+
+#include <thunar-vfs/thunar-vfs-mime-cache.h>
+#include <thunar-vfs/thunar-vfs-mime-database.h>
+#include <thunar-vfs/thunar-vfs-mime-legacy.h>
+#include <thunar-vfs/thunar-vfs-mime-sniffer.h>
+#include <thunar-vfs/thunar-vfs-monitor.h>
+#include <thunar-vfs/thunar-vfs-alias.h>
+
+#if GLIB_CHECK_VERSION(2,6,0)
+#include <glib/gstdio.h>
+#else
+#define g_open(path, flagsremove, mode) (open ((path), (flags), (mode)))
+#define g_rename(oldfilename, newfilename) (rename ((oldfilename), (newfilename)))
+#define g_unlink(path) (unlink ((path)))
+#endif
+
+
+
+typedef struct _ThunarVfsMimeDesktopStore ThunarVfsMimeDesktopStore;
+typedef struct _ThunarVfsMimeProviderData ThunarVfsMimeProviderData;
+
+
+
+#define THUNAR_VFS_MIME_DESKTOP_STORE(store) ((ThunarVfsMimeDesktopStore *) (store))
+#define THUNAR_VFS_MIME_PROVIDER_DATA(data) ((ThunarVfsMimeProviderData *) (data))
+
+
+
+static void thunar_vfs_mime_database_class_init (ThunarVfsMimeDatabaseClass *klass);
+static void thunar_vfs_mime_database_init (ThunarVfsMimeDatabase *database);
+static void thunar_vfs_mime_database_finalize (GObject *object);
+static ThunarVfsMimeApplication *thunar_vfs_mime_database_get_application_locked (ThunarVfsMimeDatabase *database,
+ const gchar *desktop_id);
+static ThunarVfsMimeInfo *thunar_vfs_mime_database_get_info_locked (ThunarVfsMimeDatabase *database,
+ const gchar *mime_type);
+static ThunarVfsMimeInfo *thunar_vfs_mime_database_get_info_for_data_locked (ThunarVfsMimeDatabase *database,
+ gconstpointer data,
+ gsize length);
+static ThunarVfsMimeInfo *thunar_vfs_mime_database_get_info_for_name_locked (ThunarVfsMimeDatabase *database,
+ const gchar *name);
+static GList *thunar_vfs_mime_database_get_infos_for_info_locked (ThunarVfsMimeDatabase *database,
+ ThunarVfsMimeInfo *info);
+static void thunar_vfs_mime_database_initialize_providers (ThunarVfsMimeDatabase *database);
+static void thunar_vfs_mime_database_shutdown_providers (ThunarVfsMimeDatabase *database);
+static void thunar_vfs_mime_database_initialize_stores (ThunarVfsMimeDatabase *database);
+static void thunar_vfs_mime_database_shutdown_stores (ThunarVfsMimeDatabase *database);
+static void thunar_vfs_mime_database_store_changed (ThunarVfsMonitor *monitor,
+ ThunarVfsMonitorHandle *handle,
+ ThunarVfsMonitorEvent event,
+ ThunarVfsPath *handle_path,
+ ThunarVfsPath *event_path,
+ gpointer user_data);
+static void thunar_vfs_mime_database_store_parse_file (ThunarVfsMimeDatabase *database,
+ ThunarVfsPath *path,
+ GHashTable *table);
+static gboolean thunar_vfs_mime_database_icon_theme_changed (GSignalInvocationHint *ihint,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer user_data);
+
+
+
+struct _ThunarVfsMimeDatabaseClass
+{
+ GObjectClass __parent__;
+};
+
+struct _ThunarVfsMimeDatabase
+{
+ GObject __parent__;
+
+ GMutex *lock;
+
+ ThunarVfsMonitor *monitor;
+
+ /* GtkIconTheme changed hook id */
+ gulong changed_hook_id;
+
+ /* mime detection support */
+ GHashTable *infos;
+ GList *providers;
+ gsize max_buffer_extents;
+ gchar *stopchars;
+
+ /* commonly used mime types */
+ ThunarVfsMimeInfo *application_octet_stream;
+ ThunarVfsMimeInfo *text_plain;
+
+ /* mime applications support */
+ ThunarVfsMimeDesktopStore *stores;
+ guint n_stores;
+ GHashTable *applications;
+};
+
+struct _ThunarVfsMimeDesktopStore
+{
+ ThunarVfsMonitorHandle *defaults_list_handle;
+ ThunarVfsPath *defaults_list_path;
+ GHashTable *defaults_list;
+
+ ThunarVfsMonitorHandle *mimeinfo_cache_handle;
+ ThunarVfsPath *mimeinfo_cache_path;
+ GHashTable *mimeinfo_cache;
+};
+
+struct _ThunarVfsMimeProviderData
+{
+ ThunarVfsMonitorHandle *handle;
+ ThunarVfsMimeProvider *provider;
+ ThunarVfsPath *path;
+};
+
+
+
+G_DEFINE_TYPE (ThunarVfsMimeDatabase, thunar_vfs_mime_database, G_TYPE_OBJECT);
+
+
+
+static void
+thunar_vfs_mime_database_class_init (ThunarVfsMimeDatabaseClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_vfs_mime_database_finalize;
+}
+
+
+
+static void
+thunar_vfs_mime_database_init (ThunarVfsMimeDatabase *database)
+{
+ gpointer klass;
+
+ /* create the lock for this object */
+ database->lock = g_mutex_new ();
+
+ /* acquire a reference on the file alteration monitor */
+ database->monitor = thunar_vfs_monitor_get_default ();
+
+ /* allocate the hash table for the mime infos */
+ database->infos = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify) thunar_vfs_mime_info_unref);
+
+ /* grab references on commonly used mime infos */
+ database->application_octet_stream = thunar_vfs_mime_database_get_info_locked (database, "application/octet-stream");
+ database->text_plain = thunar_vfs_mime_database_get_info_locked (database, "text/plain");
+
+ /* allocate the applications cache */
+ database->applications = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify) thunar_vfs_mime_application_unref);
+
+ /* initialize the MIME providers */
+ thunar_vfs_mime_database_initialize_providers (database);
+
+ /* initialize the MIME desktop stores */
+ thunar_vfs_mime_database_initialize_stores (database);
+
+ /* connect emission hook for the "changed" signal on the GtkIconTheme class. We use the emission
+ * hook to reset the icon names of all mime infos at once.
+ */
+ klass = g_type_class_ref (GTK_TYPE_ICON_THEME);
+ database->changed_hook_id = g_signal_add_emission_hook (g_signal_lookup ("changed", GTK_TYPE_ICON_THEME),
+ 0, thunar_vfs_mime_database_icon_theme_changed,
+ database, NULL);
+ g_type_class_unref (klass);
+}
+
+
+
+static void
+thunar_vfs_mime_database_finalize (GObject *object)
+{
+ ThunarVfsMimeDatabase *database = THUNAR_VFS_MIME_DATABASE (object);
+
+ /* remove the "changed" emission hook from the GtkIconTheme class */
+ g_signal_remove_emission_hook (g_signal_lookup ("changed", GTK_TYPE_ICON_THEME), database->changed_hook_id);
+
+ /* shutdown the MIME desktop stores */
+ thunar_vfs_mime_database_shutdown_stores (database);
+
+ /* release the MIME providers */
+ thunar_vfs_mime_database_shutdown_providers (database);
+
+ /* free all cached applications */
+ g_hash_table_destroy (database->applications);
+
+ /* free commonly used mime infos */
+ thunar_vfs_mime_info_unref (database->application_octet_stream);
+ thunar_vfs_mime_info_unref (database->text_plain);
+
+ /* free all mime infos */
+ g_hash_table_destroy (database->infos);
+
+ /* release the reference on the file alteration monitor */
+ g_object_unref (G_OBJECT (database->monitor));
+
+ /* release the mutex for this object */
+ g_mutex_free (database->lock);
+
+ /* call the parent's finalize method */
+ (*G_OBJECT_CLASS (thunar_vfs_mime_database_parent_class)->finalize) (object);
+}
+
+
+
+static ThunarVfsMimeApplication*
+thunar_vfs_mime_database_get_application_locked (ThunarVfsMimeDatabase *database,
+ const gchar *desktop_id)
+{
+ ThunarVfsMimeApplication *application;
+
+ /* check if we have that application cached */
+ application = g_hash_table_lookup (database->applications, desktop_id);
+ if (G_UNLIKELY (application == NULL))
+ {
+ /* try to load the application from disk */
+ application = thunar_vfs_mime_application_new_from_desktop_id (desktop_id);
+ if (G_LIKELY (application != NULL))
+ {
+ /* add the application to the cache (we don't take a copy of the desktop-id here) */
+ g_hash_table_insert (database->applications, (gchar *) thunar_vfs_mime_application_get_desktop_id (application), application);
+ }
+ }
+
+ /* take an additional reference for the caller */
+ if (G_LIKELY (application != NULL))
+ thunar_vfs_mime_application_ref (application);
+
+ return application;
+}
+
+
+
+static ThunarVfsMimeInfo*
+thunar_vfs_mime_database_get_info_locked (ThunarVfsMimeDatabase *database,
+ const gchar *mime_type)
+{
+ ThunarVfsMimeProvider *provider;
+ ThunarVfsMimeInfo *info;
+ const gchar *p;
+ GList *lp;
+ guint n;
+
+ /* unalias the mime type */
+ for (lp = database->providers; lp != NULL; lp = lp->next)
+ {
+ provider = THUNAR_VFS_MIME_PROVIDER_DATA (lp->data)->provider;
+ if (G_LIKELY (provider != NULL))
+ {
+ p = thunar_vfs_mime_provider_lookup_alias (provider, mime_type);
+ if (G_UNLIKELY (p != NULL && strcmp (mime_type, p) != 0))
+ {
+ mime_type = p;
+ break;
+ }
+ }
+ }
+
+ /* check if we have a cached version of the mime type */
+ info = g_hash_table_lookup (database->infos, mime_type);
+ if (G_UNLIKELY (info == NULL))
+ {
+ /* count the number of slashes in the mime_type */
+ for (n = 0, p = mime_type; *p != '\0'; ++p)
+ if (G_UNLIKELY (*p == '/'))
+ ++n;
+
+ /* fallback to 'application/octet-stream' if the type is invalid */
+ if (G_UNLIKELY (n != 1))
+ return thunar_vfs_mime_info_ref (database->application_octet_stream);
+
+ /* allocate the MIME info instance */
+ info = thunar_vfs_mime_info_new (mime_type, (p - mime_type));
+
+ /* insert the mime type into the cache (w/o taking a copy on the name) */
+ g_hash_table_insert (database->infos, (gpointer) thunar_vfs_mime_info_get_name (info), info);
+ }
+
+ /* take a reference for the caller */
+ return thunar_vfs_mime_info_ref (info);
+}
+
+
+
+static ThunarVfsMimeInfo*
+thunar_vfs_mime_database_get_info_for_data_locked (ThunarVfsMimeDatabase *database,
+ gconstpointer data,
+ gsize length)
+{
+ ThunarVfsMimeProvider *provider;
+ ThunarVfsMimeInfo *info = NULL;
+ const gchar *type_best;
+ const gchar *type;
+ GList *lp;
+ gint prio_best;
+ gint prio;
+
+ if (G_UNLIKELY (length == 0))
+ {
+ /* empty files are considered to be textfiles, so
+ * newly created (empty) files can be opened in
+ * a text editor.
+ */
+ info = thunar_vfs_mime_info_ref (database->text_plain);
+ }
+ else
+ {
+ /* perform a 'best fit' lookup on all active providers */
+ for (type_best = NULL, prio_best = -1, lp = database->providers; lp != NULL; lp = lp->next)
+ {
+ provider = THUNAR_VFS_MIME_PROVIDER_DATA (lp->data)->provider;
+ if (G_LIKELY (provider != NULL))
+ {
+ type = thunar_vfs_mime_provider_lookup_data (provider, data, length, &prio);
+ if (G_LIKELY (type != NULL && prio > prio_best))
+ {
+ prio_best = prio;
+ type_best = type;
+ }
+ }
+ }
+
+ if (G_LIKELY (type_best != NULL))
+ {
+ /* lookup the info for the best type (if any) */
+ info = thunar_vfs_mime_database_get_info_locked (database, type_best);
+ }
+ else if (thunar_vfs_mime_sniffer_looks_like_text (data, length))
+ {
+ /* we have valid UTF-8 text here! */
+ info = thunar_vfs_mime_info_ref (database->text_plain);
+ }
+ }
+
+ return info;
+}
+
+
+
+static ThunarVfsMimeInfo*
+thunar_vfs_mime_database_get_info_for_name_locked (ThunarVfsMimeDatabase *database,
+ const gchar *name)
+{
+ ThunarVfsMimeProvider *provider;
+ const gchar *type = NULL;
+ const gchar *ptr;
+ GList *lp;
+
+ /* try the literals first */
+ for (lp = database->providers; lp != NULL && type == NULL; lp = lp->next)
+ {
+ provider = THUNAR_VFS_MIME_PROVIDER_DATA (lp->data)->provider;
+ if (G_LIKELY (provider != NULL))
+ type = thunar_vfs_mime_provider_lookup_literal (provider, name);
+ }
+
+ /* next the suffixes */
+ if (G_LIKELY (type == NULL))
+ {
+ ptr = strpbrk (name, database->stopchars);
+ while (ptr != NULL)
+ {
+ /* case-sensitive first */
+ for (lp = database->providers; lp != NULL && type == NULL; lp = lp->next)
+ {
+ provider = THUNAR_VFS_MIME_PROVIDER_DATA (lp->data)->provider;
+ if (G_LIKELY (provider != NULL))
+ type = thunar_vfs_mime_provider_lookup_suffix (provider, ptr, FALSE);
+ }
+
+ /* case-insensitive next */
+ if (G_UNLIKELY (type == NULL))
+ {
+ for (lp = database->providers; lp != NULL && type == NULL; lp = lp->next)
+ {
+ provider = THUNAR_VFS_MIME_PROVIDER_DATA (lp->data)->provider;
+ if (G_LIKELY (provider != NULL))
+ type = thunar_vfs_mime_provider_lookup_suffix (provider, ptr, TRUE);
+ }
+ }
+
+ /* check if we got a type */
+ if (G_LIKELY (type != NULL))
+ break;
+
+ ptr = strpbrk (ptr + 1, database->stopchars);
+ }
+ }
+
+ /* the glob match comes last */
+ if (G_UNLIKELY (type == NULL))
+ {
+ for (lp = database->providers; lp != NULL && type == NULL; lp = lp->next)
+ {
+ provider = THUNAR_VFS_MIME_PROVIDER_DATA (lp->data)->provider;
+ if (G_LIKELY (provider != NULL))
+ type = thunar_vfs_mime_provider_lookup_glob (provider, name);
+ }
+ }
+
+ return (type != NULL) ? thunar_vfs_mime_database_get_info_locked (database, type) : NULL;
+}
+
+
+
+static GList*
+thunar_vfs_mime_database_get_infos_for_info_locked (ThunarVfsMimeDatabase *database,
+ ThunarVfsMimeInfo *info)
+{
+ ThunarVfsMimeProvider *provider;
+ ThunarVfsMimeInfo *parent_info;
+ const gchar *name = thunar_vfs_mime_info_get_name (info);
+ gchar *parents[128];
+ GList *infos;
+ GList *lp;
+ guint n, m;
+
+ /* the info itself is of course on the list */
+ infos = g_list_prepend (NULL, thunar_vfs_mime_info_ref (info));
+
+ /* lookup all parents on every provider */
+ for (lp = database->providers; lp != NULL; lp = lp->next)
+ {
+ provider = THUNAR_VFS_MIME_PROVIDER_DATA (lp->data)->provider;
+ if (G_LIKELY (provider != NULL))
+ {
+ /* ask this provider for the parents list */
+ n = thunar_vfs_mime_provider_lookup_parents (provider, name, parents, G_N_ELEMENTS (parents));
+ if (G_UNLIKELY (n == 0))
+ continue;
+
+ /* process the parents */
+ for (m = 0; m < n; ++m)
+ {
+ /* append the type if we don't have it already */
+ parent_info = thunar_vfs_mime_database_get_info_locked (database, parents[m]);
+ if (G_LIKELY (g_list_find (infos, parent_info) == NULL))
+ infos = g_list_append (infos, parent_info);
+ else
+ thunar_vfs_mime_info_unref (parent_info);
+ }
+ }
+ }
+
+ /* all text/xxxx types are subtype of text/plain */
+ if (G_UNLIKELY (strncmp ("text/", thunar_vfs_mime_info_get_name (info), 5) == 0))
+ {
+ /* append text/plain if we don't have it already */
+ if (g_list_find (infos, database->text_plain) == NULL)
+ infos = g_list_append (infos, thunar_vfs_mime_info_ref (database->text_plain));
+ }
+
+ /* everything is subtype of application/octet-stream */
+ if (g_list_find (infos, database->application_octet_stream) == NULL)
+ infos = g_list_append (infos, thunar_vfs_mime_info_ref (database->application_octet_stream));
+
+ return infos;
+}
+
+
+
+static void
+thunar_vfs_mime_database_initialize_providers (ThunarVfsMimeDatabase *database)
+{
+ ThunarVfsMimeProviderData *data;
+ const gchar *s;
+ GList *stopchars = NULL;
+ GList *lp;
+ gchar *directory;
+ gchar **basedirs;
+ gchar *p;
+ gchar c;
+ gint n;
+
+ /* process all "mime" directories */
+ basedirs = xfce_resource_dirs (XFCE_RESOURCE_DATA);
+ for (n = 0; basedirs[n] != NULL; ++n)
+ {
+ /* determine the path for the MIME directory */
+ directory = g_build_filename (basedirs[n], "mime", NULL);
+
+ /* allocate the provider data for the directory */
+ data = g_new (ThunarVfsMimeProviderData, 1);
+ data->handle = NULL;
+ data->path = thunar_vfs_path_new (directory, NULL);
+
+ /* try to allocate a provider for the directory */
+ data->provider = thunar_vfs_mime_cache_new (directory);
+ if (G_UNLIKELY (data->provider == NULL))
+ data->provider = thunar_vfs_mime_legacy_new (directory);
+
+ /* add the provider to our list */
+ database->providers = g_list_append (database->providers, data);
+
+ /* collect the stopchars for this provider */
+ if (G_LIKELY (data->provider != NULL))
+ stopchars = g_list_concat (stopchars, thunar_vfs_mime_provider_get_stop_characters (data->provider));
+
+ /* collect the max buffer extents for this provider */
+ if (G_LIKELY (data->provider != NULL))
+ database->max_buffer_extents = MAX (database->max_buffer_extents, thunar_vfs_mime_provider_get_max_buffer_extents (data->provider));
+
+ /* cleanup */
+ g_free (directory);
+ }
+ g_strfreev (basedirs);
+
+ /* clamp the max buffer extents to [64..256] to make
+ * sure we don't try insane values (everything below
+ * 64 bytes would be useless for the UTF-8 check).
+ */
+ database->max_buffer_extents = CLAMP (database->max_buffer_extents, 64, 256);
+
+ /* collect the stop characters */
+ database->stopchars = g_new (gchar, g_list_length (stopchars) + 1);
+ for (lp = stopchars, p = database->stopchars; lp != NULL; lp = lp->next)
+ {
+ /* check if we have that character already */
+ c = (gchar) GPOINTER_TO_UINT (lp->data);
+ for (s = database->stopchars; s < p; ++s)
+ if (G_UNLIKELY (*s == c))
+ break;
+
+ /* insert the stopchar */
+ if (G_LIKELY (s == p))
+ *p++ = c;
+ }
+ g_list_free (stopchars);
+ *p = '\0';
+}
+
+
+
+static void
+thunar_vfs_mime_database_shutdown_providers (ThunarVfsMimeDatabase *database)
+{
+ GList *lp;
+
+ /* free the providers */
+ for (lp = database->providers; lp != NULL; lp = lp->next)
+ {
+ if (G_LIKELY (THUNAR_VFS_MIME_PROVIDER_DATA (lp->data)->provider != NULL))
+ g_object_unref (THUNAR_VFS_MIME_PROVIDER_DATA (lp->data)->provider);
+ thunar_vfs_path_unref (THUNAR_VFS_MIME_PROVIDER_DATA (lp->data)->path);
+ g_free (THUNAR_VFS_MIME_PROVIDER_DATA (lp->data));
+ }
+ g_list_free (database->providers);
+
+ /* free the stopchars */
+ g_free (database->stopchars);
+}
+
+
+
+static void
+thunar_vfs_mime_database_initialize_stores (ThunarVfsMimeDatabase *database)
+{
+ ThunarVfsMimeDesktopStore *store;
+ gchar *path;
+ gchar **basedirs;
+ guint n;
+
+ /* count all base data directories (with possible "applications" subdirs) */
+ basedirs = xfce_resource_dirs (XFCE_RESOURCE_DATA);
+ for (n = 0; basedirs[n] != NULL; ++n)
+ ;
+
+ /* allocate memory for the stores */
+ database->n_stores = n;
+ database->stores = g_new (ThunarVfsMimeDesktopStore, n);
+
+ /* initialize the stores */
+ for (n = 0, store = database->stores; basedirs[n] != NULL; ++n, ++store)
+ {
+ /* setup the defaults.list */
+ path = g_build_filename (basedirs[n], "applications" G_DIR_SEPARATOR_S "defaults.list", NULL);
+ store->defaults_list = g_hash_table_new_full (thunar_vfs_mime_info_hash,
+ thunar_vfs_mime_info_equal,
+ (GDestroyNotify) thunar_vfs_mime_info_unref,
+ (GDestroyNotify) g_strfreev);
+ store->defaults_list_path = thunar_vfs_path_new (path, NULL);
+ store->defaults_list_handle = thunar_vfs_monitor_add_file (database->monitor, store->defaults_list_path,
+ thunar_vfs_mime_database_store_changed, database);
+ thunar_vfs_mime_database_store_parse_file (database, store->defaults_list_path, store->defaults_list);
+ g_free (path);
+
+ /* setup the mimeinfo.cache */
+ path = g_build_filename (basedirs[n], "applications" G_DIR_SEPARATOR_S "mimeinfo.cache", NULL);
+ store->mimeinfo_cache = g_hash_table_new_full (thunar_vfs_mime_info_hash,
+ thunar_vfs_mime_info_equal,
+ (GDestroyNotify) thunar_vfs_mime_info_unref,
+ (GDestroyNotify) g_strfreev);
+ store->mimeinfo_cache_path = thunar_vfs_path_new (path, NULL);
+ store->mimeinfo_cache_handle = thunar_vfs_monitor_add_file (database->monitor, store->mimeinfo_cache_path,
+ thunar_vfs_mime_database_store_changed, database);
+ thunar_vfs_mime_database_store_parse_file (database, store->mimeinfo_cache_path, store->mimeinfo_cache);
+ g_free (path);
+ }
+ g_strfreev (basedirs);
+}
+
+
+
+static void
+thunar_vfs_mime_database_shutdown_stores (ThunarVfsMimeDatabase *database)
+{
+ ThunarVfsMimeDesktopStore *store;
+ guint n;
+
+ /* release all stores */
+ for (n = 0, store = database->stores; n < database->n_stores; ++n, ++store)
+ {
+ /* release the defaults.list part */
+ thunar_vfs_monitor_remove (database->monitor, store->defaults_list_handle);
+ thunar_vfs_path_unref (store->defaults_list_path);
+ g_hash_table_destroy (store->defaults_list);
+
+ /* release the mimeinfo.cache part */
+ thunar_vfs_monitor_remove (database->monitor, store->mimeinfo_cache_handle);
+ thunar_vfs_path_unref (store->mimeinfo_cache_path);
+ g_hash_table_destroy (store->mimeinfo_cache);
+ }
+
+#ifndef G_DISABLE_CHECKS
+ memset (database->stores, 0xaa, database->n_stores * sizeof (*store));
+#endif
+
+ /* free the memory allocated to the stores */
+ g_free (database->stores);
+}
+
+
+
+static void
+thunar_vfs_mime_database_store_changed (ThunarVfsMonitor *monitor,
+ ThunarVfsMonitorHandle *handle,
+ ThunarVfsMonitorEvent event,
+ ThunarVfsPath *handle_path,
+ ThunarVfsPath *event_path,
+ gpointer user_data)
+{
+ ThunarVfsMimeDesktopStore *store;
+ ThunarVfsMimeDatabase *database = THUNAR_VFS_MIME_DATABASE (user_data);
+ guint n;
+
+ /* lookup the store that changed */
+ g_mutex_lock (database->lock);
+ for (n = 0, store = database->stores; n < database->n_stores; ++n, ++store)
+ {
+ /* lookup a store that has this handle */
+ if (store->defaults_list_handle == handle)
+ {
+ /* clear any cached values */
+ g_hash_table_foreach_remove (store->defaults_list, (GHRFunc) exo_noop_true, NULL);
+
+ /* reload the store's defaults.list */
+ thunar_vfs_mime_database_store_parse_file (database, store->defaults_list_path, store->defaults_list);
+
+ /* and now we're done */
+ break;
+ }
+ else if (store->mimeinfo_cache_handle == handle)
+ {
+ /* clear the applications cache (as running update-desktop-database usually
+ * means that new applications are available)
+ */
+ g_hash_table_foreach_remove (database->applications, (GHRFunc) exo_noop_true, NULL);
+
+ /* clear any cached values */
+ g_hash_table_foreach_remove (store->mimeinfo_cache, (GHRFunc) exo_noop_true, NULL);
+
+ /* reload the store's mimeinfo.cache */
+ thunar_vfs_mime_database_store_parse_file (database, store->mimeinfo_cache_path, store->mimeinfo_cache);
+
+ /* and now we're done */
+ break;
+ }
+ }
+ g_mutex_unlock (database->lock);
+}
+
+
+
+static void
+thunar_vfs_mime_database_store_parse_file (ThunarVfsMimeDatabase *database,
+ ThunarVfsPath *path,
+ GHashTable *table)
+{
+ ThunarVfsMimeInfo *info;
+ const gchar *type;
+ const gchar *ids;
+ gchar absolute_path[THUNAR_VFS_PATH_MAXSTRLEN];
+ gchar **id_list;
+ gchar line[4096];
+ gchar *lp;
+ FILE *fp;
+ gint n;
+ gint m;
+
+ /* determine the absolute path */
+ if (thunar_vfs_path_to_string (path, absolute_path, sizeof (absolute_path), NULL) < 0)
+ return;
+
+ /* try to open the file */
+ fp = fopen (absolute_path, "r");
+ if (G_UNLIKELY (fp == NULL))
+ return;
+
+ /* process the file */
+ while (fgets (line, sizeof (line), fp) != NULL)
+ {
+ /* skip everything that doesn't look like a mime type line */
+ for (lp = line; g_ascii_isspace (*lp); ++lp) ;
+ if (G_UNLIKELY (*lp < 'a' || *lp > 'z'))
+ continue;
+
+ /* lookup the '=' */
+ for (type = lp++; *lp != '\0' && *lp != '='; ++lp) ;
+ if (G_UNLIKELY (*lp != '='))
+ continue;
+ *lp++ = '\0';
+
+ /* extract the application id list */
+ for (ids = lp; g_ascii_isgraph (*lp); ++lp) ;
+ if (G_UNLIKELY (ids == lp))
+ continue;
+ *lp = '\0';
+
+ /* parse the id list */
+ id_list = g_strsplit (ids, ";", -1);
+ for (m = n = 0; id_list[m] != NULL; ++m)
+ {
+ if (G_UNLIKELY (id_list[m][0] == '\0'))
+ g_free (id_list[m]);
+ else
+ id_list[n++] = id_list[m];
+ }
+ id_list[n] = NULL;
+
+ /* verify that the id list is not empty */
+ if (G_UNLIKELY (id_list[0] == NULL))
+ {
+ g_free (id_list);
+ continue;
+ }
+
+ /* lookup the mime info for the type */
+ info = thunar_vfs_mime_database_get_info_locked (database, type);
+ if (G_UNLIKELY (info == NULL))
+ {
+ g_strfreev (id_list);
+ continue;
+ }
+
+ /* insert the association for the desktop store */
+ g_hash_table_insert (table, info, id_list);
+ }
+
+ /* close the file */
+ fclose (fp);
+}
+
+
+
+static void
+invalidate_icon_name (gpointer key,
+ gpointer value,
+ gpointer user_data)
+{
+ _thunar_vfs_mime_info_invalidate_icon_name (value);
+}
+
+
+
+static gboolean
+thunar_vfs_mime_database_icon_theme_changed (GSignalInvocationHint *ihint,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer user_data)
+{
+ ThunarVfsMimeDatabase *database = THUNAR_VFS_MIME_DATABASE (user_data);
+
+ /* invalidate all cached icon names */
+ g_mutex_lock (database->lock);
+ g_hash_table_foreach (database->infos, invalidate_icon_name, NULL);
+ g_mutex_unlock (database->lock);
+
+ /* keep the emission hook alive */
+ return TRUE;
+}
+
+
+
+/**
+ * thunar_vfs_mime_database_get_default:
+ *
+ * Returns a reference on the shared #ThunarVfsMimeDatabase
+ * instance. The caller is responsible to call g_object_unref()
+ * on the returned object when no longer needed.
+ *
+ * Return value: the shared #ThunarVfsMimeDatabase.
+ **/
+ThunarVfsMimeDatabase*
+thunar_vfs_mime_database_get_default (void)
+{
+ static ThunarVfsMimeDatabase *database = NULL;
+
+ if (G_UNLIKELY (database == NULL))
+ {
+ database = g_object_new (THUNAR_VFS_TYPE_MIME_DATABASE, NULL);
+ g_object_add_weak_pointer (G_OBJECT (database), (gpointer) &database);
+ }
+ else
+ {
+ g_object_ref (G_OBJECT (database));
+ }
+
+ return database;
+}
+
+
+
+/**
+ * thunar_vfs_mime_database_get_info:
+ * @database : a #ThunarVfsMimeDatabase.
+ * @mime_type : the string representation of the mime type.
+ *
+ * Determines the #ThunarVfsMimeInfo which corresponds to @mime_type
+ * in database. The caller is responsible to call thunar_vfs_mime_info_unref()
+ * on the returned instance.
+ *
+ * Return value: the #ThunarVfsMimeInfo corresponding to @mime_type in @database.
+ **/
+ThunarVfsMimeInfo*
+thunar_vfs_mime_database_get_info (ThunarVfsMimeDatabase *database,
+ const gchar *mime_type)
+{
+ ThunarVfsMimeInfo *info;
+
+ g_return_val_if_fail (THUNAR_VFS_IS_MIME_DATABASE (database), NULL);
+ g_return_val_if_fail (mime_type != NULL, NULL);
+
+ g_mutex_lock (database->lock);
+ info = thunar_vfs_mime_database_get_info_locked (database, mime_type);
+ g_mutex_unlock (database->lock);
+
+ return info;
+}
+
+
+
+/**
+ * thunar_vfs_mime_database_get_info_for_data:
+ * @database : a #ThunarVfsMimeDatabase.
+ * @data : the data to check.
+ * @length : the length of @data in bytes.
+ *
+ * Determines the #ThunarVfsMimeInfo for @data in @database. The
+ * caller is responsible to call thunar_vfs_mime_info_unref() on
+ * the returned instance.
+ *
+ * Return value: the #ThunarVfsMimeInfo determined for @data.
+ **/
+ThunarVfsMimeInfo*
+thunar_vfs_mime_database_get_info_for_data (ThunarVfsMimeDatabase *database,
+ gconstpointer data,
+ gsize length)
+{
+ ThunarVfsMimeInfo *info;
+
+ g_return_val_if_fail (THUNAR_VFS_IS_MIME_DATABASE (database), NULL);
+
+ /* try to determine a MIME type based on the data */
+ g_mutex_lock (database->lock);
+ info = thunar_vfs_mime_database_get_info_for_data_locked (database, data, length);
+ g_mutex_unlock (database->lock);
+
+ /* fallback to 'application/octet-stream' if we could not determine any type */
+ if (G_UNLIKELY (info == NULL))
+ info = thunar_vfs_mime_info_ref (database->application_octet_stream);
+
+ return info;
+}
+
+
+
+/**
+ * thunar_vfs_mime_database_get_info_for_name:
+ * @database : a #ThunarVfsMimeDatabase.
+ * @name : a filename (must be valid UTF-8!).
+ *
+ * Determines the #ThunarVfsMimeInfo for the filename given
+ * in @name from @database. The caller is responsible to
+ * call thunar_vfs_mime_info_unref() on the returned instance.
+ *
+ * The @name must be a valid filename in UTF-8 encoding
+ * and it may not contained any slashes!
+ *
+ * Return value: the #ThunarVfsMimeInfo for @name in @database.
+ **/
+ThunarVfsMimeInfo*
+thunar_vfs_mime_database_get_info_for_name (ThunarVfsMimeDatabase *database,
+ const gchar *name)
+{
+ ThunarVfsMimeInfo *info;
+
+ g_return_val_if_fail (THUNAR_VFS_IS_MIME_DATABASE (database), NULL);
+ g_return_val_if_fail (g_utf8_validate (name, -1, NULL), NULL);
+ g_return_val_if_fail (strchr (name, '/') == NULL, NULL);
+ g_return_val_if_fail (*name != '\0', NULL);
+
+ /* try to determine the info from the name */
+ g_mutex_lock (database->lock);
+ info = thunar_vfs_mime_database_get_info_for_name_locked (database, name);
+ g_mutex_unlock (database->lock);
+
+ /* fallback to 'application/octet-stream' */
+ if (G_UNLIKELY (info == NULL))
+ info = thunar_vfs_mime_info_ref (database->application_octet_stream);
+
+ /* we got it */
+ return info;
+}
+
+
+
+/**
+ * thunar_vfs_mime_database_get_info_for_file:
+ * @database : a #ThunarVfsMimeDatabase.
+ * @path : the path to a file in the local filesystem (in the filesystem encoding).
+ * @name : the basename of @path in UTF-8 encoding or %NULL.
+ *
+ * Determines the #ThunarVfsMimeInfo for @path in @database. The
+ * caller is responsible to free the returned instance using
+ * thunar_vfs_mime_info_unref().
+ *
+ * The @name parameter is optional. If the caller already knows the
+ * basename of @path in UTF-8 encoding, it should be specified here
+ * to speed up the lookup process.
+ *
+ * Return value: the #ThunarVfsMimeInfo for @path in @database.
+ **/
+ThunarVfsMimeInfo*
+thunar_vfs_mime_database_get_info_for_file (ThunarVfsMimeDatabase *database,
+ const gchar *path,
+ const gchar *name)
+{
+ ThunarVfsMimeInfo *info;
+ struct stat stat;
+ const gchar *p;
+ gssize nbytes;
+ gchar *basename;
+ gchar *buffer;
+ gchar *type;
+ gsize buflen;
+ gint fd;
+
+ g_return_val_if_fail (THUNAR_VFS_IS_MIME_DATABASE (database), NULL);
+ g_return_val_if_fail (path != NULL && *path != '\0', NULL);
+ g_return_val_if_fail (name == NULL || g_utf8_validate (name, -1, NULL), NULL);
+
+ /* determine the basename in UTF-8 if not already given by the caller */
+ if (G_UNLIKELY (name == NULL))
+ {
+ buffer = g_path_get_basename (path);
+ name = basename = g_filename_display_name (buffer);
+ g_free (buffer);
+ }
+ else
+ {
+ basename = NULL;
+ }
+
+ /* try to determine the type from the name first */
+ g_mutex_lock (database->lock);
+ info = thunar_vfs_mime_database_get_info_for_name_locked (database, name);
+ g_mutex_unlock (database->lock);
+
+#ifdef HAVE_ATTROPEN
+ /* check if we have a valid mime type stored in the extattr (SunOS) */
+ if (G_UNLIKELY (info == NULL))
+ {
+ fd = attropen (path, "user.mime_type", O_RDONLY);
+ if (G_UNLIKELY (fd >= 0))
+ {
+ if (fstat (fd, &stat) == 0)
+ {
+ buffer = g_newa (gchar, stat.st_size + 1);
+ nbytes = read (fd, buffer, stat.st_size);
+ if (G_LIKELY (nbytes >= 3))
+ {
+ buffer[nbytes] = '\0';
+ info = thunar_vfs_mime_database_get_info (database, buffer);
+ }
+ }
+ close (fd);
+ }
+ }
+#endif
+
+ /* try to determine the type from the file content */
+ if (G_UNLIKELY (info == NULL))
+ {
+ fd = g_open (path, O_RDONLY, 0);
+ if (G_LIKELY (fd >= 0))
+ {
+#ifdef HAVE_EXTATTR_GET_FD
+ /* check if we have a valid mime type stored in the extattr (TrustedBSD) */
+ nbytes = extattr_get_fd (fd, EXTATTR_NAMESPACE_USER, "mime_type", NULL, 0);
+ if (G_UNLIKELY (nbytes >= 3))
+ {
+ buffer = g_newa (gchar, nbytes + 1);
+ nbytes = extattr_get_fd (fd, EXTATTR_NAMESPACE_USER, "mime_type", buffer, nbytes);
+ if (G_LIKELY (nbytes >= 3))
+ {
+ buffer[nbytes] = '\0';
+ info = thunar_vfs_mime_database_get_info (database, buffer);
+ }
+ }
+#elif defined(HAVE_FGETXATTR)
+ /* check for valid mime type stored in the extattr (Linux) */
+ nbytes = fgetxattr (fd, "user.mime_type", NULL, 0);
+ if (G_UNLIKELY (nbytes >= 3))
+ {
+ buffer = g_newa (gchar, nbytes + 1);
+ nbytes = fgetxattr (fd, "user.mime_type", buffer, nbytes);
+ if (G_LIKELY (nbytes >= 3))
+ {
+ buffer[nbytes] = '\0';
+ info = thunar_vfs_mime_database_get_info (database, buffer);
+ }
+ }
+#endif
+
+ /* stat the file and verify that we have a regular file */
+ if (G_LIKELY (info == NULL && fstat (fd, &stat) == 0 && S_ISREG (stat.st_mode)))
+ {
+ /* read the beginning from the file */
+ buflen = MIN (stat.st_size, database->max_buffer_extents);
+ buffer = g_newa (gchar, buflen);
+ nbytes = read (fd, buffer, buflen);
+
+ /* try to determine a type from the buffer contents */
+ if (G_LIKELY (nbytes >= 0))
+ {
+ g_mutex_lock (database->lock);
+
+ /* the regular magic check first */
+ info = thunar_vfs_mime_database_get_info_for_data_locked (database, buffer, nbytes);
+
+ /* then if magic doesn't tell us anything and the file is marked,
+ * as executable, we just guess "application/x-executable", which
+ * is atleast more precise than "application/octet-stream".
+ */
+ if (G_UNLIKELY (info == NULL && (stat.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)) != 0))
+ info = thunar_vfs_mime_database_get_info_locked (database, "application/x-executable");
+
+ g_mutex_unlock (database->lock);
+ }
+ }
+
+ /* cleanup */
+ close (fd);
+ }
+
+ /* if we have exactly a dot and a non-empty extension, we
+ * can generate a 'application/x-extension-<EXT>' on the fly
+ * or if no extension is found, we'll use the whole filename
+ * for '<EXT>'.
+ */
+ if (G_UNLIKELY (info == NULL))
+ {
+ /* check if the filename has an extension */
+ p = strrchr (name, '.');
+ if (G_UNLIKELY (p != NULL && *++p != '\0'))
+ {
+ /* use the file extension for the type */
+ buffer = g_utf8_strdown (p, -1);
+ }
+ else
+ {
+ /* use the whole filename for the type as suggested by jrb */
+ buffer = g_utf8_strdown (name, -1);
+ }
+
+ /* generate a new mime type */
+ type = g_strconcat ("application/x-extension-", buffer, NULL);
+ info = thunar_vfs_mime_database_get_info (database, type);
+ g_free (buffer);
+ g_free (type);
+ }
+ }
+
+ /* cleanup */
+ if (G_UNLIKELY (basename != NULL))
+ g_free (basename);
+
+ /* we got it */
+ return info;
+}
+
+
+
+/**
+ * thunar_vfs_mime_database_get_infos_for_info:
+ * @database : a #ThunarVfsMimeDatabase.
+ * @info : a #ThunarVfsMimeInfo.
+ *
+ * Returns a list of all #ThunarVfsMimeInfo<!---->s,
+ * that are related to @info in @database. Currently
+ * this is the list of parent MIME-types for @info,
+ * as defined in the Shared Mime Database.
+ *
+ * Note that the returned list will also include
+ * a reference @info itself. In addition, this
+ * method also handles details specified by the
+ * Shared Mime Database Specification like the
+ * fact that every "text/xxxx" MIME-type is a
+ * subclass of "text/plain" and every MIME-type
+ * is a subclass of "application/octet-stream".
+ *
+ * The caller is responsible to free the returned
+ * list using #thunar_vfs_mime_info_list_free()
+ * when done with it.
+ *
+ * Return value: the list of #ThunarVfsMimeInfo<!---->s
+ * related to @info.
+ **/
+GList*
+thunar_vfs_mime_database_get_infos_for_info (ThunarVfsMimeDatabase *database,
+ ThunarVfsMimeInfo *info)
+{
+ GList *infos;
+
+ g_return_val_if_fail (THUNAR_VFS_IS_MIME_DATABASE (database), NULL);
+
+ g_mutex_lock (database->lock);
+ infos = thunar_vfs_mime_database_get_infos_for_info_locked (database, info);
+ g_mutex_unlock (database->lock);
+
+ return infos;
+}
+
+
+
+/**
+ * thunar_vfs_mime_database_get_applications:
+ * @database : a #ThunarVfsMimeDatabase.
+ * @info : a #ThunarVfsMimeInfo.
+ *
+ * Looks up all #ThunarVfsMimeApplication<!---->s in @database, which
+ * claim to be able to open files whose MIME-type is represented by
+ * @info.
+ *
+ * The caller is responsible to free the returned list using
+ * something like:
+ * <informalexample><programlisting>
+ * g_list_foreach (list, (GFunc) thunar_vfs_mime_application_unref, NULL);
+ * g_list_free (list);
+ * </programlisting></informalexample>
+ *
+ * Return value: the list of #ThunarVfsMimeApplication<!---->s, that
+ * can handle @info.
+ **/
+GList*
+thunar_vfs_mime_database_get_applications (ThunarVfsMimeDatabase *database,
+ ThunarVfsMimeInfo *info)
+{
+ ThunarVfsMimeDesktopStore *store;
+ ThunarVfsMimeApplication *application;
+ const gchar *command;
+ const gchar **id;
+ GList *applications = NULL;
+ GList *infos;
+ GList *lp;
+ GList *p;
+ guint n;
+
+ g_return_val_if_fail (THUNAR_VFS_IS_MIME_DATABASE (database), NULL);
+
+ g_mutex_lock (database->lock);
+
+ /* determine the mime infos for info */
+ infos = thunar_vfs_mime_database_get_infos_for_info_locked (database, info);
+
+ /* lookup the default applications for the infos */
+ for (lp = infos; lp != NULL; lp = lp->next)
+ {
+ for (n = database->n_stores, store = database->stores; n-- > 0; ++store)
+ {
+ /* lookup the application ids */
+ id = g_hash_table_lookup (store->defaults_list, lp->data);
+ if (G_LIKELY (id == NULL))
+ continue;
+
+ /* merge the applications */
+ for (; *id != NULL; ++id)
+ {
+ /* lookup the application for the id */
+ application = thunar_vfs_mime_database_get_application_locked (database, *id);
+ if (G_UNLIKELY (application == NULL))
+ continue;
+
+ /* check if we already have an application with an equal command
+ * (thanks again Nautilus for the .desktop file mess).
+ */
+ command = thunar_vfs_mime_application_get_command (application);
+ for (p = applications; p != NULL; p = p->next)
+ if (g_str_equal (thunar_vfs_mime_application_get_command (p->data), command))
+ break;
+
+ /* merge the application */
+ if (G_LIKELY (p == NULL))
+ applications = g_list_append (applications, application);
+ else
+ thunar_vfs_mime_application_unref (application);
+ }
+ }
+ }
+
+ /* lookup the other applications */
+ for (lp = infos; lp != NULL; lp = lp->next)
+ {
+ for (n = database->n_stores, store = database->stores; n-- > 0; ++store)
+ {
+ /* lookup the application ids */
+ id = g_hash_table_lookup (store->mimeinfo_cache, lp->data);
+ if (G_UNLIKELY (id == NULL))
+ continue;
+
+ /* merge the applications */
+ for (; *id != NULL; ++id)
+ {
+ /* lookup the application for the id */
+ application = thunar_vfs_mime_database_get_application_locked (database, *id);
+ if (G_UNLIKELY (application == NULL))
+ continue;
+
+ /* check if we already have an application with an equal command
+ * (thanks again Nautilus for the .desktop file mess).
+ */
+ command = thunar_vfs_mime_application_get_command (application);
+ for (p = applications; p != NULL; p = p->next)
+ if (g_str_equal (thunar_vfs_mime_application_get_command (p->data), command))
+ break;
+
+ /* merge the application */
+ if (G_LIKELY (p == NULL))
+ applications = g_list_append (applications, application);
+ else
+ thunar_vfs_mime_application_unref (application);
+ }
+ }
+ }
+
+ g_mutex_unlock (database->lock);
+
+ /* free the temporary list of mime infos */
+ thunar_vfs_mime_info_list_free (infos);
+
+ return applications;
+}
+
+
+
+/**
+ * thunar_vfs_mime_database_get_default_application:
+ * @database : a #ThunarVfsMimeDatabase.
+ * @info : a #ThunarVfsMimeInfo.
+ *
+ * Returns the default #ThunarVfsMimeApplication to handle
+ * files of type @info or %NULL if no default application
+ * is set for @info.
+ *
+ * The caller is responsible to free the returned instance
+ * using thunar_vfs_mime_application_unref().
+ *
+ * Return value: the default #ThunarVfsMimeApplication for
+ * @info or %NULL.
+ **/
+ThunarVfsMimeApplication*
+thunar_vfs_mime_database_get_default_application (ThunarVfsMimeDatabase *database,
+ ThunarVfsMimeInfo *info)
+{
+ ThunarVfsMimeDesktopStore *store;
+ ThunarVfsMimeApplication *application = NULL;
+ const gchar **id;
+ GList *applications;
+ GList *infos;
+ GList *lp;
+ guint n;
+
+ g_return_val_if_fail (THUNAR_VFS_IS_MIME_DATABASE (database), NULL);
+
+ g_mutex_lock (database->lock);
+
+ infos = thunar_vfs_mime_database_get_infos_for_info_locked (database, info);
+ for (lp = infos; application == NULL && lp != NULL; lp = lp->next)
+ {
+ for (n = database->n_stores, store = database->stores; application == NULL && n-- > 0; ++store)
+ {
+ id = g_hash_table_lookup (store->defaults_list, lp->data);
+ if (G_LIKELY (id == NULL))
+ continue;
+
+ /* test all applications (use first match) */
+ for (; application == NULL && *id != NULL; ++id)
+ application = thunar_vfs_mime_database_get_application_locked (database, *id);
+ }
+ }
+
+ g_mutex_unlock (database->lock);
+
+ /* free the temporary list of mime infos */
+ thunar_vfs_mime_info_list_free (infos);
+
+ /* if we don't have a default application set, we simply
+ * use the first available application here.
+ */
+ if (G_LIKELY (application == NULL))
+ {
+ /* query all apps for this mime type */
+ applications = thunar_vfs_mime_database_get_applications (database, info);
+ if (G_LIKELY (applications != NULL))
+ {
+ /* use the first available application */
+ application = applications->data;
+ g_list_foreach (applications->next, (GFunc) thunar_vfs_mime_application_unref, NULL);
+ g_list_free (applications);
+ }
+ }
+
+ return application;
+}
+
+
+
+static void
+defaults_list_write (ThunarVfsMimeInfo *info,
+ gchar **ids,
+ FILE *fp)
+{
+ guint n;
+
+ fprintf (fp, "%s=%s", thunar_vfs_mime_info_get_name (info), ids[0]);
+ for (n = 1; ids[n] != NULL; ++n)
+ fprintf (fp, ";%s", ids[n]);
+ fprintf (fp, "\n");
+}
+
+
+
+/**
+ * thunar_vfs_mime_database_set_default_application:
+ * @database : a #ThunarVfsMimeDatabase.
+ * @info : a valid #ThunarVfsMimeInfo for @database.
+ * @application : a #ThunarVfsMimeApplication.
+ * @error : return location for errors or %NULL.
+ *
+ * Sets @application to be the default #ThunarVfsMimeApplication to open files
+ * of type @info in @database.
+ *
+ * Return value: %TRUE if the operation was successfull, else %FALSE.
+ **/
+gboolean
+thunar_vfs_mime_database_set_default_application (ThunarVfsMimeDatabase *database,
+ ThunarVfsMimeInfo *info,
+ ThunarVfsMimeApplication *application,
+ GError **error)
+{
+ ThunarVfsMimeDesktopStore *store;
+ ThunarVfsPath *parent;
+ gboolean succeed = FALSE;
+ gchar absolute_path[THUNAR_VFS_PATH_MAXSTRLEN];
+ gchar **pids;
+ gchar **nids;
+ gchar *path;
+ guint n, m;
+ FILE *fp;
+ gint fd;
+
+ g_return_val_if_fail (THUNAR_VFS_IS_MIME_DATABASE (database), FALSE);
+ g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+
+ /* acquire the lock on the database */
+ g_mutex_lock (database->lock);
+
+ /* grab the user's desktop applications store */
+ store = database->stores;
+
+ /* verify that the applications/ directory exists */
+ parent = thunar_vfs_path_get_parent (store->defaults_list_path);
+ if (thunar_vfs_path_to_string (parent, absolute_path, sizeof (absolute_path), NULL) > 0)
+ succeed = xfce_mkdirhier (absolute_path, 0700, error);
+
+ /* associate the application with the info */
+ if (G_LIKELY (succeed))
+ {
+ /* generate the new application id list */
+ pids = g_hash_table_lookup (store->defaults_list, info);
+ if (G_UNLIKELY (pids == NULL))
+ {
+ /* generate a new list that contains only the application */
+ nids = g_new (gchar *, 2);
+ nids[0] = g_strdup (thunar_vfs_mime_application_get_desktop_id (application));
+ nids[1] = NULL;
+ }
+ else
+ {
+ /* count the number of previously associated application ids */
+ for (n = 0; pids[n] != NULL; ++n)
+ ;
+
+ /* allocate a new list and prepend the application */
+ nids = g_new (gchar *, n + 2);
+ nids[0] = g_strdup (thunar_vfs_mime_application_get_desktop_id (application));
+
+ /* append the previously associated application ids */
+ for (m = 0, n = 1; pids[m] != NULL; ++m)
+ if (strcmp (pids[m], nids[0]) != 0)
+ nids[n++] = g_strdup (pids[m]);
+
+ /* null-terminate the new application id list */
+ nids[n] = NULL;
+ }
+
+ /* activate the new application id list */
+ g_hash_table_replace (store->defaults_list, thunar_vfs_mime_info_ref (info), nids);
+
+ /* determine the absolute path to the defaults.list file */
+ if (thunar_vfs_path_to_string (store->defaults_list_path, absolute_path, sizeof (absolute_path), error) < 0)
+ {
+ succeed = FALSE;
+ goto done;
+ }
+
+ /* write the default applications list to a temporary file */
+ path = g_strdup_printf ("%s.XXXXXX", absolute_path);
+ fd = g_mkstemp (path);
+ if (G_LIKELY (fd >= 0))
+ {
+ /* wrap the descriptor in a file pointer */
+ fp = fdopen (fd, "w");
+
+ /* write the default application list content */
+ fprintf (fp, "[Default Applications]\n");
+ g_hash_table_foreach (store->defaults_list, (GHFunc) defaults_list_write, fp);
+ fclose (fp);
+
+ /* disable the monitor handle for the defaults.list, so we don't unneccessary reload it */
+ thunar_vfs_monitor_remove (database->monitor, store->defaults_list_handle);
+
+ /* try to atomically rename the file */
+ if (G_UNLIKELY (g_rename (path, absolute_path) < 0))
+ {
+ /* tell the caller that we failed */
+ g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno), g_strerror (errno));
+ succeed = FALSE;
+
+ /* be sure to remove the temporary file */
+ g_unlink (path);
+ }
+
+ /* re-enable the monitor handle for the defaults.list */
+ store->defaults_list_handle = thunar_vfs_monitor_add_file (database->monitor, store->defaults_list_path,
+ thunar_vfs_mime_database_store_changed, database);
+ }
+ else
+ {
+ g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno), g_strerror (errno));
+ succeed = FALSE;
+ }
+ g_free (path);
+ }
+
+done:
+ /* release the lock on the database */
+ g_mutex_unlock (database->lock);
+
+ return succeed;
+}
+
+
+
+/**
+ * thunar_vfs_mime_database_add_application:
+ * @database : a #ThunarVfsMimeDatabase.
+ * @info : a #ThunarVfsMimeInfo.
+ * @name : the name for the application.
+ * @exec : the command for the application.
+ * @error : return location for errors or %NULL.
+ *
+ * Adds a new #ThunarVfsMimeApplication to the @database, whose
+ * name is @name and command is @exec, and which can be used to
+ * open files of type @info.
+ *
+ * The caller is responsible to free the returned object
+ * using thunar_vfs_mime_application_unref() when no longer
+ * needed.
+ *
+ * Return value: the newly created #ThunarVfsMimeApplication
+ * or %NULL on error.
+ **/
+ThunarVfsMimeApplication*
+thunar_vfs_mime_database_add_application (ThunarVfsMimeDatabase *database,
+ ThunarVfsMimeInfo *info,
+ const gchar *name,
+ const gchar *exec,
+ GError **error)
+{
+ ThunarVfsMimeApplication *application = NULL;
+ gboolean succeed;
+ gchar *desktop_id;
+ gchar *directory;
+ gchar *command;
+ gchar *file;
+ guint n;
+ FILE *fp;
+
+ g_return_val_if_fail (THUNAR_VFS_IS_MIME_DATABASE (database), NULL);
+ g_return_val_if_fail (info != NULL, NULL);
+ g_return_val_if_fail (g_utf8_validate (name, -1, NULL), NULL);
+ g_return_val_if_fail (exec != NULL, NULL);
+ g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+ /* determine a file name for the new applications .desktop file */
+ directory = xfce_resource_save_location (XFCE_RESOURCE_DATA, "applications/", TRUE);
+ file = g_strconcat (directory, G_DIR_SEPARATOR_S, name, "-usercreated.desktop", NULL);
+ for (n = 1; g_file_test (file, G_FILE_TEST_EXISTS); ++n)
+ {
+ g_free (file);
+ file = g_strdup_printf ("%s" G_DIR_SEPARATOR_S "%s-usercreated-%u.desktop", directory, name, n);
+ }
+
+ /* open the .desktop file for writing */
+ fp = fopen (file, "w");
+ if (G_UNLIKELY (fp == NULL))
+ {
+ g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno), g_strerror (errno));
+ }
+ else
+ {
+ /* write the content and close the file */
+ fprintf (fp, "[Desktop Entry]\n");
+ fprintf (fp, "Encoding=UTF-8\n");
+ fprintf (fp, "Type=Application\n");
+ fprintf (fp, "NoDisplay=true\n");
+ fprintf (fp, "Name=%s\n", name);
+ fprintf (fp, "Exec=%s\n", exec);
+ fprintf (fp, "MimeType=%s\n", thunar_vfs_mime_info_get_name (info));
+ fclose (fp);
+
+ /* update the mimeinfo.cache file for the directory */
+ command = g_strdup_printf ("update-desktop-database %s", directory);
+ succeed = g_spawn_command_line_sync (command, NULL, NULL, NULL, error);
+ g_free (command);
+
+ /* check if the update was successfull */
+ if (G_LIKELY (succeed))
+ {
+ /* load the application from the .desktop file */
+ desktop_id = g_path_get_basename (file);
+ application = thunar_vfs_mime_application_new_from_file (file, desktop_id);
+ g_free (desktop_id);
+
+ /* this shouldn't happen, but you never know */
+ if (G_UNLIKELY (application == NULL))
+ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_IO, _("Failed to load application from file %s"), file);
+ }
+ }
+
+ /* cleanup */
+ g_free (directory);
+ g_free (file);
+
+ return application;
+}
+
+
+
+#define __THUNAR_VFS_MIME_DATABASE_C__
+#include <thunar-vfs/thunar-vfs-aliasdef.c>
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-database.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-database.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-database.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,73 @@
+/* $Id: thunar-vfs-mime-database.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __THUNAR_VFS_MIME_DATABASE_H__
+#define __THUNAR_VFS_MIME_DATABASE_H__
+
+#include <thunar-vfs/thunar-vfs-mime-application.h>
+#include <thunar-vfs/thunar-vfs-mime-info.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarVfsMimeDatabaseClass ThunarVfsMimeDatabaseClass;
+typedef struct _ThunarVfsMimeDatabase ThunarVfsMimeDatabase;
+
+#define THUNAR_VFS_TYPE_MIME_DATABASE (thunar_vfs_mime_database_get_type ())
+#define THUNAR_VFS_MIME_DATABASE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_VFS_TYPE_MIME_DATABASE, ThunarVfsMimeDatabase))
+#define THUNAR_VFS_MIME_DATABASE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_VFS_TYPE_MIME_DATABASE, ThunarVfsMimeDatabaseClass))
+#define THUNAR_VFS_IS_MIME_DATABASE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_VFS_TYPE_MIME_DATABASE))
+#define THUNAR_VFS_IS_MIME_DATABASE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_VFS_TYPE_MIME_DATABASE))
+#define THUNAR_VFS_MIME_DATABASE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_VFS_TYPE_MIME_DATABASE, ThunarVfsMimeDatabaseClass))
+
+GType thunar_vfs_mime_database_get_type (void) G_GNUC_CONST;
+
+ThunarVfsMimeDatabase *thunar_vfs_mime_database_get_default (void);
+
+ThunarVfsMimeInfo *thunar_vfs_mime_database_get_info (ThunarVfsMimeDatabase *database,
+ const gchar *mime_type);
+ThunarVfsMimeInfo *thunar_vfs_mime_database_get_info_for_data (ThunarVfsMimeDatabase *database,
+ gconstpointer data,
+ gsize length);
+ThunarVfsMimeInfo *thunar_vfs_mime_database_get_info_for_name (ThunarVfsMimeDatabase *database,
+ const gchar *name);
+ThunarVfsMimeInfo *thunar_vfs_mime_database_get_info_for_file (ThunarVfsMimeDatabase *database,
+ const gchar *path,
+ const gchar *name);
+
+GList *thunar_vfs_mime_database_get_infos_for_info (ThunarVfsMimeDatabase *database,
+ ThunarVfsMimeInfo *info);
+
+GList *thunar_vfs_mime_database_get_applications (ThunarVfsMimeDatabase *database,
+ ThunarVfsMimeInfo *info);
+ThunarVfsMimeApplication *thunar_vfs_mime_database_get_default_application (ThunarVfsMimeDatabase *database,
+ ThunarVfsMimeInfo *info);
+gboolean thunar_vfs_mime_database_set_default_application (ThunarVfsMimeDatabase *database,
+ ThunarVfsMimeInfo *info,
+ ThunarVfsMimeApplication *application,
+ GError **error);
+ThunarVfsMimeApplication *thunar_vfs_mime_database_add_application (ThunarVfsMimeDatabase *database,
+ ThunarVfsMimeInfo *info,
+ const gchar *name,
+ const gchar *exec,
+ GError **error);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VFS_MIME_DATABASE_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-info.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-info.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-info.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,461 @@
+/* $Id: thunar-vfs-mime-info.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+/* implement thunar-vfs-mime-info's inline functions */
+#define G_IMPLEMENT_INLINES 1
+#define __THUNAR_VFS_MIME_INFO_C__
+#include <thunar-vfs/thunar-vfs-mime-info.h>
+
+#include <thunar-vfs/thunar-vfs-mime-parser.h>
+#include <thunar-vfs/thunar-vfs-alias.h>
+
+
+
+/* special mime type to gnome icon mapping */
+static const struct
+{
+ const gchar *const type;
+ const gchar *const icon;
+} GNOME_ICONNAMES[] =
+{
+ { "inode/blockdevice", "gnome-fs-blockdev" },
+ { "inode/chardevice", "gnome-fs-chardev" },
+ { "inode/directory", "gnome-fs-directory" },
+ { "inode/fifo", "gnome-fs-fifo" },
+ { "inode/socket", "gnome-fs-socket" },
+};
+
+/* static constant media-only gnome icon names
+ * (shared by all mime types that don't have
+ * a more specific icon).
+ */
+static const gchar * const GNOME_MEDIAICONS[] =
+{
+ "gnome-mime-application",
+ "gnome-mime-audio",
+ "gnome-mime-image",
+ "gnome-mime-text",
+ "gnome-mime-video",
+};
+
+/* fallback gnome icon name */
+static const gchar GNOME_MIME_APPLICATION_OCTET_STREAM[] = "gnome-mime-application-octet-stream";
+
+
+
+/* Checks whether info has a static constant icon name, that doesn't
+ * need to be freed using g_free().
+ */
+static inline gboolean
+thunar_vfs_mime_info_is_static_icon_name (const ThunarVfsMimeInfo *info)
+{
+ guint n;
+ for (n = 0; n < G_N_ELEMENTS (GNOME_ICONNAMES); ++n)
+ if (info->icon_name == GNOME_ICONNAMES[n].icon)
+ return TRUE;
+ for (n = 0; n < G_N_ELEMENTS (GNOME_MEDIAICONS); ++n)
+ if (info->icon_name == GNOME_MEDIAICONS[n])
+ return TRUE;
+ return (info->icon_name == GNOME_MIME_APPLICATION_OCTET_STREAM);
+}
+
+
+
+GType
+thunar_vfs_mime_info_get_type (void)
+{
+ static GType type = G_TYPE_INVALID;
+
+ if (G_UNLIKELY (type == G_TYPE_INVALID))
+ {
+ type = g_boxed_type_register_static ("ThunarVfsMimeInfo",
+ (GBoxedCopyFunc) thunar_vfs_mime_info_ref,
+ (GBoxedFreeFunc) thunar_vfs_mime_info_unref);
+ }
+
+ return type;
+}
+
+
+
+/**
+ * thunar_vfs_mime_info_new:
+ * @name : the mime type name.
+ * @len : the length of @name or %-1 if zero-terminated.
+ *
+ * Allocates a new #ThunarVfsMimeInfo object with an
+ * initial reference count of one and sets it to the
+ * given @name.
+ *
+ * Note that no checking is performed on the given @name.
+ * You should not normally use this function, but use
+ * thunar_vfs_mime_database_get_info() instead.
+ *
+ * In addition, if you allocate #ThunarVfsMimeInfo<!---->s
+ * using this function, you cannot mix them with the objects
+ * allocated in a #ThunarVfsMimeDatabase, because the
+ * #ThunarVfsMimeDatabase and associated functions assume
+ * that #ThunarVfsMimeInfo objects are unique.
+ *
+ * Return value: the newly allocated #ThunarVfsMimeInfo.
+ **/
+ThunarVfsMimeInfo*
+thunar_vfs_mime_info_new (const gchar *name,
+ gssize len)
+{
+ ThunarVfsMimeInfo *info;
+
+ if (G_UNLIKELY (len < 0))
+ len = strlen (name);
+
+ /* allocate the new object */
+ info = g_malloc (sizeof (*info) + len + 1);
+ info->ref_count = 1;
+ info->comment = NULL;
+ info->icon_name = NULL;
+
+ /* set the name */
+ memcpy (((gchar *) info) + sizeof (*info), name, len + 1);
+
+ return info;
+}
+
+
+
+/**
+ * thunar_vfs_mime_info_unref:
+ * @info : a #ThunarVfsMimeInfo.
+ *
+ * Decrements the reference count on @info and releases
+ * the resources allocated for @info once the reference
+ * count drops to zero.
+ **/
+void
+thunar_vfs_mime_info_unref (ThunarVfsMimeInfo *info)
+{
+ if (exo_atomic_dec (&info->ref_count))
+ {
+ /* free the comment */
+ if (info->comment != NULL && info->comment != thunar_vfs_mime_info_get_name (info))
+ {
+#ifndef G_DISABLE_CHECKS
+ memset (info->comment, 0xaa, strlen (info->comment) + 1);
+#endif
+ g_free (info->comment);
+ }
+
+ /* free the icon name if it isn't one of the statics */
+ if (G_LIKELY (!thunar_vfs_mime_info_is_static_icon_name (info)))
+ {
+#ifndef G_DISABLE_CHECKS
+ if (G_LIKELY (info->icon_name != NULL))
+ memset (info->icon_name, 0xaa, strlen (info->icon_name) + 1);
+#endif
+ g_free (info->icon_name);
+ }
+
+ /* free the info struct */
+ g_free (info);
+ }
+}
+
+
+
+/**
+ * thunar_vfs_mime_info_get_comment:
+ * @info : a #ThunarVfsMimeInfo.
+ *
+ * Determines the description for the given @info.
+ *
+ * Note that this method MUST NOT be called from threads other than
+ * the main thread, because it's not thread-safe!
+ *
+ * Return value: the comment associated with the @info or the empty string
+ * if no comment was provided.
+ */
+const gchar*
+thunar_vfs_mime_info_get_comment (ThunarVfsMimeInfo *info)
+{
+ const gchar *name;
+ gchar *path;
+ gchar *spec;
+
+ if (G_UNLIKELY (info->comment == NULL))
+ {
+ name = thunar_vfs_mime_info_get_name (info);
+ spec = g_strdup_printf ("mime/%s.xml", name);
+ path = xfce_resource_lookup (XFCE_RESOURCE_DATA, spec);
+ g_free (spec);
+
+ if (G_LIKELY (path != NULL))
+ {
+ info->comment = _thunar_vfs_mime_parser_load_comment_from_file (path, NULL);
+ g_free (path);
+ }
+
+ if (G_UNLIKELY (info->comment == NULL))
+ {
+ /* we handle 'application/x-extension-<EXT>' special here */
+ if (G_UNLIKELY (strncmp (name, "application/x-extension-", 24) == 0))
+ info->comment = g_strdup_printf (_("%s document"), name + 24);
+ else
+ info->comment = (gchar *) name;
+ }
+ }
+
+ return info->comment;
+}
+
+
+
+/**
+ * thunar_vfs_mime_info_get_media:
+ * @info : a #ThunarVfsMimeInfo.
+ *
+ * Returns the media portion of the MIME type, e.g. if your
+ * #ThunarVfsMimeInfo instance refers to "text/plain", invoking
+ * this method will return "text".
+ *
+ * The caller is responsible to free the returned string
+ * using g_free() when no longer needed.
+ *
+ * Return value: the media portion of the MIME type.
+ **/
+gchar*
+thunar_vfs_mime_info_get_media (const ThunarVfsMimeInfo *info)
+{
+ const gchar *name;
+ const gchar *p;
+
+ /* lookup the slash character */
+ name = thunar_vfs_mime_info_get_name (info);
+ for (p = name; *p != '/' && *p != '\0'; ++p)
+ ;
+
+ return g_strndup (name, p - name);
+}
+
+
+
+/**
+ * thunar_vfs_mime_info_get_subtype:
+ * @info : a #ThunarVfsMimeInfo.
+ *
+ * Returns the subtype portion of the MIME type, e.g. if @info
+ * refers to "application/octect-stream", this method will
+ * return "octect-stream".
+ *
+ * The caller is responsible to free the returned string
+ * using g_free() when no longer needed.
+ *
+ * Return value: the subtype portion of @info.
+ **/
+gchar*
+thunar_vfs_mime_info_get_subtype (const ThunarVfsMimeInfo *info)
+{
+ const gchar *name;
+ const gchar *p;
+
+ /* lookup the slash character */
+ name = thunar_vfs_mime_info_get_name (info);
+ for (p = name; *p != '/' && *p != '\0'; ++p)
+ ;
+
+ /* skip the slash character */
+ if (G_LIKELY (*p == '/'))
+ ++p;
+
+ return g_strdup (p);
+}
+
+
+
+/**
+ * thunar_vfs_mime_info_hash:
+ * @info : a #ThunarVfsMimeInfo.
+ *
+ * Calculates a hash value for @info.
+ *
+ * Return value: a hash value for @info.
+ **/
+guint
+thunar_vfs_mime_info_hash (gconstpointer info)
+{
+ const gchar *name;
+ guint h;
+
+ name = thunar_vfs_mime_info_get_name (info);
+ for (h = *name; *++name != '\0'; )
+ h = (h << 5) - h + *name;
+
+ return h;
+}
+
+
+
+/**
+ * thunar_vfs_mime_info_equal:
+ * @a : a #ThunarVfsMimeInfo.
+ * @b : a #ThunarVfsMimeInfo.
+ *
+ * Compares @a and @b and returns %TRUE if both
+ * are equal.
+ *
+ * Return value: %TRUE if @a and @b are equal.
+ **/
+gboolean
+thunar_vfs_mime_info_equal (gconstpointer a,
+ gconstpointer b)
+{
+ const gchar *a_name = thunar_vfs_mime_info_get_name (a);
+ const gchar *b_name = thunar_vfs_mime_info_get_name (b);
+
+ return (a == b) || G_UNLIKELY (strcmp (a_name, b_name) == 0);
+}
+
+
+
+/**
+ * thunar_vfs_mime_info_lookup_icon_name:
+ * @info : a #ThunarVfsMimeInfo.
+ * @icon_theme : the #GtkIconTheme on which to perform the lookup.
+ *
+ * Tries to determine the name of a suitable icon for @info
+ * in @icon_theme. The returned icon name can then be used
+ * in calls to gtk_icon_theme_lookup_icon() or
+ * gtk_icon_theme_load_icon().
+ *
+ * The returned icon name is owned by @info and MUST NOT be freed
+ * by the caller.
+ *
+ * Note that this method MUST NOT be called from threads other than
+ * the main thread, because it's not thread-safe!
+ *
+ * Return value: a suitable icon name for @info in @icon_theme.
+ **/
+const gchar*
+thunar_vfs_mime_info_lookup_icon_name (ThunarVfsMimeInfo *info,
+ GtkIconTheme *icon_theme)
+{
+ const gchar *subtype;
+ const gchar *name;
+ const gchar *p;
+ gchar *media;
+ gsize n;
+
+ g_return_val_if_fail (info != NULL, NULL);
+ g_return_val_if_fail (GTK_IS_ICON_THEME (icon_theme), NULL);
+
+ /* determine the icon name if we don't already have it cached */
+ if (G_UNLIKELY (info->icon_name == NULL))
+ {
+ /* determine media and subtype */
+ name = thunar_vfs_mime_info_get_name (info);
+ for (p = name + 1; *p != '/' && *p != '\0'; ++p);
+ media = g_newa (gchar, p - name + 1);
+ memcpy (media, name, p - name);
+ media[p - name] = '\0';
+ subtype = G_LIKELY (*p == '/') ? p + 1 : p;
+
+ /* start out with the full name */
+ info->icon_name = g_strdup_printf ("gnome-mime-%s-%s", media, subtype);
+ if (!gtk_icon_theme_has_icon (icon_theme, info->icon_name))
+ {
+ /* only the media portion */
+ info->icon_name[11 + ((subtype - 1) - name)] = '\0';
+ if (!gtk_icon_theme_has_icon (icon_theme, info->icon_name))
+ {
+ /* if we get here, we'll use a static icon name */
+ g_free (info->icon_name);
+
+ /* GNOME uses non-standard names for special MIME types */
+ for (n = 0; n < G_N_ELEMENTS (GNOME_ICONNAMES); ++n)
+ if (strcmp (name, GNOME_ICONNAMES[n].type) == 0)
+ if (gtk_icon_theme_has_icon (icon_theme, GNOME_ICONNAMES[n].icon))
+ {
+ info->icon_name = (gchar *) GNOME_ICONNAMES[n].icon;
+ break;
+ }
+
+ /* fallback is always application/octet-stream */
+ if (n == G_N_ELEMENTS (GNOME_ICONNAMES))
+ info->icon_name = (gchar *) GNOME_MIME_APPLICATION_OCTET_STREAM;
+ }
+ else
+ {
+ /* check if we can use one of the static media icon names */
+ for (n = 0; n < G_N_ELEMENTS (GNOME_MEDIAICONS); ++n)
+ if (strcmp (info->icon_name, GNOME_MEDIAICONS[n]) == 0)
+ {
+ g_free (info->icon_name);
+ info->icon_name = (gchar *) GNOME_MEDIAICONS[n];
+ break;
+ }
+ }
+ }
+
+ /* verify the icon name */
+ g_assert (info->icon_name != NULL);
+ g_assert (info->icon_name[0] != '\0');
+ }
+
+ return info->icon_name;
+}
+
+
+
+/**
+ * _thunar_vfs_mime_info_invalidate_icon_name:
+ * @info : a #ThunarVfsMimeInfo.
+ *
+ * Invalidates the cached icon name for @info.
+ *
+ * Note that this method MUST NOT be called from threads other than
+ * the main thread, because it's not thread-safe!
+ **/
+void
+_thunar_vfs_mime_info_invalidate_icon_name (ThunarVfsMimeInfo *info)
+{
+ if (!thunar_vfs_mime_info_is_static_icon_name (info))
+ {
+#ifndef G_DISABLE_CHECKS
+ if (G_LIKELY (info->icon_name != NULL))
+ memset (info->icon_name, 0xaa, strlen (info->icon_name));
+#endif
+ g_free (info->icon_name);
+ }
+ info->icon_name = NULL;
+}
+
+
+
+#define __THUNAR_VFS_MIME_INFO_C__
+#include <thunar-vfs/thunar-vfs-aliasdef.c>
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-info.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-info.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-info.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,120 @@
+/* $Id: thunar-vfs-mime-info.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __THUNAR_VFS_MIME_INFO_H__
+#define __THUNAR_VFS_MIME_INFO_H__
+
+#include <thunar-vfs/thunar-vfs-config.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarVfsMimeInfo ThunarVfsMimeInfo;
+struct _ThunarVfsMimeInfo
+{
+ /*< private >*/
+ gint ref_count;
+ gchar *comment;
+ gchar *icon_name;
+};
+
+
+#define THUNAR_VFS_TYPE_MIME_INFO (thunar_vfs_mime_info_get_type ())
+
+GType thunar_vfs_mime_info_get_type (void) G_GNUC_CONST;
+
+ThunarVfsMimeInfo *thunar_vfs_mime_info_new (const gchar *name,
+ gssize len) G_GNUC_MALLOC;
+
+G_INLINE_FUNC ThunarVfsMimeInfo *thunar_vfs_mime_info_ref (ThunarVfsMimeInfo *info);
+void thunar_vfs_mime_info_unref (ThunarVfsMimeInfo *info);
+
+const gchar *thunar_vfs_mime_info_get_comment (ThunarVfsMimeInfo *info);
+G_INLINE_FUNC const gchar *thunar_vfs_mime_info_get_name (const ThunarVfsMimeInfo *info);
+
+gchar *thunar_vfs_mime_info_get_media (const ThunarVfsMimeInfo *info) G_GNUC_MALLOC;
+gchar *thunar_vfs_mime_info_get_subtype (const ThunarVfsMimeInfo *info) G_GNUC_MALLOC;
+
+guint thunar_vfs_mime_info_hash (gconstpointer info);
+gboolean thunar_vfs_mime_info_equal (gconstpointer a,
+ gconstpointer b);
+
+const gchar *thunar_vfs_mime_info_lookup_icon_name (ThunarVfsMimeInfo *info,
+ GtkIconTheme *icon_theme);
+
+G_INLINE_FUNC void thunar_vfs_mime_info_list_free (GList *info_list);
+
+
+#if defined(THUNAR_VFS_COMPILATION)
+void _thunar_vfs_mime_info_invalidate_icon_name (ThunarVfsMimeInfo *info) G_GNUC_INTERNAL;
+#endif
+
+
+/* inline function implementations */
+#if defined(G_CAN_INLINE) || defined(__THUNAR_VFS_MIME_INFO_C__)
+/**
+ * thunar_vfs_mime_info_ref:
+ * @info : a #ThunarVfsMimeInfo.
+ *
+ * Increments the reference count on @info and returns
+ * the reference to @info.
+ *
+ * Return value: a reference to @info.
+ **/
+G_INLINE_FUNC ThunarVfsMimeInfo*
+thunar_vfs_mime_info_ref (ThunarVfsMimeInfo *info)
+{
+ exo_atomic_inc (&info->ref_count);
+ return info;
+}
+
+/**
+ * thunar_vfs_mime_info_get_name:
+ * @info : a #ThunarVfsMimeInfo.
+ *
+ * Returns the full qualified name of the MIME type
+ * described by the @info object.
+ *
+ * Return value: the name of @info.
+ **/
+G_INLINE_FUNC const gchar*
+thunar_vfs_mime_info_get_name (const ThunarVfsMimeInfo *info)
+{
+ return ((const gchar *) info) + sizeof (*info);
+}
+
+/**
+ * thunar_vfs_mime_info_list_free:
+ * @info_list : a #GList of #ThunarVfsMimeInfo<!---->s
+ *
+ * Frees the list and all #ThunarVfsMimeInfo<!---->s
+ * contained within the list.
+ **/
+G_INLINE_FUNC void
+thunar_vfs_mime_info_list_free (GList *info_list)
+{
+ g_list_foreach (info_list, (GFunc) thunar_vfs_mime_info_unref, NULL);
+ g_list_free (info_list);
+}
+#endif /* G_CAN_INLINE || __THUNAR_VFS_MIME_INFO_C__ */
+
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VFS_MIME_INFO_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-legacy.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-legacy.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-legacy.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,643 @@
+/* $Id: thunar-vfs-mime-legacy.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Based on code initially written by Matthias Clasen <mclasen at redhat.com>
+ * for the xdgmime library.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_FNMATCH_H
+#include <fnmatch.h>
+#endif
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#include <stdio.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#include <thunar-vfs/thunar-vfs-mime-legacy.h>
+
+
+
+#define THUNAR_VFS_MIME_LEGACY_GLOB(obj) ((ThunarVfsMimeLegacyGlob *) (obj))
+#define THUNAR_VFS_MIME_LEGACY_SUFFIX(obj) ((ThunarVfsMimeLegacySuffix *) (obj))
+
+
+
+typedef struct _ThunarVfsMimeLegacyGlob ThunarVfsMimeLegacyGlob;
+typedef struct _ThunarVfsMimeLegacySuffix ThunarVfsMimeLegacySuffix;
+
+
+
+static void thunar_vfs_mime_legacy_class_init (ThunarVfsMimeLegacyClass *klass);
+static void thunar_vfs_mime_legacy_init (ThunarVfsMimeLegacy *legacy);
+static void thunar_vfs_mime_legacy_finalize (GObject *object);
+static const gchar *thunar_vfs_mime_legacy_lookup_data (ThunarVfsMimeProvider *provider,
+ gconstpointer data,
+ gsize length,
+ gint *priority);
+static const gchar *thunar_vfs_mime_legacy_lookup_literal (ThunarVfsMimeProvider *provider,
+ const gchar *filename);
+static const gchar *thunar_vfs_mime_legacy_lookup_suffix (ThunarVfsMimeProvider *provider,
+ const gchar *suffix,
+ gboolean ignore_case);
+static const gchar *thunar_vfs_mime_legacy_lookup_glob (ThunarVfsMimeProvider *provider,
+ const gchar *filename);
+static const gchar *thunar_vfs_mime_legacy_lookup_alias (ThunarVfsMimeProvider *provider,
+ const gchar *alias);
+static guint thunar_vfs_mime_legacy_lookup_parents (ThunarVfsMimeProvider *provider,
+ const gchar *mime_type,
+ gchar **parents,
+ guint max_parents);
+static GList *thunar_vfs_mime_legacy_get_stop_characters (ThunarVfsMimeProvider *provider);
+static gsize thunar_vfs_mime_legacy_get_max_buffer_extents (ThunarVfsMimeProvider *provider);
+static void thunar_vfs_mime_legacy_parse_aliases (ThunarVfsMimeLegacy *legacy,
+ const gchar *directory);
+static gboolean thunar_vfs_mime_legacy_parse_globs (ThunarVfsMimeLegacy *legacy,
+ const gchar *directory);
+static void thunar_vfs_mime_legacy_parse_subclasses (ThunarVfsMimeLegacy *legacy,
+ const gchar *directory);
+
+
+
+struct _ThunarVfsMimeLegacyClass
+{
+ ThunarVfsMimeProviderClass __parent__;
+};
+
+struct _ThunarVfsMimeLegacy
+{
+ ThunarVfsMimeProvider __parent__;
+
+ GStringChunk *string_chunk;
+ GMemChunk *suffix_chunk;
+ GMemChunk *glob_chunk;
+
+ GHashTable *literals;
+ ThunarVfsMimeLegacySuffix *suffixes;
+ GList *globs;
+
+ GHashTable *aliases;
+ GHashTable *parents;
+};
+
+struct _ThunarVfsMimeLegacyGlob
+{
+ const gchar *pattern;
+ const gchar *mime_type;
+};
+
+struct _ThunarVfsMimeLegacySuffix
+{
+ ThunarVfsMimeLegacySuffix *child;
+ ThunarVfsMimeLegacySuffix *next;
+ const gchar *mime_type;
+ gunichar character;
+};
+
+
+
+static GObjectClass *thunar_vfs_mime_legacy_parent_class;
+
+
+
+GType
+thunar_vfs_mime_legacy_get_type (void)
+{
+ static GType type = G_TYPE_INVALID;
+
+ if (G_UNLIKELY (type == G_TYPE_INVALID))
+ {
+ static const GTypeInfo info =
+ {
+ sizeof (ThunarVfsMimeLegacyClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) thunar_vfs_mime_legacy_class_init,
+ NULL,
+ NULL,
+ sizeof (ThunarVfsMimeLegacy),
+ 0,
+ (GInstanceInitFunc) thunar_vfs_mime_legacy_init,
+ NULL,
+ };
+
+ type = g_type_register_static (THUNAR_VFS_TYPE_MIME_PROVIDER,
+ "ThunarVfsMimeLegacy", &info, 0);
+ }
+
+ return type;
+}
+
+
+
+static void
+thunar_vfs_mime_legacy_class_init (ThunarVfsMimeLegacyClass *klass)
+{
+ ThunarVfsMimeProviderClass *thunarvfs_mime_provider_class;
+ GObjectClass *gobject_class;
+
+ thunar_vfs_mime_legacy_parent_class = g_type_class_peek_parent (klass);
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_vfs_mime_legacy_finalize;
+
+ thunarvfs_mime_provider_class = THUNAR_VFS_MIME_PROVIDER_CLASS (klass);
+ thunarvfs_mime_provider_class->lookup_data = thunar_vfs_mime_legacy_lookup_data;
+ thunarvfs_mime_provider_class->lookup_literal = thunar_vfs_mime_legacy_lookup_literal;
+ thunarvfs_mime_provider_class->lookup_suffix = thunar_vfs_mime_legacy_lookup_suffix;
+ thunarvfs_mime_provider_class->lookup_glob = thunar_vfs_mime_legacy_lookup_glob;
+ thunarvfs_mime_provider_class->lookup_alias = thunar_vfs_mime_legacy_lookup_alias;
+ thunarvfs_mime_provider_class->lookup_parents = thunar_vfs_mime_legacy_lookup_parents;
+ thunarvfs_mime_provider_class->get_stop_characters = thunar_vfs_mime_legacy_get_stop_characters;
+ thunarvfs_mime_provider_class->get_max_buffer_extents = thunar_vfs_mime_legacy_get_max_buffer_extents;
+}
+
+
+
+static void
+thunar_vfs_mime_legacy_init (ThunarVfsMimeLegacy *legacy)
+{
+ legacy->string_chunk = g_string_chunk_new (1024);
+ legacy->glob_chunk = g_mem_chunk_create (ThunarVfsMimeLegacyGlob, 32, G_ALLOC_ONLY);
+ legacy->suffix_chunk = g_mem_chunk_create (ThunarVfsMimeLegacySuffix, 128, G_ALLOC_ONLY);
+
+ legacy->literals = g_hash_table_new (g_str_hash, g_str_equal);
+
+ legacy->aliases = g_hash_table_new (g_str_hash, g_str_equal);
+ legacy->parents = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_list_free);
+}
+
+
+
+static void
+thunar_vfs_mime_legacy_finalize (GObject *object)
+{
+ ThunarVfsMimeLegacy *legacy = THUNAR_VFS_MIME_LEGACY (object);
+
+ /* free parents hash table */
+ g_hash_table_destroy (legacy->parents);
+
+ /* free aliases hash table */
+ g_hash_table_destroy (legacy->aliases);
+
+ /* free the list of globs */
+ g_list_free (legacy->globs);
+
+ /* free literals hash table */
+ g_hash_table_destroy (legacy->literals);
+
+ /* free chunks */
+ g_string_chunk_free (legacy->string_chunk);
+ g_mem_chunk_destroy (legacy->suffix_chunk);
+ g_mem_chunk_destroy (legacy->glob_chunk);
+
+ (*G_OBJECT_CLASS (thunar_vfs_mime_legacy_parent_class)->finalize) (object);
+}
+
+
+
+static const gchar*
+thunar_vfs_mime_legacy_lookup_data (ThunarVfsMimeProvider *provider,
+ gconstpointer data,
+ gsize length,
+ gint *priority)
+{
+ return NULL;
+}
+
+
+
+static const gchar*
+thunar_vfs_mime_legacy_lookup_literal (ThunarVfsMimeProvider *provider,
+ const gchar *filename)
+{
+ return g_hash_table_lookup (THUNAR_VFS_MIME_LEGACY (provider)->literals, filename);
+}
+
+
+
+static ThunarVfsMimeLegacySuffix*
+suffix_insert (ThunarVfsMimeLegacy *legacy,
+ ThunarVfsMimeLegacySuffix *suffix_node,
+ const gchar *pattern,
+ const gchar *mime_type)
+{
+ ThunarVfsMimeLegacySuffix *previous;
+ ThunarVfsMimeLegacySuffix *node;
+ gboolean found_node = FALSE;
+ gunichar character;
+
+ character = g_utf8_get_char (pattern);
+
+ if (suffix_node == NULL || character < suffix_node->character)
+ {
+ node = g_chunk_new0 (ThunarVfsMimeLegacySuffix, legacy->suffix_chunk);
+ node->next = suffix_node;
+ node->character = character;
+ suffix_node = node;
+ }
+ else if (character == suffix_node->character)
+ {
+ node = suffix_node;
+ }
+ else
+ {
+ for (previous = suffix_node, node = previous->next; node != NULL; previous = node, node = node->next)
+ {
+ if (character < node->character)
+ {
+ node = g_chunk_new0 (ThunarVfsMimeLegacySuffix, legacy->suffix_chunk);
+ node->next = previous->next;
+ node->character = character;
+ previous->next = node;
+ found_node = TRUE;
+ break;
+ }
+ else if (character == node->character)
+ {
+ found_node = TRUE;
+ break;
+ }
+ }
+
+ if (!found_node)
+ {
+ node = g_chunk_new0 (ThunarVfsMimeLegacySuffix, legacy->suffix_chunk);
+ node->next = previous->next;
+ node->character = character;
+ previous->next = node;
+ }
+ }
+
+ pattern = g_utf8_next_char (pattern);
+ if (G_UNLIKELY (*pattern == '\0'))
+ node->mime_type = mime_type;
+ else
+ node->child = suffix_insert (legacy, node->child, pattern, mime_type);
+
+ return suffix_node;
+}
+
+
+
+static const gchar*
+suffix_lookup (ThunarVfsMimeLegacySuffix *suffix_node,
+ const gchar *filename,
+ gboolean ignore_case)
+{
+ ThunarVfsMimeLegacySuffix *node;
+ gunichar character;
+
+ if (G_UNLIKELY (suffix_node == NULL))
+ return NULL;
+
+ character = g_utf8_get_char (filename);
+ if (G_UNLIKELY (ignore_case))
+ character = g_unichar_tolower (character);
+
+ for (node = suffix_node; node != NULL && character >= node->character; node = node->next)
+ if (character == node->character)
+ {
+ filename = g_utf8_next_char (filename);
+ if (*filename == '\0')
+ return node->mime_type;
+ else
+ return suffix_lookup (node->child, filename, ignore_case);
+ }
+
+ return NULL;
+}
+
+
+
+static const gchar*
+thunar_vfs_mime_legacy_lookup_suffix (ThunarVfsMimeProvider *provider,
+ const gchar *suffix,
+ gboolean ignore_case)
+{
+ return suffix_lookup (THUNAR_VFS_MIME_LEGACY (provider)->suffixes, suffix, ignore_case);
+}
+
+
+
+static const gchar*
+thunar_vfs_mime_legacy_lookup_glob (ThunarVfsMimeProvider *provider,
+ const gchar *filename)
+{
+ GList *lp;
+
+ for (lp = THUNAR_VFS_MIME_LEGACY (provider)->globs; lp != NULL; lp = lp->next)
+ if (fnmatch (THUNAR_VFS_MIME_LEGACY_GLOB (lp->data)->pattern, filename, 0) == 0)
+ return THUNAR_VFS_MIME_LEGACY_GLOB (lp->data)->mime_type;
+
+ return NULL;
+}
+
+
+
+static const gchar*
+thunar_vfs_mime_legacy_lookup_alias (ThunarVfsMimeProvider *provider,
+ const gchar *alias)
+{
+ return g_hash_table_lookup (THUNAR_VFS_MIME_LEGACY (provider)->aliases, alias);
+}
+
+
+
+static guint
+thunar_vfs_mime_legacy_lookup_parents (ThunarVfsMimeProvider *provider,
+ const gchar *mime_type,
+ gchar **parents,
+ guint max_parents)
+{
+ GList *lp;
+ guint n = 0;
+
+ /* determine the known parents for the MIME-type */
+ lp = g_hash_table_lookup (THUNAR_VFS_MIME_LEGACY (provider)->parents, mime_type);
+ for (; lp != NULL && n < max_parents; lp = lp->next, ++n, ++parents)
+ *parents = lp->data;
+
+ return n;
+}
+
+
+
+static GList*
+thunar_vfs_mime_legacy_get_stop_characters (ThunarVfsMimeProvider *provider)
+{
+ ThunarVfsMimeLegacySuffix *node;
+ GList *stopchars = NULL;
+
+ for (node = THUNAR_VFS_MIME_LEGACY (provider)->suffixes; node != NULL; node = node->next)
+ if (node->character < 128u)
+ stopchars = g_list_prepend (stopchars, GUINT_TO_POINTER (node->character));
+
+ return stopchars;
+}
+
+
+
+static gsize
+thunar_vfs_mime_legacy_get_max_buffer_extents (ThunarVfsMimeProvider *provider)
+{
+ return 0;
+}
+
+
+
+static void
+thunar_vfs_mime_legacy_parse_aliases (ThunarVfsMimeLegacy *legacy,
+ const gchar *directory)
+{
+ gchar line[2048];
+ gchar *alias;
+ gchar *name;
+ gchar *path;
+ gchar *lp;
+ FILE *fp;
+
+ /* try to open the "aliases" file */
+ path = g_build_filename (directory, "aliases", NULL);
+ fp = fopen (path, "r");
+ g_free (path);
+
+ /* check if we succeed */
+ if (G_UNLIKELY (fp == NULL))
+ return;
+
+ /* parse all aliases */
+ while (fgets (line, sizeof (line), fp) != NULL)
+ {
+ /* skip whitespace/comments */
+ for (lp = line; g_ascii_isspace (*lp); ++lp);
+ if (G_UNLIKELY (*lp == '\0' || *lp == '#'))
+ continue;
+
+ /* extract the alias name */
+ for (alias = lp; *lp != '\0' && !g_ascii_isspace (*lp); ++lp);
+ if (G_UNLIKELY (*lp == '\0' || alias == lp))
+ continue;
+ *lp++ = '\0';
+
+ /* skip whitespace */
+ for (; G_UNLIKELY (g_ascii_isspace (*lp)); ++lp);
+ if (G_UNLIKELY (*lp == '\0'))
+ continue;
+
+ /* extract the MIME-type name */
+ for (name = lp; *lp != '\0' && *lp != '\n' && *lp != '\r'; ++lp);
+ if (G_UNLIKELY (name == lp))
+ continue;
+ *lp = '\0';
+
+ /* insert the alias into the string chunk */
+ alias = g_string_chunk_insert_const (legacy->string_chunk, alias);
+
+ /* insert the MIME-type name into the string chunk */
+ name = g_string_chunk_insert_const (legacy->string_chunk, name);
+
+ /* insert the association into the aliases hash table */
+ g_hash_table_insert (legacy->aliases, alias, name);
+ }
+
+ fclose (fp);
+}
+
+
+
+static gboolean
+thunar_vfs_mime_legacy_parse_globs (ThunarVfsMimeLegacy *legacy,
+ const gchar *directory)
+{
+ ThunarVfsMimeLegacyGlob *glob;
+ gchar line[2048];
+ gchar *pattern;
+ gchar *path;
+ gchar *name;
+ gchar *lp;
+ FILE *fp;
+
+ /* try to open the "globs" file */
+ path = g_build_filename (directory, "globs", NULL);
+ fp = fopen (path, "r");
+ g_free (path);
+
+ /* cannot continue */
+ if (G_UNLIKELY (fp == NULL))
+ return FALSE;
+
+ /* parse all globs */
+ while (fgets (line, sizeof (line), fp) != NULL)
+ {
+ /* skip whitespace/comments */
+ for (lp = line; g_ascii_isspace (*lp); ++lp);
+ if (*lp == '\0' || *lp == '#')
+ continue;
+
+ /* extract the MIME-type name */
+ for (name = lp; *lp != '\0' && *lp != ':'; ++lp);
+ if (*lp == '\0' || name == lp)
+ continue;
+
+ /* extract the pattern */
+ for (*lp = '\0', pattern = ++lp; *lp != '\0' && *lp != '\n' && *lp != '\r'; ++lp);
+ *lp = '\0';
+ if (*pattern == '\0')
+ continue;
+
+ /* insert the name into the string chunk */
+ name = g_string_chunk_insert_const (legacy->string_chunk, name);
+
+ /* determine the type of the pattern */
+ if (strpbrk (pattern, "*?[") == NULL)
+ {
+ g_hash_table_insert (legacy->literals, g_string_chunk_insert (legacy->string_chunk, pattern), name);
+ }
+ else if (pattern[0] == '*' && pattern[1] == '.' && strpbrk (pattern + 2, "*?[") == NULL)
+ {
+ legacy->suffixes = suffix_insert (legacy, legacy->suffixes, pattern + 1, name);
+ }
+ else
+ {
+ glob = g_chunk_new (ThunarVfsMimeLegacyGlob, legacy->glob_chunk);
+ glob->pattern = g_string_chunk_insert (legacy->string_chunk, pattern);
+ glob->mime_type = name;
+ legacy->globs = g_list_append (legacy->globs, glob);
+ }
+ }
+
+ fclose (fp);
+
+ return TRUE;
+}
+
+
+
+static void
+thunar_vfs_mime_legacy_parse_subclasses (ThunarVfsMimeLegacy *legacy,
+ const gchar *directory)
+{
+ gchar line[2048];
+ GList *parents;
+ gchar *subclass;
+ gchar *name;
+ gchar *path;
+ gchar *lp;
+ FILE *fp;
+
+ /* try to open the "subclasses" file */
+ path = g_build_filename (directory, "subclasses", NULL);
+ fp = fopen (path, "r");
+ g_free (path);
+
+ /* check if we succeed */
+ if (G_UNLIKELY (fp == NULL))
+ return;
+
+ /* parse all subclasses */
+ while (fgets (line, sizeof (line), fp) != NULL)
+ {
+ /* skip whitespace/comments */
+ for (lp = line; g_ascii_isspace (*lp); ++lp);
+ if (G_UNLIKELY (*lp == '\0' || *lp == '#'))
+ continue;
+
+ /* extract the subclass name */
+ for (subclass = lp; *lp != '\0' && !g_ascii_isspace (*lp); ++lp);
+ if (G_UNLIKELY (*lp == '\0' || subclass == lp))
+ continue;
+ *lp++ = '\0';
+
+ /* skip whitespace */
+ for (; G_UNLIKELY (g_ascii_isspace (*lp)); ++lp);
+ if (G_UNLIKELY (*lp == '\0'))
+ continue;
+
+ /* extract the MIME-type name */
+ for (name = lp; *lp != '\0' && *lp != '\n' && *lp != '\r'; ++lp);
+ if (G_UNLIKELY (name == lp))
+ continue;
+ *lp = '\0';
+
+ /* insert the subclass into the string chunk */
+ subclass = g_string_chunk_insert_const (legacy->string_chunk, subclass);
+
+ /* insert the MIME-type name into the string chunk */
+ name = g_string_chunk_insert_const (legacy->string_chunk, name);
+
+ /* add the MIME-type name to the list of parents for the subclass */
+ parents = g_hash_table_lookup (legacy->parents, subclass);
+ if (G_UNLIKELY (parents != NULL))
+ parents = g_list_copy (parents);
+ parents = g_list_append (parents, name);
+ g_hash_table_insert (legacy->parents, subclass, parents);
+ }
+
+ fclose (fp);
+}
+
+
+
+/**
+ * thunar_vfs_mime_legacy_new:
+ * @directory : an XDG mime base directory.
+ *
+ * Allocates a new #ThunarVfsMimeLegacy for @directory and
+ * returns the instance on success, or %NULL on error.
+ *
+ * The caller is responsible to free the returned instance
+ * using g_object_unref().
+ *
+ * Return value: the newly allocated #ThunarVfsMimeLegacy
+ * instance or %NULL on error.
+ **/
+ThunarVfsMimeProvider*
+thunar_vfs_mime_legacy_new (const gchar *directory)
+{
+ ThunarVfsMimeLegacy *legacy;
+
+ /* allocate the new object */
+ legacy = g_object_new (THUNAR_VFS_TYPE_MIME_LEGACY, NULL);
+
+ /* try to parse the globs file */
+ if (!thunar_vfs_mime_legacy_parse_globs (legacy, directory))
+ {
+ g_object_unref (legacy);
+ return NULL;
+ }
+
+ /* parse the aliases file (optional) */
+ thunar_vfs_mime_legacy_parse_aliases (legacy, directory);
+
+ /* parse the subclasses file (optional) */
+ thunar_vfs_mime_legacy_parse_subclasses (legacy, directory);
+
+ /* we got it */
+ return THUNAR_VFS_MIME_PROVIDER (legacy);
+}
+
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-legacy.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-legacy.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-legacy.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,44 @@
+/* $Id: thunar-vfs-mime-legacy.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __THUNAR_VFS_MIME_LEGACY_H__
+#define __THUNAR_VFS_MIME_LEGACY_H__
+
+#include <thunar-vfs/thunar-vfs-mime-provider.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarVfsMimeLegacyClass ThunarVfsMimeLegacyClass;
+typedef struct _ThunarVfsMimeLegacy ThunarVfsMimeLegacy;
+
+#define THUNAR_VFS_TYPE_MIME_LEGACY (thunar_vfs_mime_legacy_get_type ())
+#define THUNAR_VFS_MIME_LEGACY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_VFS_TYPE_MIME_LEGACY, ThunarVfsMimeLegacy))
+#define THUNAR_VFS_MIME_LEGACY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_VFS_TYPE_MIME_LEGACY, ThunarVfsMimeLegacyClass))
+#define THUNAR_VFS_IS_MIME_LEGACY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_VFS_TYPE_MIME_LEGACY))
+#define THUNAR_VFS_IS_MIME_LEGACY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_VFS_TYPE_MIME_LEGACY))
+#define THUNAR_VFS_MIME_LEGACY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_VFS_TYPE_MIME_LEGACY, ThunarVfsMimeLegacyClass))
+
+GType thunar_vfs_mime_legacy_get_type (void) G_GNUC_CONST G_GNUC_INTERNAL;
+
+ThunarVfsMimeProvider *thunar_vfs_mime_legacy_new (const gchar *directory) G_GNUC_INTERNAL G_GNUC_MALLOC;
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VFS_MIME_LEGACY_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-parser.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-parser.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-parser.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,257 @@
+/* $Id: thunar-vfs-mime-parser.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_LOCALE_H
+#include <locale.h>
+#endif
+
+#include <thunar-vfs/thunar-vfs-mime-parser.h>
+
+
+
+typedef enum
+{
+ PARSER_STATE_START,
+ PARSER_STATE_MIMETYPE,
+ PARSER_STATE_COMMENT,
+ PARSER_STATE_UNKNOWN,
+} ParserState;
+
+typedef XFCE_GENERIC_STACK(ParserState) ParserStateStack;
+
+typedef struct
+{
+ ParserStateStack *stack;
+ guint comment_match;
+ gboolean comment_use;
+ GString *comment;
+ const gchar *locale;
+} Parser;
+
+
+
+static void start_element_handler (GMarkupParseContext *context,
+ const gchar *element_name,
+ const gchar **attribute_names,
+ const gchar **attribute_values,
+ gpointer user_data,
+ GError **error);
+static void end_element_handler (GMarkupParseContext *context,
+ const gchar *element_name,
+ gpointer user_data,
+ GError **error);
+static void text_handler (GMarkupParseContext *context,
+ const gchar *text,
+ gsize text_len,
+ gpointer user_data,
+ GError **error);
+
+
+
+static GMarkupParser markup_parser =
+{
+ start_element_handler,
+ end_element_handler,
+ text_handler,
+ NULL,
+ NULL,
+};
+
+
+
+static void
+start_element_handler (GMarkupParseContext *context,
+ const gchar *element_name,
+ const gchar **attribute_names,
+ const gchar **attribute_values,
+ gpointer user_data,
+ GError **error)
+{
+ Parser *parser = (Parser *) user_data;
+ guint match;
+ guint n;
+
+ switch (xfce_stack_top (parser->stack))
+ {
+ case PARSER_STATE_START:
+ if (exo_str_is_equal (element_name, "mime-type"))
+ {
+ xfce_stack_push (parser->stack, PARSER_STATE_MIMETYPE);
+ }
+ else
+ goto unknown_element;
+ break;
+
+ case PARSER_STATE_MIMETYPE:
+ if (exo_str_is_equal (element_name, "comment"))
+ {
+ for (n = 0; attribute_names[n] != NULL; ++n)
+ if (exo_str_is_equal (attribute_names[n], "xml:lang"))
+ break;
+
+ if (G_UNLIKELY (attribute_names[n] == NULL))
+ {
+ parser->comment_use = (parser->comment_match <= XFCE_LOCALE_NO_MATCH);
+ }
+ else
+ {
+ match = xfce_locale_match (parser->locale, attribute_values[n]);
+ if (parser->comment_match < match)
+ {
+ parser->comment_match = match;
+ parser->comment_use = TRUE;
+ }
+ else
+ {
+ parser->comment_use = FALSE;
+ }
+ }
+
+ if (parser->comment_use)
+ g_string_truncate (parser->comment, 0);
+
+ xfce_stack_push (parser->stack, PARSER_STATE_COMMENT);
+ }
+ else
+ xfce_stack_push (parser->stack, PARSER_STATE_UNKNOWN);
+ break;
+
+ default:
+ xfce_stack_push (parser->stack, PARSER_STATE_UNKNOWN);
+ break;
+ }
+
+ return;
+
+unknown_element:
+ g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_UNKNOWN_ELEMENT,
+ "Unknown element <%s>", element_name);
+ return;
+}
+
+
+
+static void
+end_element_handler (GMarkupParseContext *context,
+ const gchar *element_name,
+ gpointer user_data,
+ GError **error)
+{
+ Parser *parser = (Parser *) user_data;
+
+ switch (xfce_stack_top (parser->stack))
+ {
+ case PARSER_STATE_START:
+ g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT,
+ "End element handler called while in root context");
+ return;
+
+ case PARSER_STATE_MIMETYPE:
+ if (!exo_str_is_equal (element_name, "mime-type"))
+ goto unknown_element;
+ break;
+
+ case PARSER_STATE_COMMENT:
+ if (!exo_str_is_equal (element_name, "comment"))
+ goto unknown_element;
+ break;
+
+ default:
+ break;
+ }
+
+ xfce_stack_pop (parser->stack);
+ return;
+
+unknown_element:
+ g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_UNKNOWN_ELEMENT,
+ "Unknown closing element <%s>", element_name);
+ return;
+}
+
+
+
+static void
+text_handler (GMarkupParseContext *context,
+ const gchar *text,
+ gsize text_len,
+ gpointer user_data,
+ GError **error)
+{
+ Parser *parser = (Parser *) user_data;
+
+ switch (xfce_stack_top (parser->stack))
+ {
+ case PARSER_STATE_COMMENT:
+ if (parser->comment_use)
+ g_string_append_len (parser->comment, text, text_len);
+ break;
+
+ default:
+ break;
+ }
+}
+
+
+
+gchar*
+_thunar_vfs_mime_parser_load_comment_from_file (const gchar *filename,
+ GError **error)
+{
+ GMarkupParseContext *context;
+ Parser parser;
+ gchar *content;
+ gsize content_len;
+ gboolean comment_free = TRUE;
+ gchar *comment = NULL;
+
+ if (!g_file_get_contents (filename, &content, &content_len, error))
+ return NULL;
+
+ parser.comment_match = XFCE_LOCALE_NO_MATCH;
+ parser.comment = g_string_new ("");
+ parser.locale = setlocale (LC_MESSAGES, NULL);
+
+ parser.stack = xfce_stack_new (ParserStateStack);
+ xfce_stack_push (parser.stack, PARSER_STATE_START);
+
+ context = g_markup_parse_context_new (&markup_parser, 0, &parser, NULL);
+
+ if (!g_markup_parse_context_parse (context, content, content_len, error))
+ goto done;
+
+ if (!g_markup_parse_context_end_parse (context, error))
+ goto done;
+
+ comment = parser.comment->str;
+ comment_free = FALSE;
+
+done:
+ g_markup_parse_context_free (context);
+ g_string_free (parser.comment, comment_free);
+ xfce_stack_free (parser.stack);
+ g_free (content);
+
+ return comment;
+}
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-parser.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-parser.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-parser.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,33 @@
+/* $Id: thunar-vfs-mime-parser.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __THUNAR_VFS_MIME_PARSER_H__
+#define __THUNAR_VFS_MIME_PARSER_H__
+
+#include <exo/exo.h>
+
+G_BEGIN_DECLS;
+
+gchar *_thunar_vfs_mime_parser_load_comment_from_file (const gchar *filename,
+ GError **error);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VFS_MIME_PARSER_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-provider.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-provider.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-provider.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,55 @@
+/* $Id: thunar-vfs-mime-provider.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <thunar-vfs/thunar-vfs-mime-provider.h>
+
+
+
+GType
+thunar_vfs_mime_provider_get_type (void)
+{
+ static GType type = G_TYPE_INVALID;
+
+ if (G_UNLIKELY (type == G_TYPE_INVALID))
+ {
+ static const GTypeInfo info =
+ {
+ sizeof (ThunarVfsMimeProviderClass),
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ sizeof (ThunarVfsMimeProvider),
+ 0,
+ NULL,
+ NULL,
+ };
+
+ type = g_type_register_static (G_TYPE_OBJECT, "ThunarVfsMimeProvider", &info, G_TYPE_FLAG_ABSTRACT);
+ }
+
+ return type;
+}
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-provider.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-provider.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-provider.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,210 @@
+/* $Id: thunar-vfs-mime-provider.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __THUNAR_VFS_MIME_PROVIDER_H__
+#define __THUNAR_VFS_MIME_PROVIDER_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarVfsMimeProviderClass ThunarVfsMimeProviderClass;
+typedef struct _ThunarVfsMimeProvider ThunarVfsMimeProvider;
+
+#define THUNAR_VFS_TYPE_MIME_PROVIDER (thunar_vfs_mime_provider_get_type ())
+#define THUNAR_VFS_MIME_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_VFS_TYPE_MIME_PROVIDER, ThunarVfsMimeProvider))
+#define THUNAR_VFS_MIME_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_VFS_TYPE_MIME_PROVIDER, ThunarVfsMimeProviderClass))
+#define THUNAR_VFS_IS_MIME_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_VFS_TYPE_MIME_PROVIDER))
+#define THUNAR_VFS_IS_MIME_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_VFS_TYPE_MIME_PROVIDER))
+#define THUNAR_VFS_MIME_PROVIDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_VFS_TYPE_MIME_PROVIDER, ThunarVfsMimeProviderClass))
+
+struct _ThunarVfsMimeProviderClass
+{
+ GObjectClass __parent__;
+
+ const gchar *(*lookup_data) (ThunarVfsMimeProvider *provider,
+ gconstpointer data,
+ gsize length,
+ gint *priority);
+
+ const gchar *(*lookup_literal) (ThunarVfsMimeProvider *provider,
+ const gchar *filename);
+ const gchar *(*lookup_suffix) (ThunarVfsMimeProvider *provider,
+ const gchar *suffix,
+ gboolean ignore_case);
+ const gchar *(*lookup_glob) (ThunarVfsMimeProvider *provider,
+ const gchar *filename);
+
+ const gchar *(*lookup_alias) (ThunarVfsMimeProvider *provider,
+ const gchar *alias);
+
+ guint (*lookup_parents) (ThunarVfsMimeProvider *provider,
+ const gchar *mime_type,
+ gchar **parents,
+ guint max_parents);
+
+ GList *(*get_stop_characters) (ThunarVfsMimeProvider *provider);
+ gsize (*get_max_buffer_extents) (ThunarVfsMimeProvider *provider);
+};
+
+struct _ThunarVfsMimeProvider
+{
+ GObject __parent__;
+};
+
+GType thunar_vfs_mime_provider_get_type (void) G_GNUC_CONST G_GNUC_INTERNAL;
+
+/**
+ * thunar_vfs_mime_provider_lookup_data:
+ * @provider : a #ThunarVfsMimeProvider.
+ * @data : pointer to the data.
+ * @length : length of @data in bytes.
+ * @priority : return location for the priority or %NULL.
+ *
+ * The location pointed to by @priority (if not %NULL) will only
+ * be set to a meaningfull value if this method returns a
+ * non-%NULL value.
+ *
+ * Return value: a pointer to the MIME type or %NULL.
+ **/
+static inline const gchar*
+thunar_vfs_mime_provider_lookup_data (ThunarVfsMimeProvider *provider,
+ gconstpointer data,
+ gsize length,
+ gint *priority)
+{
+ return (*THUNAR_VFS_MIME_PROVIDER_GET_CLASS (provider)->lookup_data) (provider, data, length, priority);
+}
+
+/**
+ * thunar_vfs_mime_provider_lookup_literal:
+ * @provider : a #ThunarVfsMimeProvider.
+ * @filename : a filename.
+ *
+ * Return value: a pointer to the MIME type or %NULL.
+ **/
+static inline const gchar*
+thunar_vfs_mime_provider_lookup_literal (ThunarVfsMimeProvider *provider,
+ const gchar *filename)
+{
+ return (*THUNAR_VFS_MIME_PROVIDER_GET_CLASS (provider)->lookup_literal) (provider, filename);
+}
+
+/**
+ * thunar_vfs_mime_provider_lookup_suffix:
+ * @provider : a #ThunarVfsMimeProvider.
+ * @suffix : a filename suffix.
+ * @ignore_case : %TRUE to perform case-insensitive comparison.
+ *
+ * Return value: a pointer to the MIME type or %NULL.
+ **/
+static inline const gchar*
+thunar_vfs_mime_provider_lookup_suffix (ThunarVfsMimeProvider *provider,
+ const gchar *suffix,
+ gboolean ignore_case)
+{
+ return (*THUNAR_VFS_MIME_PROVIDER_GET_CLASS (provider)->lookup_suffix) (provider, suffix, ignore_case);
+}
+
+/**
+ * thunar_vfs_mime_provider_lookup_glob:
+ * @provider : a #ThunarVfsMimeProvider.
+ * @filename : a filename.
+ *
+ * Return value: a pointer to the MIME type or %NULL.
+ **/
+static inline const gchar*
+thunar_vfs_mime_provider_lookup_glob (ThunarVfsMimeProvider *provider,
+ const gchar *filename)
+{
+ return (*THUNAR_VFS_MIME_PROVIDER_GET_CLASS (provider)->lookup_glob) (provider, filename);
+}
+
+/**
+ * thunar_vfs_mime_provider_lookup_alias:
+ * @provider : a #ThunarVfsMimeProvider.
+ * @alias : a valid mime type.
+ *
+ * Unaliases the @alias using the alias table found in @provider.
+ *
+ * Return value: the unaliased mime type or %NULL if @alias
+ * is not a valid mime type alias.
+ */
+static inline const gchar*
+thunar_vfs_mime_provider_lookup_alias (ThunarVfsMimeProvider *provider,
+ const gchar *alias)
+{
+ return (*THUNAR_VFS_MIME_PROVIDER_GET_CLASS (provider)->lookup_alias) (provider, alias);
+}
+
+/**
+ * thunar_vfs_mime_provider_lookup_parents:
+ * @provider : a #ThunarVfsMimeProvider.
+ * @mime_type : a valid mime type.
+ * @parents : buffer to store the parents to.
+ * @max_parents : the maximum number of parents that should be stored to @parents.
+ *
+ * Looks up up to @max_parents parent types of @mime_type in @provider and
+ * stores them to @parents. Returns the list of mime parents.
+ *
+ * Return value: the list of mime parents.
+ **/
+static inline guint
+thunar_vfs_mime_provider_lookup_parents (ThunarVfsMimeProvider *provider,
+ const gchar *mime_type,
+ gchar **parents,
+ guint max_parents)
+{
+ return (*THUNAR_VFS_MIME_PROVIDER_GET_CLASS (provider)->lookup_parents) (provider, mime_type, parents, max_parents);
+}
+
+/**
+ * thunar_vfs_mime_provider_get_stop_characters:
+ * @provider : a #ThunarVfsMimeProvider.
+ *
+ * Returns the list of stop characters for all suffix entries in @provider as
+ * a #GList of #gunichar<!---->s. The caller is responsible to free the list
+ * using g_list_free().
+ *
+ * Return value: the list of stop characters for the suffix entries in @provider.
+ **/
+static inline GList*
+thunar_vfs_mime_provider_get_stop_characters (ThunarVfsMimeProvider *provider)
+{
+ return (*THUNAR_VFS_MIME_PROVIDER_GET_CLASS (provider)->get_stop_characters) (provider);
+}
+
+/**
+ * thunar_vfs_mime_provider_get_max_buffer_extents:
+ * @provider : a #ThunarVfsMimeProvider.
+ *
+ * Returns the max buffer extents required for a data lookup in @provider.
+ *
+ * Return value: the max buffer extents for @provider.
+ **/
+static inline gsize
+thunar_vfs_mime_provider_get_max_buffer_extents (ThunarVfsMimeProvider *provider)
+{
+ return (*THUNAR_VFS_MIME_PROVIDER_GET_CLASS (provider)->get_max_buffer_extents) (provider);
+}
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VFS_MIME_PROVIDER_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-sniffer.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-sniffer.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-sniffer.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,118 @@
+/* $Id: thunar-vfs-mime-sniffer.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Based on code initially written by James Youngman <jay at gnu.org>
+ * and Pavel Cisler <pavel at eazel.com>.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_WCHAR_H
+#include <wchar.h>
+#endif
+#ifdef HAVE_WCTYPE_H
+#include <wctype.h>
+#endif
+
+#include <thunar-vfs/thunar-vfs-mime-sniffer.h>
+#include <thunar-vfs/thunar-vfs-alias.h>
+
+
+
+/**
+ * thunar_vfs_mime_sniffer_looks_like_text:
+ * @data : the input data (most probably file content).
+ * @length : the number of bytes in @data.
+ *
+ * Checks whether @data can be considered valid text, e.g.
+ * valid UTF-8 or valid multi-byte string. If so, %TRUE is
+ * returned, else %FALSE is returned.
+ *
+ * Return value: %TRUE if @data looks like text, else %FALSE.
+ **/
+gboolean
+thunar_vfs_mime_sniffer_looks_like_text (const gchar *data,
+ gsize length)
+{
+ const gchar *end;
+#ifdef HAVE_MBRTOWC
+ const gchar *send;
+ const gchar *src;
+ mbstate_t ms;
+ wchar_t wc;
+ gsize wlen;
+#endif
+ gint remaining;
+
+ /* check if we have valid UTF8 here */
+ if (!g_utf8_validate (data, length, &end))
+ {
+ /* Check whether the string was truncated in the middle of a valid
+ * UTF8 character, or if we really have an invalid UTF8 string.
+ */
+ remaining = length - (end - data);
+ if (g_utf8_get_char_validated (end, remaining) == -2)
+ return TRUE;
+
+#ifdef HAVE_MBRTOWC
+ /* let's see, maybe we have a valid multi-byte text here */
+ memset (&ms, 0, sizeof (ms));
+ for (src = data, send = data + length; src < send; src += wlen)
+ {
+ /* Don't allow embedded zeros in textfiles */
+ if (*src == '\0')
+ return FALSE;
+
+ /* check for illegal mutli-byte sequence */
+ wlen = mbrtowc (&wc, src, send - src, &ms);
+ if (G_UNLIKELY (wlen == (gsize) (-1)))
+ return FALSE;
+
+ /* Check for incomplete multi-byte character before
+ * end. Probably cut off char which is ok.
+ */
+ if (wlen == (gsize) (-2))
+ return TRUE;
+
+ /* Don't allow embedded zeros in textfiles */
+ if (G_UNLIKELY (wlen == 0))
+ return FALSE;
+
+ /* Check for neither printable or whitespace */
+ if (!iswspace (wc) && !iswprint (wc))
+ return FALSE;
+ }
+#endif
+ }
+
+ return TRUE;
+}
+
+
+
+#define __THUNAR_VFS_MIME_SNIFFER_C__
+#include <thunar-vfs/thunar-vfs-aliasdef.c>
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-sniffer.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-sniffer.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mime-sniffer.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,37 @@
+/* $Id: thunar-vfs-mime-sniffer.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#if !defined (THUNAR_VFS_INSIDE_THUNAR_VFS_H) && !defined (THUNAR_VFS_COMPILATION)
+#error "Only <thunar-vfs/thunar-vfs.h> can be included directly, this file may disappear or change contents."
+#endif
+
+#ifndef __THUNAR_VFS_MIME_SNIFFER_H__
+#define __THUNAR_VFS_MIME_SNIFFER_H__
+
+#include <glib.h>
+
+G_BEGIN_DECLS;
+
+gboolean thunar_vfs_mime_sniffer_looks_like_text (const gchar *data,
+ gsize length) G_GNUC_INTERNAL;
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VFS_MIME_SNIFFER_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mkdir-job.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mkdir-job.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mkdir-job.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,233 @@
+/* $Id: thunar-vfs-mkdir-job.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <thunar-vfs/thunar-vfs-mkdir-job.h>
+#include <thunar-vfs/thunar-vfs-alias.h>
+
+#if GLIB_CHECK_VERSION(2,6,0)
+#include <glib/gstdio.h>
+#else
+#define g_mkdir(path, mode) (mkdir ((path), (mode)))
+#define g_unmkdir(path) (unmkdir ((path)))
+#endif
+
+
+
+static void thunar_vfs_mkdir_job_class_init (ThunarVfsMkdirJobClass *klass);
+static void thunar_vfs_mkdir_job_finalize (GObject *object);
+static void thunar_vfs_mkdir_job_execute (ThunarVfsJob *job);
+
+
+
+struct _ThunarVfsMkdirJobClass
+{
+ ThunarVfsInteractiveJobClass __parent__;
+};
+
+struct _ThunarVfsMkdirJob
+{
+ ThunarVfsInteractiveJob __parent__;
+ GList *path_list;
+};
+
+
+
+static GObjectClass *thunar_vfs_mkdir_job_parent_class;
+
+
+
+GType
+thunar_vfs_mkdir_job_get_type (void)
+{
+ static GType type = G_TYPE_INVALID;
+
+ if (G_UNLIKELY (type == G_TYPE_INVALID))
+ {
+ static const GTypeInfo info =
+ {
+ sizeof (ThunarVfsMkdirJobClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) thunar_vfs_mkdir_job_class_init,
+ NULL,
+ NULL,
+ sizeof (ThunarVfsMkdirJob),
+ 0,
+ NULL,
+ NULL,
+ };
+
+ type = g_type_register_static (THUNAR_VFS_TYPE_INTERACTIVE_JOB,
+ "ThunarVfsMkdirJob", &info, 0);
+ }
+
+ return type;
+}
+
+
+
+static void
+thunar_vfs_mkdir_job_class_init (ThunarVfsMkdirJobClass *klass)
+{
+ ThunarVfsJobClass *thunarvfs_job_class;
+ GObjectClass *gobject_class;
+
+ /* determine the parent class */
+ thunar_vfs_mkdir_job_parent_class = g_type_class_peek_parent (klass);
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_vfs_mkdir_job_finalize;
+
+ thunarvfs_job_class = THUNAR_VFS_JOB_CLASS (klass);
+ thunarvfs_job_class->execute = thunar_vfs_mkdir_job_execute;
+}
+
+
+
+static void
+thunar_vfs_mkdir_job_finalize (GObject *object)
+{
+ ThunarVfsMkdirJob *mkdir_job = THUNAR_VFS_MKDIR_JOB (object);
+
+ /* release the path list */
+ thunar_vfs_path_list_free (mkdir_job->path_list);
+
+ (*G_OBJECT_CLASS (thunar_vfs_mkdir_job_parent_class)->finalize) (object);
+}
+
+
+
+static void
+thunar_vfs_mkdir_job_execute (ThunarVfsJob *job)
+{
+ ThunarVfsMkdirJob *mkdir_job = THUNAR_VFS_MKDIR_JOB (job);
+ gdouble percent;
+ GError *error;
+ gchar *absolute_path;
+ gchar *display_name;
+ guint completed = 0;
+ guint total;
+ GList *directories = NULL;
+ GList *lp;
+
+ /* determine the total number of directories to create */
+ total = g_list_length (mkdir_job->path_list);
+
+ /* process all directories */
+ for (lp = mkdir_job->path_list; lp != NULL; lp = lp->next)
+ {
+ /* check if the job was cancelled */
+ if (thunar_vfs_job_cancelled (job))
+ break;
+
+ /* update the progress message */
+ display_name = g_filename_display_name (thunar_vfs_path_get_name (lp->data));
+ thunar_vfs_interactive_job_info_message (THUNAR_VFS_INTERACTIVE_JOB (mkdir_job), display_name);
+ g_free (display_name);
+
+ /* determine the absolute path */
+ absolute_path = thunar_vfs_path_dup_string (lp->data);
+
+ /* try to create the target directory */
+ if (g_mkdir (absolute_path, 0755) < 0)
+ {
+ /* generate an error describing the problem */
+ display_name = g_filename_display_name (absolute_path);
+ error = g_error_new (G_FILE_ERROR, g_file_error_from_errno (errno),
+ _("Unable to create directory `%s': %s"),
+ display_name, g_strerror (errno));
+ g_free (display_name);
+
+ /* notify theuser about the problem and cancel the job */
+ thunar_vfs_job_error (job, error);
+ thunar_vfs_job_cancel (job);
+ g_error_free (error);
+ }
+ else
+ {
+ /* feed a "created" event for the new directory */
+ thunar_vfs_monitor_feed (THUNAR_VFS_INTERACTIVE_JOB (mkdir_job)->monitor, THUNAR_VFS_MONITOR_EVENT_CREATED, lp->data);
+
+ /* add the path to the list of successfully created directories */
+ directories = g_list_prepend (directories, lp->data);
+ }
+
+ /* update the progress status */
+ percent = (++completed * 100.0) / total;
+ percent = CLAMP (percent, 0.0, 100.0);
+ thunar_vfs_interactive_job_percent (THUNAR_VFS_INTERACTIVE_JOB (mkdir_job), percent);
+
+ /* release the absolute path */
+ g_free (absolute_path);
+ }
+
+ /* emit the "new-files" signal if we have created any directories */
+ if (G_LIKELY (directories != NULL))
+ {
+ thunar_vfs_interactive_job_new_files (THUNAR_VFS_INTERACTIVE_JOB (mkdir_job), directories);
+ g_list_free (directories);
+ }
+}
+
+
+
+/**
+ * thunar_vfs_mkdir_job_new:
+ * @path_list : the list of #ThunarVfsPath<!---->s to the directories that should be created.
+ * @error : return location for errors or %NULL.
+ *
+ * Allocates a new #ThunarVfsMkdirJob, that creates directories for all #ThunarVfsPath<!---->s
+ * listed in @path_list.
+ *
+ * The caller is responsible to free the returned object using g_object_unref() when
+ * no longer needed.
+ *
+ * Return value: the newly allocated #ThunarVfsMkdirJob or %NULL on error.
+ **/
+ThunarVfsJob*
+thunar_vfs_mkdir_job_new (GList *path_list,
+ GError **error)
+{
+ ThunarVfsMkdirJob *mkdir_job;
+
+ g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+ /* allocate the new job */
+ mkdir_job = g_object_new (THUNAR_VFS_TYPE_MKDIR_JOB, NULL);
+ mkdir_job->path_list = thunar_vfs_path_list_copy (path_list);
+
+ return THUNAR_VFS_JOB (mkdir_job);
+}
+
+
+
+#define __THUNAR_VFS_MKDIR_JOB_C__
+#include <thunar-vfs/thunar-vfs-aliasdef.c>
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mkdir-job.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mkdir-job.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-mkdir-job.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,50 @@
+/* $Id: thunar-vfs-mkdir-job.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#if !defined (THUNAR_VFS_INSIDE_THUNAR_VFS_H) && !defined (THUNAR_VFS_COMPILATION)
+#error "Only <thunar-vfs/thunar-vfs.h> can be included directly, this file may disappear or change contents."
+#endif
+
+#ifndef __THUNAR_VFS_MKDIR_MKDIR_H__
+#define __THUNAR_VFS_MKDIR_MKDIR_H__
+
+#include <thunar-vfs/thunar-vfs-interactive-job.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarVfsMkdirJobClass ThunarVfsMkdirJobClass;
+typedef struct _ThunarVfsMkdirJob ThunarVfsMkdirJob;
+
+#define THUNAR_VFS_TYPE_MKDIR_JOB (thunar_vfs_mkdir_job_get_type ())
+#define THUNAR_VFS_MKDIR_JOB(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_VFS_TYPE_MKDIR_JOB, ThunarVfsMkdirJob))
+#define THUNAR_VFS_MKDIR_JOB_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_VFS_TYPE_MKDIR_JOB, ThunarVfsMkdirJobClass))
+#define THUNAR_VFS_IS_MKDIR_JOB(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_VFS_TYPE_MKDIR_JOB))
+#define THUNAR_VFS_IS_MKDIR_JOB_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_VFS_TYPE_MKDIR_JOB))
+#define THUNAR_VFS_MKDIR_JOB_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_VFS_TYPE_MKDIR_JOB, ThunarVfsMkdirJobClass))
+
+GType thunar_vfs_mkdir_job_get_type (void) G_GNUC_CONST G_GNUC_INTERNAL;
+
+ThunarVfsJob *thunar_vfs_mkdir_job_new (GList *path_list,
+ GError **error) G_GNUC_INTERNAL G_GNUC_MALLOC;
+
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VFS_MKDIR_JOB_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-monitor.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-monitor.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-monitor.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,689 @@
+/* $Id: thunar-vfs-monitor.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_FAM_H
+#include <fam.h>
+#endif
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#include <gdk/gdk.h>
+
+#include <thunar-vfs/thunar-vfs-monitor.h>
+#include <thunar-vfs/thunar-vfs-alias.h>
+
+
+
+/* minimum timer interval (in ms) */
+#define THUNAR_VFS_MONITOR_TIMER_INTERVAL (250)
+
+/* tagging for notifications, so we can make sure that
+ * (slow) FAM events don't override properly feeded events.
+ */
+#define THUNAR_VFS_MONITOR_TAG_FAM (0)
+#define THUNAR_VFS_MONITOR_TAG_FEED (1)
+
+
+
+typedef struct _ThunarVfsMonitorNotification ThunarVfsMonitorNotification;
+
+
+
+static void thunar_vfs_monitor_class_init (ThunarVfsMonitorClass *klass);
+static void thunar_vfs_monitor_init (ThunarVfsMonitor *monitor);
+static void thunar_vfs_monitor_finalize (GObject *object);
+static void thunar_vfs_monitor_queue_notification (ThunarVfsMonitor *monitor,
+ gint id,
+ gint tag,
+ ThunarVfsMonitorEvent event,
+ const gchar *filename);
+static gboolean thunar_vfs_monitor_notifications_timer (gpointer user_data);
+#ifdef HAVE_LIBFAM
+static void thunar_vfs_monitor_fam_cancel (ThunarVfsMonitor *monitor);
+static gboolean thunar_vfs_monitor_fam_watch (GIOChannel *channel,
+ GIOCondition condition,
+ gpointer user_data);
+#endif
+
+
+
+struct _ThunarVfsMonitorClass
+{
+ GObjectClass __parent__;
+};
+
+struct _ThunarVfsMonitor
+{
+ GObject __parent__;
+
+ GMemChunk *handle_chunk;
+ GList *handles;
+
+ gint notifications_timer_id;
+ ThunarVfsMonitorNotification *notifications;
+
+ /* the monitor lock and cond */
+ GCond *cond;
+ GMutex *lock;
+
+ /* the current handle id */
+ gint current_id;
+
+#ifdef HAVE_LIBFAM
+ /* FAM/Gamin support */
+ FAMConnection fc;
+ gint fc_watch_id;
+#endif
+};
+
+struct _ThunarVfsMonitorHandle
+{
+ ThunarVfsMonitorCallback callback;
+ gpointer user_data;
+ ThunarVfsPath *path;
+ gboolean directory;
+
+ union
+ {
+#ifdef HAVE_LIBFAM
+ FAMRequest fr;
+#endif
+ gint id;
+ };
+};
+
+struct _ThunarVfsMonitorNotification
+{
+ gint id; /* the unique id of the handle */
+ gint tag; /* the notification source tag */
+ gchar *filename; /* the name/path of the file that changed or NULL if the handle path should be used */
+ ThunarVfsMonitorEvent event; /* the type of the event */
+ ThunarVfsMonitorNotification *next; /* the pointer to the next notification in the queue */
+};
+
+
+
+G_DEFINE_TYPE (ThunarVfsMonitor, thunar_vfs_monitor, G_TYPE_OBJECT);
+
+
+
+static void
+thunar_vfs_monitor_class_init (ThunarVfsMonitorClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_vfs_monitor_finalize;
+}
+
+
+
+static void
+thunar_vfs_monitor_init (ThunarVfsMonitor *monitor)
+{
+ /* initialize the monitor */
+ monitor->notifications_timer_id = -1;
+ monitor->cond = g_cond_new ();
+ monitor->lock = g_mutex_new ();
+
+#ifdef HAVE_LIBFAM
+ if (FAMOpen2 (&monitor->fc, PACKAGE_NAME) == 0)
+ {
+ GIOChannel *channel;
+
+ channel = g_io_channel_unix_new (FAMCONNECTION_GETFD (&monitor->fc));
+ monitor->fc_watch_id = g_io_add_watch (channel, G_IO_ERR | G_IO_HUP | G_IO_IN,
+ thunar_vfs_monitor_fam_watch, monitor);
+ g_io_channel_unref (channel);
+
+#ifdef HAVE_FAMNOEXISTS
+ /* luckily gamin offers a way to avoid the FAMExists events */
+ FAMNoExists (&monitor->fc);
+#endif
+ }
+ else
+ {
+ monitor->fc_watch_id = -1;
+ }
+#endif
+
+ /* allocate the memory chunk for the handles */
+ monitor->handle_chunk = g_mem_chunk_create (ThunarVfsMonitorHandle, 64, G_ALLOC_AND_FREE);
+}
+
+
+
+static void
+thunar_vfs_monitor_finalize (GObject *object)
+{
+ ThunarVfsMonitorNotification *notification;
+ ThunarVfsMonitor *monitor = THUNAR_VFS_MONITOR (object);
+ GList *lp;
+
+#ifdef HAVE_LIBFAM
+ if (monitor->fc_watch_id >= 0)
+ thunar_vfs_monitor_fam_cancel (monitor);
+#endif
+
+ /* drop the notifications timer source */
+ if (G_UNLIKELY (monitor->notifications_timer_id >= 0))
+ g_source_remove (monitor->notifications_timer_id);
+
+ /* drop all pending notifications */
+ while (monitor->notifications != NULL)
+ {
+ notification = monitor->notifications;
+ monitor->notifications = notification->next;
+ g_free (notification);
+ }
+
+ /* drop all handles */
+ for (lp = monitor->handles; lp != NULL; lp = lp->next)
+ thunar_vfs_path_unref (((ThunarVfsMonitorHandle *) lp->data)->path);
+ g_list_free (monitor->handles);
+
+ /* release the memory chunk */
+ g_mem_chunk_destroy (monitor->handle_chunk);
+
+ /* release the monitor lock */
+ g_mutex_free (monitor->lock);
+ g_cond_free (monitor->cond);
+
+ (*G_OBJECT_CLASS (thunar_vfs_monitor_parent_class)->finalize) (object);
+}
+
+
+
+static void
+thunar_vfs_monitor_queue_notification (ThunarVfsMonitor *monitor,
+ gint id,
+ gint tag,
+ ThunarVfsMonitorEvent event,
+ const gchar *filename)
+{
+ ThunarVfsMonitorNotification *notification;
+ gint length;
+
+ g_return_if_fail (THUNAR_VFS_IS_MONITOR (monitor));
+ g_return_if_fail (id > 0 && id <= monitor->current_id);
+
+ /* check if we already have a matching notification */
+ for (notification = monitor->notifications; notification != NULL; notification = notification->next)
+ if (notification->id == id && strcmp (filename, notification->filename) == 0)
+ {
+ if (tag >= notification->tag)
+ {
+ notification->tag = tag;
+ notification->event = event;
+ }
+ return;
+ }
+
+ /* allocate a new notification */
+ if (G_LIKELY (filename != NULL))
+ {
+ length = strlen (filename);
+ notification = g_malloc (sizeof (ThunarVfsMonitorNotification) + length + 1);
+ notification->filename = ((gchar *) notification) + sizeof (ThunarVfsMonitorNotification);
+ memcpy (notification->filename, filename, length + 1);
+ }
+ else
+ {
+ notification = g_new (ThunarVfsMonitorNotification, 1);
+ notification->filename = NULL;
+ }
+
+ /* prepend the notification to the queue */
+ notification->id = id;
+ notification->tag = tag;
+ notification->next = monitor->notifications;
+ notification->event = event;
+ monitor->notifications = notification;
+
+ /* schedule the notification timer if not already active */
+ if (G_UNLIKELY (monitor->notifications_timer_id < 0))
+ monitor->notifications_timer_id = g_timeout_add (THUNAR_VFS_MONITOR_TIMER_INTERVAL, thunar_vfs_monitor_notifications_timer, monitor);
+}
+
+
+
+static gboolean
+thunar_vfs_monitor_notifications_timer (gpointer user_data)
+{
+ ThunarVfsMonitorNotification *notification;
+ ThunarVfsMonitorHandle *handle;
+ ThunarVfsMonitor *monitor = THUNAR_VFS_MONITOR (user_data);
+ ThunarVfsPath *path;
+ GList *lp;
+
+ /* take an additional reference on the monitor, * so we don't accidently
+ * release the monitor while processing the notifications.
+ */
+ g_object_ref (G_OBJECT (monitor));
+
+ /* aquire the lock on the monitor */
+ g_mutex_lock (monitor->lock);
+
+ /* reset the timer id */
+ monitor->notifications_timer_id = -1;
+
+ /* process all pending notifications */
+ while (monitor->notifications != NULL)
+ {
+ /* grab the first notification from the queue */
+ notification = monitor->notifications;
+ monitor->notifications = notification->next;
+
+ /* lookup the handle for the current notification */
+ for (lp = monitor->handles; lp != NULL; lp = lp->next)
+ if (((ThunarVfsMonitorHandle *) lp->data)->id == notification->id)
+ break;
+
+ /* check if there's a valid handle */
+ if (G_LIKELY (lp != NULL))
+ {
+ /* grab the handle pointer */
+ handle = lp->data;
+
+ /* determine the event path for the notification */
+ if (G_UNLIKELY (notification->filename == NULL))
+ path = thunar_vfs_path_ref (handle->path);
+ else if (G_UNLIKELY (*notification->filename != '/'))
+ path = thunar_vfs_path_relative (handle->path, notification->filename);
+ else
+ path = thunar_vfs_path_new (notification->filename, NULL);
+
+ /* invoke the callback (w/o the monitor lock) */
+ GDK_THREADS_ENTER ();
+ g_mutex_unlock (monitor->lock);
+ (*handle->callback) (monitor, handle, notification->event, handle->path, path, handle->user_data);
+ g_mutex_lock (monitor->lock);
+ GDK_THREADS_LEAVE ();
+
+ /* cleanup */
+ thunar_vfs_path_unref (path);
+ }
+
+ /* release the current notification */
+ g_free (notification);
+ }
+
+ /* notify all waiting parties */
+ g_cond_broadcast (monitor->cond);
+
+ /* release the lock on the monitor */
+ g_mutex_unlock (monitor->lock);
+
+ /* drop the additional reference on the monitor */
+ g_object_unref (G_OBJECT (monitor));
+
+ /* drop the timer source */
+ return FALSE;
+}
+
+
+
+#ifdef HAVE_LIBFAM
+static void
+thunar_vfs_monitor_fam_cancel (ThunarVfsMonitor *monitor)
+{
+ g_return_if_fail (THUNAR_VFS_IS_MONITOR (monitor));
+ g_return_if_fail (monitor->fc_watch_id >= 0);
+
+ /* close the FAM connection */
+ FAMClose (&monitor->fc);
+
+ /* remove the I/O watch */
+ g_source_remove (monitor->fc_watch_id);
+ monitor->fc_watch_id = -1;
+}
+
+
+
+static gboolean
+thunar_vfs_monitor_fam_watch (GIOChannel *channel,
+ GIOCondition condition,
+ gpointer user_data)
+{
+ ThunarVfsMonitorEvent event;
+ ThunarVfsMonitor *monitor = THUNAR_VFS_MONITOR (user_data);
+ FAMEvent fe;
+
+ /* check for an error on the FAM connection */
+ if (G_UNLIKELY ((condition & (G_IO_ERR | G_IO_HUP | G_IO_NVAL)) != 0))
+ {
+error:
+ /* terminate the FAM connection */
+ thunar_vfs_monitor_fam_cancel (monitor);
+
+ /* thats it, no more FAM */
+ return FALSE;
+ }
+
+ /* process all pending FAM events */
+ while (FAMPending (&monitor->fc))
+ {
+ /* query the next pending event */
+ if (G_UNLIKELY (FAMNextEvent (&monitor->fc, &fe) < 0))
+ goto error;
+
+ /* translate the event code */
+ switch (fe.code)
+ {
+ case FAMChanged:
+ event = THUNAR_VFS_MONITOR_EVENT_CHANGED;
+ break;
+
+ case FAMCreated:
+ event = THUNAR_VFS_MONITOR_EVENT_CREATED;
+ break;
+
+ case FAMDeleted:
+ event = THUNAR_VFS_MONITOR_EVENT_DELETED;
+ break;
+
+ default:
+ /* ignore all other events */
+ continue;
+ }
+
+ /* schedule a notification for the monitor */
+ g_mutex_lock (monitor->lock);
+ thunar_vfs_monitor_queue_notification (monitor, fe.fr.reqnum, THUNAR_VFS_MONITOR_TAG_FAM, event, fe.filename);
+ g_mutex_unlock (monitor->lock);
+ }
+
+ return TRUE;
+}
+#endif
+
+
+
+/**
+ * thunar_vfs_monitor_get_default:
+ *
+ * Returns the shared #ThunarVfsMonitor instance. The caller
+ * is responsible to call g_object_unref() on the returned
+ * object when no longer needed.
+ *
+ * Return value: a reference to the shared #ThunarVfsMonitor
+ * instance.
+ **/
+ThunarVfsMonitor*
+thunar_vfs_monitor_get_default (void)
+{
+ static ThunarVfsMonitor *monitor = NULL;
+
+ if (G_UNLIKELY (monitor == NULL))
+ {
+ monitor = g_object_new (THUNAR_VFS_TYPE_MONITOR, NULL);
+ g_object_add_weak_pointer (G_OBJECT (monitor), (gpointer) &monitor);
+ }
+ else
+ {
+ g_object_ref (G_OBJECT (monitor));
+ }
+
+ return monitor;
+}
+
+
+
+/**
+ * thunar_vfs_monitor_add_directory:
+ * @monitor : a #ThunarVfsMonitor.
+ * @path : the #ThunarVfsPath of the directory that should be watched.
+ * @callback : the callback function to invoke.
+ * @user_data : additional data to pass to @callback.
+ *
+ * Return value: the #ThunarVfsMonitorHandle for the new watch.
+ **/
+ThunarVfsMonitorHandle*
+thunar_vfs_monitor_add_directory (ThunarVfsMonitor *monitor,
+ ThunarVfsPath *path,
+ ThunarVfsMonitorCallback callback,
+ gpointer user_data)
+{
+ ThunarVfsMonitorHandle *handle;
+#ifdef HAVE_LIBFAM
+ gchar *absolute_path;
+#endif
+
+ g_return_val_if_fail (THUNAR_VFS_IS_MONITOR (monitor), NULL);
+ g_return_val_if_fail (callback != NULL, NULL);
+ g_return_val_if_fail (path != NULL, NULL);
+
+ /* acquire the monitor lock */
+ g_mutex_lock (monitor->lock);
+
+ /* allocate a new handle */
+ handle = g_chunk_new (ThunarVfsMonitorHandle, monitor->handle_chunk);
+ handle->path = thunar_vfs_path_ref (path);
+ handle->callback = callback;
+ handle->user_data = user_data;
+ handle->directory = TRUE;
+ handle->id = ++monitor->current_id;
+
+#ifdef HAVE_LIBFAM
+ if (G_LIKELY (monitor->fc_watch_id >= 0))
+ {
+ /* schedule the watch on the FAM daemon */
+ absolute_path = thunar_vfs_path_dup_string (path);
+ if (FAMMonitorDirectory2 (&monitor->fc, absolute_path, &handle->fr) < 0)
+ thunar_vfs_monitor_fam_cancel (monitor);
+ g_free (absolute_path);
+ }
+#endif
+
+ /* add the handle to the monitor */
+ monitor->handles = g_list_prepend (monitor->handles, handle);
+
+ /* release the monitor lock */
+ g_mutex_unlock (monitor->lock);
+
+ return handle;
+}
+
+
+
+/**
+ * thunar_vfs_monitor_add_file:
+ * @monitor : a #ThunarVfsMonitor.
+ * @path : the #ThunarVfsPath of the file that should be watched.
+ * @callback : the callback function to invoke.
+ * @user_data : additional data to pass to @callback.
+ *
+ * Return value: the #ThunarVfsMonitorHandle for the new watch.
+ **/
+ThunarVfsMonitorHandle*
+thunar_vfs_monitor_add_file (ThunarVfsMonitor *monitor,
+ ThunarVfsPath *path,
+ ThunarVfsMonitorCallback callback,
+ gpointer user_data)
+{
+ ThunarVfsMonitorHandle *handle;
+#ifdef HAVE_LIBFAM
+ gchar *absolute_path;
+#endif
+
+ g_return_val_if_fail (THUNAR_VFS_IS_MONITOR (monitor), NULL);
+ g_return_val_if_fail (callback != NULL, NULL);
+ g_return_val_if_fail (path != NULL, NULL);
+
+ /* acquire the monitor lock */
+ g_mutex_lock (monitor->lock);
+
+ /* allocate a new handle */
+ handle = g_chunk_new (ThunarVfsMonitorHandle, monitor->handle_chunk);
+ handle->path = thunar_vfs_path_ref (path);
+ handle->callback = callback;
+ handle->user_data = user_data;
+ handle->directory = FALSE;
+ handle->id = ++monitor->current_id;
+
+#ifdef HAVE_LIBFAM
+ if (G_LIKELY (monitor->fc_watch_id >= 0))
+ {
+ /* schedule the watch on the FAM daemon */
+ absolute_path = thunar_vfs_path_dup_string (path);
+ if (FAMMonitorFile2 (&monitor->fc, absolute_path, &handle->fr) < 0)
+ thunar_vfs_monitor_fam_cancel (monitor);
+ g_free (absolute_path);
+ }
+#endif
+
+ /* add the handle to the monitor */
+ monitor->handles = g_list_prepend (monitor->handles, handle);
+
+ /* release the monitor lock */
+ g_mutex_unlock (monitor->lock);
+
+ return handle;
+}
+
+
+
+/**
+ * thunar_vfs_monitor_remove:
+ * @monitor : a #ThunarVfsMonitor.
+ * @handle : a valid #ThunarVfsMonitorHandle for @monitor.
+ *
+ * Removes @handle from @monitor.
+ **/
+void
+thunar_vfs_monitor_remove (ThunarVfsMonitor *monitor,
+ ThunarVfsMonitorHandle *handle)
+{
+ g_return_if_fail (THUNAR_VFS_IS_MONITOR (monitor));
+ g_return_if_fail (g_list_find (monitor->handles, handle) != NULL);
+
+ /* acquire the monitor lock */
+ g_mutex_lock (monitor->lock);
+
+#ifdef HAVE_LIBFAM
+ /* drop the FAM request from the daemon */
+ if (G_LIKELY (monitor->fc_watch_id >= 0))
+ {
+ if (FAMCancelMonitor (&monitor->fc, &handle->fr) < 0)
+ thunar_vfs_monitor_fam_cancel (monitor);
+ }
+#endif
+
+ /* unlink the handle */
+ monitor->handles = g_list_remove (monitor->handles, handle);
+
+ /* free the handle */
+ thunar_vfs_path_unref (handle->path);
+ g_mem_chunk_free (monitor->handle_chunk, handle);
+
+ /* release the monitor lock */
+ g_mutex_unlock (monitor->lock);
+}
+
+
+
+/**
+ * thunar_vfs_monitor_feed:
+ * @monitor : a #ThunarVfsMonitor.
+ * @event : the #ThunarVfsMonitorEvent that should be emulated.
+ * @path : the #ThunarVfsPath on which @event took place.
+ *
+ * Explicitly injects the given @event into @monitor<!---->s event
+ * processing logic.
+ **/
+void
+thunar_vfs_monitor_feed (ThunarVfsMonitor *monitor,
+ ThunarVfsMonitorEvent event,
+ ThunarVfsPath *path)
+{
+ ThunarVfsMonitorHandle *handle;
+ ThunarVfsPath *parent;
+ GList *lp;
+
+ g_return_if_fail (THUNAR_VFS_IS_MONITOR (monitor));
+ g_return_if_fail (event == THUNAR_VFS_MONITOR_EVENT_CHANGED
+ || event == THUNAR_VFS_MONITOR_EVENT_CREATED
+ || event == THUNAR_VFS_MONITOR_EVENT_DELETED);
+
+ /* acquire the lock on the monitor */
+ g_mutex_lock (monitor->lock);
+
+ /* schedule notifications for all handles affected directly by this event */
+ for (lp = monitor->handles; lp != NULL; lp = lp->next)
+ {
+ handle = (ThunarVfsMonitorHandle *) lp->data;
+ if (thunar_vfs_path_equal (handle->path, path))
+ thunar_vfs_monitor_queue_notification (monitor, handle->id, THUNAR_VFS_MONITOR_TAG_FEED, event, NULL);
+ }
+
+ /* schedule notifications for all directory handles affected indirectly */
+ if (G_LIKELY (!thunar_vfs_path_is_root (path)))
+ {
+ parent = thunar_vfs_path_get_parent (path);
+ for (lp = monitor->handles; lp != NULL; lp = lp->next)
+ {
+ handle = (ThunarVfsMonitorHandle *) lp->data;
+ if (handle->directory && thunar_vfs_path_equal (handle->path, parent))
+ thunar_vfs_monitor_queue_notification (monitor, handle->id, THUNAR_VFS_MONITOR_TAG_FEED, event, thunar_vfs_path_get_name (path));
+ }
+ }
+
+ /* release the lock on the monitor */
+ g_mutex_unlock (monitor->lock);
+}
+
+
+
+/**
+ * thunar_vfs_monitor_wait:
+ * @monitor : a #ThunarVfsMonitor.
+ *
+ * Suspends the execution of the current thread until the
+ * @monitor has processed all currently pending events. The
+ * calling thread must own a reference on the @monitor!
+ *
+ * This method should never be called from the main thread
+ * or you'll lock up your application!!
+ **/
+void
+thunar_vfs_monitor_wait (ThunarVfsMonitor *monitor)
+{
+ static const GTimeVal tv = { 2, 0 };
+
+ g_return_if_fail (THUNAR_VFS_IS_MONITOR (monitor));
+
+ g_mutex_lock (monitor->lock);
+ while (g_atomic_int_get (&monitor->notifications_timer_id) >= 0)
+ g_cond_timed_wait (monitor->cond, monitor->lock, (GTimeVal *) &tv);
+ g_mutex_unlock (monitor->lock);
+}
+
+
+
+#define __THUNAR_VFS_MONITOR_C__
+#include <thunar-vfs/thunar-vfs-aliasdef.c>
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-monitor.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-monitor.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-monitor.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,106 @@
+/* $Id: thunar-vfs-monitor.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __THUNAR_VFS_MONITOR_H__
+#define __THUNAR_VFS_MONITOR_H__
+
+#include <thunar-vfs/thunar-vfs-path.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarVfsMonitorClass ThunarVfsMonitorClass;
+typedef struct _ThunarVfsMonitor ThunarVfsMonitor;
+
+#define THUNAR_VFS_TYPE_MONITOR (thunar_vfs_monitor_get_type ())
+#define THUNAR_VFS_MONITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_VFS_TYPE_MONITOR, ThunarVfsMonitor))
+#define THUNAR_VFS_MONITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_VFS_TYPE_MONITOR, ThunarVfsMonitorClass))
+#define THUNAR_VFS_IS_MONITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_VFS_TYPE_MONITOR))
+#define THUNAR_VFS_IS_MONITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_VFS_TYPE_MONITOR))
+#define THUNAR_VFS_MONITOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_VFS_TYPE_MONITOR, ThunarVfsMonitorClass))
+
+/**
+ * ThunarVfsMonitorEvent:
+ * @THUNAR_VFS_MONITOR_EVENT_CHANGED : a file or directory was changed.
+ * @THUNAR_VFS_MONITOR_EVENT_CREATED : a file or directory was created.
+ * @THUNAR_VFS_MONITOR_EVENT_DELETED : a file or directory was deleted.
+ *
+ * Describes an event that occurred on a #ThunarVfsMonitorHandle.
+ **/
+typedef enum
+{
+ THUNAR_VFS_MONITOR_EVENT_CHANGED,
+ THUNAR_VFS_MONITOR_EVENT_CREATED,
+ THUNAR_VFS_MONITOR_EVENT_DELETED,
+} ThunarVfsMonitorEvent;
+
+/**
+ * ThunarVfsMonitorHandle:
+ *
+ * A handle on a file system entity, which is currently watched
+ * by a #ThunarVfsMonitor.
+ **/
+typedef struct _ThunarVfsMonitorHandle ThunarVfsMonitorHandle;
+
+/**
+ * ThunarVfsMonitorCallback:
+ * @monitor : a #ThunarVfsMonitor.
+ * @handle : a #ThunarVfsMonitorHandle.
+ * @event : the event that occurred.
+ * @handle_path : the #ThunarVfsPath that was specified when registering the @handle.
+ * @event_path : the #ThunarVfsPath on which the @event occurred.
+ * @user_data : the user data that was specified when registering the @handle with the @monitor.
+ *
+ * The prototype for callback functions that will be called by a #ThunarVfsMonitor
+ * whenever one of its associated #ThunarVfsMonitorHandle<!---->s notice a
+ * change.
+ **/
+typedef void (*ThunarVfsMonitorCallback) (ThunarVfsMonitor *monitor,
+ ThunarVfsMonitorHandle *handle,
+ ThunarVfsMonitorEvent event,
+ ThunarVfsPath *handle_path,
+ ThunarVfsPath *event_path,
+ gpointer user_data);
+
+GType thunar_vfs_monitor_get_type (void) G_GNUC_CONST;
+
+ThunarVfsMonitor *thunar_vfs_monitor_get_default (void);
+
+ThunarVfsMonitorHandle *thunar_vfs_monitor_add_directory (ThunarVfsMonitor *monitor,
+ ThunarVfsPath *path,
+ ThunarVfsMonitorCallback callback,
+ gpointer user_data);
+
+ThunarVfsMonitorHandle *thunar_vfs_monitor_add_file (ThunarVfsMonitor *monitor,
+ ThunarVfsPath *path,
+ ThunarVfsMonitorCallback callback,
+ gpointer user_data);
+
+void thunar_vfs_monitor_remove (ThunarVfsMonitor *monitor,
+ ThunarVfsMonitorHandle *handle);
+
+void thunar_vfs_monitor_feed (ThunarVfsMonitor *monitor,
+ ThunarVfsMonitorEvent event,
+ ThunarVfsPath *path);
+
+void thunar_vfs_monitor_wait (ThunarVfsMonitor *monitor);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VFS_MONITOR_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-path.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-path.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-path.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,1037 @@
+/* $Id: thunar-vfs-path.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+/* implement thunar-vfs-path's inline functions */
+#define G_IMPLEMENT_INLINES 1
+#define __THUNAR_VFS_PATH_C__
+#include <thunar-vfs/thunar-vfs-path.h>
+
+#include <thunar-vfs/thunar-vfs-alias.h>
+
+
+
+#if G_BYTE_ORDER == G_LITTLE_ENDIAN
+#define THUNAR_VFS_PATH_MASK (0xffu << ((sizeof (guint) - 1) * 8))
+#define THUNAR_VFS_PATH_ROOT (0x2fu)
+#elif G_BYTE_ORDER == G_BIG_ENDIAN
+#define THUNAR_VFS_PATH_MASK (0xffu)
+#define THUNAR_VFS_PATH_ROOT (0x2fu << ((sizeof (guint) - 1) * 8))
+#else
+#error "Unsupported endianess"
+#endif
+
+
+
+static guint thunar_vfs_path_escape_uri_length (const ThunarVfsPath *path);
+static guint thunar_vfs_path_escape_uri (const ThunarVfsPath *path,
+ gchar *buffer);
+
+
+
+/* A table of the ASCII chars from space (32) to DEL (127) */
+static const guchar ACCEPTABLE_URI_CHARS[96] = {
+ /* ! " # $ % & ' ( ) * + , - . / */
+ 0x00,0x3F,0x20,0x20,0x28,0x00,0x2C,0x3F,0x3F,0x3F,0x3F,0x2A,0x28,0x3F,0x3F,0x1C,
+ /* 0 1 2 3 4 5 6 7 8 9 : ; < = > ? */
+ 0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x38,0x20,0x20,0x2C,0x20,0x20,
+ /* @ A B C D E F G H I J K L M N O */
+ 0x38,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,
+ /* P Q R S T U V W X Y Z [ \ ] ^ _ */
+ 0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x20,0x20,0x20,0x20,0x3F,
+ /* ` a b c d e f g h i j k l m n o */
+ 0x20,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,
+ /* p q r s t u v w x y z { | } ~ DEL */
+ 0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x20,0x20,0x20,0x3F,0x20
+};
+
+/* List of hexadecimal characters */
+static const gchar HEX_CHARS[16] = "0123456789ABCDEF";
+
+#define ACCEPTABLE_URI_CHAR(c) ((c) >= 32 && (c) < 128 && (ACCEPTABLE_URI_CHARS[(c) - 32] & 0x08))
+
+
+
+#ifndef G_DISABLE_CHECKS
+G_LOCK_DEFINE_STATIC (debug_paths);
+static GList *debug_paths = NULL;
+#endif
+static ThunarVfsPath **home_components;
+static guint n_home_components;
+
+
+
+static guint
+thunar_vfs_path_escape_uri_length (const ThunarVfsPath *path)
+{
+ const guchar *s;
+ guint length = 8; /* base size for 'file:///' */
+
+ for (; path->parent != NULL; path = path->parent)
+ {
+ /* prepend a path separator */
+ if (length > 8)
+ length += 1;
+
+ for (s = (const guchar *) thunar_vfs_path_get_name (path); *s != '\0'; ++s)
+ length += ACCEPTABLE_URI_CHAR (*s) ? 1 : 3;
+ }
+
+ return length;
+}
+
+
+
+static guint
+thunar_vfs_path_escape_uri (const ThunarVfsPath *path,
+ gchar *buffer)
+{
+ typedef struct _ThunarVfsPathItem
+ {
+ const ThunarVfsPath *path;
+ struct _ThunarVfsPathItem *next;
+ } ThunarVfsPathItem;
+
+ ThunarVfsPathItem *item;
+ ThunarVfsPathItem *root = NULL;
+ const gchar *s = "file:///";
+ guchar c;
+ gchar *t = buffer + 8;
+
+ /* prepend the 'file:///' string */
+ ((guint32 *) buffer)[0] = ((const guint32 *) s)[0];
+ ((guint32 *) buffer)[1] = ((const guint32 *) s)[1];
+
+ /* generate the path item list (reverse parent relation) */
+ for (; path->parent != NULL; path = path->parent)
+ {
+ item = g_newa (ThunarVfsPathItem, 1);
+ item->path = path;
+ item->next = root;
+ root = item;
+ }
+
+ /* generate the uri */
+ for (item = root; item != NULL; item = item->next)
+ {
+ /* append a '/' character */
+ if (G_LIKELY (item != root))
+ *t++ = '/';
+
+ /* copy the path component name */
+ for (s = thunar_vfs_path_get_name (item->path); *s != '\0'; ++s)
+ {
+ c = *((const guchar *) s);
+ if (!ACCEPTABLE_URI_CHAR (c))
+ {
+ *t++ = '%';
+ *t++ = HEX_CHARS[c >> 4];
+ *t++ = HEX_CHARS[c & 15];
+ }
+ else
+ {
+ *t++ = *s;
+ }
+ }
+ }
+
+ /* zero-terminate the URI */
+ *t = '\0';
+
+ return (t - buffer) + 1;
+}
+
+
+
+GType
+thunar_vfs_path_get_type (void)
+{
+ static GType type = G_TYPE_INVALID;
+
+ if (G_UNLIKELY (type == G_TYPE_INVALID))
+ {
+ type = g_boxed_type_register_static ("ThunarVfsPath",
+ (GBoxedCopyFunc) thunar_vfs_path_ref,
+ (GBoxedFreeFunc) thunar_vfs_path_unref);
+ }
+
+ return type;
+}
+
+
+
+/**
+ * thunar_vfs_path_new:
+ * @identifier : an URI identifier or an absolute path.
+ * @error : return location for errors or %NULL.
+ *
+ * Returns a #ThunarVfsPath that represents the given
+ * @identifier or %NULL on error. In the latter case
+ * @error will be set to point to an #GError describing
+ * the problem.
+ *
+ * The caller is responsible to free the returned
+ * object using thunar_vfs_path_unref() when no
+ * longer needed.
+ *
+ * Return value: the #ThunarVfsPath for @identifier
+ * or %NULL on error.
+ **/
+ThunarVfsPath*
+thunar_vfs_path_new (const gchar *identifier,
+ GError **error)
+{
+ ThunarVfsPath *parent;
+ ThunarVfsPath *path = NULL;
+ const gchar *s;
+ const gchar *s1;
+ const gchar *s2;
+ gchar *filename;
+ gchar *t;
+ guint n;
+
+ /* check if we have an absolute path or an URI */
+ if (G_UNLIKELY (*identifier != '/'))
+ {
+ /* treat the identifier as URI */
+ filename = g_filename_from_uri (identifier, NULL, error);
+ if (G_UNLIKELY (filename == NULL))
+ return NULL;
+ }
+ else
+ {
+ /* the identifier includes an absolute path */
+ filename = (gchar *) identifier;
+ }
+
+ /* start at the root path */
+ path = home_components[0];
+ for (n = 1, s = filename + 1; n < n_home_components; ++n)
+ {
+ /* skip additional slashes */
+ for (; G_UNLIKELY (*s == '/'); ++s)
+ ;
+
+ /* check if we have reached the end of the filename */
+ if (G_UNLIKELY (*s == '\0'))
+ break;
+
+ /* check if the path component equals the next home path component */
+ for (s1 = thunar_vfs_path_get_name (home_components[n]), s2 = s; *s1 != '\0' && *s1 == *s2; ++s1, ++s2)
+ ;
+ if (*s1 != '\0' || (*s2 != '\0' && *s2 != '/'))
+ break;
+
+ /* go on with the next home path component */
+ path = home_components[n];
+ s = s2;
+ }
+
+ /* skip additional slashes */
+ for (; G_UNLIKELY (*s == '/'); ++s)
+ ;
+
+ /* generate the additional path components (if any) */
+ while (*s != '\0')
+ {
+ /* remember the current path as parent path */
+ parent = path;
+
+ /* determine the length of the path component in bytes */
+ for (s1 = s + 1; *s1 != '\0' && *s1 != '/'; ++s1)
+ ;
+ n = (((s1 - s) + sizeof (guint)) / sizeof (guint)) * sizeof (guint);
+
+ /* allocate memory for the new path component */
+ path = g_malloc (sizeof (ThunarVfsPath) + n);
+ path->ref_count = 0;
+ path->parent = thunar_vfs_path_ref (parent);
+
+ /* add the path to the debug list */
+#ifndef G_DISABLE_CHECKS
+ G_LOCK (debug_paths);
+ debug_paths = g_list_prepend (debug_paths, path);
+ G_UNLOCK (debug_paths);
+#endif
+
+ /* zero out the last word to have the name zero-terminated */
+ *(((guint *) (((gchar *) path) + sizeof (ThunarVfsPath) + n)) - 1) = 0;
+
+ /* copy the path component name */
+ for (t = (gchar *) thunar_vfs_path_get_name (path); *s != '\0' && *s != '/'; )
+ *t++ = *s++;
+
+ /* skip additional slashes */
+ for (; G_UNLIKELY (*s == '/'); ++s)
+ ;
+ }
+
+ /* cleanup */
+ if ((const gchar *) filename != identifier)
+ g_free (filename);
+
+ /* return a reference on the path */
+ return thunar_vfs_path_ref (path);
+}
+
+
+
+/**
+ * thunar_vfs_path_get_for_home:
+ *
+ * Returns the #ThunarVfsPath that represents
+ * the current users home directory.
+ *
+ * The caller is responsible to free the
+ * returned object using thunar_vfs_path_unref()
+ * when no longer needed.
+ *
+ * Return value: the #ThunarVfsPath for the
+ * current users home directory.
+ **/
+ThunarVfsPath*
+thunar_vfs_path_get_for_home (void)
+{
+ return thunar_vfs_path_ref (home_components[n_home_components - 1]);
+}
+
+
+
+/**
+ * thunar_vfs_path_get_for_root:
+ *
+ * Returns the #ThunarVfsPath that represents the
+ * file systems root directory.
+ *
+ * The caller is responsible to free the returned
+ * object using thunar_vfs_path_unref() when no
+ * longer needed.
+ *
+ * Return value: the #ThunarVfsPath for the file
+ * systems root directory.
+ **/
+ThunarVfsPath*
+thunar_vfs_path_get_for_root (void)
+{
+ return thunar_vfs_path_ref (home_components[0]);
+}
+
+
+
+/**
+ * thunar_vfs_path_unref:
+ * @path : a #ThunarVfsPath.
+ *
+ * Decreases the reference count on @path and
+ * frees the resources allocated for @path
+ * once the reference count drops to zero.
+ **/
+void
+thunar_vfs_path_unref (ThunarVfsPath *path)
+{
+ ThunarVfsPath *parent;
+
+ while (path != NULL && exo_atomic_dec (&path->ref_count))
+ {
+ /* remember the parent path */
+ parent = path->parent;
+
+ /* remove the path from the debug list */
+#ifndef G_DISABLE_CHECKS
+ G_LOCK (debug_paths);
+ debug_paths = g_list_remove (debug_paths, path);
+ G_UNLOCK (debug_paths);
+#endif
+
+ /* release the path resources */
+ g_free (path);
+
+ /* continue with the parent */
+ path = parent;
+ }
+}
+
+
+
+/**
+ * thunar_vfs_path_hash:
+ * @path_ptr : a #ThunarVfsPath.
+ *
+ * Generates a hash value for the given @path_ptr.
+ *
+ * Return value: the hash value for @path_ptr.
+ **/
+guint
+thunar_vfs_path_hash (gconstpointer path_ptr)
+{
+ const gchar *p = thunar_vfs_path_get_name (path_ptr);
+ guint h = *p;
+
+ /* hash the last path component (which cannot be empty) */
+ while (*++p != '\0')
+ h = (h << 5) - h + *p;
+
+ return h;
+}
+
+
+
+/**
+ * thunar_vfs_path_equal:
+ * @path_ptr_a : first #ThunarVfsPath.
+ * @path_ptr_b : second #ThunarVfsPath.
+ *
+ * Checks whether @path_ptr_a and @path_ptr_b refer
+ * to the same local path.
+ *
+ * Return value: %TRUE if @path_ptr_a and @path_ptr_b
+ * are equal.
+ **/
+gboolean
+thunar_vfs_path_equal (gconstpointer path_ptr_a,
+ gconstpointer path_ptr_b)
+{
+ const ThunarVfsPath *path_a = path_ptr_a;
+ const ThunarVfsPath *path_b = path_ptr_b;
+ const guint *a;
+ const guint *b;
+
+again:
+ /* check if the paths are the same object */
+ if (G_UNLIKELY (path_a == path_b))
+ return TRUE;
+
+ /* compare the last path component */
+ a = (const guint *) thunar_vfs_path_get_name (path_a);
+ b = (const guint *) thunar_vfs_path_get_name (path_b);
+ for (;;)
+ {
+ if (*a != *b)
+ return FALSE;
+ else if ((*a & THUNAR_VFS_PATH_MASK) == 0u)
+ break;
+
+ ++a;
+ ++b;
+ }
+
+ /* compare the parent path components */
+ if (G_LIKELY (path_a->parent != NULL && path_b->parent != NULL))
+ {
+ path_a = path_a->parent;
+ path_b = path_b->parent;
+ goto again;
+ }
+
+ /* verify that both paths have no parents then */
+ return (path_a->parent == NULL && path_b->parent == NULL);
+}
+
+
+
+/**
+ * thunar_vfs_path_relative:
+ * @parent : a #ThunarVfsPath.
+ * @name : a valid filename in the local file system encoding.
+ *
+ * Returns a #ThunarVfsPath for the file @name relative to
+ * @parent. @name must be a valid filename in the local file
+ * system encoding and it may not contain any slashes.
+ *
+ * The caller is responsible to free the returned object
+ * using thunar_vfs_path_unref() when no longer needed.
+ *
+ * Return value: the path to @name relative to @parent.
+ **/
+ThunarVfsPath*
+thunar_vfs_path_relative (ThunarVfsPath *parent,
+ const gchar *name)
+{
+ ThunarVfsPath *path;
+ const gchar *s;
+ gchar *t;
+ gint n;
+
+ g_return_val_if_fail (parent != NULL, NULL);
+ g_return_val_if_fail (name != NULL, NULL);
+ g_return_val_if_fail (*name != '\0', NULL);
+ g_return_val_if_fail (strchr (name, '/') == NULL, NULL);
+
+ /* check if parent is one of the home path components */
+ for (n = n_home_components - 2; n >= 0; --n)
+ if (G_UNLIKELY (home_components[n] == parent))
+ {
+ /* check if the name equals the home path child component */
+ if (strcmp (name, thunar_vfs_path_get_name (home_components[n + 1])) == 0)
+ return thunar_vfs_path_ref (home_components[n + 1]);
+ break;
+ }
+
+ /* determine the length of the name in bytes */
+ for (s = name + 1; *s != '\0'; ++s)
+ ;
+ n = (((s - name) + sizeof (guint)) / sizeof (guint)) * sizeof (guint);
+
+ /* allocate memory for the new path component */
+ path = g_malloc (sizeof (ThunarVfsPath) + n);
+ path->ref_count = 1;
+ path->parent = thunar_vfs_path_ref (parent);
+
+ /* add the path to the debug list */
+#ifndef G_DISABLE_CHECKS
+ G_LOCK (debug_paths);
+ debug_paths = g_list_prepend (debug_paths, path);
+ G_UNLOCK (debug_paths);
+#endif
+
+ /* zero out the last word to have the name zero-terminated */
+ *(((guint *) (((gchar *) path) + sizeof (ThunarVfsPath) + n)) - 1) = 0;
+
+ /* copy the path component name */
+ for (s = name, t = (gchar *) thunar_vfs_path_get_name (path); *s != '\0'; )
+ *t++ = *s++;
+
+ return path;
+}
+
+
+
+/**
+ * thunar_vfs_path_is_home:
+ * @path : a #ThunarVfsPath.
+ *
+ * Checks whether @path refers to the users home
+ * directory.
+ *
+ * Return value: %TRUE if @path refers to the users
+ * home directory.
+ **/
+gboolean
+thunar_vfs_path_is_home (const ThunarVfsPath *path)
+{
+ g_return_val_if_fail (path != NULL, FALSE);
+ return (path == home_components[n_home_components - 1]);
+}
+
+
+
+/**
+ * thunar_vfs_path_dup_string:
+ * @path : a #ThunarVfsPath.
+ *
+ * Like thunar_vfs_path_to_string(), this function transform
+ * the @path to its string representation, but unlike
+ * thunar_vfs_path_to_string(), this function automatically
+ * allocates the required amount of memory from the heap.
+ * The returned string must be freed by the caller when
+ * no longer needed.
+ *
+ * Return value: the string representation of @path.
+ **/
+gchar*
+thunar_vfs_path_dup_string (const ThunarVfsPath *path)
+{
+ const ThunarVfsPath *p;
+ gchar *s;
+ guint n;
+
+ /* determine the number of bytes required to
+ * store the path's string representation.
+ */
+ for (n = 0, p = path; p != NULL; p = p->parent)
+ n += strlen (thunar_vfs_path_get_name (p)) + 2;
+
+ /* allocate the buffer to store the string */
+ s = g_malloc (n);
+
+ /* store the path string to the buffer */
+ thunar_vfs_path_to_string (path, s, n, NULL);
+
+ /* return the string buffer */
+ return s;
+}
+
+
+
+/**
+ * thunar_vfs_path_to_string:
+ * @path : a #ThunarVfsPath.
+ * @buffer : the buffer to store the path string to.
+ * @bufsize : the size of @buffer in bytes.
+ * @error : return location for errors or %NULL.
+ *
+ * Stores the @path into the string pointed to by @buffer,
+ * so it can be used for system path operations. Returns
+ * the number of bytes stored to @buffer or a negative
+ * value if @bufsize is too small to store the whole @path.
+ * In the latter case @error will be set to point to an
+ * error describing the problem.
+ *
+ * If @buffer is allocated on the stack, it is suggested
+ * to use #THUNAR_VFS_PATH_MAXSTRLEN for the buffer size
+ * in most cases. The stack should never be used in recursive
+ * functions; use thunar_vfs_path_dup_string() instead there.
+ *
+ * Return value: the number of bytes (including the null
+ * byte) stored to @buffer or a negative
+ * value if @buffer cannot hold the whole
+ * @path.
+ **/
+gssize
+thunar_vfs_path_to_string (const ThunarVfsPath *path,
+ gchar *buffer,
+ gsize bufsize,
+ GError **error)
+{
+ typedef struct _ThunarVfsPathItem
+ {
+ const ThunarVfsPath *path;
+ struct _ThunarVfsPathItem *next;
+ } ThunarVfsPathItem;
+
+ ThunarVfsPathItem *items = NULL;
+ ThunarVfsPathItem *item;
+ const gchar *name;
+ gchar *bp;
+ guint n;
+
+ g_return_val_if_fail (buffer != NULL, -1);
+ g_return_val_if_fail (bufsize > 0, -1);
+ g_return_val_if_fail (error == NULL || *error == NULL, -1);
+
+ /* the root element is a special case to ease the processing */
+ if (G_UNLIKELY (path->parent == NULL))
+ {
+ if (G_UNLIKELY (bufsize < 2))
+ goto error;
+ buffer[0] = G_DIR_SEPARATOR;
+ buffer[1] = '\0';
+ return 2;
+ }
+
+ /* determine the buffer size required for the path buffer */
+ for (n = 1; path->parent != NULL; path = path->parent)
+ {
+ /* add the path to the item list */
+ item = g_newa (ThunarVfsPathItem, 1);
+ item->path = path;
+ item->next = items;
+ items = item;
+
+ /* add the size constraint (including the '/') */
+ n += strlen (thunar_vfs_path_get_name (path)) + 1;
+ }
+
+ /* verify the buffer size */
+ if (G_UNLIKELY (bufsize < n))
+ {
+error:
+ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_NAMETOOLONG,
+ _("Path too long to fit into buffer"));
+ return -1;
+ }
+
+ /* generate the path string */
+ for (bp = buffer, item = items; item != NULL; item = item->next)
+ {
+ /* prepend the path separator */
+ *bp++ = G_DIR_SEPARATOR;
+
+ /* append the component name */
+ for (name = thunar_vfs_path_get_name (item->path); *name != '\0'; )
+ *bp++ = *name++;
+ }
+
+ /* append the string terminator */
+ *bp = '\0';
+
+ /* return the number of bytes written to the buffer */
+ return n;
+}
+
+
+
+/**
+ * thunar_vfs_path_dup_uri:
+ * @path : a #ThunarVfsPath.
+ *
+ * Similar to thunar_vfs_path_to_uri(), but automatically
+ * allocates memory on the heap instead of using a user
+ * supplied buffer for the URI.
+ *
+ * The caller is responsible to free the returned string
+ * using g_free() when no longer needed.
+ *
+ * Return value: the escaped URI for @path.
+ **/
+gchar*
+thunar_vfs_path_dup_uri (const ThunarVfsPath *path)
+{
+ gchar *s;
+ guint m;
+ guint n;
+
+ g_return_val_if_fail (path != NULL, NULL);
+
+ /* calculate the length of the uri string */
+ n = thunar_vfs_path_escape_uri_length (path) + 1;
+
+ /* escape the path to an uri string */
+ s = g_malloc (sizeof (gchar) * n);
+ m = thunar_vfs_path_escape_uri (path, s);
+
+ /* verify the result */
+ g_assert (strlen (s) == m - 1);
+ g_assert (m == n);
+
+ return s;
+}
+
+
+
+/**
+ * thunar_vfs_path_to_uri:
+ * @path : a #ThunarVfsPath.
+ * @buffer : the buffer to store the URI string to.
+ * @bufsize : the size of @buffer in bytes.
+ * @error : return location for errors or %NULL.
+ *
+ * Escapes @path according to the rules of the file URI
+ * specification and stores the escaped URI to @buffer.
+ * Returns the number of bytes stored to @buffer or a
+ * negative value if @bufsize is too small to store the
+ * escaped URI. In the latter case @error will be set to
+ * point to an #GError describing the problem.
+ *
+ * When using the stack for @buffer, it is suggested to
+ * use #THUNAR_VFS_PATH_MAXURILEN for the buffer size in
+ * most cases. The stack should never be used in recursive
+ * functions; use thunar_vfs_path_dup_uri() instead there.
+ *
+ * Return value: the number of bytes (including the null
+ * byte) stored to @buffer or a negative
+ * value if @buffer cannot hold the URI.
+ **/
+gssize
+thunar_vfs_path_to_uri (const ThunarVfsPath *path,
+ gchar *buffer,
+ gsize bufsize,
+ GError **error)
+{
+ guint n;
+ guint m;
+
+ g_return_val_if_fail (path != NULL, -1);
+ g_return_val_if_fail (buffer != NULL, -1);
+ g_return_val_if_fail (bufsize > 0, -1);
+ g_return_val_if_fail (error == NULL || *error == NULL, -1);
+
+ /* verify that the buffer is large enough */
+ n = thunar_vfs_path_escape_uri_length (path) + 1;
+ if (G_UNLIKELY (bufsize < n))
+ {
+ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_NAMETOOLONG,
+ _("URI too long to fit into buffer"));
+ return -1;
+ }
+
+ /* copy the URI to the buffer */
+ m = thunar_vfs_path_escape_uri (path, buffer);
+
+ /* verify the result */
+ g_assert (strlen (buffer) == m - 1);
+ g_assert (m == n);
+
+ return n;
+}
+
+
+
+/**
+ * thunar_vfs_path_list_from_string:
+ * @uri_string : a string representation of an URI list.
+ * @error : return location for errors.
+ *
+ * Splits an URI list conforming to the text/uri-list
+ * mime type defined in RFC 2483 into individual URIs,
+ * discarding any comments and whitespace.
+ *
+ * If all URIs were successfully parsed into #ThunarVfsPath
+ * objects, the list of parsed URIs will be returned, and
+ * you'll need to call thunar_vfs_path_list_free() to
+ * release the list resources. Else if the parsing fails
+ * at some point, %NULL will be returned and @error will
+ * be set to describe the cause.
+ *
+ * Note, that if @string contains no URIs, this function
+ * will also return %NULL, but @error won't be set. So
+ * take care when checking for an error condition!
+ *
+ * Return value: the list of #ThunarVfsPath's or %NULL.
+ **/
+GList*
+thunar_vfs_path_list_from_string (const gchar *uri_string,
+ GError **error)
+{
+ ThunarVfsPath *path;
+ const gchar *s;
+ const gchar *t;
+ GList *path_list = NULL;
+ gchar *identifier;
+
+ for (s = uri_string; s != NULL; )
+ {
+ if (*s != '#')
+ {
+ while (g_ascii_isspace (*s))
+ ++s;
+
+ for (t = s; *t != '\0' && *t != '\n' && *t != '\r'; ++t)
+ ;
+
+ if (t > s)
+ {
+ for (t--; t > s && g_ascii_isspace (*t); t--)
+ ;
+
+ if (t > s)
+ {
+ /* try to parse the URI */
+ identifier = g_strndup (s, t - s + 1);
+ path = thunar_vfs_path_new (identifier, error);
+ g_free (identifier);
+
+ /* check if we succeed */
+ if (G_UNLIKELY (path == NULL))
+ {
+ thunar_vfs_path_list_free (path_list);
+ return NULL;
+ }
+ else
+ {
+ /* append the newly parsed path */
+ path_list = g_list_append (path_list, path);
+ }
+ }
+ }
+ }
+
+ for (; *s != '\0' && *s != '\n'; ++s)
+ ;
+
+ if (*s++ == '\0')
+ break;
+ }
+
+ return path_list;
+}
+
+
+
+/**
+ * thunar_vfs_path_list_to_string:
+ * @path_list : a list of #ThunarVfsPath<!---->s.
+ *
+ * Free the returned value using g_free() when you
+ * are done with it.
+ *
+ * Return value: the string representation of @path_list conforming to the
+ * text/uri-list mime type defined in RFC 2483.
+ **/
+gchar*
+thunar_vfs_path_list_to_string (GList *path_list)
+{
+ gchar *buffer;
+ gsize bufsize = 512;
+ gsize bufpos = 0;
+ GList *lp;
+ gint n;
+
+ /* allocate initial buffer */
+ buffer = g_new (gchar, bufsize + 1);
+
+ for (lp = path_list; lp != NULL; lp = lp->next)
+ {
+ for (;;)
+ {
+ /* increase the buffer automatically if required */
+ n = thunar_vfs_path_to_uri (lp->data, buffer + bufpos, bufsize - bufpos, NULL);
+ if (G_UNLIKELY (n < 0))
+ {
+ bufsize += 512;
+ buffer = g_realloc (buffer, bufsize + 1);
+ continue;
+ }
+
+ /* shift the buffer position */
+ bufpos += (n - 1);
+
+ /* append a line break */
+ if (G_UNLIKELY (bufpos == bufsize))
+ {
+ bufsize += 512;
+ buffer = g_realloc (buffer, bufsize + 1);
+ }
+ buffer[bufpos++] = '\n';
+ break;
+ }
+ }
+
+ /* zero terminate the string */
+ buffer[bufpos] = '\0';
+
+ return buffer;
+}
+
+
+
+/**
+ * _thunar_vfs_path_init:
+ *
+ * Intialize the #ThunarVfsPath module.
+ **/
+void
+_thunar_vfs_path_init (void)
+{
+ ThunarVfsPath *path;
+ const gchar *s;
+ gchar *offset;
+ gchar **components;
+ gchar **component;
+ guint n_bytes;
+ guint n = 0;
+ gchar *t;
+
+ g_return_if_fail (home_components == NULL);
+ g_return_if_fail (n_home_components == 0);
+
+ /* include the root element */
+ n_bytes = sizeof (ThunarVfsPath) + sizeof (guint);
+ n_home_components = 1;
+
+ /* split the home path into its components */
+ components = g_strsplit (xfce_get_homedir (), "/", -1);
+ for (component = components; *component != NULL; ++component)
+ if (G_LIKELY (**component != '\0'))
+ {
+ n_bytes += sizeof (ThunarVfsPath) + ((strlen (*component) + sizeof (guint)) / sizeof (guint)) * sizeof (guint);
+ n_home_components += 1;
+ }
+
+ /* allocate the memory (including the pointer table overhead) */
+ home_components = g_malloc (n_bytes + n_home_components * sizeof (ThunarVfsPath *));
+ offset = ((gchar *) home_components) + n_home_components * sizeof (ThunarVfsPath *);
+
+ /* add the root node */
+ path = (gpointer) offset;
+ path->ref_count = 1;
+ path->parent = NULL;
+ home_components[0] = path;
+ *((guint *) thunar_vfs_path_get_name (path)) = THUNAR_VFS_PATH_ROOT;
+ offset += sizeof (ThunarVfsPath) + sizeof (guint);
+
+ /* add the remaining path components */
+ for (component = components; *component != NULL; ++component)
+ if (G_LIKELY (**component != '\0'))
+ {
+ /* setup the path basics */
+ path = (gpointer) offset;
+ path->ref_count = 1;
+ path->parent = home_components[n];
+ home_components[++n] = path;
+
+ /* calculate the offset for the next home path component */
+ offset += sizeof (ThunarVfsPath) + ((strlen (*component) + sizeof (guint)) / sizeof (guint)) * sizeof (guint);
+
+ /* copy the path */
+ for (s = *component, t = (gchar *) thunar_vfs_path_get_name (path); *s != '\0'; )
+ *t++ = *s++;
+
+ /* fill the path with zeros */
+ while (t < offset)
+ *t++ = '\0';
+ }
+
+ /* verify state */
+ g_assert (n_home_components == n + 1);
+
+ /* cleanup */
+ g_strfreev (components);
+}
+
+
+
+/**
+ * _thunar_vfs_path_shutdown:
+ *
+ * Shutdown the #ThunarVfsPath module.
+ **/
+void
+_thunar_vfs_path_shutdown (void)
+{
+ guint n;
+
+ g_return_if_fail (home_components != NULL);
+ g_return_if_fail (n_home_components != 0);
+
+ /* print out the list of leaked paths */
+#ifndef G_DISABLE_CHECKS
+ if (G_UNLIKELY (debug_paths != NULL))
+ {
+ GList *lp;
+ gchar *s;
+
+ G_LOCK (debug_paths);
+
+ g_print ("--- Leaked a total of %u ThunarVfsPath objects:\n", g_list_length (debug_paths));
+
+ for (lp = debug_paths; lp != NULL; lp = lp->next)
+ {
+ s = thunar_vfs_path_dup_string (lp->data);
+ g_print ("--> %s (%d)\n", s, ((ThunarVfsPath *) lp->data)->ref_count);
+ g_free (s);
+ }
+
+ G_UNLOCK (debug_paths);
+ }
+#endif
+
+ for (n = 0; n < n_home_components; ++n)
+ g_assert (home_components[n]->ref_count == 1);
+
+ g_free (home_components);
+ home_components = NULL;
+ n_home_components = 0;
+}
+
+
+
+#define __THUNAR_VFS_PATH_C__
+#include <thunar-vfs/thunar-vfs-aliasdef.c>
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-path.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-path.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-path.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,265 @@
+/* $Id: thunar-vfs-path.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#if !defined (THUNAR_VFS_INSIDE_THUNAR_VFS_H) && !defined (THUNAR_VFS_COMPILATION)
+#error "Only <thunar-vfs/thunar-vfs.h> can be included directly, this file may disappear or change contents."
+#endif
+
+#ifndef __THUNAR_VFS_PATH_H__
+#define __THUNAR_VFS_PATH_H__
+
+#include <thunar-vfs/thunar-vfs-config.h>
+
+G_BEGIN_DECLS;
+
+/**
+ * THUNAR_VFS_PATH_MAXSTRLEN:
+ *
+ * The maximum length of a path string in bytes that
+ * can be handled by #ThunarVfsPath objects.
+ **/
+#if defined(PATH_MAX)
+#define THUNAR_VFS_PATH_MAXSTRLEN (PATH_MAX + 1)
+#else
+#define THUNAR_VFS_PATH_MAXSTRLEN (4 * 1024 + 1)
+#endif
+
+/**
+ * THUNAR_VFS_PATH_MAXURILEN:
+ *
+ * The maximum length of an URI string in bytes that
+ * will be produced by thunar_vfs_path_to_uri() and
+ * friends.
+ **/
+#define THUNAR_VFS_PATH_MAXURILEN (THUNAR_VFS_PATH_MAXSTRLEN * 3 - 2)
+
+#define THUNAR_VFS_TYPE_PATH (thunar_vfs_path_get_type ())
+
+typedef struct _ThunarVfsPath ThunarVfsPath;
+struct _ThunarVfsPath
+{
+ /*< private >*/
+ gint ref_count;
+ ThunarVfsPath *parent;
+};
+
+GType thunar_vfs_path_get_type (void) G_GNUC_CONST;
+
+ThunarVfsPath *thunar_vfs_path_new (const gchar *identifier,
+ GError **error) G_GNUC_MALLOC;
+
+ThunarVfsPath *thunar_vfs_path_get_for_home (void);
+ThunarVfsPath *thunar_vfs_path_get_for_root (void);
+
+G_INLINE_FUNC ThunarVfsPath *thunar_vfs_path_ref (ThunarVfsPath *path);
+void thunar_vfs_path_unref (ThunarVfsPath *path);
+
+guint thunar_vfs_path_hash (gconstpointer path_ptr);
+gboolean thunar_vfs_path_equal (gconstpointer path_ptr_a,
+ gconstpointer path_ptr_b);
+
+ThunarVfsPath *thunar_vfs_path_relative (ThunarVfsPath *parent,
+ const gchar *name) G_GNUC_MALLOC;
+
+gboolean thunar_vfs_path_is_home (const ThunarVfsPath *path);
+G_INLINE_FUNC gboolean thunar_vfs_path_is_root (const ThunarVfsPath *path);
+
+G_INLINE_FUNC const gchar *thunar_vfs_path_get_name (const ThunarVfsPath *path);
+G_INLINE_FUNC ThunarVfsPath *thunar_vfs_path_get_parent (const ThunarVfsPath *path);
+
+gchar *thunar_vfs_path_dup_string (const ThunarVfsPath *path) G_GNUC_MALLOC;
+gssize thunar_vfs_path_to_string (const ThunarVfsPath *path,
+ gchar *buffer,
+ gsize bufsize,
+ GError **error);
+
+gchar *thunar_vfs_path_dup_uri (const ThunarVfsPath *path) G_GNUC_MALLOC;
+gssize thunar_vfs_path_to_uri (const ThunarVfsPath *path,
+ gchar *buffer,
+ gsize bufsize,
+ GError **error);
+
+
+GList *thunar_vfs_path_list_from_string (const gchar *uri_string,
+ GError **error) G_GNUC_MALLOC;
+gchar *thunar_vfs_path_list_to_string (GList *path_list) G_GNUC_MALLOC;
+G_INLINE_FUNC GList *thunar_vfs_path_list_append (GList *path_list,
+ ThunarVfsPath *path);
+G_INLINE_FUNC GList *thunar_vfs_path_list_prepend (GList *path_list,
+ ThunarVfsPath *path);
+G_INLINE_FUNC GList *thunar_vfs_path_list_copy (GList *path_list);
+G_INLINE_FUNC void thunar_vfs_path_list_free (GList *path_list);
+
+
+/* inline function implementations */
+#if defined(G_CAN_INLINE) || defined(__THUNAR_VFS_PATH_C__)
+/**
+ * thunar_vfs_path_ref:
+ * @path : a #ThunarVfsPath.
+ *
+ * Increments the reference count on @path
+ * and returns a reference to @path.
+ *
+ * Return value: a reference to @path.
+ **/
+G_INLINE_FUNC ThunarVfsPath*
+thunar_vfs_path_ref (ThunarVfsPath *path)
+{
+ exo_atomic_inc (&path->ref_count);
+ return path;
+}
+
+/**
+ * thunar_vfs_path_is_root:
+ * @path : a #ThunarVfsPath.
+ *
+ * Checks whether path refers to the root directory.
+ *
+ * Return value: %TRUE if @path refers to the root
+ * directory.
+ **/
+G_INLINE_FUNC gboolean
+thunar_vfs_path_is_root (const ThunarVfsPath *path)
+{
+ return (path->parent == NULL);
+}
+
+/**
+ * thunar_vfs_path_get_name:
+ * @path : a #ThunarVfsPath.
+ *
+ * Returns the base name of the @path in the local
+ * file system encoding.
+ *
+ * Return value: the base name of @path.
+ **/
+G_INLINE_FUNC const gchar*
+thunar_vfs_path_get_name (const ThunarVfsPath *path)
+{
+ return ((const gchar *) path) + sizeof (*path);
+}
+
+/**
+ * thunar_vfs_path_get_parent:
+ * @path : a #ThunarVfsPath.
+ *
+ * Returns the #ThunarVfsPath that refers to the parent
+ * directory of @path or %NULL if @path refers to the
+ * root file system node.
+ *
+ * No additional reference is taken on the parent, so
+ * you'll need to call thunar_vfs_path_ref() yourself
+ * if you need to keep a reference.
+ *
+ * Return value: the parent of @path or %NULL.
+ **/
+G_INLINE_FUNC ThunarVfsPath*
+thunar_vfs_path_get_parent (const ThunarVfsPath *path)
+{
+ return path->parent;
+}
+
+/**
+ * thunar_vfs_path_list_append:
+ * @path_list : a list of #ThunarVfsPath<!---->s.
+ * @path : a #ThunarVfsPath.
+ *
+ * Appends @path to the @path_list while taking
+ * an additional reference for @path.
+ *
+ * Return value: pointer to the extended @path_list.
+ **/
+G_INLINE_FUNC GList*
+thunar_vfs_path_list_append (GList *path_list,
+ ThunarVfsPath *path)
+{
+ thunar_vfs_path_ref (path);
+ return g_list_append (path_list, path);
+}
+
+/**
+ * thunar_vfs_path_list_prepend:
+ * @path_list : a list of #ThunarVfsPath<!---->s.
+ * @path : a #ThunarVfsPath.
+ *
+ * Similar to thunar_vfs_path_list_append(), but
+ * prepends the @path to the @path_list.
+ *
+ * Return value: pointer to the extended @path_list.
+ **/
+G_INLINE_FUNC GList*
+thunar_vfs_path_list_prepend (GList *path_list,
+ ThunarVfsPath *path)
+{
+ thunar_vfs_path_ref (path);
+ return g_list_prepend (path_list, path);
+}
+
+/**
+ * thunar_vfs_path_list_copy:
+ * @path_list : a list of #ThunarVfsPath<!---->s.
+ *
+ * Takes a deep copy of @path_list and returns the
+ * result. The caller is responsible to free the
+ * returned list using thunar_vfs_path_list_free().
+ *
+ * Return value: a deep copy of @path_list.
+ **/
+G_INLINE_FUNC GList*
+thunar_vfs_path_list_copy (GList *path_list)
+{
+ GList *list;
+ GList *lp;
+
+ for (list = NULL, lp = g_list_last (path_list); lp != NULL; lp = lp->prev)
+ {
+ list = g_list_prepend (list, lp->data);
+ thunar_vfs_path_ref (lp->data);
+ }
+
+ return list;
+}
+
+/**
+ * thunar_vfs_path_list_free:
+ * @path_list : a list of #ThunarVfsPath<!---->s.
+ *
+ * Frees the #ThunarVfsPath<!---->s in @path_list and
+ * the @path_list itself.
+ **/
+G_INLINE_FUNC void
+thunar_vfs_path_list_free (GList *path_list)
+{
+ GList *lp;
+ for (lp = path_list; lp != NULL; lp = lp->next)
+ thunar_vfs_path_unref (lp->data);
+ g_list_free (path_list);
+}
+#endif /* G_CAN_INLINE || __THUNAR_VFS_PATH_C__ */
+
+
+#if defined(THUNAR_VFS_COMPILATION)
+void _thunar_vfs_path_init (void) G_GNUC_INTERNAL;
+void _thunar_vfs_path_shutdown (void) G_GNUC_INTERNAL;
+#endif
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VFS_PATH_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-scandir.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-scandir.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-scandir.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,428 @@
+/* $Id: thunar-vfs-scandir.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_MOUNT_H
+#include <sys/mount.h>
+#endif
+
+#ifdef HAVE_DIRENT_H
+#include <dirent.h>
+#endif
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <thunar-vfs/thunar-vfs-scandir.h>
+
+
+
+typedef struct _ThunarVfsScandirHandle ThunarVfsScandirHandle;
+
+
+
+#ifdef __FreeBSD__
+static gboolean thunar_vfs_scandir_collect_fast (ThunarVfsScandirHandle *handle,
+ ThunarVfsPath *path,
+ GList **directoriesp);
+#endif
+static gboolean thunar_vfs_scandir_collect_slow (ThunarVfsScandirHandle *handle,
+ ThunarVfsPath *path,
+ GList **directoriesp);
+static gboolean thunar_vfs_scandir_collect (ThunarVfsScandirHandle *handle,
+ ThunarVfsPath *path);
+
+
+
+struct _ThunarVfsScandirHandle
+{
+ ThunarVfsScandirFlags flags;
+ GCompareFunc func;
+ GList *path_list;
+ gchar fname[THUNAR_VFS_PATH_MAXSTRLEN];
+};
+
+
+
+#ifdef __FreeBSD__
+static gboolean
+thunar_vfs_scandir_collect_fast (ThunarVfsScandirHandle *handle,
+ ThunarVfsPath *path,
+ GList **directoriesp)
+{
+#define statfsp ((struct statfs *) (dbuf))
+
+ ThunarVfsPath *child;
+ struct dirent *dp;
+ struct stat statb;
+ gboolean succeed = FALSE;
+ gchar *dbuf;
+ guint dlen;
+ glong base;
+ gint sverrno;
+ gint size;
+ gint loc;
+ gint fd;
+ gint n;
+
+ /* try to open the file (the file name is placed in handle->fname) */
+ fd = open (handle->fname, O_RDONLY | ((handle->flags & THUNAR_VFS_SCANDIR_FOLLOW_LINKS) ? 0 : O_NOFOLLOW));
+ if (G_UNLIKELY (fd < 0))
+ {
+ /* translate EMLINK to ENOTDIR */
+ if (G_UNLIKELY (errno == EMLINK))
+ errno = ENOTDIR;
+ return FALSE;
+ }
+
+ /* stat the file */
+ if (fstat (fd, &statb) < 0)
+ goto done;
+
+ /* verify that we have a directory here */
+ if (!S_ISDIR (statb.st_mode))
+ {
+ errno = ENOTDIR;
+ goto done;
+ }
+
+ /* calculate the directory buffer size */
+ dlen = statb.st_blksize * 4;
+ if (G_UNLIKELY ((dlen % DIRBLKSIZ) != 0))
+ dlen = ((dlen + DIRBLKSIZ - 1) / DIRBLKSIZ) * DIRBLKSIZ;
+ if (G_UNLIKELY (dlen < sizeof (struct statfs)))
+ dlen = sizeof (struct statfs);
+
+ /* allocate the directory buffer, which is
+ * also used to store the statfs(2) results.
+ */
+ dbuf = alloca (dlen);
+
+ /* determine the file system details */
+ if (fstatfs (fd, statfsp) < 0)
+ goto done;
+
+ /* check if we have a unionfs here, which requires special processing (not provided by the fast collector) */
+ if (memcmp (statfsp->f_fstypename, "unionfs", 8) == 0 || (statfsp->f_flags & MNT_UNION) != 0)
+ {
+ /* fallback to the slower collector */
+ succeed = thunar_vfs_scandir_collect_slow (handle, path, directoriesp);
+ }
+ else
+ {
+ /* read the directory content */
+ for (base = loc = size = 0;;)
+ {
+ /* check if we need to fill the buffer again */
+ if (loc >= size)
+ {
+ /* read the next chunk */
+ size = getdirentries (fd, dbuf, dlen, &base);
+ if (size <= 0)
+ break;
+ loc = 0;
+ }
+
+ /* grab the pointer to the next entry */
+ dp = (struct dirent *) (dbuf + loc);
+ if (G_UNLIKELY (((gulong) dp & 0x03) != 0))
+ break;
+
+ /* verify the next record length */
+ if (G_UNLIKELY (dp->d_reclen <= 0 || dp->d_reclen > dlen + 1 - loc))
+ break;
+
+ /* adjust the location pointer */
+ loc += dp->d_reclen;
+
+ /* verify the inode and type */
+ if (G_UNLIKELY (dp->d_ino == 0 || dp->d_type == DT_WHT))
+ continue;
+
+ /* ignore '.' and '..' entries */
+ if (G_UNLIKELY (dp->d_name[0] == '.' && (dp->d_name[1] == '\0' || (dp->d_name[1] == '.' && dp->d_name[2] == '\0'))))
+ continue;
+
+ /* add the child path to the path list */
+ child = thunar_vfs_path_relative (path, dp->d_name);
+ if (handle->func != NULL)
+ handle->path_list = g_list_insert_sorted (handle->path_list, child, handle->func);
+ else
+ handle->path_list = g_list_prepend (handle->path_list, child);
+
+ /* check if we want to collect children for recursive scanning */
+ if (G_UNLIKELY (directoriesp != NULL))
+ {
+ /* DT_UNKNOWN must be handled for certain file systems */
+ if (G_UNLIKELY (dp->d_type == DT_UNKNOWN))
+ {
+ /* determine the absolute path to the child */
+ if (!thunar_vfs_path_to_string (child, handle->fname, sizeof (handle->fname), NULL) < 0)
+ {
+ errno = ENAMETOOLONG;
+ goto done;
+ }
+
+ /* stat the child (according to the FOLLOW_LINKS policy) */
+ n = ((handle->flags & THUNAR_VFS_SCANDIR_FOLLOW_LINKS) == 0)
+ ? lstat (handle->fname, &statb) : stat (handle->fname, &statb);
+
+ /* check if we have a directory here */
+ if (n == 0 && S_ISDIR (statb.st_mode))
+ dp->d_type = DT_DIR;
+ }
+
+ /* check if we have a directory */
+ if (dp->d_type == DT_DIR)
+ *directoriesp = g_list_prepend (*directoriesp, child);
+ }
+ }
+
+ succeed = TRUE;
+ }
+
+done:
+ sverrno = errno;
+ close (fd);
+ errno = sverrno;
+ return succeed;
+
+#undef statfsp
+}
+#endif
+
+
+
+static gboolean
+thunar_vfs_scandir_collect_slow (ThunarVfsScandirHandle *handle,
+ ThunarVfsPath *path,
+ GList **directoriesp)
+{
+ ThunarVfsPath *child;
+ struct dirent dbuf;
+ struct dirent *dp;
+ gint sverrno;
+ gint n;
+ DIR *dirp;
+
+ /* try to open the directory (handle->buffer still
+ * contains the absolute path when we get here!).
+ */
+ dirp = opendir (handle->fname);
+ if (G_UNLIKELY (dirp == NULL))
+ return FALSE;
+
+ /* verify that the directory is really the directory we want
+ * to open. If not, we've probably detected a race condition,
+ * so we'll better stop rather than doing anything stupid
+ * (remember, this method is also used in collecting
+ * files for the unlink job!!). Better safe than sorry!
+ */
+ if (G_UNLIKELY ((handle->flags & THUNAR_VFS_SCANDIR_FOLLOW_LINKS) == 0))
+ {
+ struct stat fstatb;
+ struct stat lstatb;
+
+ /* stat the just opened directory */
+ if (fstat (dirfd (dirp), &fstatb) < 0)
+ goto error;
+
+ /* stat the path (without following links) */
+ if (lstat (handle->fname, &lstatb) < 0)
+ goto error;
+
+ /* check that we have the same file here */
+ if (fstatb.st_ino != lstatb.st_ino || fstatb.st_dev != lstatb.st_dev)
+ {
+ errno = ENOTDIR;
+ goto error;
+ }
+ }
+
+ /* read the directory content */
+ for (;;)
+ {
+ /* read the next directory entry */
+ if (readdir_r (dirp, &dbuf, &dp) < 0 || dp == NULL)
+ break;
+
+ /* ignore '.' and '..' entries */
+ if (G_UNLIKELY (dp->d_name[0] == '.' && (dp->d_name[1] == '\0' || (dp->d_name[1] == '.' && dp->d_name[2] == '\0'))))
+ continue;
+
+ /* add the child path to the path list */
+ child = thunar_vfs_path_relative (path, dp->d_name);
+ if (handle->func != NULL)
+ handle->path_list = g_list_insert_sorted (handle->path_list, child, handle->func);
+ else
+ handle->path_list = g_list_prepend (handle->path_list, child);
+
+ /* check if we want to collect children for recursive scanning */
+ if (G_UNLIKELY (directoriesp != NULL))
+ {
+ struct stat statb;
+
+ /* determine the absolute path to the child */
+ if (thunar_vfs_path_to_string (child, handle->fname, sizeof (handle->fname), NULL) < 0)
+ {
+ errno = ENAMETOOLONG;
+ goto error;
+ }
+
+ /* stat the child (according to the FOLLOW_LINKS policy) */
+ n = ((handle->flags & THUNAR_VFS_SCANDIR_FOLLOW_LINKS) == 0)
+ ? lstat (handle->fname, &statb) : stat (handle->fname, &statb);
+
+ /* check if we have a directory here */
+ if (n == 0 && S_ISDIR (statb.st_mode))
+ *directoriesp = g_list_prepend (*directoriesp, child);
+ }
+ }
+
+ closedir (dirp);
+ return TRUE;
+
+error:
+ sverrno = errno;
+ closedir (dirp);
+ errno = sverrno;
+ return FALSE;
+}
+
+
+
+static gboolean
+thunar_vfs_scandir_collect (ThunarVfsScandirHandle *handle,
+ ThunarVfsPath *path)
+{
+ gboolean succeed = FALSE;
+ GList *directories = NULL;
+ GList *lp;
+ gint sverrno;
+
+ /* determine the absolute path */
+ if (thunar_vfs_path_to_string (path, handle->fname, sizeof (handle->fname), NULL) < 0)
+ {
+ errno = ENAMETOOLONG;
+ return FALSE;
+ }
+
+#ifdef __FreeBSD__
+ /* We can some nice things in FreeBSD */
+ succeed = thunar_vfs_scandir_collect_fast (handle, path, (handle->flags & THUNAR_VFS_SCANDIR_RECURSIVE) ? &directories : NULL);
+#else
+ /* use the generic (slower) collector */
+ succeed = thunar_vfs_scandir_collect_slow (handle, path, (handle->flags & THUNAR_VFS_SCANDIR_RECURSIVE) ? &directories : NULL);
+#endif
+
+ /* check if we want to recurse */
+ if (G_UNLIKELY (directories != NULL))
+ {
+ /* perform the recursion */
+ for (lp = directories; lp != NULL && succeed; lp = lp->next)
+ {
+ succeed = thunar_vfs_scandir_collect (handle, lp->data);
+ if (G_UNLIKELY (!succeed))
+ {
+ /* we can ignore certain errors here */
+ if (errno == EMLINK || errno == ENOTDIR || errno == ENOENT)
+ succeed = TRUE;
+ }
+ }
+
+ /* release the directory list */
+ sverrno = errno;
+ g_list_free (directories);
+ errno = sverrno;
+ }
+
+ return succeed;
+}
+
+
+
+/**
+ * thunar_vfs_scandir:
+ * @path
+ * @flags
+ * @func
+ * @error : return location for errors or %NULL.
+ *
+ * The caller is responsible to free the returned list
+ * using thunar_vfs_path_list_free() when no longer
+ * needed.
+ *
+ * Return value:
+ **/
+GList*
+thunar_vfs_scandir (ThunarVfsPath *path,
+ ThunarVfsScandirFlags flags,
+ GCompareFunc func,
+ GError **error)
+{
+ ThunarVfsScandirHandle handle;
+
+ g_return_val_if_fail (path != NULL, FALSE);
+ g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+
+ /* initialize the scandir handle */
+ handle.flags = flags;
+ handle.func = func;
+ handle.path_list = NULL;
+
+ /* collect the paths */
+ if (!thunar_vfs_scandir_collect (&handle, path))
+ {
+ /* forward the error */
+ g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno), g_strerror (errno));
+ thunar_vfs_path_list_free (handle.path_list);
+ return NULL;
+ }
+
+ return handle.path_list;
+}
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-scandir.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-scandir.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-scandir.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,46 @@
+/* $Id: thunar-vfs-scandir.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#if !defined (THUNAR_VFS_INSIDE_THUNAR_VFS_H) && !defined (THUNAR_VFS_COMPILATION)
+#error "Only <thunar-vfs/thunar-vfs.h> can be included directly, this file may disappear or change contents."
+#endif
+
+#ifndef __THUNAR_VFS_SCANDIR_H__
+#define __THUNAR_VFS_SCANDIR_H__
+
+#include <thunar-vfs/thunar-vfs-path.h>
+#include <thunar-vfs/thunar-vfs-types.h>
+
+G_BEGIN_DECLS;
+
+typedef enum /*< flags >*/
+{
+ THUNAR_VFS_SCANDIR_RECURSIVE = (1L << 0),
+ THUNAR_VFS_SCANDIR_FOLLOW_LINKS = (1L << 1),
+} ThunarVfsScandirFlags;
+
+GList *thunar_vfs_scandir (ThunarVfsPath *path,
+ ThunarVfsScandirFlags flags,
+ GCompareFunc func,
+ GError **error) G_GNUC_INTERNAL;
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VFS_SCANDIR_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-thumb-jpeg.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-thumb-jpeg.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-thumb-jpeg.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,337 @@
+/* $Id: thunar-vfs-thumb-jpeg.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Based on code written by Alexander Larsson <alexl at redhat.com>
+ * for libgnomeui.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_MMAN_H
+#include <sys/mman.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#ifdef HAVE_SETJMP_H
+#include <setjmp.h>
+#endif
+#include <stdio.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#ifdef HAVE_JPEGLIB_H
+#undef HAVE_STDDEF_H
+#undef HAVE_STDLIB_H
+#include<jpeglib.h>
+#endif
+
+#include <exo/exo.h>
+
+#include <thunar-vfs/thunar-vfs-thumb-jpeg.h>
+#include <thunar-vfs/thunar-vfs-alias.h>
+
+
+
+#if defined(HAVE_LIBJPEG) && defined(HAVE_MMAP)
+typedef struct
+{
+ struct jpeg_error_mgr mgr;
+ jmp_buf setjmp_buffer;
+} TvtjErrorHandler;
+
+
+
+static void
+fatal_error_handler (j_common_ptr cinfo)
+{
+ TvtjErrorHandler *handler = (TvtjErrorHandler *) cinfo->err;
+ longjmp (handler->setjmp_buffer, 1);
+}
+
+
+
+static gboolean
+tvtj_fill_input_buffer (j_decompress_ptr cinfo)
+{
+ struct jpeg_source_mgr *source = cinfo->src;
+
+ /* return a fake EOI marker so we will eventually terminate */
+ if (G_LIKELY (source->bytes_in_buffer == 0))
+ {
+ static const JOCTET FAKE_EOI[2] =
+ {
+ (JOCTET) 0xff,
+ (JOCTET) JPEG_EOI,
+ };
+
+ source->next_input_byte = FAKE_EOI;
+ source->bytes_in_buffer = G_N_ELEMENTS (FAKE_EOI);
+ }
+
+ return TRUE;
+}
+
+
+
+static void
+tvtj_skip_input_data (j_decompress_ptr cinfo,
+ glong num_bytes)
+{
+ struct jpeg_source_mgr *source = cinfo->src;
+
+ if (G_LIKELY (num_bytes > 0))
+ {
+ num_bytes = MIN (num_bytes, source->bytes_in_buffer);
+
+ source->next_input_byte += num_bytes;
+ source->bytes_in_buffer -= num_bytes;
+ }
+}
+
+
+
+static inline gint
+tvtj_denom (gint width,
+ gint height,
+ gint size)
+{
+ if (width > size * 8 && height > size * 8)
+ return 8;
+ else if (width > size * 4 && height > size * 4)
+ return 4;
+ else if (width > size * 2 && height > size * 2)
+ return 2;
+ else
+ return 1;
+}
+
+
+
+static inline void
+tvtj_convert_cmyk_to_rgb (j_decompress_ptr cinfo,
+ guchar *line)
+{
+ guchar *p;
+ gint c, k, m, n, y;
+
+ g_return_if_fail (cinfo != NULL);
+ g_return_if_fail (cinfo->output_components == 4);
+ g_return_if_fail (cinfo->out_color_space == JCS_CMYK);
+
+ for (n = cinfo->output_width, p = line; n > 0; --n, p += 4)
+ {
+ c = p[0];
+ m = p[1];
+ y = p[2];
+ k = p[3];
+
+ if (cinfo->saw_Adobe_marker)
+ {
+ p[0] = k * c / 255;
+ p[1] = k * m / 255;
+ p[2] = k * y / 255;
+ }
+ else
+ {
+ p[0] = (255 - k) * (255 - c) / 255;
+ p[1] = (255 - k) * (255 - m) / 255;
+ p[2] = (255 - k) * (255 - y) / 255;
+ }
+
+ p[3] = 255;
+ }
+}
+#endif
+
+
+
+/**
+ * thunar_vfs_thumb_jpeg_load:
+ * @path
+ * @size
+ *
+ * Return value:
+ **/
+GdkPixbuf*
+thunar_vfs_thumb_jpeg_load (const gchar *path,
+ gint size)
+{
+#if defined(HAVE_LIBJPEG) && defined(HAVE_MMAP)
+ struct jpeg_decompress_struct cinfo;
+ struct jpeg_source_mgr source;
+ TvtjErrorHandler handler;
+ struct stat statb;
+ JOCTET *content;
+ guchar *lines[1];
+ guchar *buffer = NULL;
+ guchar *pixels = NULL;
+ guchar *p;
+ gint out_num_components;
+ gint fd;
+ gint n;
+
+ /* try to open the file at the given path */
+ fd = open (path, O_RDONLY);
+ if (G_UNLIKELY (fd < 0))
+ return NULL;
+
+ /* determine the status of the file */
+ if (G_UNLIKELY (fstat (fd, &statb) < 0 || statb.st_size == 0))
+ {
+ close (fd);
+ return NULL;
+ }
+
+ /* try to mmap the file */
+ content = mmap (NULL, statb.st_size, PROT_READ, MAP_SHARED, fd, 0);
+
+ /* we can safely close the file now */
+ close (fd);
+
+ /* verify that the mmap was successful */
+ if (G_UNLIKELY (content == (JOCTET *) MAP_FAILED))
+ return NULL;
+
+ /* setup JPEG error handling */
+ cinfo.err = jpeg_std_error (&handler.mgr);
+ handler.mgr.error_exit = fatal_error_handler;
+ handler.mgr.output_message = (gpointer) exo_noop;
+ if (setjmp (handler.setjmp_buffer))
+ goto error;
+
+ /* setup the source */
+ source.bytes_in_buffer = statb.st_size;
+ source.next_input_byte = content;
+ source.init_source = (gpointer) exo_noop;
+ source.fill_input_buffer = tvtj_fill_input_buffer;
+ source.skip_input_data = tvtj_skip_input_data;
+ source.resync_to_restart = jpeg_resync_to_restart;
+ source.term_source = (gpointer) exo_noop;
+
+ /* setup the JPEG decompress struct */
+ jpeg_create_decompress (&cinfo);
+ cinfo.src = &source;
+
+ /* read the JPEG header from the file */
+ jpeg_read_header (&cinfo, TRUE);
+
+ /* configure the JPEG decompress struct */
+ cinfo.scale_num = 1;
+ cinfo.scale_denom = tvtj_denom (cinfo.image_width, cinfo.image_height, size);
+ cinfo.dct_method = JDCT_FASTEST;
+ cinfo.do_fancy_upsampling = FALSE;
+
+ /* calculate the output dimensions */
+ jpeg_calc_output_dimensions (&cinfo);
+
+ /* verify the JPEG color space */
+ if (cinfo.out_color_space != JCS_GRAYSCALE
+ && cinfo.out_color_space != JCS_CMYK
+ && cinfo.out_color_space != JCS_RGB)
+ {
+ /* we don't support this color space */
+ goto error;
+ }
+
+ /* start the decompression */
+ jpeg_start_decompress (&cinfo);
+
+ /* allocate the pixel buffer and extra space for grayscale data */
+ if (G_LIKELY (cinfo.num_components != 1))
+ {
+ pixels = g_malloc (cinfo.output_width * cinfo.output_height * cinfo.num_components);
+ out_num_components = cinfo.num_components;
+ lines[0] = pixels;
+ }
+ else
+ {
+ pixels = g_malloc (cinfo.output_width * cinfo.output_height * 3);
+ buffer = g_malloc (cinfo.output_width);
+ out_num_components = 3;
+ lines[0] = buffer;
+ }
+
+ /* process the JPEG data */
+ for (p = pixels; cinfo.output_scanline < cinfo.output_height; )
+ {
+ jpeg_read_scanlines (&cinfo, lines, 1);
+
+ /* convert the data to RGB */
+ if (cinfo.num_components == 1)
+ {
+ for (n = 0; n < cinfo.output_width; ++n)
+ {
+ p[n * 3 + 0] = buffer[n];
+ p[n * 3 + 1] = buffer[n];
+ p[n * 3 + 2] = buffer[n];
+ }
+ p += cinfo.output_width * 3;
+ }
+ else
+ {
+ if (cinfo.out_color_space == JCS_CMYK)
+ tvtj_convert_cmyk_to_rgb (&cinfo, lines[0]);
+ lines[0] += cinfo.output_width * cinfo.num_components;
+ }
+ }
+
+ /* release the grayscale buffer */
+ g_free (buffer);
+ buffer = NULL;
+
+ /* finish the JPEG decompression */
+ jpeg_finish_decompress (&cinfo);
+ jpeg_destroy_decompress (&cinfo);
+
+ /* unmap the file content */
+ munmap (content, statb.st_size);
+
+ /* generate a pixbuf for the pixel data */
+ return gdk_pixbuf_new_from_data (pixels, GDK_COLORSPACE_RGB,
+ (cinfo.out_color_components == 4), 8,
+ cinfo.output_width, cinfo.output_height,
+ cinfo.output_width * out_num_components,
+ (GdkPixbufDestroyNotify) g_free, NULL);
+
+error:
+ jpeg_destroy_decompress (&cinfo);
+ munmap (content, statb.st_size);
+ g_free (buffer);
+ g_free (pixels);
+#endif
+
+ return NULL;
+}
+
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-thumb-jpeg.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-thumb-jpeg.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-thumb-jpeg.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,37 @@
+/* $Id: thunar-vfs-thumb-jpeg.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#if !defined (THUNAR_VFS_INSIDE_THUNAR_VFS_H) && !defined (THUNAR_VFS_COMPILATION)
+#error "Only <thunar-vfs/thunar-vfs.h> can be included directly, this file may disappear or change contents."
+#endif
+
+#ifndef __THUNAR_VFS_THUMB_JPEG_H__
+#define __THUNAR_VFS_THUMB_JPEG_H__
+
+#include <gdk-pixbuf/gdk-pixbuf.h>
+
+G_BEGIN_DECLS;
+
+GdkPixbuf *thunar_vfs_thumb_jpeg_load (const gchar *path,
+ gint size) G_GNUC_INTERNAL;
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VFS_THUMB_JPEG_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-thumb.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-thumb.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-thumb.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,917 @@
+/* $Id: thunar-vfs-thumb.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2004-2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_WAIT_H
+#include <sys/wait.h>
+#endif
+
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#include <stdio.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <png.h>
+
+#include <thunar-vfs/thunar-vfs-enum-types.h>
+#include <thunar-vfs/thunar-vfs-mime-database.h>
+#include <thunar-vfs/thunar-vfs-thumb-jpeg.h>
+#include <thunar-vfs/thunar-vfs-thumb.h>
+#include <thunar-vfs/thunar-vfs-alias.h>
+
+#ifdef HAVE_GCONF
+#include <gconf/gconf-client.h>
+#endif
+
+#if GLIB_CHECK_VERSION(2,6,0)
+#include <glib/gstdio.h>
+#else
+#define g_rename(oldfilename, newfilename) (rename ((oldfilename), (newfilename)))
+#define g_unlink(filename) (unlink ((filename)))
+#endif
+
+
+
+enum
+{
+ PROP_0,
+ PROP_SIZE,
+};
+
+
+
+static void thunar_vfs_thumb_factory_class_init (ThunarVfsThumbFactoryClass *klass);
+static void thunar_vfs_thumb_factory_init (ThunarVfsThumbFactory *factory);
+static void thunar_vfs_thumb_factory_finalize (GObject *object);
+static void thunar_vfs_thumb_factory_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void thunar_vfs_thumb_factory_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+
+
+
+struct _ThunarVfsThumbFactoryClass
+{
+ GObjectClass __parent__;
+};
+
+struct _ThunarVfsThumbFactory
+{
+ GObject __parent__;
+
+ ThunarVfsMimeDatabase *mime_database;
+ ThunarVfsMimeInfo *mime_image_jpeg;
+
+ GHashTable *pixbuf_mime_infos;
+
+ gchar *base_path;
+ gchar *fail_path;
+ ThunarVfsThumbSize size;
+
+#ifdef HAVE_GCONF
+ GConfClient *client;
+ GHashTable *scripts;
+#endif
+};
+
+
+
+G_DEFINE_TYPE (ThunarVfsThumbFactory, thunar_vfs_thumb_factory, G_TYPE_OBJECT);
+
+
+
+static void
+thunar_vfs_thumb_factory_class_init (ThunarVfsThumbFactoryClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_vfs_thumb_factory_finalize;
+ gobject_class->get_property = thunar_vfs_thumb_factory_get_property;
+ gobject_class->set_property = thunar_vfs_thumb_factory_set_property;
+
+ /**
+ * ThunarVfsThumbFactory::size:
+ *
+ * The #ThunarVfsThumbSize at which thumbnails should be
+ * looked up and saved for this #ThunarVfsThumbFactory.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_SIZE,
+ g_param_spec_enum ("size",
+ _("Size"),
+ _("The desired thumbnail size"),
+ THUNAR_VFS_TYPE_VFS_THUMB_SIZE,
+ THUNAR_VFS_THUMB_SIZE_NORMAL,
+ G_PARAM_CONSTRUCT_ONLY | EXO_PARAM_READWRITE));
+}
+
+
+
+static void
+thunar_vfs_thumb_factory_init (ThunarVfsThumbFactory *factory)
+{
+ ThunarVfsMimeInfo *mime_info;
+ GSList *formats;
+ GSList *lp;
+ gchar **mime_types;
+ guint n;
+
+ /* take a reference on the mime database */
+ factory->mime_database = thunar_vfs_mime_database_get_default ();
+
+ /* take a reference on the image/jpeg mime info */
+ factory->mime_image_jpeg = thunar_vfs_mime_database_get_info (factory->mime_database, "image/jpeg");
+
+ /* pre-allocate the failed path, so we don't need to do that on every method call */
+ factory->fail_path = g_strconcat (xfce_get_homedir (),
+ G_DIR_SEPARATOR_S ".thumbnails"
+ G_DIR_SEPARATOR_S "fail"
+ G_DIR_SEPARATOR_S "thunar-vfs"
+ G_DIR_SEPARATOR_S, NULL);
+
+ /* we default to normal size here, so we don't need to override the constructor */
+ factory->base_path = g_strconcat (xfce_get_homedir (), G_DIR_SEPARATOR_S ".thumbnails" G_DIR_SEPARATOR_S "normal" G_DIR_SEPARATOR_S, NULL);
+ factory->size = THUNAR_VFS_THUMB_SIZE_NORMAL;
+
+ /* determine the MIME types supported by GdkPixbuf */
+ factory->pixbuf_mime_infos = g_hash_table_new_full (g_direct_hash, g_direct_equal, (GDestroyNotify) thunar_vfs_mime_info_unref, NULL);
+ formats = gdk_pixbuf_get_formats ();
+ for (lp = formats; lp != NULL; lp = lp->next)
+ if (!gdk_pixbuf_format_is_disabled (lp->data))
+ {
+ mime_types = gdk_pixbuf_format_get_mime_types (lp->data);
+ for (n = 0; mime_types[n] != NULL; ++n)
+ {
+ mime_info = thunar_vfs_mime_database_get_info (factory->mime_database, mime_types[n]);
+ if (G_LIKELY (mime_info != NULL))
+ g_hash_table_replace (factory->pixbuf_mime_infos, mime_info, GUINT_TO_POINTER (1));
+ }
+ g_strfreev (mime_types);
+ }
+ g_slist_free (formats);
+
+#ifdef HAVE_GCONF
+ /* grab a reference on the default GConf client */
+ factory->client = gconf_client_get_default ();
+
+ /* allocate the hash table for the GNOME thumbnailer scripts */
+ factory->scripts = g_hash_table_new_full (g_direct_hash, g_direct_equal, (GDestroyNotify) thunar_vfs_mime_info_unref, g_free);
+
+ /* check if the GNOME thumbnailers are enabled */
+ if (!gconf_client_get_bool (factory->client, "/desktop/gnome/thumbnailers/disable_all", NULL))
+ {
+ /* determine the MIME types supported by the GNOME thumbnailers */
+ formats = gconf_client_all_dirs (factory->client, "/desktop/gnome/thumbnailers", NULL);
+ for (lp = formats; lp != NULL; lp = lp->next)
+ {
+ gchar *mime_type;
+ gchar *script;
+ gchar *format = lp->data;
+ gchar key[1024];
+
+ /* check if the given thumbnailer is enabled */
+ g_snprintf (key, sizeof (key), "%s/enable", format);
+ if (gconf_client_get_bool (factory->client, key, NULL))
+ {
+ /* determine the command */
+ g_snprintf (key, sizeof (key), "%s/command", format);
+ script = gconf_client_get_string (factory->client, key, NULL);
+ if (G_LIKELY (script != NULL))
+ {
+ mime_type = strrchr (format, '/');
+ if (G_LIKELY (mime_type != NULL))
+ {
+ /* skip past slash */
+ ++mime_type;
+
+ /* convert '@' to slash in the mime_type */
+ for (n = 0; mime_type[n] != '\0'; ++n)
+ if (G_UNLIKELY (mime_type[n] == '@'))
+ mime_type[n] = '/';
+
+ /* determine the mime info for the given mime_type */
+ mime_info = thunar_vfs_mime_database_get_info (factory->mime_database, mime_type);
+ if (G_LIKELY (mime_info != NULL))
+ {
+ g_hash_table_replace (factory->scripts, mime_info, script);
+ script = NULL;
+ }
+ }
+ }
+
+ g_free (script);
+ }
+
+ g_free (format);
+ }
+
+ g_slist_free (formats);
+ }
+#endif
+}
+
+
+
+static void
+thunar_vfs_thumb_factory_finalize (GObject *object)
+{
+ ThunarVfsThumbFactory *factory = THUNAR_VFS_THUMB_FACTORY (object);
+
+#ifdef HAVE_GCONF
+ /* disconnect from the GConf client */
+ g_object_unref (G_OBJECT (factory->client));
+
+ /* release the scripts hash table */
+ g_hash_table_destroy (factory->scripts);
+#endif
+
+ /* release the image/jpeg mime info */
+ thunar_vfs_mime_info_unref (factory->mime_image_jpeg);
+
+ /* release the reference on the mime database */
+ g_object_unref (G_OBJECT (factory->mime_database));
+
+ /* destroy the hash table with mime infos supported by GdkPixbuf */
+ g_hash_table_destroy (factory->pixbuf_mime_infos);
+
+ /* free the thumbnail paths */
+ g_free (factory->base_path);
+ g_free (factory->fail_path);
+
+ (*G_OBJECT_CLASS (thunar_vfs_thumb_factory_parent_class)->finalize) (object);
+}
+
+
+
+static void
+thunar_vfs_thumb_factory_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarVfsThumbFactory *factory = THUNAR_VFS_THUMB_FACTORY (object);
+
+ switch (prop_id)
+ {
+ case PROP_SIZE:
+ g_value_set_enum (value, factory->size);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunar_vfs_thumb_factory_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarVfsThumbFactory *factory = THUNAR_VFS_THUMB_FACTORY (object);
+
+ switch (prop_id)
+ {
+ case PROP_SIZE:
+ if (G_UNLIKELY (g_value_get_enum (value) == THUNAR_VFS_THUMB_SIZE_LARGE))
+ {
+ /* free the previous base path */
+ g_free (factory->base_path);
+
+ /* setup the new base path */
+ factory->base_path = g_strconcat (xfce_get_homedir (), G_DIR_SEPARATOR_S ".thumbnails" G_DIR_SEPARATOR_S "large" G_DIR_SEPARATOR_S, NULL);
+ factory->size = THUNAR_VFS_THUMB_SIZE_LARGE;
+ }
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+/**
+ * thunar_vfs_thumb_factory_new:
+ * @size : the desired #ThunarVfsThumbSize.
+ *
+ * Allocates a new #ThunarVfsThumbFactory, that is able to
+ * load and store thumbnails in the given @size.
+ *
+ * The caller is responsible to free the returned object
+ * using g_object_unref() when no longer needed.
+ *
+ * Return value: the newly allocated #ThunarVfsThumbFactory.
+ **/
+ThunarVfsThumbFactory*
+thunar_vfs_thumb_factory_new (ThunarVfsThumbSize size)
+{
+ return g_object_new (THUNAR_VFS_TYPE_THUMB_FACTORY, "size", size, NULL);
+}
+
+
+
+/**
+ * thunar_vfs_thumb_factory_lookup:
+ * @factory : a #ThunarVfsThumbFactory.
+ * @info : the #ThunarVfsInfo of the original file.
+ *
+ * Looks up the path to a thumbnail for @info in @factory and returns
+ * the absolute path to the thumbnail file if a valid thumbnail is
+ * found. Else %NULL is returned.
+ *
+ * The usage of this method is thread-safe.
+ *
+ * Return value: the path to a valid thumbnail for @info in @factory
+ * or %NULL if no valid thumbnail was found.
+ **/
+gchar*
+thunar_vfs_thumb_factory_lookup_thumbnail (ThunarVfsThumbFactory *factory,
+ const ThunarVfsInfo *info)
+{
+ gchar uri[THUNAR_VFS_PATH_MAXURILEN];
+ gchar *path;
+ gchar *md5;
+
+ g_return_val_if_fail (THUNAR_VFS_IS_THUMB_FACTORY (factory), NULL);
+ g_return_val_if_fail (info != NULL, NULL);
+
+ /* determine the URI for the path */
+ if (thunar_vfs_path_to_uri (info->path, uri, sizeof (uri), NULL) < 0)
+ return FALSE;
+
+ /* determine the path to the thumbnail for the factory */
+ md5 = exo_str_get_md5_str (uri);
+ path = g_strconcat (factory->base_path, md5, ".png", NULL);
+ g_free (md5);
+
+ /* check if the path contains a valid thumbnail */
+ if (thunar_vfs_thumbnail_is_valid (path, uri, info->mtime))
+ return path;
+
+ /* no valid thumbnail in the global repository */
+ g_free (path);
+
+ return NULL;
+}
+
+
+
+/**
+ * thunar_vfs_thumb_factory_can_thumbnail:
+ * @factory : a #ThunarVfsThumbFactory.
+ * @info : the #ThunarVfsInfo of a file.
+ *
+ * Checks if @factory can generate a thumbnail for
+ * the file specified by @info.
+ *
+ * The usage of this method is thread-safe.
+ *
+ * Return value: %TRUE if @factory can generate a thumbnail for @info.
+ **/
+gboolean
+thunar_vfs_thumb_factory_can_thumbnail (ThunarVfsThumbFactory *factory,
+ const ThunarVfsInfo *info)
+{
+ ThunarVfsPath *path;
+ const gchar *name;
+
+ g_return_val_if_fail (THUNAR_VFS_IS_THUMB_FACTORY (factory), FALSE);
+ g_return_val_if_fail (info != NULL, FALSE);
+
+ /* we can only handle thumbnails for regular files */
+ if (G_UNLIKELY (info->type != THUNAR_VFS_FILE_TYPE_REGULAR))
+ return FALSE;
+
+ /* we really don't want to generate a thumbnail for a thumbnail */
+ for (path = info->path; path != NULL; path = thunar_vfs_path_get_parent (path))
+ {
+ name = thunar_vfs_path_get_name (path);
+ if (strcmp (name, ".thumbnails") == 0 || strcmp (name, ".thumblocal") == 0)
+ return FALSE;
+ }
+
+ /* check GdkPixbuf supports the given mime info */
+ if (g_hash_table_lookup (factory->pixbuf_mime_infos, info->mime_info))
+ return !thunar_vfs_thumb_factory_has_failed_thumbnail (factory, info);
+
+#ifdef HAVE_GCONF
+ /* check if we have a GNOME thumbnailer for the given mime info */
+ if (g_hash_table_lookup (factory->scripts, info->mime_info) != NULL)
+ return !thunar_vfs_thumb_factory_has_failed_thumbnail (factory, info);
+#endif
+
+ return FALSE;
+}
+
+
+
+/**
+ * thunar_vfs_thumb_factory_has_failed_thumbnail:
+ * @factory : a #ThunarVfsThumbFactory.
+ * @info : the #ThunarVfsInfo of a file.
+ *
+ * Checks whether we know that @factory won't be able to generate
+ * a thumbnail for the file referred to by @info.
+ *
+ * The usage of this method is thread-safe.
+ *
+ * Return value: %TRUE if @factory knows that it cannot generate
+ * a thumbnail for @info, else %TRUE.
+ **/
+gboolean
+thunar_vfs_thumb_factory_has_failed_thumbnail (ThunarVfsThumbFactory *factory,
+ const ThunarVfsInfo *info)
+{
+ gchar uri[THUNAR_VFS_PATH_MAXURILEN];
+ gchar path[4096];
+ gchar *md5;
+
+ g_return_val_if_fail (THUNAR_VFS_IS_THUMB_FACTORY (factory), FALSE);
+ g_return_val_if_fail (info != NULL, FALSE);
+
+ /* determine the URI of the info */
+ if (thunar_vfs_path_to_uri (info->path, uri, sizeof (uri), NULL) < 0)
+ return FALSE;
+
+ /* determine the path to the thumbnail */
+ md5 = exo_str_get_md5_str (uri);
+ g_snprintf (path, sizeof (path), "%s%s.png", factory->fail_path, md5);
+ g_free (md5);
+
+ return thunar_vfs_thumbnail_is_valid (path, uri, info->mtime);
+}
+
+
+
+#ifdef HAVE_GCONF
+static gchar*
+gnome_thumbnailer_script_expand (const gchar *script,
+ const gchar *ipath,
+ const gchar *opath,
+ gint size)
+{
+ const gchar *p;
+ GString *s;
+ gchar *quoted;
+ gchar *uri;
+
+ s = g_string_new (NULL);
+ for (p = script; *p != '\0'; ++p)
+ {
+ if (G_LIKELY (*p != '%'))
+ {
+ g_string_append_c (s, *p);
+ continue;
+ }
+
+ switch (*++p)
+ {
+ case 'u':
+ uri = g_filename_to_uri (ipath, NULL, NULL);
+ if (G_LIKELY (uri != NULL))
+ {
+ quoted = g_shell_quote (uri);
+ g_string_append (s, quoted);
+ g_free (quoted);
+ g_free (uri);
+ }
+ break;
+
+ case 'i':
+ quoted = g_shell_quote (ipath);
+ g_string_append (s, quoted);
+ g_free (quoted);
+ break;
+
+ case 'o':
+ quoted = g_shell_quote (opath);
+ g_string_append (s, quoted);
+ g_free (quoted);
+ break;
+
+ case 's':
+ g_string_append_printf (s, "%d", size);
+ break;
+
+ case '%':
+ g_string_append_c (s, '%');
+ break;
+
+ case '\0':
+ --p;
+ break;
+
+ default:
+ break;
+ }
+ }
+ return g_string_free (s, FALSE);
+}
+
+static GdkPixbuf*
+gnome_thumbnailer_script_run (const gchar *script,
+ const gchar *path,
+ gint size)
+{
+ GdkPixbuf *pixbuf = NULL;
+ gchar *tmp_path;
+ gchar *command;
+ gint status;
+ gint fd;
+
+ /* create a temporary file for the thumbnailer */
+ fd = g_file_open_tmp (".thunar-vfs-thumbnail.XXXXXX", &tmp_path, NULL);
+ if (G_UNLIKELY (fd < 0))
+ return NULL;
+
+ /* determine the command for the script */
+ command = gnome_thumbnailer_script_expand (script, path, tmp_path, size);
+ if (G_LIKELY (command != NULL))
+ {
+ /* run the thumbnailer script and load the generated file */
+ if (g_spawn_command_line_sync (command, NULL, NULL, &status, NULL) && WIFEXITED (status) && WEXITSTATUS (status) == 0)
+ pixbuf = gdk_pixbuf_new_from_file (tmp_path, NULL);
+ }
+
+ /* unlink the temporary file */
+ g_unlink (tmp_path);
+
+ /* close the temporary file */
+ close (fd);
+
+ /* cleanup */
+ g_free (tmp_path);
+ g_free (command);
+
+ return pixbuf;
+}
+#endif
+
+
+
+/**
+ * thunar_vfs_thumb_factory_generate_thumbnail:
+ * @factory : a #ThunarVfsThumbFactory.
+ * @info : the #ThunarVfsInfo of the file for which a thumbnail
+ * should be generated.
+ *
+ * Tries to generate a thumbnail for the file referred to by @info in
+ * @factory.
+ *
+ * The caller is responsible to free the returned #GdkPixbuf using
+ * g_object_unref() when no longer needed.
+ *
+ * The usage of this method is thread-safe.
+ *
+ * Return value: the thumbnail for the @uri or %NULL.
+ **/
+GdkPixbuf*
+thunar_vfs_thumb_factory_generate_thumbnail (ThunarVfsThumbFactory *factory,
+ const ThunarVfsInfo *info)
+{
+ GdkPixbuf *pixbuf = NULL;
+ GdkPixbuf *scaled;
+#ifdef HAVE_GCONF
+ gchar *script;
+#endif
+ gchar *path;
+ gint size;
+
+ g_return_val_if_fail (THUNAR_VFS_IS_THUMB_FACTORY (factory), NULL);
+ g_return_val_if_fail (info != NULL, NULL);
+
+ /* determine the pixel size of the thumbnail */
+ size = G_LIKELY (factory->size == THUNAR_VFS_THUMB_SIZE_NORMAL) ? 128 : 256;
+
+ /* determine the absolute path to the file */
+ path = thunar_vfs_path_dup_string (info->path);
+
+#ifdef HAVE_GCONF
+ /* check if we have a GNOME thumbnailer for the given mime info */
+ script = g_hash_table_lookup (factory->scripts, info->mime_info);
+ if (G_UNLIKELY (script != NULL))
+ pixbuf = gnome_thumbnailer_script_run (script, path, size);
+#endif
+
+ /* try the fast JPEG thumbnailer */
+ if (G_LIKELY (pixbuf == NULL && info->mime_info == factory->mime_image_jpeg))
+ pixbuf = thunar_vfs_thumb_jpeg_load (path, size);
+
+ /* fallback to GdkPixbuf based loading */
+ if (G_LIKELY (pixbuf == NULL))
+ pixbuf = gdk_pixbuf_new_from_file (path, NULL);
+
+ /* check if we need to scale the image */
+ if (pixbuf != NULL && (gdk_pixbuf_get_width (pixbuf) > size || gdk_pixbuf_get_height (pixbuf) > size))
+ {
+ scaled = exo_gdk_pixbuf_scale_ratio (pixbuf, size);
+ g_object_unref (G_OBJECT (pixbuf));
+ pixbuf = scaled;
+ }
+
+ /* cleanup */
+ g_free (path);
+
+ return pixbuf;
+}
+
+
+
+/**
+ * thunar_vfs_thumb_factory_store_thumbnail:
+ * @factory : a #ThunarVfsThumbFactory.
+ * @pixbuf : the thumbnail #GdkPixbuf to store or %NULL
+ * to remember the thumbnail for @uri as failed.
+ * @info : the #ThunarVfsInfo of the original file.
+ * @error : return location for errors or %NULL.
+ *
+ * Stores @pixbuf as thumbnail for @info in the right place, according
+ * to the size set for @factory.
+ *
+ * If you specify %NULL for @pixbuf, the @factory will remember that
+ * the thumbnail generation for @info failed.
+ *
+ * The usage of this method is thread-safe.
+ *
+ * Return value: %TRUE if the thumbnail was stored successfully,
+ * else %FALSE.
+ **/
+gboolean
+thunar_vfs_thumb_factory_store_thumbnail (ThunarVfsThumbFactory *factory,
+ const GdkPixbuf *pixbuf,
+ const ThunarVfsInfo *info,
+ GError **error)
+{
+ const gchar *base_path;
+ GdkPixbuf *thumbnail;
+ gboolean succeed;
+ gchar *dst_path;
+ gchar *tmp_path;
+ gchar *mtime;
+ gchar *size;
+ gchar *md5;
+ gchar *uri;
+ gint tmp_fd;
+
+ g_return_val_if_fail (THUNAR_VFS_IS_THUMB_FACTORY (factory), FALSE);
+ g_return_val_if_fail (pixbuf == NULL || GDK_IS_PIXBUF (pixbuf), FALSE);
+ g_return_val_if_fail (info != NULL, FALSE);
+ g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+
+ /* check whether we should save a thumbnail or remember failed generation */
+ base_path = G_LIKELY (pixbuf != NULL) ? factory->base_path : factory->fail_path;
+
+ /* verify that the target directory exists */
+ if (!xfce_mkdirhier (base_path, 0700, error))
+ return FALSE;
+
+ /* determine the URI of the file */
+ uri = thunar_vfs_path_dup_uri (info->path);
+
+ /* determine the MD5 sum for the URI */
+ md5 = exo_str_get_md5_str (uri);
+
+ /* try to open a temporary file to write the thumbnail to */
+ tmp_path = g_strconcat (base_path, md5, ".png.XXXXXX", NULL);
+ tmp_fd = g_mkstemp (tmp_path);
+ if (G_UNLIKELY (tmp_fd < 0))
+ {
+ g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno), g_strerror (errno));
+ g_free (md5);
+ g_free (uri);
+ return FALSE;
+ }
+
+ /* close the temporary file as it exists now, and hence
+ * we successfully avoided a race condition there.
+ */
+ close (tmp_fd);
+
+ /* generate a 1x1 image if we're storing a failure */
+ thumbnail = (pixbuf != NULL) ? GDK_PIXBUF (pixbuf) : gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, 1, 1);
+
+ /* determine string representations for the modification time and size */
+ mtime = g_strdup_printf ("%lu", (gulong) info->mtime);
+ size = g_strdup_printf ("%" G_GUINT64_FORMAT, (guint64) info->size);
+
+ /* write the thumbnail to the temporary location */
+ succeed = gdk_pixbuf_save (thumbnail, tmp_path, "png", error,
+ "tEXt::Thumb::URI", uri,
+ "tEXt::Thumb::Size", size,
+ "tEXt::Thumb::MTime", mtime,
+ "tEXt::Thumb::Mimetype", thunar_vfs_mime_info_get_name (info->mime_info),
+ "tEXt::Software", "Thunar-VFS Thumbnail Factory",
+ NULL);
+
+ /* drop the failed thumbnail pixbuf (if any) */
+ if (G_UNLIKELY (pixbuf == NULL))
+ g_object_unref (G_OBJECT (thumbnail));
+
+ /* rename the file to the final location */
+ if (G_LIKELY (succeed))
+ {
+ dst_path = g_strconcat (base_path, md5, ".png", NULL);
+ if (G_UNLIKELY (g_rename (tmp_path, dst_path) < 0))
+ {
+ g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno), g_strerror (errno));
+ succeed = FALSE;
+ }
+ g_free (dst_path);
+ }
+
+ /* cleanup */
+ g_free (tmp_path);
+ g_free (mtime);
+ g_free (size);
+ g_free (md5);
+ g_free (uri);
+
+ return succeed;
+}
+
+
+
+/**
+ * thunar_vfs_thumbnail_for_path:
+ * @path : the #ThunarVfsPath to the original file.
+ * @size : the desired #ThunarVfsThumbSize.
+ *
+ * Returns the absolute path to the thumbnail location
+ * for the file described by @path, at the given @size.
+ *
+ * The caller is responsible to free the returned
+ * string using g_free() when no longer needed.
+ *
+ * The usage of this method is thread-safe.
+ *
+ * Return value: the absolute path to the thumbnail
+ * location for @path at @size.
+ **/
+gchar*
+thunar_vfs_thumbnail_for_path (const ThunarVfsPath *path,
+ ThunarVfsThumbSize size)
+{
+ gchar *thumbnail;
+ gchar *md5;
+ gchar *uri;
+
+ uri = thunar_vfs_path_dup_uri (path);
+ md5 = exo_str_get_md5_str (uri);
+ thumbnail = g_strconcat (xfce_get_homedir (),
+ G_DIR_SEPARATOR_S ".thumbnails" G_DIR_SEPARATOR_S,
+ (size == THUNAR_VFS_THUMB_SIZE_NORMAL) ? "normal" : "large",
+ G_DIR_SEPARATOR_S, md5, ".png", NULL);
+ g_free (md5);
+ g_free (uri);
+
+ return thumbnail;
+}
+
+
+
+/**
+ * thunar_vfs_thumbnail_is_valid:
+ * @thumbnail : the absolute path to a thumbnail file.
+ * @uri : the URI of the original file.
+ * @mtime : the modification time of the original file.
+ *
+ * Checks whether the file located at @thumbnail contains a
+ * valid thumbnail for the file described by @uri and @mtime.
+ *
+ * The usage of this method is thread-safe.
+ *
+ * Return value: %TRUE if @thumbnail is a valid thumbnail for
+ * the file referred to by @uri, else %FALSE.
+ **/
+gboolean
+thunar_vfs_thumbnail_is_valid (const gchar *thumbnail,
+ const gchar *uri,
+ ThunarVfsFileTime mtime)
+{
+ png_structp png_ptr;
+ png_infop info_ptr;
+ png_textp text_ptr;
+ gboolean is_valid = FALSE;
+ gchar signature[4];
+ FILE *fp;
+ gint n_checked;
+ gint n_text;
+ gint n;
+
+ g_return_val_if_fail (g_path_is_absolute (thumbnail), FALSE);
+ g_return_val_if_fail (uri != NULL && *uri != '\0', FALSE);
+
+ /* try to open the thumbnail file */
+ fp = fopen (thumbnail, "r");
+ if (G_UNLIKELY (fp == NULL))
+ return FALSE;
+
+ /* read the png signature */
+ if (G_UNLIKELY (fread (signature, 1, sizeof (signature), fp) != sizeof (signature)))
+ goto done0;
+
+ /* verify the png signature */
+ if (G_LIKELY (png_check_sig ((png_bytep) signature, sizeof (signature))))
+ rewind (fp);
+ else
+ goto done0;
+
+ /* allocate the png read structure */
+ png_ptr = png_create_read_struct (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
+ if (G_UNLIKELY (png_ptr == NULL))
+ goto done0;
+
+ /* allocate the png info structure */
+ info_ptr = png_create_info_struct (png_ptr);
+ if (G_UNLIKELY (info_ptr == NULL))
+ {
+ png_destroy_read_struct (&png_ptr, NULL, NULL);
+ goto done0;
+ }
+
+ /* read the png info from the file */
+ png_init_io (png_ptr, fp);
+ png_read_info (png_ptr, info_ptr);
+
+ /* verify the tEXt attributes defined by the thumbnail spec */
+ n_text = png_get_text (png_ptr, info_ptr, &text_ptr, &n_text);
+ for (n = 0, n_checked = 0; n_checked < 2 && n < n_text; ++n)
+ {
+ if (strcmp (text_ptr[n].key, "Thumb::MTime") == 0)
+ {
+ /* verify the modification time */
+ if (G_UNLIKELY (atol (text_ptr[n].text) != mtime))
+ goto done1;
+ ++n_checked;
+ }
+ else if (strcmp (text_ptr[n].key, "Thumb::URI") == 0)
+ {
+ /* check if the URIs are equal */
+ if (strcmp (text_ptr[n].text, uri) != 0)
+ goto done1;
+ ++n_checked;
+ }
+ }
+
+ /* check if all required attributes were checked successfully */
+ is_valid = (n_checked == 2);
+
+done1:
+ png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
+done0:
+ fclose (fp);
+ return is_valid;
+}
+
+
+
+#define __THUNAR_VFS_THUMB_C__
+#include <thunar-vfs/thunar-vfs-aliasdef.c>
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-thumb.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-thumb.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-thumb.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,86 @@
+/* $Id: thunar-vfs-thumb.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2004-2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#if !defined (THUNAR_VFS_INSIDE_THUNAR_VFS_H) && !defined (THUNAR_VFS_COMPILATION)
+#error "Only <thunar-vfs/thunar-vfs.h> can be included directly, this file may disappear or change contents."
+#endif
+
+#ifndef __THUNAR_VFS_THUMB_H__
+#define __THUNAR_VFS_THUMB_H__
+
+#include <thunar-vfs/thunar-vfs-info.h>
+#include <thunar-vfs/thunar-vfs-job.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarVfsThumbFactoryClass ThunarVfsThumbFactoryClass;
+typedef struct _ThunarVfsThumbFactory ThunarVfsThumbFactory;
+
+#define THUNAR_VFS_TYPE_THUMB_FACTORY (thunar_vfs_thumb_factory_get_type ())
+#define THUNAR_VFS_THUMB_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_VFS_TYPE_THUMB_FACTORY, ThunarVfsThumbFactory))
+#define THUNAR_VFS_THUMB_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_VFS_TYPE_THUMB_FACTORY, ThunarVfsThumbFactoryClass))
+#define THUNAR_VFS_IS_THUMB_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_VFS_TYPE_THUMB_FACTORY))
+#define THUNAR_VFS_IS_THUMB_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_VFS_TYPE_THUMB_FACTORY))
+#define THUNAR_VFS_THUMB_FACTORY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_VFS_TYPE_THUMB_FACTORY, ThunarVfsThumbFactoryClass))
+
+/**
+ * ThunarVfsThumbSize:
+ * @THUNAR_VFS_THUMB_SIZE_NORMAL : thumbnails at size 128x128.
+ * @THUNAR_VFS_THUMB_SIZE_LARGE : thumbnails at size 256x256.
+ *
+ * The desired size of thumbnails loaded by a #ThunarVfsThumbFactory.
+ **/
+typedef enum
+{
+ THUNAR_VFS_THUMB_SIZE_NORMAL,
+ THUNAR_VFS_THUMB_SIZE_LARGE,
+} ThunarVfsThumbSize;
+
+GType thunar_vfs_thumb_factory_get_type (void) G_GNUC_CONST;
+
+ThunarVfsThumbFactory *thunar_vfs_thumb_factory_new (ThunarVfsThumbSize size) G_GNUC_MALLOC;
+
+gchar *thunar_vfs_thumb_factory_lookup_thumbnail (ThunarVfsThumbFactory *factory,
+ const ThunarVfsInfo *info) G_GNUC_MALLOC;
+
+gboolean thunar_vfs_thumb_factory_can_thumbnail (ThunarVfsThumbFactory *factory,
+ const ThunarVfsInfo *info);
+
+gboolean thunar_vfs_thumb_factory_has_failed_thumbnail (ThunarVfsThumbFactory *factory,
+ const ThunarVfsInfo *info);
+
+GdkPixbuf *thunar_vfs_thumb_factory_generate_thumbnail (ThunarVfsThumbFactory *factory,
+ const ThunarVfsInfo *info) G_GNUC_MALLOC;
+
+gboolean thunar_vfs_thumb_factory_store_thumbnail (ThunarVfsThumbFactory *factory,
+ const GdkPixbuf *pixbuf,
+ const ThunarVfsInfo *info,
+ GError **error);
+
+
+gchar *thunar_vfs_thumbnail_for_path (const ThunarVfsPath *path,
+ ThunarVfsThumbSize size) G_GNUC_MALLOC;
+gboolean thunar_vfs_thumbnail_is_valid (const gchar *thumbnail,
+ const gchar *uri,
+ ThunarVfsFileTime mtime);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VFS_THUMB_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-transfer-job.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-transfer-job.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-transfer-job.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,862 @@
+/* $Id: thunar-vfs-transfer-job.c 18850 2005-11-14 21:21:05Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <thunar-vfs/thunar-vfs-monitor.h>
+#include <thunar-vfs/thunar-vfs-scandir.h>
+#include <thunar-vfs/thunar-vfs-transfer-job.h>
+#include <thunar-vfs/thunar-vfs-xfer.h>
+#include <thunar-vfs/thunar-vfs-alias.h>
+
+#if GLIB_CHECK_VERSION(2,6,0)
+#include <glib/gstdio.h>
+#else
+#define g_lstat(path, statb) (lstat ((path), (statb)))
+#define g_rmdir(path) (rmdir ((path)))
+#define g_unlink(path) (unlink ((path)))
+#endif
+
+
+
+typedef struct _ThunarVfsTransferPair ThunarVfsTransferPair;
+
+
+
+static void thunar_vfs_transfer_job_class_init (ThunarVfsTransferJobClass *klass);
+static void thunar_vfs_transfer_job_init (ThunarVfsTransferJob *transfer_job);
+static void thunar_vfs_transfer_job_finalize (GObject *object);
+static void thunar_vfs_transfer_job_execute (ThunarVfsJob *job);
+static void thunar_vfs_transfer_job_update (ThunarVfsTransferJob *transfer_job);
+static gboolean thunar_vfs_transfer_job_progress (ThunarVfsFileSize current_total_size,
+ ThunarVfsFileSize current_completed_size,
+ gpointer user_data);
+static GList *thunar_vfs_transfer_job_collect_pairs (ThunarVfsTransferJob *transfer_job,
+ ThunarVfsTransferPair *pair,
+ GError **error);
+static void thunar_vfs_transfer_job_copy_pair (ThunarVfsTransferJob *transfer_job,
+ ThunarVfsTransferPair *pair);
+static gboolean thunar_vfs_transfer_job_overwrite (ThunarVfsTransferJob *transfer_job,
+ const GError *error);
+static gboolean thunar_vfs_transfer_job_skip (ThunarVfsTransferJob *transfer_job,
+ const GError *error);
+static void thunar_vfs_transfer_job_skip_list_add (ThunarVfsTransferJob *transfer_job,
+ ThunarVfsTransferPair *pair);
+static gboolean thunar_vfs_transfer_job_skip_list_has (ThunarVfsTransferJob *transfer_job,
+ const ThunarVfsPath *source_path);
+static ThunarVfsTransferPair *thunar_vfs_transfer_job_alloc_pair (ThunarVfsTransferJob *transfer_job,
+ ThunarVfsPath *source_path,
+ ThunarVfsPath *target_path,
+ gboolean toplevel,
+ GError **error);
+static inline void thunar_vfs_transfer_job_free_pair (ThunarVfsTransferJob *transfer_job,
+ ThunarVfsTransferPair *pair);
+
+
+
+struct _ThunarVfsTransferJobClass
+{
+ ThunarVfsInteractiveJobClass __parent__;
+};
+
+struct _ThunarVfsTransferJob
+{
+ ThunarVfsInteractiveJob __parent__;
+
+ /* the VFS monitor */
+ ThunarVfsMonitor *monitor;
+
+ /* the list of pairs */
+ GList *pairs;
+
+ /* the pair chunks (alloc-only) */
+ GMemChunk *pair_chunk;
+
+ /* whether to move files instead of copying them */
+ gboolean move;
+
+ /* the amount of completeness */
+ ThunarVfsFileSize total_size;
+ ThunarVfsFileSize completed_size;
+
+ /* the last time we update the status info */
+ GTimeVal last_update_time;
+
+ /* current file status */
+ gboolean current_path_changed;
+ ThunarVfsPath *current_path;
+ ThunarVfsFileSize current_total_size;
+ ThunarVfsFileSize current_completed_size;
+
+ /* list of directories that should be deleted when the job finishes */
+ GList *directories_to_delete;
+
+ /* the list of toplevel ThunarVfsPath's that were created by this job */
+ GList *new_files;
+
+ /* the list of directories to skip */
+ GList *skip_list;
+};
+
+struct _ThunarVfsTransferPair
+{
+ ThunarVfsPath *source_path;
+ ThunarVfsPath *target_path;
+ ThunarVfsFileSize source_size;
+ guint source_mode : 31;
+ gboolean toplevel : 1;
+};
+
+
+
+G_DEFINE_TYPE (ThunarVfsTransferJob, thunar_vfs_transfer_job, THUNAR_VFS_TYPE_INTERACTIVE_JOB);
+
+
+
+static void
+thunar_vfs_transfer_job_class_init (ThunarVfsTransferJobClass *klass)
+{
+ ThunarVfsJobClass *thunarvfs_job_class;
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_vfs_transfer_job_finalize;
+
+ thunarvfs_job_class = THUNAR_VFS_JOB_CLASS (klass);
+ thunarvfs_job_class->execute = thunar_vfs_transfer_job_execute;
+}
+
+
+
+static void
+thunar_vfs_transfer_job_init (ThunarVfsTransferJob *transfer_job)
+{
+ /* connect to the VFS monitor */
+ transfer_job->monitor = thunar_vfs_monitor_get_default ();
+
+ /* allocate the pair chunk (alloc-only) */
+ transfer_job->pair_chunk = g_mem_chunk_new ("ThunarVfsTransferPair chunk",
+ sizeof (ThunarVfsTransferPair),
+ sizeof (ThunarVfsTransferPair) * 256,
+ G_ALLOC_ONLY);
+}
+
+
+
+static void
+thunar_vfs_transfer_job_finalize (GObject *object)
+{
+ ThunarVfsTransferJob *transfer_job = THUNAR_VFS_TRANSFER_JOB (object);
+ GList *lp;
+
+ /* release the pairs */
+ for (lp = transfer_job->pairs; lp != NULL; lp = lp->next)
+ thunar_vfs_transfer_job_free_pair (transfer_job, lp->data);
+ g_list_free (transfer_job->pairs);
+
+ /* drop the list of directories to delete */
+ thunar_vfs_path_list_free (transfer_job->directories_to_delete);
+
+ /* release the new files list */
+ thunar_vfs_path_list_free (transfer_job->new_files);
+
+ /* release the skip list */
+ thunar_vfs_path_list_free (transfer_job->skip_list);
+
+ /* release the current path */
+ if (G_LIKELY (transfer_job->current_path != NULL))
+ thunar_vfs_path_unref (transfer_job->current_path);
+
+ /* destroy the pair chunk */
+ g_mem_chunk_destroy (transfer_job->pair_chunk);
+
+ /* disconnect from the VFS monitor */
+ g_object_unref (G_OBJECT (transfer_job->monitor));
+
+ /* call the parents finalize method */
+ (*G_OBJECT_CLASS (thunar_vfs_transfer_job_parent_class)->finalize) (object);
+}
+
+
+
+static void
+thunar_vfs_transfer_job_execute (ThunarVfsJob *job)
+{
+ ThunarVfsTransferPair *pair;
+ ThunarVfsTransferJob *transfer_job = THUNAR_VFS_TRANSFER_JOB (job);
+ GError *error;
+ gchar *source_absolute_path;
+ gchar *display_name;
+ GList *pairs;
+ GList *tmp;
+ GList *lp;
+
+ thunar_vfs_interactive_job_info_message (THUNAR_VFS_INTERACTIVE_JOB (job), _("Collecting files..."));
+
+ /* save the current list of pairs */
+ pairs = transfer_job->pairs;
+ transfer_job->pairs = NULL;
+
+ /* collect pairs recursively */
+ for (lp = pairs; lp != NULL; lp = lp->next)
+ {
+ // FIXME: Error handling?
+ pair = (ThunarVfsTransferPair *) lp->data;
+ tmp = thunar_vfs_transfer_job_collect_pairs (transfer_job, pair, NULL);
+ transfer_job->pairs = g_list_concat (transfer_job->pairs, tmp);
+ transfer_job->pairs = g_list_append (transfer_job->pairs, pair);
+ }
+
+ /* release the temporary list */
+ g_list_free (pairs);
+
+ /* reverse the pair list, so we have the directories first */
+ transfer_job->pairs = g_list_reverse (transfer_job->pairs);
+
+ /* determine the total number of bytes to process */
+ for (lp = transfer_job->pairs; lp != NULL; lp = lp->next)
+ {
+ pair = (ThunarVfsTransferPair *) lp->data;
+ transfer_job->total_size += pair->source_size;
+ }
+
+ /* process the pairs */
+ while (transfer_job->pairs != NULL)
+ {
+ /* check if the job was cancelled */
+ if (thunar_vfs_job_cancelled (job))
+ break;
+
+ /* pick the next pair from the list */
+ pair = transfer_job->pairs->data;
+ lp = transfer_job->pairs->next;
+ g_list_free_1 (transfer_job->pairs);
+ transfer_job->pairs = lp;
+
+ /* check if we should skip this pair */
+ if (thunar_vfs_transfer_job_skip_list_has (transfer_job, pair->source_path))
+ {
+ /* add the size that was calculated for the skipped pair */
+ transfer_job->completed_size += pair->source_size;
+ }
+ else
+ {
+ /* copy the pair */
+ thunar_vfs_transfer_job_copy_pair (transfer_job, pair);
+ }
+
+ /* drop the pair, to reduce the overhead for finalize() */
+ thunar_vfs_transfer_job_free_pair (transfer_job, pair);
+ }
+
+ /* delete the scheduled directories */
+ if (transfer_job->directories_to_delete && transfer_job->move)
+ {
+ /* display info message */
+ thunar_vfs_interactive_job_info_message (THUNAR_VFS_INTERACTIVE_JOB (job), _("Deleting directories..."));
+
+ /* delete the directories */
+ for (lp = transfer_job->directories_to_delete; lp != NULL; lp = lp->next)
+ {
+ /* check if the job was cancelled */
+ if (thunar_vfs_job_cancelled (job))
+ break;
+
+ /* check if we should skip this directory */
+ if (thunar_vfs_transfer_job_skip_list_has (transfer_job, lp->data))
+ continue;
+
+ /* try to delete the source directory */
+ source_absolute_path = thunar_vfs_path_dup_string (lp->data);
+ if (g_rmdir (source_absolute_path) < 0 && errno != ENOENT)
+ {
+ /* ask the user whether we should skip this directory */
+ display_name = g_filename_display_name (source_absolute_path);
+ error = g_error_new (G_FILE_ERROR, g_file_error_from_errno (errno),
+ _("Unable to remove directory `%s': %s"),
+ display_name, g_strerror (errno));
+ thunar_vfs_transfer_job_skip (transfer_job, error);
+ g_clear_error (&error);
+ g_free (display_name);
+ }
+ else
+ {
+ /* schedule a "deleted" event for the source directory */
+ thunar_vfs_monitor_feed (transfer_job->monitor, THUNAR_VFS_MONITOR_EVENT_DELETED, lp->data);
+ }
+ g_free (source_absolute_path);
+ }
+ }
+
+ /* emit the "new-files" signal if we have any new files */
+ if (G_LIKELY (transfer_job->new_files != NULL))
+ thunar_vfs_interactive_job_new_files (THUNAR_VFS_INTERACTIVE_JOB (transfer_job), transfer_job->new_files);
+}
+
+
+
+static void
+thunar_vfs_transfer_job_update (ThunarVfsTransferJob *transfer_job)
+{
+ ThunarVfsFileSize completed_size;
+ gdouble percentage;
+ gchar *display_name;
+
+ /* check if we need to display a new file name */
+ if (G_LIKELY (transfer_job->current_path_changed))
+ {
+ /* update the info message with the file name */
+ display_name = g_filename_display_name (thunar_vfs_path_get_name (transfer_job->current_path));
+ thunar_vfs_interactive_job_info_message (THUNAR_VFS_INTERACTIVE_JOB (transfer_job), display_name);
+ g_free (display_name);
+
+ /* remember that we don't need to update the info message again now */
+ transfer_job->current_path_changed = FALSE;
+ }
+
+ /* determine total/completed sizes */
+ completed_size = transfer_job->completed_size + transfer_job->current_completed_size;
+
+ /* update the percentage */
+ percentage = (completed_size * 100.0) / MAX (transfer_job->total_size, 1);
+ percentage = CLAMP (percentage, 0.0, 100.0);
+ thunar_vfs_interactive_job_percent (THUNAR_VFS_INTERACTIVE_JOB (transfer_job), percentage);
+
+ /* update the "last update time" */
+ g_get_current_time (&transfer_job->last_update_time);
+}
+
+
+
+static inline gboolean
+should_update (const GTimeVal now,
+ const GTimeVal last)
+{
+ /* we want to update every 100ms */
+ guint64 d = ((guint64) now.tv_sec - last.tv_sec) * G_USEC_PER_SEC
+ + ((guint64) now.tv_usec - last.tv_usec);
+ return (d > 100 * 1000);
+}
+
+
+
+static gboolean
+thunar_vfs_transfer_job_progress (ThunarVfsFileSize current_total_size,
+ ThunarVfsFileSize current_completed_size,
+ gpointer user_data)
+{
+ ThunarVfsTransferJob *transfer_job = THUNAR_VFS_TRANSFER_JOB (user_data);
+ GTimeVal now;
+
+ /* update the current total/completed size */
+ transfer_job->current_completed_size = current_completed_size;
+ transfer_job->current_total_size = current_total_size;
+
+ /* determine the current time */
+ g_get_current_time (&now);
+
+ /* check if we should update the user visible info */
+ if (should_update (now, transfer_job->last_update_time))
+ thunar_vfs_transfer_job_update (transfer_job);
+
+ return !thunar_vfs_job_cancelled (THUNAR_VFS_JOB (transfer_job));
+}
+
+
+
+static inline ThunarVfsPath*
+make_target_path (ThunarVfsPath *target_base_path,
+ ThunarVfsPath *source_base_path,
+ ThunarVfsPath *source_path)
+{
+ typedef struct _Component
+ {
+ struct _Component *next;
+ const gchar *name;
+ } Component;
+
+ ThunarVfsPath *target_path = thunar_vfs_path_ref (target_base_path);
+ ThunarVfsPath *path;
+ Component *components = NULL;
+ Component *component;
+
+ /* determine the components in reverse order */
+ for (; !thunar_vfs_path_equal (source_base_path, source_path); source_path = thunar_vfs_path_get_parent (source_path))
+ {
+ g_assert (source_path != NULL);
+ component = g_newa (Component, 1);
+ component->next = components;
+ component->name = thunar_vfs_path_get_name (source_path);
+ components = component;
+ }
+
+ /* verify state */
+ g_assert (thunar_vfs_path_equal (source_base_path, source_path));
+
+ /* generate the target path */
+ for (component = components; component != NULL; component = component->next)
+ {
+ /* allocate relative path for the component */
+ path = thunar_vfs_path_relative (target_path, component->name);
+ thunar_vfs_path_unref (target_path);
+ target_path = path;
+ }
+
+ return target_path;
+}
+
+
+
+static GList*
+thunar_vfs_transfer_job_collect_pairs (ThunarVfsTransferJob *transfer_job,
+ ThunarVfsTransferPair *pair,
+ GError **error)
+{
+ ThunarVfsTransferPair *child;
+ ThunarVfsPath *target_path;
+ GHashTable *source_to_target;
+ GError *serror = NULL;
+ GList *paths;
+ GList *pairs = NULL;
+ GList *lp;
+
+ /* check if the pair refers to a directory */
+ if (G_UNLIKELY (!S_ISDIR (pair->source_mode)))
+ return NULL;
+
+ /* scan the pair directory */
+ paths = thunar_vfs_scandir (pair->source_path, THUNAR_VFS_SCANDIR_RECURSIVE, NULL, &serror);
+ if (G_UNLIKELY (serror != NULL))
+ {
+ g_propagate_error (error, serror);
+ g_assert (paths == NULL);
+ }
+ else
+ {
+ /* simple optimization to save some memory (source->target directory mapping) */
+ source_to_target = g_hash_table_new (thunar_vfs_path_hash, thunar_vfs_path_equal);
+ g_hash_table_insert (source_to_target, pair->source_path, pair->target_path);
+
+ /* translate the paths to pairs */
+ for (lp = g_list_last (paths); lp != NULL; lp = lp->prev)
+ {
+ /* determine the target path */
+ target_path = g_hash_table_lookup (source_to_target, thunar_vfs_path_get_parent (lp->data));
+ if (G_LIKELY (target_path != NULL))
+ target_path = thunar_vfs_path_relative (target_path, thunar_vfs_path_get_name (lp->data));
+ else
+ target_path = make_target_path (pair->target_path, pair->source_path, lp->data);
+
+ /* try to allocate a pair for the child */
+ child = thunar_vfs_transfer_job_alloc_pair (transfer_job, lp->data, target_path, FALSE, NULL);
+
+ /* release the reference on the target path (the child holds the reference now) */
+ thunar_vfs_path_unref (target_path);
+
+ /* release the reference on the source path (the child holds the reference now) */
+ thunar_vfs_path_unref (lp->data);
+
+ /* prepend the child to the pair list */
+ if (G_LIKELY (child != NULL))
+ {
+ /* cache directory source->target mappings */
+ if (G_UNLIKELY (S_ISDIR (child->source_mode)))
+ g_hash_table_insert (source_to_target, child->source_path, child->target_path);
+
+ /* add to the list of pairs */
+ pairs = g_list_prepend (pairs, child);
+ }
+ }
+
+ /* drop the source->target directory mapping */
+ g_hash_table_destroy (source_to_target);
+
+ /* drop the path list */
+ g_list_free (paths);
+ }
+
+ return pairs;
+}
+
+
+
+static inline void
+maybe_replace_pair_target (ThunarVfsTransferPair *pair,
+ ThunarVfsPath *previous_target_path,
+ ThunarVfsPath *new_target_path)
+{
+ ThunarVfsPath *path;
+
+ /* check if the target path is below the previous_target_path */
+ for (path = thunar_vfs_path_get_parent (pair->target_path); path != NULL; path = thunar_vfs_path_get_parent (path))
+ if (thunar_vfs_path_equal (previous_target_path, path))
+ break;
+
+ if (G_LIKELY (path != NULL))
+ {
+ /* replace the target path */
+ path = make_target_path (new_target_path, path, pair->target_path);
+ thunar_vfs_path_unref (pair->target_path);
+ pair->target_path = path;
+ }
+}
+
+
+
+static void
+thunar_vfs_transfer_job_copy_pair (ThunarVfsTransferJob *transfer_job,
+ ThunarVfsTransferPair *pair)
+{
+ ThunarVfsPath *target_path;
+ gboolean skip;
+ GError *error = NULL;
+ GList *lp;
+ gchar *absolute_path;
+ gchar *display_name;
+
+ /* update the current file path */
+ if (G_LIKELY (transfer_job->current_path != NULL))
+ thunar_vfs_path_unref (transfer_job->current_path);
+ transfer_job->current_path = thunar_vfs_path_ref (pair->source_path);
+ transfer_job->current_path_changed = TRUE;
+
+ /* perform the xfer */
+ do
+ {
+ /* start with 0 completed/total current size */
+ transfer_job->current_completed_size = 0;
+ transfer_job->current_total_size = 0;
+
+ /* try to xfer the file */
+ if (thunar_vfs_xfer_copy (pair->source_path, pair->target_path, &target_path, thunar_vfs_transfer_job_progress, transfer_job, &error))
+ {
+ /* if this was a toplevel pair, then add the target path to the list of new files */
+ if (G_UNLIKELY (pair->toplevel))
+ transfer_job->new_files = thunar_vfs_path_list_prepend (transfer_job->new_files, target_path);
+
+ /* perform cleanup for moves */
+ if (G_UNLIKELY (transfer_job->move))
+ {
+ /* if we have a directory, schedule it for later deletion, else try to delete it directly */
+ if (G_UNLIKELY (((pair->source_mode & S_IFMT) >> 12) == THUNAR_VFS_FILE_TYPE_DIRECTORY))
+ {
+ /* schedule the directory for later deletion */
+ transfer_job->directories_to_delete = thunar_vfs_path_list_prepend (transfer_job->directories_to_delete, pair->source_path);
+ }
+ else
+ {
+ absolute_path = thunar_vfs_path_dup_string (pair->source_path);
+ if (g_unlink (absolute_path) < 0 && errno != ENOENT)
+ {
+ /* ask the user whether we should skip the file (used for cancellation only) */
+ display_name = g_filename_display_name (absolute_path);
+ error = g_error_new (G_FILE_ERROR, g_file_error_from_errno (errno),
+ _("Unable to remove `%s': %s"), display_name,
+ g_strerror (errno));
+ thunar_vfs_transfer_job_skip (transfer_job, error);
+ g_clear_error (&error);
+ g_free (display_name);
+ }
+ else
+ {
+ /* schedule a deleted event for the source path */
+ thunar_vfs_monitor_feed (transfer_job->monitor, THUNAR_VFS_MONITOR_EVENT_DELETED, pair->source_path);
+ }
+ g_free (absolute_path);
+ }
+ }
+ else if (!thunar_vfs_path_equal (pair->target_path, target_path))
+ {
+ /* replace the target path on the following elements */
+ for (lp = transfer_job->pairs; lp != NULL; lp = lp->next)
+ maybe_replace_pair_target (lp->data, pair->target_path, target_path);
+
+ /* replace the previous target path with the real target path */
+ thunar_vfs_path_unref (pair->target_path);
+ pair->target_path = thunar_vfs_path_ref (target_path);
+ }
+
+ /* release the real target path */
+ thunar_vfs_path_unref (target_path);
+ break;
+ }
+
+ /* G_FILE_ERROR_INTR is returned when the job is cancelled during the copy operation */
+ if (G_UNLIKELY (error->domain == G_FILE_ERROR && error->code == G_FILE_ERROR_INTR))
+ {
+ g_error_free (error);
+ break;
+ }
+
+ /* check the error */
+ if (error->domain == G_FILE_ERROR && error->code == G_FILE_ERROR_EXIST)
+ {
+ /* ask the user whether we should remove the target first */
+ skip = !thunar_vfs_transfer_job_overwrite (transfer_job, error);
+ g_clear_error (&error);
+
+ /* try to remove the target */
+ if (G_LIKELY (!skip))
+ {
+ absolute_path = thunar_vfs_path_dup_string (pair->target_path);
+ if (g_unlink (absolute_path) < 0 && errno != ENOENT)
+ {
+ /* ask the user whether we should skip the file */
+ display_name = g_filename_display_name (absolute_path);
+ error = g_error_new (G_FILE_ERROR, g_file_error_from_errno (errno),
+ _("Unable to remove `%s': %s"), display_name,
+ g_strerror (errno));
+ skip = thunar_vfs_transfer_job_skip (transfer_job, error);
+ g_free (display_name);
+ }
+ g_free (absolute_path);
+ }
+ }
+ else
+ {
+ /* ask the user whether to skip this pair */
+ skip = thunar_vfs_transfer_job_skip (transfer_job, error);
+ }
+
+ /* clear the error */
+ g_clear_error (&error);
+
+ /* check if we should skip this pair */
+ if (G_LIKELY (skip))
+ {
+ thunar_vfs_transfer_job_skip_list_add (transfer_job, pair);
+ break;
+ }
+ }
+ while (!thunar_vfs_job_cancelled (THUNAR_VFS_JOB (transfer_job)));
+
+ /* add the current file's size to the total completion state */
+ transfer_job->completed_size += transfer_job->current_completed_size;
+
+ /* reset the current completed/total size */
+ transfer_job->current_completed_size = 0;
+ transfer_job->current_total_size = 0;
+}
+
+
+
+static gboolean
+thunar_vfs_transfer_job_overwrite (ThunarVfsTransferJob *transfer_job,
+ const GError *error)
+{
+ gboolean overwrite;
+ gchar *message;
+
+ /* be sure to update the status info */
+ thunar_vfs_transfer_job_update (transfer_job);
+
+ /* ask the user whether to overwrite */
+ message = g_strdup_printf (_("%s.\n\nDo you want to overwrite it?"), error->message);
+ overwrite = thunar_vfs_interactive_job_overwrite (THUNAR_VFS_INTERACTIVE_JOB (transfer_job), message);
+ g_free (message);
+
+ return overwrite;
+}
+
+
+
+static gboolean
+thunar_vfs_transfer_job_skip (ThunarVfsTransferJob *transfer_job,
+ const GError *error)
+{
+ gboolean skip;
+ gchar *message;
+
+ /* be sure to update the status info */
+ thunar_vfs_transfer_job_update (transfer_job);
+
+ /* ask the user whether to skip */
+ message = g_strdup_printf (_("%s.\n\nDo you want to skip it?"), error->message);
+ skip = thunar_vfs_interactive_job_skip (THUNAR_VFS_INTERACTIVE_JOB (transfer_job), message);
+ g_free (message);
+
+ return skip;
+}
+
+
+
+static void
+thunar_vfs_transfer_job_skip_list_add (ThunarVfsTransferJob *transfer_job,
+ ThunarVfsTransferPair *pair)
+{
+ /* add only directories to the skip_list */
+ if (((pair->source_mode & S_IFMT) >> 12) == THUNAR_VFS_FILE_TYPE_DIRECTORY)
+ transfer_job->skip_list = thunar_vfs_path_list_prepend (transfer_job->skip_list, pair->source_path);
+}
+
+
+
+static gboolean
+thunar_vfs_transfer_job_skip_list_has (ThunarVfsTransferJob *transfer_job,
+ const ThunarVfsPath *source_path)
+{
+ const ThunarVfsPath *path;
+ GList *lp;
+
+ /* check if the source_path or any of its ancestors is on the skip list */
+ for (lp = transfer_job->skip_list; lp != NULL; lp = lp->next)
+ for (path = source_path; path != NULL; path = thunar_vfs_path_get_parent (path))
+ if (thunar_vfs_path_equal (path, lp->data))
+ return TRUE;
+
+ return FALSE;
+}
+
+
+
+static ThunarVfsTransferPair*
+thunar_vfs_transfer_job_alloc_pair (ThunarVfsTransferJob *transfer_job,
+ ThunarVfsPath *source_path,
+ ThunarVfsPath *target_path,
+ gboolean toplevel,
+ GError **error)
+{
+ ThunarVfsTransferPair *pair;
+ struct stat source_statb;
+ gchar source_absolute_path[THUNAR_VFS_PATH_MAXSTRLEN];
+
+ /* determine the absolute path to the source file */
+ if (thunar_vfs_path_to_string (source_path, source_absolute_path, sizeof (source_absolute_path), error) < 0)
+ return NULL;
+
+ /* determine the file info for the source file */
+ if (g_lstat (source_absolute_path, &source_statb) < 0)
+ {
+ g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno), g_strerror (errno));
+ return NULL;
+ }
+
+ /* allocate a new transfer pair */
+ pair = g_chunk_new (ThunarVfsTransferPair, transfer_job->pair_chunk);
+ pair->source_path = thunar_vfs_path_ref (source_path);
+ pair->target_path = thunar_vfs_path_ref (target_path);
+ pair->source_size = source_statb.st_size;
+ pair->source_mode = source_statb.st_mode;
+ pair->toplevel = toplevel;
+
+ return pair;
+}
+
+
+
+static inline void
+thunar_vfs_transfer_job_free_pair (ThunarVfsTransferJob *transfer_job,
+ ThunarVfsTransferPair *pair)
+{
+ thunar_vfs_path_unref (pair->source_path);
+ thunar_vfs_path_unref (pair->target_path);
+}
+
+
+
+/**
+ * thunar_vfs_transfer_job_new:
+ * @source_path_list : a list of #ThunarVfsPath<!---->s that should be transferred.
+ * @target_path_list : a list of #ThunarVfsPath<!---->s referring to the targets of the transfer.
+ * @move : whether to copy or move the files.
+ * @error : return location for errors or %NULL.
+ *
+ * Transfers the files from the @source_path_list to the files in the @target_path_list.
+ * @source_path_list and @target_path_list must be of the same length.
+ *
+ * If @move is %FALSE, then all source/target path tuple, which refer to the same
+ * file cause a duplicate action, which means a new unique target path will be
+ * generated based on the source path.
+ *
+ * The caller is responsible to free the returned object using g_object_unref()
+ * when no longer needed.
+ *
+ * Return value: the newly allocated #ThunarVfsTransferJob or %NULL on error.
+ **/
+ThunarVfsJob*
+thunar_vfs_transfer_job_new (GList *source_path_list,
+ GList *target_path_list,
+ gboolean move,
+ GError **error)
+{
+ ThunarVfsTransferPair *pair;
+ ThunarVfsTransferJob *transfer_job;
+ GList *sp, *tp;
+
+ g_return_val_if_fail (g_list_length (target_path_list) == g_list_length (source_path_list), NULL);
+ g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+ /* allocate the job object */
+ transfer_job = g_object_new (THUNAR_VFS_TYPE_TRANSFER_JOB, NULL);
+ transfer_job->move = move;
+
+ /* just create a pair for every (source, target) tuple */
+ for (sp = source_path_list, tp = target_path_list; sp != NULL; sp = sp->next, tp = tp->next)
+ {
+ /* verify that we don't transfer the root directory */
+ if (G_UNLIKELY (thunar_vfs_path_is_root (sp->data) || thunar_vfs_path_is_root (tp->data)))
+ {
+ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_INVAL,
+ _("Cannot transfer the root directory"));
+ goto failure;
+ }
+
+ /* strip off all pairs with source=target when not copying */
+ if (G_LIKELY (!move || !thunar_vfs_path_equal (sp->data, tp->data)))
+ {
+ /* allocate a pair */
+ pair = thunar_vfs_transfer_job_alloc_pair (transfer_job, sp->data, tp->data, TRUE, error);
+ if (G_UNLIKELY (pair == NULL))
+ goto failure;
+ transfer_job->pairs = g_list_prepend (transfer_job->pairs, pair);
+ }
+ }
+
+ /* we did it */
+ return THUNAR_VFS_JOB (transfer_job);
+
+ /* some of the sources failed */
+failure:
+ g_object_unref (G_OBJECT (transfer_job));
+ return NULL;
+}
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-transfer-job.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-transfer-job.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-transfer-job.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,48 @@
+/* $Id: thunar-vfs-transfer-job.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __THUNAR_VFS_TRANSFER_JOB_H__
+#define __THUNAR_VFS_TRANSFER_JOB_H__
+
+#include <thunar-vfs/thunar-vfs-interactive-job.h>
+#include <thunar-vfs/thunar-vfs-path.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarVfsTransferJobClass ThunarVfsTransferJobClass;
+typedef struct _ThunarVfsTransferJob ThunarVfsTransferJob;
+
+#define THUNAR_VFS_TYPE_TRANSFER_JOB (thunar_vfs_transfer_job_get_type ())
+#define THUNAR_VFS_TRANSFER_JOB(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_VFS_TYPE_TRANSFER_JOB, ThunarVfsTransferJob))
+#define THUNAR_VFS_TRANSFER_JOB_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_VFS_TYPE_TRANSFER_JOB, ThunarVfsTransferJobClass))
+#define THUNAR_VFS_IS_TRANSFER_JOB(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_VFS_TYPE_TRANSFER_JOB))
+#define THUNAR_VFS_IS_TRANSFER_JOB_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_VFS_TYPE_TRANSFER_JOB))
+#define THUNAR_VFS_TRANSFER_JOB_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_VFS_TYPE_TRANSFER_JOB, ThunarVfsTransferJobClass))
+
+GType thunar_vfs_transfer_job_get_type (void) G_GNUC_CONST G_GNUC_INTERNAL;
+
+ThunarVfsJob *thunar_vfs_transfer_job_new (GList *source_path_list,
+ GList *target_path_list,
+ gboolean move,
+ GError **error) G_GNUC_INTERNAL G_GNUC_MALLOC;
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VFS_TRANSFER_JOB_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-types.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-types.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-types.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,150 @@
+/* $Id: thunar-vfs-types.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __THUNAR_VFS_TYPES_H__
+#define __THUNAR_VFS_TYPES_H__
+
+#include <sys/types.h>
+#include <unistd.h>
+
+G_BEGIN_DECLS;
+
+/**
+ * ThunarVfsFileType:
+ * @THUNAR_VFS_FILE_TYPE_FIFO : A named FIFO.
+ * @THUNAR_VFS_FILE_TYPE_CHARDEV : A character device node.
+ * @THUNAR_VFS_FILE_TYPE_DIRECTORY: A directory node.
+ * @THUNAR_VFS_FILE_TYPE_BLOCKDEV : A block device node.
+ * @THUNAR_VFS_FILE_TYPE_REGULAR : A regular file.
+ * @THUNAR_VFS_FILE_TYPE_SYMLINK : A broken symlink, for which the target does
+ * not exist (if the target would exist, the
+ * #ThunarVfsInfo object would have the type
+ * of the target).
+ * @THUNAR_VFS_FILE_TYPE_SOCKET : A unix domain socket.
+ *
+ * Describes the type of a file.
+ **/
+typedef enum {
+ THUNAR_VFS_FILE_TYPE_SOCKET = 0140000 >> 12,
+ THUNAR_VFS_FILE_TYPE_SYMLINK = 0120000 >> 12,
+ THUNAR_VFS_FILE_TYPE_REGULAR = 0100000 >> 12,
+ THUNAR_VFS_FILE_TYPE_BLOCKDEV = 0060000 >> 12,
+ THUNAR_VFS_FILE_TYPE_DIRECTORY = 0040000 >> 12,
+ THUNAR_VFS_FILE_TYPE_CHARDEV = 0020000 >> 12,
+ THUNAR_VFS_FILE_TYPE_FIFO = 0010000 >> 12,
+ THUNAR_VFS_FILE_TYPE_UNKNOWN = 0000000 >> 12,
+} ThunarVfsFileType;
+
+/**
+ * ThunarVfsFileMode:
+ * @THUNAR_VFS_FILE_MODE_SUID : SUID bit.
+ * @THUNAR_VFS_FILE_MODE_SGID : SGID bit.
+ * @THUNAR_VFS_FILE_MODE_STICKY : Sticky bit.
+ * @THUNAR_VFS_FILE_MODE_USR_ALL : Owner can do everything.
+ * @THUNAR_VFS_FILE_MODE_USR_READ : Owner can read the file.
+ * @THUNAR_VFS_FILE_MODE_USR_WRITE: Owner can write the file.
+ * @THUNAR_VFS_FILE_MODE_USR_EXEC : Owner can execute the file.
+ * @THUNAR_VFS_FILE_MODE_GRP_ALL : Owner group can do everything.
+ * @THUNAR_VFS_FILE_MODE_GRP_READ : Owner group can read the file.
+ * @THUNAR_VFS_FILE_MODE_GRP_WRITE: Owner group can write the file.
+ * @THUNAR_VFS_FILE_MODE_GRP_EXEC : Owner group can execute the file.
+ * @THUNAR_VFS_FILE_MODE_OTH_ALL : Others can do everything.
+ * @THUNAR_VFS_FILE_MODE_OTH_READ : Others can read the file.
+ * @THUNAR_VFS_FILE_MODE_OTH_WRITE: Others can write the file.
+ * @THUNAR_VFS_FILE_MODE_OTH_EXEC : Others can execute the file.
+ *
+ * Special flags and permissions of a filesystem entity.
+ **/
+typedef enum { /*< flags >*/
+ THUNAR_VFS_FILE_MODE_SUID = 04000,
+ THUNAR_VFS_FILE_MODE_SGID = 02000,
+ THUNAR_VFS_FILE_MODE_STICKY = 01000,
+ THUNAR_VFS_FILE_MODE_USR_ALL = 00700,
+ THUNAR_VFS_FILE_MODE_USR_READ = 00400,
+ THUNAR_VFS_FILE_MODE_USR_WRITE = 00200,
+ THUNAR_VFS_FILE_MODE_USR_EXEC = 00100,
+ THUNAR_VFS_FILE_MODE_GRP_ALL = 00070,
+ THUNAR_VFS_FILE_MODE_GRP_READ = 00040,
+ THUNAR_VFS_FILE_MODE_GRP_WRITE = 00020,
+ THUNAR_VFS_FILE_MODE_GRP_EXEC = 00010,
+ THUNAR_VFS_FILE_MODE_OTH_ALL = 00007,
+ THUNAR_VFS_FILE_MODE_OTH_READ = 00004,
+ THUNAR_VFS_FILE_MODE_OTH_WRITE = 00002,
+ THUNAR_VFS_FILE_MODE_OTH_EXEC = 00001,
+} ThunarVfsFileMode;
+
+/**
+ * ThunarVfsFileFlags:
+ * @THUNAR_VFS_FILE_FLAGS_NONE : No additional information available.
+ * @THUNAR_VFS_FILE_FLAGS_SYMLINK : The file is a symlink. Whether or not
+ * the info fields refer to the symlink
+ * itself or the linked file, depends on
+ * whether the symlink is broken or not.
+ * @THUNAR_VFS_FILE_FLAGS_EXECUTABLE : The file can most probably be executed
+ * by #thunar_vfs_info_execute().
+ *
+ * Flags providing additional information about the
+ * file system entity.
+ **/
+typedef enum { /*< flags >*/
+ THUNAR_VFS_FILE_FLAGS_NONE = 0,
+ THUNAR_VFS_FILE_FLAGS_SYMLINK = 1L << 0,
+ THUNAR_VFS_FILE_FLAGS_EXECUTABLE = 1L << 1,
+} ThunarVfsFileFlags;
+
+/**
+ * ThunarVfsFileDevice:
+ * Datatype to represent the device number of a file.
+ **/
+typedef dev_t ThunarVfsFileDevice;
+
+/**
+ * ThunarVfsFileInode:
+ * Datatype to represent the inode number of a file.
+ **/
+typedef ino_t ThunarVfsFileInode;
+
+/**
+ * ThunarVfsFileSize:
+ * Datatype to represent file sizes (in bytes).
+ **/
+typedef off_t ThunarVfsFileSize;
+
+/**
+ * ThunarVfsFileTime:
+ * Datatype to represent file times (in seconds).
+ **/
+typedef time_t ThunarVfsFileTime;
+
+/**
+ * ThunarVfsGroupId:
+ * Datatype to represent a group id.
+ **/
+typedef gid_t ThunarVfsGroupId;
+
+/**
+ * ThunarVfsUserId:
+ * Datatype to represent a user id.
+ **/
+typedef uid_t ThunarVfsUserId;
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VFS_TYPES_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-unlink-job.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-unlink-job.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-unlink-job.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,294 @@
+/* $Id: thunar-vfs-unlink-job.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+
+#ifdef HAVE_DIRENT_H
+#include <dirent.h>
+#endif
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#include <stdio.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <thunar-vfs/thunar-vfs-info.h>
+#include <thunar-vfs/thunar-vfs-scandir.h>
+#include <thunar-vfs/thunar-vfs-thumb.h>
+#include <thunar-vfs/thunar-vfs-unlink-job.h>
+#include <thunar-vfs/thunar-vfs-alias.h>
+
+#if GLIB_CHECK_VERSION(2,6,0)
+#include <glib/gstdio.h>
+#else
+#define g_remove(path) (remove ((path)))
+#define g_unlink(path) (unlink ((path)))
+#endif
+
+
+
+static void thunar_vfs_unlink_job_class_init (ThunarVfsJobClass *klass);
+static void thunar_vfs_unlink_job_finalize (GObject *object);
+static void thunar_vfs_unlink_job_execute (ThunarVfsJob *job);
+static void thunar_vfs_unlink_job_remove (ThunarVfsUnlinkJob *unlink_job,
+ ThunarVfsPath *path);
+
+
+
+struct _ThunarVfsUnlinkJobClass
+{
+ ThunarVfsInteractiveJobClass __parent__;
+};
+
+struct _ThunarVfsUnlinkJob
+{
+ ThunarVfsInteractiveJob __parent__;
+
+ GList *path_list;
+
+ gint total_items;
+ gint completed_items;
+};
+
+
+
+static GObjectClass *thunar_vfs_unlink_job_parent_class;
+
+
+
+GType
+thunar_vfs_unlink_job_get_type (void)
+{
+ static GType type = G_TYPE_INVALID;
+
+ if (G_UNLIKELY (type == G_TYPE_INVALID))
+ {
+ static const GTypeInfo info =
+ {
+ sizeof (ThunarVfsUnlinkJobClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) thunar_vfs_unlink_job_class_init,
+ NULL,
+ NULL,
+ sizeof (ThunarVfsUnlinkJob),
+ 0,
+ NULL,
+ NULL,
+ };
+
+ type = g_type_register_static (THUNAR_VFS_TYPE_INTERACTIVE_JOB,
+ "ThunarVfsUnlinkJob", &info, 0);
+ }
+
+ return type;
+}
+
+
+
+static void
+thunar_vfs_unlink_job_class_init (ThunarVfsJobClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ /* determine the parent class */
+ thunar_vfs_unlink_job_parent_class = g_type_class_peek_parent (klass);
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_vfs_unlink_job_finalize;
+
+ klass->execute = thunar_vfs_unlink_job_execute;
+}
+
+
+
+static void
+thunar_vfs_unlink_job_finalize (GObject *object)
+{
+ ThunarVfsUnlinkJob *unlink_job = THUNAR_VFS_UNLINK_JOB (object);
+
+ /* free the path list */
+ thunar_vfs_path_list_free (unlink_job->path_list);
+
+ /* call the parents finalize method */
+ (*G_OBJECT_CLASS (thunar_vfs_unlink_job_parent_class)->finalize) (object);
+}
+
+
+
+static void
+thunar_vfs_unlink_job_execute (ThunarVfsJob *job)
+{
+ ThunarVfsUnlinkJob *unlink_job = THUNAR_VFS_UNLINK_JOB (job);
+ gdouble percent;
+ GError *error = NULL;
+ GList *paths;
+ GList *lp;
+ guint n;
+
+ /* tell the user that we're preparing the unlink job */
+ thunar_vfs_interactive_job_info_message (THUNAR_VFS_INTERACTIVE_JOB (job), _("Preparing..."));
+
+ /* recursively collect the paths */
+ for (lp = unlink_job->path_list; lp != NULL && !thunar_vfs_job_cancelled (job); lp = lp->next)
+ {
+ /* scan the directory */
+ paths = thunar_vfs_scandir (lp->data, THUNAR_VFS_SCANDIR_RECURSIVE, NULL, &error);
+ if (G_UNLIKELY (error != NULL))
+ {
+ /* we can safely ignore ENOTDIR errors here */
+ if (error->domain != G_FILE_ERROR || error->code != G_FILE_ERROR_NOTDIR)
+ {
+ /* inform the user about the problem and abort the job */
+ thunar_vfs_job_error (job, error);
+ g_error_free (error);
+ return;
+ }
+
+ /* reset the error */
+ g_error_free (error);
+ error = NULL;
+ }
+
+ /* prepend the new paths to the existing list */
+ unlink_job->path_list = g_list_concat (paths, unlink_job->path_list);
+ }
+
+ /* determine the number of files to remove */
+ unlink_job->total_items = g_list_length (unlink_job->path_list);
+
+ /* perform the removal of the paths */
+ for (lp = unlink_job->path_list, n = 0; lp != NULL && !thunar_vfs_job_cancelled (job); lp = lp->next, ++n)
+ {
+ /* remove the file for the current path */
+ thunar_vfs_unlink_job_remove (unlink_job, lp->data);
+
+ /* increment the completed items count */
+ ++unlink_job->completed_items;
+
+ /* update the progress status */
+ if (G_UNLIKELY ((n % 8) == 0 || lp->next == NULL))
+ {
+ percent = (unlink_job->completed_items * 100.0) / unlink_job->total_items;
+ percent = CLAMP (percent, 0.0, 100.0);
+ thunar_vfs_interactive_job_percent (THUNAR_VFS_INTERACTIVE_JOB (job), percent);
+ }
+ }
+}
+
+
+
+static void
+thunar_vfs_unlink_job_remove (ThunarVfsUnlinkJob *unlink_job,
+ ThunarVfsPath *path)
+{
+ ThunarVfsInfo *info;
+ gchar *message;
+ gchar *absolute_path;
+ gchar *thumbnail_path;
+
+ /* determine the absolute path to the file */
+ absolute_path = thunar_vfs_path_dup_string (path);
+
+ /* determine the info for the file */
+ info = _thunar_vfs_info_new_internal (path, absolute_path, NULL);
+ if (G_LIKELY (info != NULL))
+ {
+ /* update the progress message */
+ thunar_vfs_interactive_job_info_message (THUNAR_VFS_INTERACTIVE_JOB (unlink_job), info->display_name);
+
+ /* try to unlink the file */
+ if (G_UNLIKELY (g_remove (absolute_path) < 0 && errno != ENOENT))
+ {
+ message = g_strdup_printf (_("Unable to remove %s.\n\nDo you want to skip it?"), info->display_name);
+ thunar_vfs_interactive_job_skip (THUNAR_VFS_INTERACTIVE_JOB (unlink_job), message);
+ g_free (message);
+ }
+ else
+ {
+ /* feed a delete event to the vfs monitor */
+ thunar_vfs_monitor_feed (THUNAR_VFS_INTERACTIVE_JOB (unlink_job)->monitor,
+ THUNAR_VFS_MONITOR_EVENT_DELETED, info->path);
+
+ /* delete thumbnails for regular files */
+ if (G_LIKELY (info->type == THUNAR_VFS_FILE_TYPE_REGULAR))
+ {
+ /* ditch the normal thumbnail (if any) */
+ thumbnail_path = thunar_vfs_thumbnail_for_path (path, THUNAR_VFS_THUMB_SIZE_NORMAL);
+ g_unlink (thumbnail_path);
+ g_free (thumbnail_path);
+
+ /* ditch the large thumbnail (if any) */
+ thumbnail_path = thunar_vfs_thumbnail_for_path (path, THUNAR_VFS_THUMB_SIZE_LARGE);
+ g_unlink (thumbnail_path);
+ g_free (thumbnail_path);
+ }
+ }
+
+ /* release the info */
+ thunar_vfs_info_unref (info);
+ }
+
+ /* release the absolute path */
+ g_free (absolute_path);
+}
+
+
+
+/**
+ * thunar_vfs_unlink_job_new:
+ * @path_list : a list of #ThunarVfsPath<!---->s, that should be unlinked.
+ * @error : return location for errors or %NULL.
+ *
+ * Tries to allocate a new #ThunarVfsUnlinkJob, which can be used to
+ * unlink the given @path_list.
+ *
+ * Return value: the newly allocated #ThunarVfsUnlinkJob or %NULL on error.
+ **/
+ThunarVfsJob*
+thunar_vfs_unlink_job_new (GList *path_list,
+ GError **error)
+{
+ ThunarVfsUnlinkJob *job;
+
+ g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+ /* allocate the job instance */
+ job = g_object_new (THUNAR_VFS_TYPE_UNLINK_JOB, NULL);
+ job->path_list = thunar_vfs_path_list_copy (path_list);
+
+ return THUNAR_VFS_JOB (job);
+}
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-unlink-job.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-unlink-job.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-unlink-job.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,46 @@
+/* $Id: thunar-vfs-unlink-job.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __THUNAR_VFS_UNLINK_JOB_H__
+#define __THUNAR_VFS_UNLINK_JOB_H__
+
+#include <thunar-vfs/thunar-vfs-interactive-job.h>
+#include <thunar-vfs/thunar-vfs-path.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarVfsUnlinkJobClass ThunarVfsUnlinkJobClass;
+typedef struct _ThunarVfsUnlinkJob ThunarVfsUnlinkJob;
+
+#define THUNAR_VFS_TYPE_UNLINK_JOB (thunar_vfs_unlink_job_get_type ())
+#define THUNAR_VFS_UNLINK_JOB(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_VFS_TYPE_UNLINK_JOB, ThunarVfsUnlinkJob))
+#define THUNAR_VFS_UNLINK_JOB_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_VFS_TYPE_UNLINK_JOB, ThunarVfsUnlinkJobClass))
+#define THUNAR_VFS_IS_UNLINK_JOB(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_VFS_TYPE_UNLINK_JOB))
+#define THUNAR_VFS_IS_UNLINK_JOB_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_VFS_TYPE_UNLINK_JOB))
+#define THUNAR_VFS_UNLINK_JOB_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_VFS_TYPE_UNLINK_JOB, ThunarVfsUnlinkJobClass))
+
+GType thunar_vfs_unlink_job_get_type (void) G_GNUC_CONST G_GNUC_INTERNAL;
+
+ThunarVfsJob *thunar_vfs_unlink_job_new (GList *path_list,
+ GError **error) G_GNUC_INTERNAL G_GNUC_MALLOC;
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VFS_UNLINK_JOB_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-user.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-user.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-user.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,762 @@
+/* $Id: thunar-vfs-user.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+
+#ifdef HAVE_GRP_H
+#include <grp.h>
+#endif
+#ifdef HAVE_MEMORY_H
+#include <memory.h>
+#endif
+#ifdef HAVE_PWD_H
+#include <pwd.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <thunar-vfs/thunar-vfs-user.h>
+#include <thunar-vfs/thunar-vfs-alias.h>
+
+
+
+/* the interval in which the user/group cache is flushed (in ms) */
+#define THUNAR_VFS_USER_MANAGER_FLUSH_INTERVAL (10 * 60 * 1000)
+
+
+
+
+static void thunar_vfs_group_class_init (ThunarVfsGroupClass *klass);
+static void thunar_vfs_group_finalize (GObject *object);
+static ThunarVfsGroup *thunar_vfs_group_new (ThunarVfsGroupId id);
+
+
+
+struct _ThunarVfsGroupClass
+{
+ GObjectClass __parent__;
+};
+
+struct _ThunarVfsGroup
+{
+ GObject __parent__;
+
+ ThunarVfsGroupId id;
+ gchar *name;
+};
+
+
+
+static GObjectClass *thunar_vfs_group_parent_class;
+
+
+
+GType
+thunar_vfs_group_get_type (void)
+{
+ static GType type = G_TYPE_INVALID;
+
+ if (G_UNLIKELY (type == G_TYPE_INVALID))
+ {
+ static const GTypeInfo info =
+ {
+ sizeof (ThunarVfsGroupClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) thunar_vfs_group_class_init,
+ NULL,
+ NULL,
+ sizeof (ThunarVfsGroup),
+ 0,
+ NULL,
+ NULL,
+ };
+
+ type = g_type_register_static (G_TYPE_OBJECT, "ThunarVfsGroup", &info, 0);
+ }
+
+ return type;
+}
+
+
+
+static void
+thunar_vfs_group_class_init (ThunarVfsGroupClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ /* determine the parent class */
+ thunar_vfs_group_parent_class = g_type_class_peek_parent (klass);
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_vfs_group_finalize;
+}
+
+
+
+static void
+thunar_vfs_group_finalize (GObject *object)
+{
+ ThunarVfsGroup *group = THUNAR_VFS_GROUP (object);
+
+ /* release the group's name */
+ g_free (group->name);
+
+ (*G_OBJECT_CLASS (thunar_vfs_group_parent_class)->finalize) (object);
+}
+
+
+
+static ThunarVfsGroup*
+thunar_vfs_group_new (ThunarVfsGroupId id)
+{
+ ThunarVfsGroup *group;
+
+ group = g_object_new (THUNAR_VFS_TYPE_GROUP, NULL);
+ group->id = id;
+
+ return group;
+}
+
+
+
+/**
+ * thunar_vfs_group_get_id:
+ * @group : a #ThunarVfsGroup.
+ *
+ * Returns the unique id of the given @group.
+ *
+ * Return value: the unique id of @group.
+ **/
+ThunarVfsGroupId
+thunar_vfs_group_get_id (ThunarVfsGroup *group)
+{
+ g_return_val_if_fail (THUNAR_VFS_IS_GROUP (group), 0);
+ return group->id;
+}
+
+
+
+/**
+ * thunar_vfs_group_get_name:
+ * @group : a #ThunarVfsGroup.
+ *
+ * Returns the name of the @group. If the system is
+ * unable to determine the name of @group, it'll
+ * return the group id as string.
+ *
+ * Return value: the name of @group.
+ **/
+const gchar*
+thunar_vfs_group_get_name (ThunarVfsGroup *group)
+{
+ struct group *grp;
+
+ g_return_val_if_fail (THUNAR_VFS_IS_GROUP (group), NULL);
+
+ /* determine the name on-demand */
+ if (G_UNLIKELY (group->name == NULL))
+ {
+ grp = getgrgid (group->id);
+ if (G_LIKELY (grp != NULL))
+ group->name = g_strdup (grp->gr_name);
+ else
+ group->name = g_strdup_printf ("%u", (guint) group->id);
+ }
+
+ return group->name;
+}
+
+
+
+
+static void thunar_vfs_user_class_init (ThunarVfsUserClass *klass);
+static void thunar_vfs_user_finalize (GObject *object);
+static void thunar_vfs_user_load (ThunarVfsUser *user);
+static ThunarVfsUser *thunar_vfs_user_new (ThunarVfsUserId id);
+
+
+
+struct _ThunarVfsUserClass
+{
+ GObjectClass __parent__;
+};
+
+struct _ThunarVfsUser
+{
+ GObject __parent__;
+
+ GList *groups;
+ ThunarVfsGroup *primary_group;
+ ThunarVfsUserId id;
+ gchar *name;
+ gchar *real_name;
+};
+
+
+
+static ThunarVfsUserId thunar_vfs_user_effective_uid;
+static GObjectClass *thunar_vfs_user_parent_class;
+
+
+
+GType
+thunar_vfs_user_get_type (void)
+{
+ static GType type = G_TYPE_INVALID;
+
+ if (G_UNLIKELY (type == G_TYPE_INVALID))
+ {
+ static const GTypeInfo info =
+ {
+ sizeof (ThunarVfsUserClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) thunar_vfs_user_class_init,
+ NULL,
+ NULL,
+ sizeof (ThunarVfsUser),
+ 0,
+ NULL,
+ NULL,
+ };
+
+ type = g_type_register_static (G_TYPE_OBJECT, "ThunarVfsUser", &info, 0);
+ }
+
+ return type;
+}
+
+
+
+static void
+thunar_vfs_user_class_init (ThunarVfsUserClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ /* determine the parent class */
+ thunar_vfs_user_parent_class = g_type_class_peek_parent (klass);
+
+ /* determine the current process' effective user id, we do
+ * this only once to avoid the syscall overhead on every
+ * is_me() invokation.
+ */
+ thunar_vfs_user_effective_uid = geteuid ();
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_vfs_user_finalize;
+}
+
+
+
+static void
+thunar_vfs_user_finalize (GObject *object)
+{
+ ThunarVfsUser *user = THUNAR_VFS_USER (object);
+
+ /* unref the associated groups */
+ g_list_foreach (user->groups, (GFunc) g_object_unref, NULL);
+ g_list_free (user->groups);
+
+ /* drop the reference on the primary group */
+ if (G_LIKELY (user->primary_group != NULL))
+ g_object_unref (G_OBJECT (user->primary_group));
+
+ /* release the names */
+ g_free (user->real_name);
+ g_free (user->name);
+
+ (*G_OBJECT_CLASS (thunar_vfs_user_parent_class)->finalize) (object);
+}
+
+
+
+static void
+thunar_vfs_user_load (ThunarVfsUser *user)
+{
+ ThunarVfsUserManager *manager;
+ struct passwd *pw;
+ const gchar *s;
+
+ g_return_if_fail (user->name == NULL);
+
+ pw = getpwuid (user->id);
+ if (G_LIKELY (pw != NULL))
+ {
+ manager = thunar_vfs_user_manager_get_default ();
+
+ /* query name and primary group */
+ user->name = g_strdup (pw->pw_name);
+ user->primary_group = thunar_vfs_user_manager_get_group_by_id (manager, pw->pw_gid);
+
+ /* try to figure out the real name */
+ s = strchr (pw->pw_gecos, ',');
+ if (s != NULL)
+ user->real_name = g_strndup (pw->pw_gecos, s - pw->pw_gecos);
+ else if (pw->pw_gecos[0] != '\0')
+ user->real_name = g_strdup (pw->pw_gecos);
+
+ g_object_unref (G_OBJECT (manager));
+ }
+ else
+ {
+ user->name = g_strdup_printf ("%u", (guint) user->id);
+ }
+}
+
+
+
+static ThunarVfsUser*
+thunar_vfs_user_new (ThunarVfsUserId id)
+{
+ ThunarVfsUser *user;
+
+ user = g_object_new (THUNAR_VFS_TYPE_USER, NULL);
+ user->id = id;
+
+ return user;
+}
+
+
+
+/**
+ * thunar_vfs_user_get_groups:
+ * @user : a #ThunarVfsUser.
+ *
+ * Returns all #ThunarVfsGroup<!---->s that @user
+ * belongs to. The returned list and the #ThunarVfsGroup<!---->s
+ * contained within the list are owned by @user and must not be
+ * freed or altered by the caller.
+ *
+ * Note that if @user has a primary group, this group will
+ * also be contained in the returned list.
+ *
+ * Return value: the groups that @user belongs to.
+ **/
+GList*
+thunar_vfs_user_get_groups (ThunarVfsUser *user)
+{
+ ThunarVfsUserManager *manager;
+ ThunarVfsGroup *primary_group;
+ ThunarVfsGroup *group;
+ gid_t gidset[NGROUPS_MAX];
+ gint gidsetlen;
+ gint n;
+
+ g_return_val_if_fail (THUNAR_VFS_IS_USER (user), NULL);
+
+ /* load the groups on-demand */
+ if (G_UNLIKELY (user->groups == NULL))
+ {
+ primary_group = thunar_vfs_user_get_primary_group (user);
+
+ /* we can only determine the groups list for the current
+ * process owner in a portable fashion, and in fact, we
+ * only need the list for the current user.
+ */
+ if (thunar_vfs_user_is_me (user))
+ {
+ manager = thunar_vfs_user_manager_get_default ();
+
+ /* add all supplementary groups */
+ gidsetlen = getgroups (G_N_ELEMENTS (gidset), gidset);
+ for (n = 0; n < gidsetlen; ++n)
+ if (primary_group == NULL || thunar_vfs_group_get_id (primary_group) != gidset[n])
+ {
+ group = thunar_vfs_user_manager_get_group_by_id (manager, gidset[n]);
+ if (G_LIKELY (group != NULL))
+ user->groups = g_list_append (user->groups, group);
+ }
+
+ g_object_unref (G_OBJECT (manager));
+ }
+
+ /* prepend the primary group (if any) */
+ if (G_LIKELY (primary_group != NULL))
+ {
+ user->groups = g_list_prepend (user->groups, primary_group);
+ g_object_ref (G_OBJECT (primary_group));
+ }
+ }
+
+ return user->groups;
+}
+
+
+
+/**
+ * thunar_vfs_user_get_primary_group:
+ * @user : a #ThunarVfsUser.
+ *
+ * Returns the primary group of @user or %NULL if @user
+ * has no primary group.
+ *
+ * No reference is taken for the caller, so you must
+ * not call g_object_unref() on the returned object.
+ *
+ * Return value: the primary group of @user or %NULL.
+ **/
+ThunarVfsGroup*
+thunar_vfs_user_get_primary_group (ThunarVfsUser *user)
+{
+ g_return_val_if_fail (THUNAR_VFS_IS_USER (user), NULL);
+
+ /* load the user data on-demand */
+ if (G_UNLIKELY (user->name == NULL))
+ thunar_vfs_user_load (user);
+
+ return user->primary_group;
+}
+
+
+
+/**
+ * thunar_vfs_user_get_id:
+ * @user : a #ThunarVfsUser.
+ *
+ * Returns the unique id of @user.
+ *
+ * Return value: the unique id of @user.
+ **/
+ThunarVfsUserId
+thunar_vfs_user_get_id (ThunarVfsUser *user)
+{
+ g_return_val_if_fail (THUNAR_VFS_IS_USER (user), 0);
+ return user->id;
+}
+
+
+
+/**
+ * thunar_vfs_user_get_name:
+ * @user : a #ThunarVfsUser.
+ *
+ * Returns the name of @user. If the system is
+ * unable to determine the account name of @user,
+ * it'll return the user id as string.
+ *
+ * Return value: the name of @user.
+ **/
+const gchar*
+thunar_vfs_user_get_name (ThunarVfsUser *user)
+{
+ g_return_val_if_fail (THUNAR_VFS_IS_USER (user), 0);
+
+ /* load the user's data on-demand */
+ if (G_UNLIKELY (user->name == NULL))
+ thunar_vfs_user_load (user);
+
+ return user->name;
+}
+
+
+
+/**
+ * thunar_vfs_user_get_real_name:
+ * @user : a #ThunarVfsUser.
+ *
+ * Returns the real name of @user or %NULL if the
+ * real name for @user is not known to the underlying
+ * system.
+ *
+ * Return value: the real name for @user or %NULL.
+ **/
+const gchar*
+thunar_vfs_user_get_real_name (ThunarVfsUser *user)
+{
+ g_return_val_if_fail (THUNAR_VFS_IS_USER (user), 0);
+
+ /* load the user's data on-demand */
+ if (G_UNLIKELY (user->name == NULL))
+ thunar_vfs_user_load (user);
+
+ return user->real_name;
+}
+
+
+
+/**
+ * thunar_vfs_user_is_me:
+ * @user : a #ThunarVfsUser.
+ *
+ * Checks whether the owner of the current process is
+ * described by @user.
+ *
+ * Return value: %TRUE if @user is the owner of the current
+ * process, else %FALSE.
+ **/
+gboolean
+thunar_vfs_user_is_me (ThunarVfsUser *user)
+{
+ g_return_val_if_fail (THUNAR_VFS_IS_USER (user), FALSE);
+ return (user->id == thunar_vfs_user_effective_uid);
+}
+
+
+
+
+static void thunar_vfs_user_manager_class_init (ThunarVfsUserManagerClass *klass);
+static void thunar_vfs_user_manager_init (ThunarVfsUserManager *manager);
+static void thunar_vfs_user_manager_finalize (GObject *object);
+static gboolean thunar_vfs_user_manager_flush_timer (gpointer user_data);
+static void thunar_vfs_user_manager_flush_timer_destroy (gpointer user_data);
+
+
+
+struct _ThunarVfsUserManagerClass
+{
+ GObjectClass __parent__;
+};
+
+struct _ThunarVfsUserManager
+{
+ GObject __parent__;
+
+ GHashTable *groups;
+ GHashTable *users;
+
+ gint flush_timer_id;
+};
+
+
+
+G_DEFINE_TYPE (ThunarVfsUserManager, thunar_vfs_user_manager, G_TYPE_OBJECT);
+
+
+
+static void
+thunar_vfs_user_manager_class_init (ThunarVfsUserManagerClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_vfs_user_manager_finalize;
+}
+
+
+
+static void
+thunar_vfs_user_manager_init (ThunarVfsUserManager *manager)
+{
+ manager->groups = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, g_object_unref);
+ manager->users = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, g_object_unref);
+
+ /* keep the groups file in memory if possible */
+#ifdef HAVE_SETGROUPENT
+ setgroupent (TRUE);
+#endif
+
+ /* keep the passwd file in memory if possible */
+#ifdef HAVE_SETPASSENT
+ setpassent (TRUE);
+#endif
+
+ /* start the flush timer */
+ manager->flush_timer_id = g_timeout_add_full (G_PRIORITY_LOW, THUNAR_VFS_USER_MANAGER_FLUSH_INTERVAL,
+ thunar_vfs_user_manager_flush_timer, manager,
+ thunar_vfs_user_manager_flush_timer_destroy);
+}
+
+
+
+static void
+thunar_vfs_user_manager_finalize (GObject *object)
+{
+ ThunarVfsUserManager *manager = THUNAR_VFS_USER_MANAGER (object);
+
+ /* stop the flush timer */
+ if (G_LIKELY (manager->flush_timer_id >= 0))
+ g_source_remove (manager->flush_timer_id);
+
+ /* destroy the hash tables */
+ g_hash_table_destroy (manager->groups);
+ g_hash_table_destroy (manager->users);
+
+ /* unload the groups file */
+ endgrent ();
+
+ /* unload the passwd file */
+ endpwent ();
+
+ G_OBJECT_CLASS (thunar_vfs_user_manager_parent_class)->finalize (object);
+}
+
+
+
+static gboolean
+thunar_vfs_user_manager_flush_timer (gpointer user_data)
+{
+ ThunarVfsUserManager *manager = THUNAR_VFS_USER_MANAGER (user_data);
+ guint size = 0;
+
+ GDK_THREADS_ENTER ();
+
+ /* drop all cached groups */
+ size += g_hash_table_foreach_remove (manager->groups, (GHRFunc) gtk_true, NULL);
+
+ /* drop all cached users */
+ size += g_hash_table_foreach_remove (manager->users, (GHRFunc) gtk_true, NULL);
+
+ /* reload groups and passwd files if we had cached entities */
+ if (G_LIKELY (size > 0))
+ {
+ endgrent ();
+ endpwent ();
+
+#ifdef HAVE_SETGROUPENT
+ setgroupent (TRUE);
+#endif
+
+#ifdef HAVE_SETPASSENT
+ setpassent (TRUE);
+#endif
+ }
+
+ GDK_THREADS_LEAVE ();
+
+ return TRUE;
+}
+
+
+
+static void
+thunar_vfs_user_manager_flush_timer_destroy (gpointer user_data)
+{
+ THUNAR_VFS_USER_MANAGER (user_data)->flush_timer_id = -1;
+}
+
+
+
+/**
+ * thunar_vfs_user_manager_get_default:
+ *
+ * Returns the default #ThunarVfsUserManager instance, which is shared
+ * by all modules using the user module. Call g_object_unref() on the
+ * returned object when you are done with it.
+ *
+ * Return value: the default #ThunarVfsUserManager instance.
+ **/
+ThunarVfsUserManager*
+thunar_vfs_user_manager_get_default (void)
+{
+ static ThunarVfsUserManager *manager = NULL;
+
+ if (G_UNLIKELY (manager == NULL))
+ {
+ manager = g_object_new (THUNAR_VFS_TYPE_USER_MANAGER, NULL);
+ g_object_add_weak_pointer (G_OBJECT (manager), (gpointer) &manager);
+ }
+ else
+ {
+ g_object_ref (G_OBJECT (manager));
+ }
+
+ return manager;
+}
+
+
+
+/**
+ * thunar_vfs_user_manager_get_group_by_id:
+ * @manager : a #ThunarVfsUserManager.
+ * @id : the group id.
+ *
+ * Looks up the #ThunarVfsGroup corresponding to @id in @manager. Returns
+ * %NULL if @manager is unable to determine the #ThunarVfsGroup for @id,
+ * else a pointer to the corresponding #ThunarVfsGroup. The caller is
+ * responsible for freeing the returned object using g_object_unref().
+ *
+ * Return value: the #ThunarVfsGroup corresponding to @id or %NULL.
+ **/
+ThunarVfsGroup*
+thunar_vfs_user_manager_get_group_by_id (ThunarVfsUserManager *manager,
+ ThunarVfsGroupId id)
+{
+ ThunarVfsGroup *group;
+
+ g_return_val_if_fail (THUNAR_VFS_IS_USER_MANAGER (manager), NULL);
+
+ /* lookup/load the group corresponding to id */
+ group = g_hash_table_lookup (manager->groups, GINT_TO_POINTER (id));
+ if (group == NULL)
+ {
+ group = thunar_vfs_group_new (id);
+ g_hash_table_insert (manager->groups, GINT_TO_POINTER (id), group);
+ }
+
+ /* take a reference for the caller */
+ g_object_ref (G_OBJECT (group));
+
+ return group;
+}
+
+
+
+/**
+ * thunar_vfs_user_manager_get_user_by_id:
+ * @manager : a #ThunarVfsUserManager.
+ * @id : the user id.
+ *
+ * Looks up the #ThunarVfsUser corresponding to @id in @manager. Returns
+ * %NULL if @manager is unable to determine the #ThunarVfsUser for @id,
+ * else a pointer to the corresponding #ThunarVfsUser. The caller is
+ * responsible for freeing the returned object using g_object_unref().
+ *
+ * Return value: the #ThunarVfsUser corresponding to @id or %NULL.
+ **/
+ThunarVfsUser*
+thunar_vfs_user_manager_get_user_by_id (ThunarVfsUserManager *manager,
+ ThunarVfsUserId id)
+{
+ ThunarVfsUser *user;
+
+ g_return_val_if_fail (THUNAR_VFS_IS_USER_MANAGER (manager), NULL);
+
+ /* lookup/load the user corresponding to id */
+ user = g_hash_table_lookup (manager->users, GINT_TO_POINTER (id));
+ if (user == NULL)
+ {
+ user = thunar_vfs_user_new (id);
+ g_hash_table_insert (manager->users, GINT_TO_POINTER (id), user);
+ }
+
+ /* take a reference for the caller */
+ g_object_ref (G_OBJECT (user));
+
+ return user;
+}
+
+
+
+#define __THUNAR_VFS_USER_C__
+#include <thunar-vfs/thunar-vfs-aliasdef.c>
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-user.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-user.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-user.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,85 @@
+/* $Id: thunar-vfs-user.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __THUNAR_VFS_USER_H__
+#define __THUNAR_VFS_USER_H__
+
+#include <thunar-vfs/thunar-vfs-info.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarVfsGroupClass ThunarVfsGroupClass;
+typedef struct _ThunarVfsGroup ThunarVfsGroup;
+
+#define THUNAR_VFS_TYPE_GROUP (thunar_vfs_group_get_type ())
+#define THUNAR_VFS_GROUP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_VFS_TYPE_GROUP, ThunarVfsGroup))
+#define THUNAR_VFS_GROUP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_VFS_TYPE_GROUP, ThunarVfsGroupClass))
+#define THUNAR_VFS_IS_GROUP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_VFS_TYPE_GROUP))
+#define THUNAR_VFS_IS_GROUP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_VFS_TYPE_GROUP))
+#define THUNAR_VFS_GROUP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_VFS_TYPE_GROUP, ThunarVfsGroupClass))
+
+GType thunar_vfs_group_get_type (void) G_GNUC_CONST;
+
+ThunarVfsGroupId thunar_vfs_group_get_id (ThunarVfsGroup *group);
+const gchar *thunar_vfs_group_get_name (ThunarVfsGroup *group);
+
+
+typedef struct _ThunarVfsUserClass ThunarVfsUserClass;
+typedef struct _ThunarVfsUser ThunarVfsUser;
+
+#define THUNAR_VFS_TYPE_USER (thunar_vfs_user_get_type ())
+#define THUNAR_VFS_USER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_VFS_TYPE_USER, ThunarVfsUser))
+#define THUNAR_VFS_USER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_VFS_TYPE_USER, ThunarVfsUserClass))
+#define THUNAR_VFS_IS_USER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_VFS_TYPE_USER))
+#define THUNAR_VFS_IS_USER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_VFS_TYPE_USER))
+#define THUNAR_VFS_USER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_VFS_TYPE_USER, ThunarVfsUserClass))
+
+GType thunar_vfs_user_get_type (void) G_GNUC_CONST;
+
+GList *thunar_vfs_user_get_groups (ThunarVfsUser *user);
+ThunarVfsGroup *thunar_vfs_user_get_primary_group (ThunarVfsUser *user);
+ThunarVfsUserId thunar_vfs_user_get_id (ThunarVfsUser *user);
+const gchar *thunar_vfs_user_get_name (ThunarVfsUser *user);
+const gchar *thunar_vfs_user_get_real_name (ThunarVfsUser *user);
+gboolean thunar_vfs_user_is_me (ThunarVfsUser *user);
+
+
+typedef struct _ThunarVfsUserManagerClass ThunarVfsUserManagerClass;
+typedef struct _ThunarVfsUserManager ThunarVfsUserManager;
+
+#define THUNAR_VFS_TYPE_USER_MANAGER (thunar_vfs_user_manager_get_type ())
+#define THUNAR_VFS_USER_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_VFS_TYPE_USER_MANAGER, ThunarVfsUserManager))
+#define THUNAR_VFS_USER_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_VFS_TYPE_USER_MANAGER, ThunarVfsUserManagerClass))
+#define THUNAR_VFS_IS_USER_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_VFS_TYPE_USER_MANAGER))
+#define THUNAR_VFS_IS_USER_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_VFS_TYPE_USER_MANAGER))
+#define THUNAR_VFS_USER_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_VFS_TYPE_USER_MANAGER, ThunarVfsUserManagerClass))
+
+GType thunar_vfs_user_manager_get_type (void) G_GNUC_CONST;
+
+ThunarVfsUserManager *thunar_vfs_user_manager_get_default (void);
+
+ThunarVfsGroup *thunar_vfs_user_manager_get_group_by_id (ThunarVfsUserManager *manager,
+ ThunarVfsGroupId id);
+ThunarVfsUser *thunar_vfs_user_manager_get_user_by_id (ThunarVfsUserManager *manager,
+ ThunarVfsUserId id);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VFS_USER_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-util.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-util.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-util.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,68 @@
+/* $Id: thunar-vfs-util.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <thunar-vfs/thunar-vfs-util.h>
+#include <thunar-vfs/thunar-vfs-alias.h>
+
+
+
+/**
+ * thunar_vfs_humanize_size:
+ * @size : size in bytes.
+ * @buffer : destination buffer or %NULL to dynamically allocate a buffer.
+ * @buflen : length of @buffer in bytes.
+ *
+ * The caller is responsible to free the returned string using g_free()
+ * if you pass %NULL for @buffer. Else the returned string will be a
+ * pointer to @buffer.
+ *
+ * Return value: a string containing a human readable description of @size.
+ **/
+gchar*
+thunar_vfs_humanize_size (ThunarVfsFileSize size,
+ gchar *buffer,
+ gsize buflen)
+{
+ if (buffer == NULL)
+ {
+ buffer = g_new (gchar, 32);
+ buflen = 32;
+ }
+
+ if (G_UNLIKELY (size > 1024ul * 1024ul * 1024ul))
+ g_snprintf (buffer, buflen, "%0.1f G", size / (1024.0 * 1024.0 * 1024.0));
+ else if (size > 1024ul * 1024ul)
+ g_snprintf (buffer, buflen, "%0.1f M", size / (1024.0 * 1024.0));
+ else if (size > 1024ul)
+ g_snprintf (buffer, buflen, "%0.1f K", size / 1024.0);
+ else
+ g_snprintf (buffer, buflen, "%lu B", (gulong) size);
+
+ return buffer;
+}
+
+
+
+#define __THUNAR_VFS_UTIL_C__
+#include <thunar-vfs/thunar-vfs-aliasdef.c>
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-util.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-util.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-util.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,36 @@
+/* $Id: thunar-vfs-util.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __THUNAR_VFS_UTIL_H__
+#define __THUNAR_VFS_UTIL_H__
+
+#include <glib.h>
+
+#include <thunar-vfs/thunar-vfs-types.h>
+
+G_BEGIN_DECLS;
+
+gchar *thunar_vfs_humanize_size (ThunarVfsFileSize size,
+ gchar *buffer,
+ gsize buflen);
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VFS_UTIL_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-volume-bsd.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-volume-bsd.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-volume-bsd.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,466 @@
+/* $Id: thunar-vfs-volume-bsd.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_SYS_CDIO_H
+#include <sys/cdio.h>
+#endif
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_MOUNT_H
+#include <sys/mount.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#ifdef HAVE_FSTAB_H
+#include <fstab.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <exo/exo.h>
+
+#include <thunar-vfs/thunar-vfs-volume-bsd.h>
+#include <thunar-vfs/thunar-vfs-alias.h>
+
+
+
+static void thunar_vfs_volume_bsd_class_init (ThunarVfsVolumeBSDClass *klass);
+static void thunar_vfs_volume_bsd_volume_init (ThunarVfsVolumeIface *iface);
+static void thunar_vfs_volume_bsd_init (ThunarVfsVolumeBSD *volume_bsd);
+static void thunar_vfs_volume_bsd_finalize (GObject *object);
+static ThunarVfsVolumeKind thunar_vfs_volume_bsd_get_kind (ThunarVfsVolume *volume);
+static const gchar *thunar_vfs_volume_bsd_get_name (ThunarVfsVolume *volume);
+static ThunarVfsVolumeStatus thunar_vfs_volume_bsd_get_status (ThunarVfsVolume *volume);
+static ThunarVfsPath *thunar_vfs_volume_bsd_get_mount_point (ThunarVfsVolume *volume);
+static gboolean thunar_vfs_volume_bsd_get_free_space (ThunarVfsVolume *volume,
+ ThunarVfsFileSize *free_space_return);
+static gboolean thunar_vfs_volume_bsd_update (gpointer user_data);
+static ThunarVfsVolumeBSD *thunar_vfs_volume_bsd_new (const gchar *device_path,
+ const gchar *mount_path);
+
+
+
+struct _ThunarVfsVolumeBSDClass
+{
+ GObjectClass __parent__;
+};
+
+struct _ThunarVfsVolumeBSD
+{
+ GObject __parent__;
+
+ gchar *device_path;
+ const gchar *device_name;
+ ThunarVfsFileDevice device_id;
+
+ gchar *label;
+
+ struct statfs info;
+ ThunarVfsPath *mount_point;
+
+ ThunarVfsVolumeKind kind;
+ ThunarVfsVolumeStatus status;
+
+ gint update_timer_id;
+};
+
+
+
+G_DEFINE_TYPE_WITH_CODE (ThunarVfsVolumeBSD,
+ thunar_vfs_volume_bsd,
+ G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (THUNAR_VFS_TYPE_VOLUME,
+ thunar_vfs_volume_bsd_volume_init));
+
+
+
+static void
+thunar_vfs_volume_bsd_class_init (ThunarVfsVolumeBSDClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_vfs_volume_bsd_finalize;
+}
+
+
+
+static void
+thunar_vfs_volume_bsd_volume_init (ThunarVfsVolumeIface *iface)
+{
+ iface->get_kind = thunar_vfs_volume_bsd_get_kind;
+ iface->get_name = thunar_vfs_volume_bsd_get_name;
+ iface->get_status = thunar_vfs_volume_bsd_get_status;
+ iface->get_mount_point = thunar_vfs_volume_bsd_get_mount_point;
+ iface->get_free_space = thunar_vfs_volume_bsd_get_free_space;
+}
+
+
+
+static void
+thunar_vfs_volume_bsd_init (ThunarVfsVolumeBSD *volume_bsd)
+{
+}
+
+
+
+static void
+thunar_vfs_volume_bsd_finalize (GObject *object)
+{
+ ThunarVfsVolumeBSD *volume_bsd = THUNAR_VFS_VOLUME_BSD (object);
+
+ g_return_if_fail (THUNAR_VFS_IS_VOLUME_BSD (volume_bsd));
+
+ if (G_LIKELY (volume_bsd->update_timer_id >= 0))
+ g_source_remove (volume_bsd->update_timer_id);
+
+ if (G_LIKELY (volume_bsd->mount_point != NULL))
+ thunar_vfs_path_unref (volume_bsd->mount_point);
+
+ g_free (volume_bsd->device_path);
+ g_free (volume_bsd->label);
+
+ G_OBJECT_CLASS (thunar_vfs_volume_bsd_parent_class)->finalize (object);
+}
+
+
+
+static ThunarVfsVolumeKind
+thunar_vfs_volume_bsd_get_kind (ThunarVfsVolume *volume)
+{
+ return THUNAR_VFS_VOLUME_BSD (volume)->kind;
+}
+
+
+
+static const gchar*
+thunar_vfs_volume_bsd_get_name (ThunarVfsVolume *volume)
+{
+ ThunarVfsVolumeBSD *volume_bsd = THUNAR_VFS_VOLUME_BSD (volume);
+
+ return (volume_bsd->label != NULL) ? volume_bsd->label : volume_bsd->device_name;
+}
+
+
+
+static ThunarVfsVolumeStatus
+thunar_vfs_volume_bsd_get_status (ThunarVfsVolume *volume)
+{
+ return THUNAR_VFS_VOLUME_BSD (volume)->status;
+}
+
+
+
+static ThunarVfsPath*
+thunar_vfs_volume_bsd_get_mount_point (ThunarVfsVolume *volume)
+{
+ return THUNAR_VFS_VOLUME_BSD (volume)->mount_point;
+}
+
+
+
+static gboolean
+thunar_vfs_volume_bsd_get_free_space (ThunarVfsVolume *volume,
+ ThunarVfsFileSize *free_space_return)
+{
+ ThunarVfsVolumeBSD *volume_bsd = THUNAR_VFS_VOLUME_BSD (volume);
+ *free_space_return = volume_bsd->info.f_bavail * volume_bsd->info.f_bsize;
+ return TRUE;
+}
+
+
+
+static gboolean
+thunar_vfs_volume_bsd_update (gpointer user_data)
+{
+ ThunarVfsVolumeStatus status = 0;
+ struct ioc_toc_header ith;
+ ThunarVfsVolumeBSD *volume_bsd = THUNAR_VFS_VOLUME_BSD (user_data);
+ struct stat sb;
+ gchar *label;
+ gchar buffer[THUNAR_VFS_PATH_MAXSTRLEN];
+ int fd;
+
+ if (volume_bsd->kind == THUNAR_VFS_VOLUME_KIND_CDROM)
+ {
+ /* try to read the table of contents from the CD-ROM,
+ * which will only succeed if a disc is present for
+ * the drive.
+ */
+ fd = open (volume_bsd->device_path, O_RDONLY);
+ if (fd >= 0)
+ {
+ if (ioctl (fd, CDIOREADTOCHEADER, &ith) >= 0)
+ {
+ status |= THUNAR_VFS_VOLUME_STATUS_PRESENT;
+
+ /* read the label of the disc */
+ if (volume_bsd->label == NULL && (volume_bsd->status & THUNAR_VFS_VOLUME_STATUS_PRESENT) == 0)
+ {
+ /* skip to sector 16 and read it */
+ if (lseek (fd, 16 * 2048, SEEK_SET) >= 0 && read (fd, buffer, 2048) >= 0)
+ {
+ /* offset 40 contains the volume identifier */
+ label = buffer + 40;
+ label[32] = '\0';
+ g_strchomp (label);
+ if (G_LIKELY (*label != '\0'))
+ volume_bsd->label = g_strdup (label);
+ }
+ }
+ }
+
+ close (fd);
+ }
+ }
+
+ /* determine the absolute path to the mount point */
+ if (thunar_vfs_path_to_string (volume_bsd->mount_point, buffer, sizeof (buffer), NULL) > 0)
+ {
+ /* query the file system information for the mount point */
+ if (statfs (buffer, &volume_bsd->info) >= 0)
+ {
+ /* if the device is mounted, it means that a medium is present */
+ if (exo_str_is_equal (volume_bsd->info.f_mntfromname, volume_bsd->device_path))
+ status |= THUNAR_VFS_VOLUME_STATUS_MOUNTED | THUNAR_VFS_VOLUME_STATUS_PRESENT;
+ }
+
+ /* free the volume label if no disc is present */
+ if ((status & THUNAR_VFS_VOLUME_STATUS_PRESENT) == 0)
+ {
+ g_free (volume_bsd->label);
+ volume_bsd->label = NULL;
+ }
+
+ /* determine the device id if mounted */
+ if ((status & THUNAR_VFS_VOLUME_STATUS_MOUNTED) != 0)
+ {
+ if (stat (buffer, &sb) < 0)
+ volume_bsd->device_id = (ThunarVfsFileDevice) -1;
+ else
+ volume_bsd->device_id = sb.st_dev;
+ }
+ }
+
+ /* update the status if necessary */
+ if (status != volume_bsd->status)
+ {
+ volume_bsd->status = status;
+ thunar_vfs_volume_changed (THUNAR_VFS_VOLUME (volume_bsd));
+ }
+
+ return TRUE;
+}
+
+
+
+static ThunarVfsVolumeBSD*
+thunar_vfs_volume_bsd_new (const gchar *device_path,
+ const gchar *mount_path)
+{
+ ThunarVfsVolumeBSD *volume_bsd;
+ const gchar *p;
+
+ g_return_val_if_fail (device_path != NULL, NULL);
+ g_return_val_if_fail (mount_path != NULL, NULL);
+
+ /* allocate the volume object */
+ volume_bsd = g_object_new (THUNAR_VFS_TYPE_VOLUME_BSD, NULL);
+ volume_bsd->device_path = g_strdup (device_path);
+ volume_bsd->mount_point = thunar_vfs_path_new (mount_path, NULL);
+
+ /* determine the device name */
+ for (p = volume_bsd->device_name = volume_bsd->device_path; *p != '\0'; ++p)
+ if (p[0] == '/' && (p[1] != '/' && p[1] != '\0'))
+ volume_bsd->device_name = p + 1;
+
+ /* determine the kind of the volume */
+ p = volume_bsd->device_name;
+ if (p[0] == 'c' && p[1] == 'd' && g_ascii_isdigit (p[2]))
+ volume_bsd->kind = THUNAR_VFS_VOLUME_KIND_CDROM;
+ else if (p[0] == 'f' && p[1] == 'd' && g_ascii_isdigit (p[2]))
+ volume_bsd->kind = THUNAR_VFS_VOLUME_KIND_FLOPPY;
+ else if ((p[0] == 'a' && p[1] == 'd' && g_ascii_isdigit (p[2]))
+ || (p[0] == 'd' && p[1] == 'a' && g_ascii_isdigit (p[2])))
+ volume_bsd->kind = THUNAR_VFS_VOLUME_KIND_HARDDISK;
+ else
+ volume_bsd->kind = THUNAR_VFS_VOLUME_KIND_UNKNOWN;
+
+ /* determine up-to-date status */
+ thunar_vfs_volume_bsd_update (volume_bsd);
+
+ /* start the update timer */
+ volume_bsd->update_timer_id = g_timeout_add (1000, thunar_vfs_volume_bsd_update, volume_bsd);
+
+ return volume_bsd;
+}
+
+
+
+
+static void thunar_vfs_volume_manager_bsd_class_init (ThunarVfsVolumeManagerBSDClass *klass);
+static void thunar_vfs_volume_manager_bsd_manager_init (ThunarVfsVolumeManagerIface *iface);
+static void thunar_vfs_volume_manager_bsd_init (ThunarVfsVolumeManagerBSD *manager_bsd);
+static void thunar_vfs_volume_manager_bsd_finalize (GObject *object);
+static ThunarVfsVolume *thunar_vfs_volume_manager_bsd_get_volume_by_info (ThunarVfsVolumeManager *manager,
+ const ThunarVfsInfo *info);
+static GList *thunar_vfs_volume_manager_bsd_get_volumes (ThunarVfsVolumeManager *manager);
+
+
+
+struct _ThunarVfsVolumeManagerBSDClass
+{
+ GObjectClass __parent__;
+};
+
+struct _ThunarVfsVolumeManagerBSD
+{
+ GObject __parent__;
+ GList *volumes;
+};
+
+
+
+G_DEFINE_TYPE_WITH_CODE (ThunarVfsVolumeManagerBSD,
+ thunar_vfs_volume_manager_bsd,
+ G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (THUNAR_VFS_TYPE_VOLUME_MANAGER,
+ thunar_vfs_volume_manager_bsd_manager_init));
+
+
+
+static void
+thunar_vfs_volume_manager_bsd_class_init (ThunarVfsVolumeManagerBSDClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_vfs_volume_manager_bsd_finalize;
+}
+
+
+
+static void
+thunar_vfs_volume_manager_bsd_manager_init (ThunarVfsVolumeManagerIface *iface)
+{
+ iface->get_volume_by_info = thunar_vfs_volume_manager_bsd_get_volume_by_info;
+ iface->get_volumes = thunar_vfs_volume_manager_bsd_get_volumes;
+}
+
+
+
+static void
+thunar_vfs_volume_manager_bsd_init (ThunarVfsVolumeManagerBSD *manager_bsd)
+{
+ ThunarVfsVolumeBSD *volume_bsd;
+ struct fstab *fs;
+
+ /* load the fstab database */
+ setfsent ();
+
+ /* process all fstab entries and generate volume objects */
+ for (;;)
+ {
+ /* query the next fstab entry */
+ fs = getfsent ();
+ if (G_UNLIKELY (fs == NULL))
+ break;
+
+ /* we only care for file systems */
+ if (!exo_str_is_equal (fs->fs_type, FSTAB_RW)
+ && !exo_str_is_equal (fs->fs_type, FSTAB_RQ)
+ && !exo_str_is_equal (fs->fs_type, FSTAB_RO))
+ continue;
+
+ volume_bsd = thunar_vfs_volume_bsd_new (fs->fs_spec, fs->fs_file);
+ if (G_LIKELY (volume_bsd != NULL))
+ manager_bsd->volumes = g_list_append (manager_bsd->volumes, volume_bsd);
+ }
+
+ /* unload the fstab database */
+ endfsent ();
+}
+
+
+
+static void
+thunar_vfs_volume_manager_bsd_finalize (GObject *object)
+{
+ ThunarVfsVolumeManagerBSD *manager_bsd = THUNAR_VFS_VOLUME_MANAGER_BSD (object);
+ GList *lp;
+
+ g_return_if_fail (THUNAR_VFS_IS_VOLUME_MANAGER (manager_bsd));
+
+ for (lp = manager_bsd->volumes; lp != NULL; lp = lp->next)
+ g_object_unref (G_OBJECT (lp->data));
+ g_list_free (manager_bsd->volumes);
+
+ G_OBJECT_CLASS (thunar_vfs_volume_manager_bsd_parent_class)->finalize (object);
+}
+
+
+
+static ThunarVfsVolume*
+thunar_vfs_volume_manager_bsd_get_volume_by_info (ThunarVfsVolumeManager *manager,
+ const ThunarVfsInfo *info)
+{
+ ThunarVfsVolumeManagerBSD *manager_bsd = THUNAR_VFS_VOLUME_MANAGER_BSD (manager);
+ ThunarVfsVolumeBSD *volume_bsd = NULL;
+ GList *lp;
+
+ for (lp = manager_bsd->volumes; lp != NULL; lp = lp->next)
+ {
+ volume_bsd = THUNAR_VFS_VOLUME_BSD (lp->data);
+ if ((volume_bsd->status & THUNAR_VFS_VOLUME_STATUS_MOUNTED) != 0 && volume_bsd->device_id == info->device)
+ return THUNAR_VFS_VOLUME (volume_bsd);
+ }
+
+ return NULL;
+}
+
+
+
+static GList*
+thunar_vfs_volume_manager_bsd_get_volumes (ThunarVfsVolumeManager *manager)
+{
+ return THUNAR_VFS_VOLUME_MANAGER_BSD (manager)->volumes;
+}
+
+
+
+GType
+_thunar_vfs_volume_manager_impl_get_type (void)
+{
+ return THUNAR_VFS_TYPE_VOLUME_MANAGER_BSD;
+}
+
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-volume-bsd.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-volume-bsd.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-volume-bsd.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,55 @@
+/* $Id: thunar-vfs-volume-bsd.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __THUNAR_VFS_VOLUME_BSD_H__
+#define __THUNAR_VFS_VOLUME_BSD_H__
+
+#include <thunar-vfs/thunar-vfs-volume.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarVfsVolumeBSDClass ThunarVfsVolumeBSDClass;
+typedef struct _ThunarVfsVolumeBSD ThunarVfsVolumeBSD;
+
+#define THUNAR_VFS_TYPE_VOLUME_BSD (thunar_vfs_volume_bsd_get_type ())
+#define THUNAR_VFS_VOLUME_BSD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_VFS_TYPE_VOLUME_BSD, ThunarVfsVolumeBSD))
+#define THUNAR_VFS_VOLUME_BSD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_VFS_TYPE_VOLUME_BSD, ThunarVfsVolumeBSDClass))
+#define THUNAR_VFS_IS_VOLUME_BSD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_VFS_TYPE_VOLUME_BSD))
+#define THUNAR_VFS_IS_VOLUME_BSD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_VFS_TYPE_VOLUME_BSD))
+#define THUNAR_VFS_VOLUME_BSD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_VFS_TYPE_VOLUME_BSD, ThunarVfsVolumeBSDClass))
+
+GType thunar_vfs_volume_bsd_get_type (void) G_GNUC_CONST G_GNUC_INTERNAL;
+
+
+typedef struct _ThunarVfsVolumeManagerBSDClass ThunarVfsVolumeManagerBSDClass;
+typedef struct _ThunarVfsVolumeManagerBSD ThunarVfsVolumeManagerBSD;
+
+#define THUNAR_VFS_TYPE_VOLUME_MANAGER_BSD (thunar_vfs_volume_manager_bsd_get_type ())
+#define THUNAR_VFS_VOLUME_MANAGER_BSD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_VFS_TYPE_VOLUME_MANAGER_BSD, ThunarVfsVolumeManagerBSD))
+#define THUNAR_VFS_VOLUME_MANAGER_BSD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_VFS_TYPE_VOLUME_MANAGER_BSD, ThunarVfsVolumeManagerBSDClass))
+#define THUNAR_VFS_IS_VOLUME_MANAGER_BSD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_VFS_TYPE_VOLUME_MANAGER_BSD))
+#define THUNAR_VFS_IS_VOLUME_MANAGER_BSD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_VFS_TYPE_VOLUME_MANAGER_BSD))
+#define THUNAR_VFS_VOLUME_MANAGER_BSD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_VFS_TYPE_VOLUME_MANAGER_BSD, ThunarVfsVolumeManagerBSDClass))
+
+GType thunar_vfs_volume_manager_bsd_get_type (void) G_GNUC_CONST G_GNUC_INTERNAL;
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VFS_VOLUME_BSD_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-volume-impl.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-volume-impl.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-volume-impl.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,466 @@
+/* $Id: thunar-vfs-volume-bsd.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_SYS_CDIO_H
+#include <sys/cdio.h>
+#endif
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_MOUNT_H
+#include <sys/mount.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#ifdef HAVE_FSTAB_H
+#include <fstab.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <exo/exo.h>
+
+#include <thunar-vfs/thunar-vfs-volume-bsd.h>
+#include <thunar-vfs/thunar-vfs-alias.h>
+
+
+
+static void thunar_vfs_volume_bsd_class_init (ThunarVfsVolumeBSDClass *klass);
+static void thunar_vfs_volume_bsd_volume_init (ThunarVfsVolumeIface *iface);
+static void thunar_vfs_volume_bsd_init (ThunarVfsVolumeBSD *volume_bsd);
+static void thunar_vfs_volume_bsd_finalize (GObject *object);
+static ThunarVfsVolumeKind thunar_vfs_volume_bsd_get_kind (ThunarVfsVolume *volume);
+static const gchar *thunar_vfs_volume_bsd_get_name (ThunarVfsVolume *volume);
+static ThunarVfsVolumeStatus thunar_vfs_volume_bsd_get_status (ThunarVfsVolume *volume);
+static ThunarVfsPath *thunar_vfs_volume_bsd_get_mount_point (ThunarVfsVolume *volume);
+static gboolean thunar_vfs_volume_bsd_get_free_space (ThunarVfsVolume *volume,
+ ThunarVfsFileSize *free_space_return);
+static gboolean thunar_vfs_volume_bsd_update (gpointer user_data);
+static ThunarVfsVolumeBSD *thunar_vfs_volume_bsd_new (const gchar *device_path,
+ const gchar *mount_path);
+
+
+
+struct _ThunarVfsVolumeBSDClass
+{
+ GObjectClass __parent__;
+};
+
+struct _ThunarVfsVolumeBSD
+{
+ GObject __parent__;
+
+ gchar *device_path;
+ const gchar *device_name;
+ ThunarVfsFileDevice device_id;
+
+ gchar *label;
+
+ struct statfs info;
+ ThunarVfsPath *mount_point;
+
+ ThunarVfsVolumeKind kind;
+ ThunarVfsVolumeStatus status;
+
+ gint update_timer_id;
+};
+
+
+
+G_DEFINE_TYPE_WITH_CODE (ThunarVfsVolumeBSD,
+ thunar_vfs_volume_bsd,
+ G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (THUNAR_VFS_TYPE_VOLUME,
+ thunar_vfs_volume_bsd_volume_init));
+
+
+
+static void
+thunar_vfs_volume_bsd_class_init (ThunarVfsVolumeBSDClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_vfs_volume_bsd_finalize;
+}
+
+
+
+static void
+thunar_vfs_volume_bsd_volume_init (ThunarVfsVolumeIface *iface)
+{
+ iface->get_kind = thunar_vfs_volume_bsd_get_kind;
+ iface->get_name = thunar_vfs_volume_bsd_get_name;
+ iface->get_status = thunar_vfs_volume_bsd_get_status;
+ iface->get_mount_point = thunar_vfs_volume_bsd_get_mount_point;
+ iface->get_free_space = thunar_vfs_volume_bsd_get_free_space;
+}
+
+
+
+static void
+thunar_vfs_volume_bsd_init (ThunarVfsVolumeBSD *volume_bsd)
+{
+}
+
+
+
+static void
+thunar_vfs_volume_bsd_finalize (GObject *object)
+{
+ ThunarVfsVolumeBSD *volume_bsd = THUNAR_VFS_VOLUME_BSD (object);
+
+ g_return_if_fail (THUNAR_VFS_IS_VOLUME_BSD (volume_bsd));
+
+ if (G_LIKELY (volume_bsd->update_timer_id >= 0))
+ g_source_remove (volume_bsd->update_timer_id);
+
+ if (G_LIKELY (volume_bsd->mount_point != NULL))
+ thunar_vfs_path_unref (volume_bsd->mount_point);
+
+ g_free (volume_bsd->device_path);
+ g_free (volume_bsd->label);
+
+ G_OBJECT_CLASS (thunar_vfs_volume_bsd_parent_class)->finalize (object);
+}
+
+
+
+static ThunarVfsVolumeKind
+thunar_vfs_volume_bsd_get_kind (ThunarVfsVolume *volume)
+{
+ return THUNAR_VFS_VOLUME_BSD (volume)->kind;
+}
+
+
+
+static const gchar*
+thunar_vfs_volume_bsd_get_name (ThunarVfsVolume *volume)
+{
+ ThunarVfsVolumeBSD *volume_bsd = THUNAR_VFS_VOLUME_BSD (volume);
+
+ return (volume_bsd->label != NULL) ? volume_bsd->label : volume_bsd->device_name;
+}
+
+
+
+static ThunarVfsVolumeStatus
+thunar_vfs_volume_bsd_get_status (ThunarVfsVolume *volume)
+{
+ return THUNAR_VFS_VOLUME_BSD (volume)->status;
+}
+
+
+
+static ThunarVfsPath*
+thunar_vfs_volume_bsd_get_mount_point (ThunarVfsVolume *volume)
+{
+ return THUNAR_VFS_VOLUME_BSD (volume)->mount_point;
+}
+
+
+
+static gboolean
+thunar_vfs_volume_bsd_get_free_space (ThunarVfsVolume *volume,
+ ThunarVfsFileSize *free_space_return)
+{
+ ThunarVfsVolumeBSD *volume_bsd = THUNAR_VFS_VOLUME_BSD (volume);
+ *free_space_return = volume_bsd->info.f_bavail * volume_bsd->info.f_bsize;
+ return TRUE;
+}
+
+
+
+static gboolean
+thunar_vfs_volume_bsd_update (gpointer user_data)
+{
+ ThunarVfsVolumeStatus status = 0;
+ struct ioc_toc_header ith;
+ ThunarVfsVolumeBSD *volume_bsd = THUNAR_VFS_VOLUME_BSD (user_data);
+ struct stat sb;
+ gchar *label;
+ gchar buffer[THUNAR_VFS_PATH_MAXSTRLEN];
+ int fd;
+
+ if (volume_bsd->kind == THUNAR_VFS_VOLUME_KIND_CDROM)
+ {
+ /* try to read the table of contents from the CD-ROM,
+ * which will only succeed if a disc is present for
+ * the drive.
+ */
+ fd = open (volume_bsd->device_path, O_RDONLY);
+ if (fd >= 0)
+ {
+ if (ioctl (fd, CDIOREADTOCHEADER, &ith) >= 0)
+ {
+ status |= THUNAR_VFS_VOLUME_STATUS_PRESENT;
+
+ /* read the label of the disc */
+ if (volume_bsd->label == NULL && (volume_bsd->status & THUNAR_VFS_VOLUME_STATUS_PRESENT) == 0)
+ {
+ /* skip to sector 16 and read it */
+ if (lseek (fd, 16 * 2048, SEEK_SET) >= 0 && read (fd, buffer, 2048) >= 0)
+ {
+ /* offset 40 contains the volume identifier */
+ label = buffer + 40;
+ label[32] = '\0';
+ g_strchomp (label);
+ if (G_LIKELY (*label != '\0'))
+ volume_bsd->label = g_strdup (label);
+ }
+ }
+ }
+
+ close (fd);
+ }
+ }
+
+ /* determine the absolute path to the mount point */
+ if (thunar_vfs_path_to_string (volume_bsd->mount_point, buffer, sizeof (buffer), NULL) > 0)
+ {
+ /* query the file system information for the mount point */
+ if (statfs (buffer, &volume_bsd->info) >= 0)
+ {
+ /* if the device is mounted, it means that a medium is present */
+ if (exo_str_is_equal (volume_bsd->info.f_mntfromname, volume_bsd->device_path))
+ status |= THUNAR_VFS_VOLUME_STATUS_MOUNTED | THUNAR_VFS_VOLUME_STATUS_PRESENT;
+ }
+
+ /* free the volume label if no disc is present */
+ if ((status & THUNAR_VFS_VOLUME_STATUS_PRESENT) == 0)
+ {
+ g_free (volume_bsd->label);
+ volume_bsd->label = NULL;
+ }
+
+ /* determine the device id if mounted */
+ if ((status & THUNAR_VFS_VOLUME_STATUS_MOUNTED) != 0)
+ {
+ if (stat (buffer, &sb) < 0)
+ volume_bsd->device_id = (ThunarVfsFileDevice) -1;
+ else
+ volume_bsd->device_id = sb.st_dev;
+ }
+ }
+
+ /* update the status if necessary */
+ if (status != volume_bsd->status)
+ {
+ volume_bsd->status = status;
+ thunar_vfs_volume_changed (THUNAR_VFS_VOLUME (volume_bsd));
+ }
+
+ return TRUE;
+}
+
+
+
+static ThunarVfsVolumeBSD*
+thunar_vfs_volume_bsd_new (const gchar *device_path,
+ const gchar *mount_path)
+{
+ ThunarVfsVolumeBSD *volume_bsd;
+ const gchar *p;
+
+ g_return_val_if_fail (device_path != NULL, NULL);
+ g_return_val_if_fail (mount_path != NULL, NULL);
+
+ /* allocate the volume object */
+ volume_bsd = g_object_new (THUNAR_VFS_TYPE_VOLUME_BSD, NULL);
+ volume_bsd->device_path = g_strdup (device_path);
+ volume_bsd->mount_point = thunar_vfs_path_new (mount_path, NULL);
+
+ /* determine the device name */
+ for (p = volume_bsd->device_name = volume_bsd->device_path; *p != '\0'; ++p)
+ if (p[0] == '/' && (p[1] != '/' && p[1] != '\0'))
+ volume_bsd->device_name = p + 1;
+
+ /* determine the kind of the volume */
+ p = volume_bsd->device_name;
+ if (p[0] == 'c' && p[1] == 'd' && g_ascii_isdigit (p[2]))
+ volume_bsd->kind = THUNAR_VFS_VOLUME_KIND_CDROM;
+ else if (p[0] == 'f' && p[1] == 'd' && g_ascii_isdigit (p[2]))
+ volume_bsd->kind = THUNAR_VFS_VOLUME_KIND_FLOPPY;
+ else if ((p[0] == 'a' && p[1] == 'd' && g_ascii_isdigit (p[2]))
+ || (p[0] == 'd' && p[1] == 'a' && g_ascii_isdigit (p[2])))
+ volume_bsd->kind = THUNAR_VFS_VOLUME_KIND_HARDDISK;
+ else
+ volume_bsd->kind = THUNAR_VFS_VOLUME_KIND_UNKNOWN;
+
+ /* determine up-to-date status */
+ thunar_vfs_volume_bsd_update (volume_bsd);
+
+ /* start the update timer */
+ volume_bsd->update_timer_id = g_timeout_add (1000, thunar_vfs_volume_bsd_update, volume_bsd);
+
+ return volume_bsd;
+}
+
+
+
+
+static void thunar_vfs_volume_manager_bsd_class_init (ThunarVfsVolumeManagerBSDClass *klass);
+static void thunar_vfs_volume_manager_bsd_manager_init (ThunarVfsVolumeManagerIface *iface);
+static void thunar_vfs_volume_manager_bsd_init (ThunarVfsVolumeManagerBSD *manager_bsd);
+static void thunar_vfs_volume_manager_bsd_finalize (GObject *object);
+static ThunarVfsVolume *thunar_vfs_volume_manager_bsd_get_volume_by_info (ThunarVfsVolumeManager *manager,
+ const ThunarVfsInfo *info);
+static GList *thunar_vfs_volume_manager_bsd_get_volumes (ThunarVfsVolumeManager *manager);
+
+
+
+struct _ThunarVfsVolumeManagerBSDClass
+{
+ GObjectClass __parent__;
+};
+
+struct _ThunarVfsVolumeManagerBSD
+{
+ GObject __parent__;
+ GList *volumes;
+};
+
+
+
+G_DEFINE_TYPE_WITH_CODE (ThunarVfsVolumeManagerBSD,
+ thunar_vfs_volume_manager_bsd,
+ G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (THUNAR_VFS_TYPE_VOLUME_MANAGER,
+ thunar_vfs_volume_manager_bsd_manager_init));
+
+
+
+static void
+thunar_vfs_volume_manager_bsd_class_init (ThunarVfsVolumeManagerBSDClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = thunar_vfs_volume_manager_bsd_finalize;
+}
+
+
+
+static void
+thunar_vfs_volume_manager_bsd_manager_init (ThunarVfsVolumeManagerIface *iface)
+{
+ iface->get_volume_by_info = thunar_vfs_volume_manager_bsd_get_volume_by_info;
+ iface->get_volumes = thunar_vfs_volume_manager_bsd_get_volumes;
+}
+
+
+
+static void
+thunar_vfs_volume_manager_bsd_init (ThunarVfsVolumeManagerBSD *manager_bsd)
+{
+ ThunarVfsVolumeBSD *volume_bsd;
+ struct fstab *fs;
+
+ /* load the fstab database */
+ setfsent ();
+
+ /* process all fstab entries and generate volume objects */
+ for (;;)
+ {
+ /* query the next fstab entry */
+ fs = getfsent ();
+ if (G_UNLIKELY (fs == NULL))
+ break;
+
+ /* we only care for file systems */
+ if (!exo_str_is_equal (fs->fs_type, FSTAB_RW)
+ && !exo_str_is_equal (fs->fs_type, FSTAB_RQ)
+ && !exo_str_is_equal (fs->fs_type, FSTAB_RO))
+ continue;
+
+ volume_bsd = thunar_vfs_volume_bsd_new (fs->fs_spec, fs->fs_file);
+ if (G_LIKELY (volume_bsd != NULL))
+ manager_bsd->volumes = g_list_append (manager_bsd->volumes, volume_bsd);
+ }
+
+ /* unload the fstab database */
+ endfsent ();
+}
+
+
+
+static void
+thunar_vfs_volume_manager_bsd_finalize (GObject *object)
+{
+ ThunarVfsVolumeManagerBSD *manager_bsd = THUNAR_VFS_VOLUME_MANAGER_BSD (object);
+ GList *lp;
+
+ g_return_if_fail (THUNAR_VFS_IS_VOLUME_MANAGER (manager_bsd));
+
+ for (lp = manager_bsd->volumes; lp != NULL; lp = lp->next)
+ g_object_unref (G_OBJECT (lp->data));
+ g_list_free (manager_bsd->volumes);
+
+ G_OBJECT_CLASS (thunar_vfs_volume_manager_bsd_parent_class)->finalize (object);
+}
+
+
+
+static ThunarVfsVolume*
+thunar_vfs_volume_manager_bsd_get_volume_by_info (ThunarVfsVolumeManager *manager,
+ const ThunarVfsInfo *info)
+{
+ ThunarVfsVolumeManagerBSD *manager_bsd = THUNAR_VFS_VOLUME_MANAGER_BSD (manager);
+ ThunarVfsVolumeBSD *volume_bsd = NULL;
+ GList *lp;
+
+ for (lp = manager_bsd->volumes; lp != NULL; lp = lp->next)
+ {
+ volume_bsd = THUNAR_VFS_VOLUME_BSD (lp->data);
+ if ((volume_bsd->status & THUNAR_VFS_VOLUME_STATUS_MOUNTED) != 0 && volume_bsd->device_id == info->device)
+ return THUNAR_VFS_VOLUME (volume_bsd);
+ }
+
+ return NULL;
+}
+
+
+
+static GList*
+thunar_vfs_volume_manager_bsd_get_volumes (ThunarVfsVolumeManager *manager)
+{
+ return THUNAR_VFS_VOLUME_MANAGER_BSD (manager)->volumes;
+}
+
+
+
+GType
+_thunar_vfs_volume_manager_impl_get_type (void)
+{
+ return THUNAR_VFS_TYPE_VOLUME_MANAGER_BSD;
+}
+
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-volume-impl.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-volume-impl.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-volume-impl.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,55 @@
+/* $Id: thunar-vfs-volume-bsd.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __THUNAR_VFS_VOLUME_BSD_H__
+#define __THUNAR_VFS_VOLUME_BSD_H__
+
+#include <thunar-vfs/thunar-vfs-volume.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarVfsVolumeBSDClass ThunarVfsVolumeBSDClass;
+typedef struct _ThunarVfsVolumeBSD ThunarVfsVolumeBSD;
+
+#define THUNAR_VFS_TYPE_VOLUME_BSD (thunar_vfs_volume_bsd_get_type ())
+#define THUNAR_VFS_VOLUME_BSD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_VFS_TYPE_VOLUME_BSD, ThunarVfsVolumeBSD))
+#define THUNAR_VFS_VOLUME_BSD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_VFS_TYPE_VOLUME_BSD, ThunarVfsVolumeBSDClass))
+#define THUNAR_VFS_IS_VOLUME_BSD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_VFS_TYPE_VOLUME_BSD))
+#define THUNAR_VFS_IS_VOLUME_BSD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_VFS_TYPE_VOLUME_BSD))
+#define THUNAR_VFS_VOLUME_BSD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_VFS_TYPE_VOLUME_BSD, ThunarVfsVolumeBSDClass))
+
+GType thunar_vfs_volume_bsd_get_type (void) G_GNUC_CONST G_GNUC_INTERNAL;
+
+
+typedef struct _ThunarVfsVolumeManagerBSDClass ThunarVfsVolumeManagerBSDClass;
+typedef struct _ThunarVfsVolumeManagerBSD ThunarVfsVolumeManagerBSD;
+
+#define THUNAR_VFS_TYPE_VOLUME_MANAGER_BSD (thunar_vfs_volume_manager_bsd_get_type ())
+#define THUNAR_VFS_VOLUME_MANAGER_BSD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_VFS_TYPE_VOLUME_MANAGER_BSD, ThunarVfsVolumeManagerBSD))
+#define THUNAR_VFS_VOLUME_MANAGER_BSD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_VFS_TYPE_VOLUME_MANAGER_BSD, ThunarVfsVolumeManagerBSDClass))
+#define THUNAR_VFS_IS_VOLUME_MANAGER_BSD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_VFS_TYPE_VOLUME_MANAGER_BSD))
+#define THUNAR_VFS_IS_VOLUME_MANAGER_BSD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_VFS_TYPE_VOLUME_MANAGER_BSD))
+#define THUNAR_VFS_VOLUME_MANAGER_BSD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_VFS_TYPE_VOLUME_MANAGER_BSD, ThunarVfsVolumeManagerBSDClass))
+
+GType thunar_vfs_volume_manager_bsd_get_type (void) G_GNUC_CONST G_GNUC_INTERNAL;
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VFS_VOLUME_BSD_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-volume-sysv.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-volume-sysv.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-volume-sysv.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,105 @@
+/* $Id: thunar-vfs-volume-sysv.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <thunar-vfs/thunar-vfs-volume-sysv.h>
+#include <thunar-vfs/thunar-vfs-alias.h>
+
+
+
+static void thunar_vfs_volume_manager_sysv_class_init (ThunarVfsVolumeManagerSysVClass *klass);
+static void thunar_vfs_volume_manager_sysv_manager_init (ThunarVfsVolumeManagerIface *iface);
+static void thunar_vfs_volume_manager_sysv_init (ThunarVfsVolumeManagerSysV *manager_sysv);
+static ThunarVfsVolume *thunar_vfs_volume_manager_sysv_get_volume_by_info (ThunarVfsVolumeManager *manager,
+ const ThunarVfsInfo *info);
+static GList *thunar_vfs_volume_manager_sysv_get_volumes (ThunarVfsVolumeManager *manager);
+
+
+
+struct _ThunarVfsVolumeManagerSysVClass
+{
+ GObjectClass __parent__;
+};
+
+struct _ThunarVfsVolumeManagerSysV
+{
+ GObject __parent__;
+};
+
+
+
+G_DEFINE_TYPE_WITH_CODE (ThunarVfsVolumeManagerSysV,
+ thunar_vfs_volume_manager_sysv,
+ G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (THUNAR_VFS_TYPE_VOLUME_MANAGER,
+ thunar_vfs_volume_manager_sysv_manager_init));
+
+
+static void
+thunar_vfs_volume_manager_sysv_class_init (ThunarVfsVolumeManagerSysVClass *klass)
+{
+}
+
+
+
+static void
+thunar_vfs_volume_manager_sysv_manager_init (ThunarVfsVolumeManagerIface *iface)
+{
+ iface->get_volume_by_info = thunar_vfs_volume_manager_sysv_get_volume_by_info;
+ iface->get_volumes = thunar_vfs_volume_manager_sysv_get_volumes;
+}
+
+
+
+static void
+thunar_vfs_volume_manager_sysv_init (ThunarVfsVolumeManagerSysV *manager_sysv)
+{
+}
+
+
+
+static ThunarVfsVolume*
+thunar_vfs_volume_manager_sysv_get_volume_by_info (ThunarVfsVolumeManager *manager,
+ const ThunarVfsInfo *info)
+{
+ return NULL;
+}
+
+
+
+static GList*
+thunar_vfs_volume_manager_sysv_get_volumes (ThunarVfsVolumeManager *manager)
+{
+ return NULL;
+}
+
+
+
+GType
+_thunar_vfs_volume_manager_impl_get_type (void)
+{
+ return THUNAR_VFS_TYPE_VOLUME_MANAGER_SYSV;
+}
+
+
+
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-volume-sysv.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-volume-sysv.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-volume-sysv.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,55 @@
+/* $Id: thunar-vfs-volume-sysv.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __THUNAR_VFS_VOLUME_SYSV_H__
+#define __THUNAR_VFS_VOLUME_SYSV_H__
+
+#include <thunar-vfs/thunar-vfs-volume.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarVfsVolumeSysVClass ThunarVfsVolumeSysVClass;
+typedef struct _ThunarVfsVolumeSysV ThunarVfsVolumeSysV;
+
+#define THUNAR_VFS_TYPE_VOLUME_SYSV (thunar_vfs_volume_sysv_get_type ())
+#define THUNAR_VFS_VOLUME_SYSV(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_VFS_TYPE_VOLUME_SYSV, ThunarVfsVolumeSYSV))
+#define THUNAR_VFS_VOLUME_SYSV_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_VFS_TYPE_VOLUME_SYSV, ThunarVfsVolumeSYSVClass))
+#define THUNAR_VFS_IS_VOLUME_SYSV(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_VFS_TYPE_VOLUME_SYSV))
+#define THUNAR_VFS_IS_VOLUME_SYSV_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_VFS_TYPE_VOLUME_SYSV))
+#define THUNAR_VFS_VOLUME_SYSV_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_VFS_TYPE_VOLUME_SYSV, ThunarVfsVolumeSYSVClass))
+
+GType thunar_vfs_volume_sysv_get_type (void) G_GNUC_CONST;
+
+
+typedef struct _ThunarVfsVolumeManagerSysVClass ThunarVfsVolumeManagerSysVClass;
+typedef struct _ThunarVfsVolumeManagerSysV ThunarVfsVolumeManagerSysV;
+
+#define THUNAR_VFS_TYPE_VOLUME_MANAGER_SYSV (thunar_vfs_volume_manager_sysv_get_type ())
+#define THUNAR_VFS_VOLUME_MANAGER_SYSV(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_VFS_TYPE_VOLUME_MANAGER_SYSV, ThunarVfsVolumeManagerSYSV))
+#define THUNAR_VFS_VOLUME_MANAGER_SYSV_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNAR_VFS_TYPE_VOLUME_MANAGER_SYSV, ThunarVfsVolumeManagerSYSVClass))
+#define THUNAR_VFS_IS_VOLUME_MANAGER_SYSV(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_VFS_TYPE_VOLUME_MANAGER_SYSV))
+#define THUNAR_VFS_IS_VOLUME_MANAGER_SYSV_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNAR_VFS_TYPE_VOLUME_MANAGER_SYSV))
+#define THUNAR_VFS_VOLUME_MANAGER_SYSV_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNAR_VFS_TYPE_VOLUME_MANAGER_SYSV, ThunarVfsVolumeManagerSYSVClass))
+
+GType thunar_vfs_volume_manager_sysv_get_type (void) G_GNUC_CONST;
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VFS_VOLUME_SYSV_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-volume.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-volume.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-volume.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,599 @@
+/* $Id: thunar-vfs-volume.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <exo/exo.h>
+
+#include <thunar-vfs/thunar-vfs-enum-types.h>
+#include <thunar-vfs/thunar-vfs-volume.h>
+#include <thunar-vfs/thunar-vfs-alias.h>
+
+
+
+enum
+{
+ THUNAR_VFS_VOLUME_CHANGED,
+ THUNAR_VFS_VOLUME_LAST_SIGNAL,
+};
+
+
+
+static void thunar_vfs_volume_base_init (gpointer klass);
+
+
+
+static guint volume_signals[THUNAR_VFS_VOLUME_CHANGED];
+
+
+
+GType
+thunar_vfs_volume_get_type (void)
+{
+ static GType type = G_TYPE_INVALID;
+
+ if (G_UNLIKELY (type == G_TYPE_INVALID))
+ {
+ static const GTypeInfo info =
+ {
+ sizeof (ThunarVfsVolumeIface),
+ (GBaseInitFunc) thunar_vfs_volume_base_init,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ 0,
+ 0,
+ NULL,
+ NULL,
+ };
+
+ type = g_type_register_static (G_TYPE_INTERFACE,
+ "ThunarVfsVolume",
+ &info, 0);
+
+ g_type_interface_add_prerequisite (type, G_TYPE_OBJECT);
+ }
+
+ return type;
+}
+
+
+
+static void
+thunar_vfs_volume_base_init (gpointer klass)
+{
+ static gboolean initialized = FALSE;
+
+ if (G_UNLIKELY (!initialized))
+ {
+ /**
+ * ThunarVfsVolume::changed:
+ * @volume : the #ThunarVfsVolume instance.
+ *
+ * Emitted whenever the state of @volume changed.
+ **/
+ volume_signals[THUNAR_VFS_VOLUME_CHANGED] =
+ g_signal_new ("changed",
+ G_TYPE_FROM_INTERFACE (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (ThunarVfsVolumeIface, changed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ initialized = TRUE;
+ }
+}
+
+
+
+/**
+ * thunar_vfs_volume_get_kind:
+ * @volume : a #ThunarVfsVolume instance.
+ *
+ * Returns the kind of drive/device representd by @volume.
+ *
+ * Return value: the kind of @volume.
+ **/
+ThunarVfsVolumeKind
+thunar_vfs_volume_get_kind (ThunarVfsVolume *volume)
+{
+ g_return_val_if_fail (THUNAR_VFS_IS_VOLUME (volume), THUNAR_VFS_VOLUME_KIND_UNKNOWN);
+ return (*THUNAR_VFS_VOLUME_GET_IFACE (volume)->get_kind) (volume);
+}
+
+
+
+/**
+ * thunar_vfs_volume_get_name;
+ * @volume : a #ThunarVfsVolume instance.
+ *
+ * Returns the name of the @volume. This is usually the
+ * name of the device or the label of the medium, if a
+ * medium is present.
+ *
+ * Return value: the name of @volume.
+ **/
+const gchar*
+thunar_vfs_volume_get_name (ThunarVfsVolume *volume)
+{
+ g_return_val_if_fail (THUNAR_VFS_IS_VOLUME (volume), NULL);
+ return (*THUNAR_VFS_VOLUME_GET_IFACE (volume)->get_name) (volume);
+}
+
+
+
+/**
+ * thunar_vfs_volume_get_status:
+ * @volume : a #ThunarVfsVolume instance.
+ *
+ * Determines the current status of the @volume, e.g. whether
+ * or not the @volume is currently mounted, or whether a
+ * medium is present.
+ *
+ * Return value: the status for @volume.
+ **/
+ThunarVfsVolumeStatus
+thunar_vfs_volume_get_status (ThunarVfsVolume *volume)
+{
+ g_return_val_if_fail (THUNAR_VFS_IS_VOLUME (volume), 0);
+ return (*THUNAR_VFS_VOLUME_GET_IFACE (volume)->get_status) (volume);
+}
+
+
+
+/**
+ * thunar_vfs_volume_get_mount_point:
+ * @volume : a #ThunarVfsVolume instance.
+ *
+ * Return value: the path which identifies the path where
+ * the volume will be mounted (or is already
+ * mounted).
+ **/
+ThunarVfsPath*
+thunar_vfs_volume_get_mount_point (ThunarVfsVolume *volume)
+{
+ g_return_val_if_fail (THUNAR_VFS_IS_VOLUME (volume), NULL);
+ return (*THUNAR_VFS_VOLUME_GET_IFACE (volume)->get_mount_point) (volume);
+}
+
+
+
+/**
+ * thunar_vfs_volume_is_mounted:
+ * @volume : a #ThunarVfsVolume instance.
+ *
+ * Determines whether @volume is currently mounted into the
+ * filesystem hierarchy.
+ *
+ * Return value: %TRUE if @volume is mounted, else %FALSE.
+ **/
+gboolean
+thunar_vfs_volume_is_mounted (ThunarVfsVolume *volume)
+{
+ g_return_val_if_fail (THUNAR_VFS_IS_VOLUME (volume), FALSE);
+ return (*THUNAR_VFS_VOLUME_GET_IFACE (volume)->get_status) (volume) & THUNAR_VFS_VOLUME_STATUS_MOUNTED;
+}
+
+
+
+/**
+ * thunar_vfs_volume_is_present:
+ * @volume : a #ThunarVfsVolume instance.
+ *
+ * Determines whether a medium is currently inserted for
+ * @volume, e.g. for a CD-ROM drive, this will be %TRUE
+ * only if a disc is present in the slot.
+ *
+ * Return value: %TRUE if @volume is present, else %FALSE.
+ **/
+gboolean
+thunar_vfs_volume_is_present (ThunarVfsVolume *volume)
+{
+ g_return_val_if_fail (THUNAR_VFS_IS_VOLUME (volume), FALSE);
+ return (*THUNAR_VFS_VOLUME_GET_IFACE (volume)->get_status) (volume) & THUNAR_VFS_VOLUME_STATUS_PRESENT;
+}
+
+
+
+/**
+ * thunar_vfs_volume_is_removable:
+ * @volume : a #ThunarVfsVolume instance.
+ *
+ * Determines whether @volume is a removable device, for example
+ * a CD-ROM or a floppy drive.
+ *
+ * Return value: %TRUE if @volume is a removable device, else %FALSE.
+ **/
+gboolean
+thunar_vfs_volume_is_removable (ThunarVfsVolume *volume)
+{
+ ThunarVfsVolumeKind kind;
+
+ g_return_val_if_fail (THUNAR_VFS_IS_VOLUME (volume), FALSE);
+
+ kind = thunar_vfs_volume_get_kind (volume);
+
+ switch (kind)
+ {
+ case THUNAR_VFS_VOLUME_KIND_CDROM:
+ case THUNAR_VFS_VOLUME_KIND_FLOPPY:
+ return TRUE;
+
+ case THUNAR_VFS_VOLUME_KIND_UNKNOWN:
+ case THUNAR_VFS_VOLUME_KIND_HARDDISK:
+ return FALSE;
+
+ default:
+ g_assert_not_reached ();
+ return FALSE;
+ }
+}
+
+
+
+/**
+ * thunar_vfs_volume_get_free_space:
+ * @volume : a #ThunarVfsVolume instance.
+ * @free_space_return : location to store the free space to.
+ *
+ * Tries to determine the number of available bytes on the specified
+ * @volume and places the result to the memory pointed to by
+ * @free_space_return. The returned amount of bytes represents the
+ * space available to the current user, which may be different from
+ * the total free amount.
+ *
+ * If @volume is unable to determine the free space, %FALSE will be
+ * returned and @free_space_return won't be set.
+ *
+ * Return value: %TRUE if the free amount was determined successfully,
+ * else %FALSE.
+ **/
+gboolean
+thunar_vfs_volume_get_free_space (ThunarVfsVolume *volume,
+ ThunarVfsFileSize *free_space_return)
+{
+ g_return_val_if_fail (THUNAR_VFS_IS_VOLUME (volume), FALSE);
+ g_return_val_if_fail (free_space_return != NULL, FALSE);
+ return (*THUNAR_VFS_VOLUME_GET_IFACE (volume)->get_free_space) (volume, free_space_return);
+}
+
+
+
+/**
+ * thunar_vfs_volume_lookup_icon_name:
+ * @volume : a #ThunarVfsVolume instance.
+ * @icon_theme : a #GtkIconTheme instance.
+ *
+ * Tries to find a suitable icon for @volume in the given @icon_theme and
+ * returns its name. If no suitable icon is found in @icon_theme, then
+ * a fallback icon name will be returned. This way you can always count
+ * on this method to return a valid string.
+ *
+ * Return value: the icon name.
+ **/
+const gchar*
+thunar_vfs_volume_lookup_icon_name (ThunarVfsVolume *volume,
+ GtkIconTheme *icon_theme)
+{
+ ThunarVfsVolumeIface *iface;
+ ThunarVfsVolumeKind kind;
+ const gchar *icon_name;
+
+ g_return_val_if_fail (THUNAR_VFS_IS_VOLUME (volume), NULL);
+ g_return_val_if_fail (GTK_IS_ICON_THEME (icon_theme), NULL);
+
+ /* allow the implementing class to provide a custom icon */
+ iface = THUNAR_VFS_VOLUME_GET_IFACE (volume);
+ if (iface->lookup_icon_name != NULL)
+ {
+ icon_name = (*iface->lookup_icon_name) (volume, icon_theme);
+ if (G_LIKELY (icon_name != NULL))
+ return icon_name;
+ }
+
+ kind = thunar_vfs_volume_get_kind (volume);
+ switch (kind)
+ {
+ case THUNAR_VFS_VOLUME_KIND_DVD:
+ if (gtk_icon_theme_has_icon (icon_theme, "gnome-dev-dvd"))
+ return "gnome-dev-dvd";
+ /* FALL-THROUGH */
+
+ case THUNAR_VFS_VOLUME_KIND_CDROM:
+ if (gtk_icon_theme_has_icon (icon_theme, "gnome-dev-cdrom"))
+ return "gnome-dev-cdrom";
+ break;
+
+ case THUNAR_VFS_VOLUME_KIND_FLOPPY:
+ if (gtk_icon_theme_has_icon (icon_theme, "gnome-dev-floppy"))
+ return "gnome-dev-floppy";
+ break;
+
+ case THUNAR_VFS_VOLUME_KIND_HARDDISK:
+ if (gtk_icon_theme_has_icon (icon_theme, "gnome-dev-harddisk"))
+ return "gnome-dev-harddisk";
+ break;
+
+ case THUNAR_VFS_VOLUME_KIND_USBSTICK:
+ if (gtk_icon_theme_has_icon (icon_theme, "gnome-dev-removable-usb"))
+ return "gnome-dev-removable-usb";
+ else if (gtk_icon_theme_has_icon (icon_theme, "gnome-dev-harddisk-usb"))
+ return "gnome-dev-harddisk-usb";
+ break;
+
+ default:
+ break;
+ }
+
+ return "gnome-fs-blockdev";
+}
+
+
+
+/**
+ * thunar_vfs_volume_changed:
+ * @volume : a #ThunarVfsVolume instance.
+ *
+ * Emits the "changed" signal on @volume. This function should
+ * only be used by implementations of the #ThunarVfsVolume
+ * interface.
+ **/
+void
+thunar_vfs_volume_changed (ThunarVfsVolume *volume)
+{
+ g_return_if_fail (THUNAR_VFS_IS_VOLUME (volume));
+ g_signal_emit (G_OBJECT (volume), volume_signals[THUNAR_VFS_VOLUME_CHANGED], 0);
+}
+
+
+
+
+enum
+{
+ THUNAR_VFS_VOLUME_MANAGER_VOLUMES_ADDED,
+ THUNAR_VFS_VOLUME_MANAGER_VOLUMES_REMOVED,
+ THUNAR_VFS_VOLUME_MANAGER_LAST_SIGNAL,
+};
+
+
+
+static void thunar_vfs_volume_manager_base_init (gpointer klass);
+
+
+
+static guint manager_signals[THUNAR_VFS_VOLUME_MANAGER_LAST_SIGNAL];
+
+
+
+GType
+thunar_vfs_volume_manager_get_type (void)
+{
+ static GType type = G_TYPE_INVALID;
+
+ if (G_UNLIKELY (type == G_TYPE_INVALID))
+ {
+ static const GTypeInfo info =
+ {
+ sizeof (ThunarVfsVolumeManagerIface),
+ (GBaseInitFunc) thunar_vfs_volume_manager_base_init,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ 0,
+ 0,
+ NULL,
+ };
+
+ type = g_type_register_static (G_TYPE_INTERFACE,
+ "ThunarVfsVolumeManager",
+ &info, 0);
+
+ g_type_interface_add_prerequisite (type, G_TYPE_OBJECT);
+ }
+
+ return type;
+}
+
+
+
+static void
+thunar_vfs_volume_manager_base_init (gpointer klass)
+{
+ static gboolean initialized = FALSE;
+
+ if (G_UNLIKELY (!initialized))
+ {
+ /**
+ * ThunarVfsVolumeManager::volumes-added:
+ * @manager : a #ThunarVfsVolumeManager instance.
+ * @volumes : a list of #ThunarVfsVolume<!---->s.
+ *
+ * Invoked by the @manager whenever new volumes have been
+ * attached to the system or the administrator changes the
+ * /etc/fstab file, or some other condition, depending
+ * on the manager implementation.
+ *
+ * Note that the implementation should not invoke this
+ * method when a volume is mounted, as that's a completely
+ * different condition!
+ **/
+ manager_signals[THUNAR_VFS_VOLUME_MANAGER_VOLUMES_ADDED] =
+ g_signal_new ("volumes-added",
+ G_TYPE_FROM_INTERFACE (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (ThunarVfsVolumeManagerIface, volumes_added),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1, G_TYPE_POINTER);
+
+ /**
+ * ThunarVfsVolumeManager::volumes-removed:
+ * @manager : a #ThunarVfsVolume instance.
+ * @volumes : a list of #ThunarVfsVolume<!---->s.
+ *
+ * Invoked whenever the @manager notices that @volumes have
+ * been detached from the system.
+ **/
+ manager_signals[THUNAR_VFS_VOLUME_MANAGER_VOLUMES_REMOVED] =
+ g_signal_new ("volumes-removed",
+ G_TYPE_FROM_INTERFACE (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (ThunarVfsVolumeManagerIface, volumes_removed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1, G_TYPE_POINTER);
+
+ initialized = TRUE;
+ }
+}
+
+
+
+/**
+ * thunar_vfs_volume_manager_get_default:
+ *
+ * Returns the default, shared #ThunarVfsVolumeManager instance
+ * for this system. This function automatically determines, which
+ * implementation of #ThunarVfsVolumeManager should be used for
+ * the target system and returns an instance of that class, which
+ * is shared among all modules using the volume manager facility.
+ *
+ * Call g_object_unref() on the returned object when you are
+ * done with it.
+ *
+ * Return value: the shared #ThunarVfsVolumeManager instance.
+ **/
+ThunarVfsVolumeManager*
+thunar_vfs_volume_manager_get_default (void)
+{
+ extern GType _thunar_vfs_volume_manager_impl_get_type (void);
+ static ThunarVfsVolumeManager *manager = NULL;
+
+ if (G_UNLIKELY (manager == NULL))
+ {
+ manager = g_object_new (_thunar_vfs_volume_manager_impl_get_type (), NULL);
+ g_object_add_weak_pointer (G_OBJECT (manager), (gpointer) &manager);
+ }
+ else
+ {
+ g_object_ref (G_OBJECT (manager));
+ }
+
+ return manager;
+}
+
+
+
+/**
+ * thunar_vfs_volume_manager_get_volume_by_info:
+ * @manager : a #ThunarVfsVolumeManager instance.
+ * @info : a #ThunarVfsInfo.
+ *
+ * Tries to lookup the #ThunarVfsVolume on which @info is
+ * located. If @manager doesn't know a #ThunarVfsVolume
+ * for @info, %NULL will be returned.
+ *
+ * The returned #ThunarVfsVolume (if any) is owned by
+ * @manager and must not be freed by the caller.
+ *
+ * Return value: the #ThunarVfsVolume, on which @info is
+ * located or %NULL.
+ **/
+ThunarVfsVolume*
+thunar_vfs_volume_manager_get_volume_by_info (ThunarVfsVolumeManager *manager,
+ const ThunarVfsInfo *info)
+{
+ g_return_val_if_fail (THUNAR_VFS_IS_VOLUME_MANAGER (manager), NULL);
+ g_return_val_if_fail (info != NULL, NULL);
+ return (*THUNAR_VFS_VOLUME_MANAGER_GET_IFACE (manager)->get_volume_by_info) (manager, info);
+}
+
+
+
+/**
+ * thunar_vfs_volume_manager_get_volumes:
+ * @manager : a #ThunarVfsVolumeManager instance.
+ *
+ * Returns all #ThunarVfsVolume<!---->s currently known for
+ * @manager. The returned list is owned by @manager and should
+ * therefore considered constant in the caller.
+ *
+ * Return value: the list of volumes known for @manager.
+ **/
+GList*
+thunar_vfs_volume_manager_get_volumes (ThunarVfsVolumeManager *manager)
+{
+ g_return_val_if_fail (THUNAR_VFS_IS_VOLUME_MANAGER (manager), NULL);
+ return (*THUNAR_VFS_VOLUME_MANAGER_GET_IFACE (manager)->get_volumes) (manager);
+}
+
+
+
+/**
+ * thunar_vfs_volume_manager_volumes_added:
+ * @manager : a #ThunarVfsVolumeManager instance.
+ * @volumes : a list of #ThunarVfsVolume<!---->s.
+ *
+ * Emits the "volumes-added" signal on @manager using the
+ * given @volumes.
+ *
+ * This method should only be used by classes implementing
+ * the #ThunarVfsVolumeManager interface.
+ **/
+void
+thunar_vfs_volume_manager_volumes_added (ThunarVfsVolumeManager *manager,
+ GList *volumes)
+{
+ g_return_if_fail (THUNAR_VFS_IS_VOLUME_MANAGER (manager));
+ g_return_if_fail (g_list_length (volumes) > 0);
+ g_signal_emit (G_OBJECT (manager), manager_signals[THUNAR_VFS_VOLUME_MANAGER_VOLUMES_ADDED], 0, volumes);
+}
+
+
+
+/**
+ * thunar_vfs_volume_manager_volumes_removed:
+ * @manager : a #ThunarVfsVolumeManager instance.
+ * @volumes : a list of #ThunarVfsVolume<!---->s.
+ *
+ * Emits the "volumes-removed" signal on @manager using
+ * the given @volumes.
+ *
+ * This method should only be used by classes implementing
+ * the #ThunarVfsVolumeManager interface.
+ **/
+void
+thunar_vfs_volume_manager_volumes_removed (ThunarVfsVolumeManager *manager,
+ GList *volumes)
+{
+ g_return_if_fail (THUNAR_VFS_IS_VOLUME_MANAGER (manager));
+ g_return_if_fail (g_list_length (volumes) > 0);
+ g_signal_emit (G_OBJECT (manager), manager_signals[THUNAR_VFS_VOLUME_MANAGER_VOLUMES_REMOVED], 0, volumes);
+}
+
+
+
+#define __THUNAR_VFS_VOLUME_C__
+#include <thunar-vfs/thunar-vfs-aliasdef.c>
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-volume.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-volume.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-volume.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,149 @@
+/* $Id: thunar-vfs-volume.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __THUNAR_VFS_VOLUME_H__
+#define __THUNAR_VFS_VOLUME_H__
+
+#include <gtk/gtk.h>
+
+#include <thunar-vfs/thunar-vfs-info.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarVfsVolumeIface ThunarVfsVolumeIface;
+typedef struct _ThunarVfsVolume ThunarVfsVolume;
+
+#define THUNAR_VFS_TYPE_VOLUME (thunar_vfs_volume_get_type ())
+#define THUNAR_VFS_VOLUME(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_VFS_TYPE_VOLUME, ThunarVfsVolume))
+#define THUNAR_VFS_IS_VOLUME(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_VFS_TYPE_VOLUME))
+#define THUNAR_VFS_VOLUME_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), THUNAR_VFS_TYPE_VOLUME, ThunarVfsVolumeIface))
+
+/**
+ * ThunarVfsVolumeKind:
+ * @THUNAR_VFS_VOLUME_KIND_UNKNOWN : Unknown volume.
+ * @THUNAR_VFS_VOLUME_KIND_CDROM : CD drives.
+ * @THUNAR_VFS_VOLUME_KIND_DVD : DVD drives.
+ * @THUNAR_VFS_VOLUME_KIND_FLOPPY : Floppy drives.
+ * @THUNAR_VFS_VOLUME_KIND_HARDDISK : Hard disk drives.
+ * @THUNAR_VFS_VOLUME_KIND_USBSTICK : USB sticks.
+ *
+ * Describes the type of a VFS volume.
+ **/
+typedef enum
+{
+ THUNAR_VFS_VOLUME_KIND_UNKNOWN,
+ THUNAR_VFS_VOLUME_KIND_CDROM,
+ THUNAR_VFS_VOLUME_KIND_DVD,
+ THUNAR_VFS_VOLUME_KIND_FLOPPY,
+ THUNAR_VFS_VOLUME_KIND_HARDDISK,
+ THUNAR_VFS_VOLUME_KIND_USBSTICK,
+} ThunarVfsVolumeKind;
+
+/**
+ * ThunarVfsVolumeStatus:
+ * @THUNAR_VFS_VOLUME_STATUS_PRESENT : Whether or not a medium is present.
+ * @THUNAR_VFS_VOLUME_STATUS_MOUNTED : Whether or not the media is currently mounted.
+ *
+ * Describes the current status of a VFS volume.
+ **/
+typedef enum /*< flags >*/
+{
+ THUNAR_VFS_VOLUME_STATUS_MOUNTED = 1 << 0,
+ THUNAR_VFS_VOLUME_STATUS_PRESENT = 1 << 1,
+} ThunarVfsVolumeStatus;
+
+struct _ThunarVfsVolumeIface
+{
+ GTypeInterface __parent__;
+
+ /* methods */
+ ThunarVfsVolumeKind (*get_kind) (ThunarVfsVolume *volume);
+ const gchar *(*get_name) (ThunarVfsVolume *volume);
+ ThunarVfsVolumeStatus (*get_status) (ThunarVfsVolume *volume);
+ ThunarVfsPath *(*get_mount_point) (ThunarVfsVolume *volume);
+ gboolean (*get_free_space) (ThunarVfsVolume *volume,
+ ThunarVfsFileSize *free_space_return);
+ const gchar *(*lookup_icon_name) (ThunarVfsVolume *volume,
+ GtkIconTheme *icon_theme);
+
+ /* signals */
+ void (*changed) (ThunarVfsVolume *volume);
+};
+
+GType thunar_vfs_volume_get_type (void) G_GNUC_CONST;
+
+ThunarVfsVolumeKind thunar_vfs_volume_get_kind (ThunarVfsVolume *volume);
+const gchar *thunar_vfs_volume_get_name (ThunarVfsVolume *volume);
+ThunarVfsVolumeStatus thunar_vfs_volume_get_status (ThunarVfsVolume *volume);
+ThunarVfsPath *thunar_vfs_volume_get_mount_point (ThunarVfsVolume *volume);
+
+gboolean thunar_vfs_volume_is_mounted (ThunarVfsVolume *volume);
+gboolean thunar_vfs_volume_is_present (ThunarVfsVolume *volume);
+gboolean thunar_vfs_volume_is_removable (ThunarVfsVolume *volume);
+
+gboolean thunar_vfs_volume_get_free_space (ThunarVfsVolume *volume,
+ ThunarVfsFileSize *free_space_return);
+
+const gchar *thunar_vfs_volume_lookup_icon_name (ThunarVfsVolume *volume,
+ GtkIconTheme *icon_theme);
+
+void thunar_vfs_volume_changed (ThunarVfsVolume *volume) G_GNUC_INTERNAL;
+
+
+typedef struct _ThunarVfsVolumeManagerIface ThunarVfsVolumeManagerIface;
+typedef struct _ThunarVfsVolumeManager ThunarVfsVolumeManager;
+
+#define THUNAR_VFS_TYPE_VOLUME_MANAGER (thunar_vfs_volume_manager_get_type ())
+#define THUNAR_VFS_VOLUME_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNAR_VFS_TYPE_VOLUME_MANAGER, ThunarVfsVolumeManager))
+#define THUNAR_VFS_IS_VOLUME_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNAR_VFS_TYPE_VOLUME_MANAGER))
+#define THUNAR_VFS_VOLUME_MANAGER_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), THUNAR_VFS_TYPE_VOLUME_MANAGER, ThunarVfsVolumeManagerIface))
+
+struct _ThunarVfsVolumeManagerIface
+{
+ GTypeInterface __parent__;
+
+ /* methods */
+ ThunarVfsVolume *(*get_volume_by_info) (ThunarVfsVolumeManager *manager,
+ const ThunarVfsInfo *info);
+ GList *(*get_volumes) (ThunarVfsVolumeManager *manager);
+
+ /* signals */
+ void (*volumes_added) (ThunarVfsVolumeManager *manager,
+ GList *volumes);
+ void (*volumes_removed) (ThunarVfsVolumeManager *manager,
+ GList *volumes);
+};
+
+GType thunar_vfs_volume_manager_get_type (void) G_GNUC_CONST;
+
+ThunarVfsVolumeManager *thunar_vfs_volume_manager_get_default (void);
+
+ThunarVfsVolume *thunar_vfs_volume_manager_get_volume_by_info (ThunarVfsVolumeManager *manager,
+ const ThunarVfsInfo *info);
+GList *thunar_vfs_volume_manager_get_volumes (ThunarVfsVolumeManager *manager);
+
+void thunar_vfs_volume_manager_volumes_added (ThunarVfsVolumeManager *manager,
+ GList *volumes) G_GNUC_INTERNAL;
+void thunar_vfs_volume_manager_volumes_removed (ThunarVfsVolumeManager *manager,
+ GList *volumes) G_GNUC_INTERNAL;
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VFS_VOLUME_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-xfer.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-xfer.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-xfer.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,761 @@
+/* $Id: thunar-vfs-xfer.c 18850 2005-11-14 21:21:05Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#include <stdio.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <thunar-vfs/thunar-vfs-monitor.h>
+#include <thunar-vfs/thunar-vfs-xfer.h>
+#include <thunar-vfs/thunar-vfs-alias.h>
+
+#if GLIB_CHECK_VERSION(2,6,0)
+#include <glib/gstdio.h>
+#else
+#define g_lstat(path, buffer) (lstat ((path), (buffer)))
+#define g_mkdir(path, mode) (mkdir ((path), (mode)))
+#endif
+
+#ifndef O_NOFOLLOW
+#define O_NOFOLLOW 0
+#endif
+
+
+
+/* modes of xfer operation */
+typedef enum
+{
+ THUNAR_VFS_XFER_COPY,
+ THUNAR_VFS_XFER_LINK,
+} ThunarVfsXferMode;
+
+
+
+static void tvxc_set_error_from_errno (GError **error,
+ const gchar *message,
+ const gchar *path);
+static ThunarVfsPath *thunar_vfs_xfer_next_path (const ThunarVfsPath *source_path,
+ ThunarVfsPath *target_directory_path,
+ guint n,
+ ThunarVfsXferMode mode,
+ GError **error);
+static inline gboolean thunar_vfs_xfer_copy_directory (const gchar *source_absolute_path,
+ const gchar *target_absolute_path,
+ const struct stat *source_statb,
+ ThunarVfsXferCallback callback,
+ gpointer user_data,
+ gboolean merge_directories,
+ GError **error);
+static inline gboolean thunar_vfs_xfer_copy_fifo (const gchar *source_absolute_path,
+ const gchar *target_absolute_path,
+ const struct stat *source_statb,
+ ThunarVfsXferCallback callback,
+ gpointer user_data,
+ GError **error);
+static inline gboolean thunar_vfs_xfer_copy_regular (const gchar *source_absolute_path,
+ const gchar *target_absolute_path,
+ const struct stat *source_statb,
+ ThunarVfsXferCallback callback,
+ gpointer user_data,
+ GError **error);
+static inline gboolean thunar_vfs_xfer_copy_symlink (const gchar *source_absolute_path,
+ const gchar *target_absolute_path,
+ const struct stat *source_statb,
+ ThunarVfsXferCallback callback,
+ gpointer user_data,
+ GError **error);
+static gboolean thunar_vfs_xfer_copy_internal (const ThunarVfsPath *source_path,
+ ThunarVfsPath *target_path,
+ ThunarVfsXferCallback callback,
+ gpointer user_data,
+ gboolean merge_directories,
+ GError **error);
+static inline gboolean thunar_vfs_xfer_link_internal (const ThunarVfsPath *source_path,
+ ThunarVfsPath *target_path,
+ GError **error);
+
+
+
+/* reference to the global ThunarVfsMonitor instance */
+static ThunarVfsMonitor *thunar_vfs_xfer_monitor = NULL;
+
+
+
+static void
+tvxc_set_error_from_errno (GError **error,
+ const gchar *message,
+ const gchar *path)
+{
+ gchar *display_name;
+ gchar *format;
+ gint sverrno;
+
+ /* save the errno value, as it may be modified */
+ sverrno = errno;
+
+ /* determine the display name for the path */
+ display_name = g_filename_display_name (path);
+
+ /* setup the error */
+ format = g_strconcat (message, ": %s", NULL);
+ g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (sverrno),
+ format, display_name, g_strerror (sverrno));
+ g_free (format);
+
+ /* release the display name */
+ g_free (display_name);
+}
+
+
+
+/* generates the next duplicate/link name */
+static ThunarVfsPath*
+thunar_vfs_xfer_next_path (const ThunarVfsPath *source_path,
+ ThunarVfsPath *target_directory_path,
+ guint n,
+ ThunarVfsXferMode mode,
+ GError **error)
+{
+ static const gchar * const NAMES[3][2] =
+ {
+ {
+ N_ ("copy of %s"),
+ N_ ("link to %s"),
+ },
+ {
+ N_ ("another copy of %s"),
+ N_ ("another link to %s"),
+ },
+ {
+ N_ ("third copy of %s"),
+ N_ ("third link to %s"),
+ },
+ };
+
+ ThunarVfsPath *target_path;
+ const gchar *source_name;
+ gchar *source_display_name;
+ gchar *target_display_name;
+ gchar *target_name;
+ gchar *swap_name;
+ gchar *tmp_name;
+ guint m;
+
+ g_return_val_if_fail (n > 0, NULL);
+
+ /* try to determine the display name for the source file (in UTF-8) */
+ source_name = thunar_vfs_path_get_name (source_path);
+ source_display_name = g_filename_to_utf8 (source_name, -1, NULL, NULL, error);
+ if (G_UNLIKELY (source_display_name == NULL))
+ return NULL;
+
+ /* check if the source display name matches one of the NAMES (when copying) */
+ if (G_LIKELY (mode == THUNAR_VFS_XFER_COPY))
+ {
+ /* allocate memory for the new name */
+ tmp_name = g_strdup (source_display_name);
+
+ /* try the NAMES */
+ for (m = 0; m < 3; ++m)
+ if (sscanf (source_display_name, gettext (NAMES[m][THUNAR_VFS_XFER_COPY]), tmp_name) == 1)
+ {
+ /* swap tmp and source display name */
+ swap_name = source_display_name;
+ source_display_name = tmp_name;
+ tmp_name = swap_name;
+ break;
+ }
+
+ /* if we had no match on the NAMES, try the "%uth copy of %s" pattern */
+ if (G_LIKELY (m == 3) && sscanf (source_display_name, _("%uth copy of %s"), &m, tmp_name) == 2)
+ {
+ /* swap tmp and source display name */
+ swap_name = source_display_name;
+ source_display_name = tmp_name;
+ tmp_name = swap_name;
+ }
+
+ /* cleanup */
+ g_free (tmp_name);
+ }
+
+ /* determine the target display name */
+ if (G_LIKELY (n <= 3))
+ target_display_name = g_strdup_printf (gettext (NAMES[n - 1][mode]), source_display_name);
+ else if (mode == THUNAR_VFS_XFER_COPY)
+ target_display_name = g_strdup_printf (ngettext ("%uth copy of %s", "%uth copy of %s", n), n, source_display_name);
+ else
+ target_display_name = g_strdup_printf (ngettext ("%uth link to %s", "%uth link to %s", n), n, source_display_name);
+
+ /* we don't need the source display name anymore */
+ g_free (source_display_name);
+
+ /* try to determine the real target name from the display name */
+ target_name = g_filename_from_utf8 (target_display_name, -1, NULL, NULL, error);
+
+ /* generate the target path */
+ target_path = (target_name != NULL) ? thunar_vfs_path_relative (target_directory_path, target_name) : NULL;
+ g_free (target_display_name);
+ g_free (target_name);
+ return target_path;
+}
+
+
+
+static inline gboolean
+thunar_vfs_xfer_copy_directory (const gchar *source_absolute_path,
+ const gchar *target_absolute_path,
+ const struct stat *source_statb,
+ ThunarVfsXferCallback callback,
+ gpointer user_data,
+ gboolean merge_directories,
+ GError **error)
+{
+ /* check if the directory exists */
+ if (g_file_test (target_absolute_path, G_FILE_TEST_IS_DIR))
+ {
+ /* return an error if we should not merge */
+ if (G_UNLIKELY (!merge_directories))
+ {
+ errno = EEXIST;
+ goto error;
+ }
+ }
+ else if (g_mkdir (target_absolute_path, source_statb->st_mode & ~S_IFMT) < 0)
+ {
+error:
+ /* setup the error return */
+ tvxc_set_error_from_errno (error, _("Failed to create directory `%s'"), target_absolute_path);
+ return FALSE;
+ }
+
+ /* invoke the callback */
+ (*callback) (source_statb->st_size, source_statb->st_size, user_data);
+
+ return TRUE;
+}
+
+
+
+static inline gboolean
+thunar_vfs_xfer_copy_fifo (const gchar *source_absolute_path,
+ const gchar *target_absolute_path,
+ const struct stat *source_statb,
+ ThunarVfsXferCallback callback,
+ gpointer user_data,
+ GError **error)
+{
+ /* try to create the named fifo */
+ if (mkfifo (target_absolute_path, source_statb->st_mode) < 0)
+ {
+ tvxc_set_error_from_errno (error, _("Failed to create named fifo `%s'"), target_absolute_path);
+ return FALSE;
+ }
+
+ /* invoke the callback */
+ (*callback) (source_statb->st_size, source_statb->st_size, user_data);
+
+ return TRUE;
+}
+
+
+
+static inline gboolean
+thunar_vfs_xfer_copy_regular (const gchar *source_absolute_path,
+ const gchar *target_absolute_path,
+ const struct stat *source_statb,
+ ThunarVfsXferCallback callback,
+ gpointer user_data,
+ GError **error)
+{
+ gboolean succeed = FALSE;
+ gsize done;
+ gsize bufsize;
+ gchar *buffer;
+ gint source_fd;
+ gint target_fd;
+ gint n, m, l;
+
+ /* try to open the source file for reading */
+ source_fd = open (source_absolute_path, O_RDONLY);
+ if (G_UNLIKELY (source_fd < 0))
+ {
+ tvxc_set_error_from_errno (error, _("Failed to open `%s' for reading"), source_absolute_path);
+ goto end0;
+ }
+
+ /* try to open the target file for writing */
+ target_fd = open (target_absolute_path, O_CREAT | O_EXCL | O_NOFOLLOW | O_WRONLY, source_statb->st_mode);
+ if (G_UNLIKELY (target_fd < 0))
+ {
+ /* translate EISDIR, EMLINK and ETXTBSY to EEXIST */
+ if (G_UNLIKELY (errno == EISDIR || errno == EMLINK || errno == ETXTBSY))
+ errno = EEXIST;
+
+ tvxc_set_error_from_errno (error, _("Failed to open `%s' for writing"), target_absolute_path);
+ goto end1;
+ }
+
+ /* allocate the transfer buffer */
+ bufsize = 8 * source_statb->st_blksize;
+ buffer = g_new (gchar, bufsize);
+
+ /* copy the data from the source file to the target file */
+ for (done = 0; done < source_statb->st_size; )
+ {
+ /* read a chunk from the source file */
+ n = read (source_fd, buffer, bufsize);
+ if (G_UNLIKELY (n < 0))
+ {
+ /* just try again on EAGAIN/EINTR */
+ if (G_UNLIKELY (errno == EAGAIN || errno == EINTR))
+ continue;
+
+ tvxc_set_error_from_errno (error, _("Failed to read data from `%s'"), source_absolute_path);
+ goto end2;
+ }
+ else if (n == 0)
+ break;
+
+ /* write the data to the target file */
+ for (m = 0; m < n; )
+ {
+ l = write (target_fd, buffer + m, n - m);
+ if (G_UNLIKELY (l < 0))
+ {
+ /* just try again on EAGAIN/EINTR */
+ if (G_UNLIKELY (errno == EAGAIN || errno == EINTR))
+ continue;
+
+ tvxc_set_error_from_errno (error, _("Failed to write data to `%s'"), target_absolute_path);
+ goto end2;
+ }
+ else
+ {
+ /* advance the offset */
+ m += l;
+ }
+ }
+
+ /* advance the byte offset */
+ done += n;
+
+ /* invoke the callback (FALSE means cancel) */
+ if (!((*callback) (source_statb->st_size, done, user_data)))
+ {
+ /* unlink the not yet completely written target file */
+ if (done < source_statb->st_size && g_unlink (target_absolute_path) < 0)
+ {
+ tvxc_set_error_from_errno (error, _("Failed to remove `%s'"), target_absolute_path);
+ goto end2;
+ }
+
+ /* tell the caller that the job was cancelled */
+ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_INTR, _("Operation cancelled"));
+ goto end2;
+ }
+ }
+
+ /* invoke the callback with the fully written data */
+ (*callback) (done, done, user_data);
+
+ /* we did it */
+ succeed = TRUE;
+
+ /* release the transfer buffer */
+end2:
+ g_free (buffer);
+
+ /* close the file descriptors */
+ close (target_fd);
+end1:
+ close (source_fd);
+end0:
+ return succeed;
+}
+
+
+
+static inline gboolean
+thunar_vfs_xfer_copy_symlink (const gchar *source_absolute_path,
+ const gchar *target_absolute_path,
+ const struct stat *source_statb,
+ ThunarVfsXferCallback callback,
+ gpointer user_data,
+ GError **error)
+{
+ gchar link_target[THUNAR_VFS_PATH_MAXSTRLEN * 2 + 1];
+ gint link_target_len;
+
+ /* try to read the link target */
+ link_target_len = readlink (source_absolute_path, link_target, sizeof (link_target) - 1);
+ if (G_UNLIKELY (link_target_len < 0))
+ {
+ tvxc_set_error_from_errno (error, _("Failed to read link target from `%s'"), source_absolute_path);
+ return FALSE;
+ }
+ link_target[link_target_len] = '\0';
+
+ /* try to create the symbolic link */
+ if (symlink (link_target, target_absolute_path) < 0)
+ {
+ tvxc_set_error_from_errno (error, _("Failed to create symbolic link `%s'"), target_absolute_path);
+ return FALSE;
+ }
+
+#ifdef HAVE_LCHMOD
+ /* apply the file mode which was found for the source */
+ if (lchmod (target_absolute_path, source_statb->st_mode) < 0)
+ {
+ tvxc_set_error_from_errno (error, _("Failed to change mode of `%s'"), target_absolute_path);
+ return FALSE;
+ }
+#endif
+
+ /* invoke the callback */
+ (*callback) (source_statb->st_size, source_statb->st_size, user_data);
+
+ return TRUE;
+}
+
+
+
+static gboolean
+thunar_vfs_xfer_copy_internal (const ThunarVfsPath *source_path,
+ ThunarVfsPath *target_path,
+ ThunarVfsXferCallback callback,
+ gpointer user_data,
+ gboolean merge_directories,
+ GError **error)
+{
+ struct stat source_statb;
+ gboolean succeed;
+ gchar *display_name;
+ gchar source_absolute_path[THUNAR_VFS_PATH_MAXSTRLEN];
+ gchar target_absolute_path[THUNAR_VFS_PATH_MAXSTRLEN];
+
+ /* determine the absolute path to the source file */
+ if (thunar_vfs_path_to_string (source_path, source_absolute_path, sizeof (source_absolute_path), error) < 0)
+ return FALSE;
+
+ /* stat the source path */
+ if (lstat (source_absolute_path, &source_statb) < 0)
+ {
+ tvxc_set_error_from_errno (error, _("Failed to determine file info for `%s'"), source_absolute_path);
+ return FALSE;
+ }
+
+ /* determine the absolute path to the target file */
+ if (thunar_vfs_path_to_string (target_path, target_absolute_path, sizeof (target_absolute_path), error) < 0)
+ return FALSE;
+
+ /* perform the appropriate operation */
+ switch ((source_statb.st_mode & S_IFMT) >> 12)
+ {
+ case THUNAR_VFS_FILE_TYPE_DIRECTORY:
+ succeed = thunar_vfs_xfer_copy_directory (source_absolute_path, target_absolute_path, &source_statb, callback, user_data, merge_directories, error);
+ break;
+
+ case THUNAR_VFS_FILE_TYPE_FIFO:
+ succeed = thunar_vfs_xfer_copy_fifo (source_absolute_path, target_absolute_path, &source_statb, callback, user_data, error);
+ break;
+
+ case THUNAR_VFS_FILE_TYPE_REGULAR:
+ succeed = thunar_vfs_xfer_copy_regular (source_absolute_path, target_absolute_path, &source_statb, callback, user_data, error);
+ break;
+
+ case THUNAR_VFS_FILE_TYPE_SYMLINK:
+ succeed = thunar_vfs_xfer_copy_symlink (source_absolute_path, target_absolute_path, &source_statb, callback, user_data, error);
+ break;
+
+ default:
+ display_name = g_filename_display_name (source_absolute_path);
+ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_INVAL, _("Failed to copy special file `%s'"), display_name);
+ g_free (display_name);
+ return FALSE;
+ }
+
+ /* schedule a "created" event if the operation was successfull */
+ if (G_LIKELY (succeed))
+ thunar_vfs_monitor_feed (thunar_vfs_xfer_monitor, THUNAR_VFS_MONITOR_EVENT_CREATED, target_path);
+
+ /* and that's it */
+ return succeed;
+}
+
+
+
+static inline gboolean
+thunar_vfs_xfer_link_internal (const ThunarVfsPath *source_path,
+ ThunarVfsPath *target_path,
+ GError **error)
+{
+ struct stat source_statb;
+ gchar source_absolute_path[THUNAR_VFS_PATH_MAXSTRLEN];
+ gchar target_absolute_path[THUNAR_VFS_PATH_MAXSTRLEN];
+
+ /* determine the absolute path to the source file */
+ if (thunar_vfs_path_to_string (source_path, source_absolute_path, sizeof (source_absolute_path), error) < 0)
+ return FALSE;
+
+ /* stat the source path */
+ if (lstat (source_absolute_path, &source_statb) < 0)
+ {
+ tvxc_set_error_from_errno (error, _("Failed to determine file info for `%s'"), source_absolute_path);
+ return FALSE;
+ }
+
+ /* determine the absolute path to the target file */
+ if (thunar_vfs_path_to_string (target_path, target_absolute_path, sizeof (target_absolute_path), error) < 0)
+ return FALSE;
+
+ /* try to create the symlink */
+ if (symlink (source_absolute_path, target_absolute_path) < 0)
+ {
+ tvxc_set_error_from_errno (error, _("Failed to create symbolic `%s'"), target_absolute_path);
+ return FALSE;
+ }
+
+ /* feed a "created" event for the target path */
+ thunar_vfs_monitor_feed (thunar_vfs_xfer_monitor, THUNAR_VFS_MONITOR_EVENT_CREATED, target_path);
+
+ return TRUE;
+}
+
+
+
+/**
+ * thunar_vfs_xfer_copy:
+ * @source_path : the #ThunarVfsPath to the source file.
+ * @target_path : the #ThunarVfsPath to the target file.
+ * @target_path_return : return location for the final target path or %NULL.
+ * @callback : progress callback function.
+ * @user_data : additional user data to pass to @callback.
+ * @error : return location for errors or %NULL.
+ *
+ * If @target_path_return is not %NULL, the final target path, which
+ * may be different than @target_path, is placed in the location
+ * pointed to by @target_path_return. The caller is responsible to
+ * free the object using thunar_vfs_path_unref(). @target_path_return
+ * will only be set if %TRUE is returned.
+ *
+ * As a special case, if @callback returns %FALSE (which means the
+ * operation should be cancelled), this method returns %FALSE and
+ * @error is set to #G_FILE_ERROR_INTR.
+ *
+ * Return value: %FALSE if @error is set, else %TRUE.
+ **/
+gboolean
+thunar_vfs_xfer_copy (const ThunarVfsPath *source_path,
+ ThunarVfsPath *target_path,
+ ThunarVfsPath **target_path_return,
+ ThunarVfsXferCallback callback,
+ gpointer user_data,
+ GError **error)
+{
+ ThunarVfsPath *target_directory_path;
+ ThunarVfsPath *path;
+ gboolean succeed;
+ GError *err = NULL;
+ guint n;
+
+ g_return_val_if_fail (source_path != NULL, FALSE);
+ g_return_val_if_fail (target_path != NULL, FALSE);
+ g_return_val_if_fail (callback != NULL, FALSE);
+ g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+
+ /* check if source and target are the same */
+ if (G_LIKELY (!thunar_vfs_path_equal (source_path, target_path)))
+ {
+ succeed = thunar_vfs_xfer_copy_internal (source_path, target_path, callback, user_data, TRUE, error);
+ if (G_LIKELY (succeed && target_path_return != NULL))
+ *target_path_return = thunar_vfs_path_ref (target_path);
+ return succeed;
+ }
+
+ /* generate a duplicate name for the target path */
+ target_directory_path = thunar_vfs_path_get_parent (target_path);
+ for (n = 1;; ++n)
+ {
+ /* try to generate the next duplicate path */
+ path = thunar_vfs_xfer_next_path (source_path, target_directory_path, n, THUNAR_VFS_XFER_COPY, &err);
+ if (G_UNLIKELY (path == NULL))
+ {
+ g_propagate_error (error, err);
+ return FALSE;
+ }
+
+ /* try to copy to the duplicate file */
+ succeed = thunar_vfs_xfer_copy_internal (source_path, path, callback, user_data, FALSE, &err);
+
+ /* check if we succeed or cannot continue */
+ if (G_LIKELY (succeed || err->domain != G_FILE_ERROR || err->code != G_FILE_ERROR_EXIST))
+ {
+ if (G_LIKELY (succeed && target_path_return != NULL))
+ *target_path_return = path;
+ else
+ thunar_vfs_path_unref (path);
+
+ if (G_UNLIKELY (error == NULL))
+ g_clear_error (&err);
+ else
+ *error = err;
+ return succeed;
+ }
+
+ /* and once again... */
+ thunar_vfs_path_unref (path);
+ g_clear_error (&err);
+ }
+
+ /* we never get here */
+ g_assert_not_reached ();
+ return FALSE;
+}
+
+
+
+/**
+ * thunar_vfs_xfer_link:
+ * @source_path : the #ThunarVfsPath to the source file.
+ * @target_path : the #ThunarVfsPath to the target file.
+ * @target_path_return : return location for the final target path or %NULL.
+ * @error : return location for errors or %NULL.
+ *
+ * If @target_path_return is not %NULL, the final target path, which
+ * may be different than @target_path, is placed in the location
+ * pointed to by @target_path_return. The caller is responsible to
+ * free the object using thunar_vfs_path_unref(). @target_path_return
+ * will only be set if %TRUE is returned.
+ *
+ * Return value: %FALSE if @error is set, else %TRUE.
+ **/
+gboolean
+thunar_vfs_xfer_link (const ThunarVfsPath *source_path,
+ ThunarVfsPath *target_path,
+ ThunarVfsPath **target_path_return,
+ GError **error)
+{
+ ThunarVfsPath *target_directory_path;
+ ThunarVfsPath *path;
+ gboolean succeed;
+ GError *err = NULL;
+ guint n;
+
+ g_return_val_if_fail (source_path != NULL, FALSE);
+ g_return_val_if_fail (target_path != NULL, FALSE);
+ g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+
+ /* check if source and target are the same */
+ if (G_LIKELY (!thunar_vfs_path_equal (source_path, target_path)))
+ {
+ succeed = thunar_vfs_xfer_link_internal (source_path, target_path, error);
+ if (G_LIKELY (succeed && target_path_return != NULL))
+ *target_path_return = thunar_vfs_path_ref (target_path);
+ return succeed;
+ }
+
+ /* generate a new link name for the target path */
+ target_directory_path = thunar_vfs_path_get_parent (target_path);
+ for (n = 1;; ++n)
+ {
+ /* try to generate the next link path */
+ path = thunar_vfs_xfer_next_path (source_path, target_directory_path, n, THUNAR_VFS_XFER_LINK, &err);
+ if (G_UNLIKELY (path == NULL))
+ {
+ g_propagate_error (error, err);
+ return FALSE;
+ }
+
+ /* try to symlink to the new file */
+ succeed = thunar_vfs_xfer_link_internal (source_path, path, &err);
+
+ /* check if we succeed or cannot continue */
+ if (G_LIKELY (succeed || err->domain != G_FILE_ERROR || err->code != G_FILE_ERROR_EXIST))
+ {
+ if (G_LIKELY (succeed && target_path_return != NULL))
+ *target_path_return = path;
+ else
+ thunar_vfs_path_unref (path);
+
+ if (G_UNLIKELY (error == NULL))
+ g_clear_error (&err);
+ else
+ *error = err;
+ return succeed;
+ }
+
+ /* and once again... */
+ thunar_vfs_path_unref (path);
+ g_clear_error (&err);
+ }
+
+ /* we never get here */
+ g_assert_not_reached ();
+ return FALSE;
+}
+
+
+
+/**
+ * _thunar_vfs_xfer_init:
+ * Initializes the Thunar-VFS Transfer module.
+ **/
+void
+_thunar_vfs_xfer_init (void)
+{
+ thunar_vfs_xfer_monitor = thunar_vfs_monitor_get_default ();
+}
+
+
+
+/**
+ * _thunar_vfs_xfer_shutdown:
+ * Shuts down the Thunar-VFS Transfer module.
+ **/
+void
+_thunar_vfs_xfer_shutdown (void)
+{
+ g_object_unref (G_OBJECT (thunar_vfs_xfer_monitor));
+ thunar_vfs_xfer_monitor = NULL;
+}
+
+
+
+#define __THUNAR_VFS_XFER_C__
+#include <thunar-vfs/thunar-vfs-aliasdef.c>
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-xfer.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-xfer.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs-xfer.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,67 @@
+/* $Id: thunar-vfs-xfer.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#if !defined (THUNAR_VFS_INSIDE_THUNAR_VFS_H) && !defined (THUNAR_VFS_COMPILATION)
+#error "Only <thunar-vfs/thunar-vfs.h> can be included directly, this file may disappear or change contents."
+#endif
+
+#ifndef __THUNAR_VFS_XFER_H__
+#define __THUNAR_VFS_XFER_H__
+
+#include <thunar-vfs/thunar-vfs-path.h>
+#include <thunar-vfs/thunar-vfs-types.h>
+
+G_BEGIN_DECLS;
+
+/**
+ * ThunarVfsXferCallback:
+ * @total_size : the total size of the file system entity.
+ * @completed_size : the completed size of the file system entity.
+ * @user_data : the user data specified when thunar_vfs_xfer_copy()
+ * was called.
+ *
+ * Return value: %FALSE to cancel the transfer operation,
+ * %TRUE to continue.
+ **/
+typedef gboolean (*ThunarVfsXferCallback) (ThunarVfsFileSize total_size,
+ ThunarVfsFileSize completed_size,
+ gpointer user_data);
+
+gboolean thunar_vfs_xfer_copy (const ThunarVfsPath *source_path,
+ ThunarVfsPath *target_path,
+ ThunarVfsPath **target_path_return,
+ ThunarVfsXferCallback callback,
+ gpointer user_data,
+ GError **error) G_GNUC_INTERNAL;
+
+gboolean thunar_vfs_xfer_link (const ThunarVfsPath *source_path,
+ ThunarVfsPath *target_path,
+ ThunarVfsPath **target_path_return,
+ GError **error) G_GNUC_INTERNAL;
+
+
+#if defined(THUNAR_VFS_COMPILATION)
+void _thunar_vfs_xfer_init (void) G_GNUC_INTERNAL;
+void _thunar_vfs_xfer_shutdown (void) G_GNUC_INTERNAL;
+#endif
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VFS_XFER_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,523 @@
+/* $Id: thunar-vfs.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <thunar-vfs/thunar-vfs.h>
+#include <thunar-vfs/thunar-vfs-link-job.h>
+#include <thunar-vfs/thunar-vfs-listdir-job.h>
+#include <thunar-vfs/thunar-vfs-mkdir-job.h>
+#include <thunar-vfs/thunar-vfs-transfer-job.h>
+#include <thunar-vfs/thunar-vfs-unlink-job.h>
+#include <thunar-vfs/thunar-vfs-xfer.h>
+#include <thunar-vfs/thunar-vfs-alias.h>
+
+
+
+static gint thunar_vfs_ref_count = 0;
+
+
+
+/**
+ * thunar_vfs_init:
+ *
+ * Initializes the ThunarVFS library.
+ **/
+void
+thunar_vfs_init (void)
+{
+ if (g_atomic_int_exchange_and_add (&thunar_vfs_ref_count, 1) == 0)
+ {
+ /* initialize the path module */
+ _thunar_vfs_path_init ();
+
+ /* initialize the xfer module */
+ _thunar_vfs_xfer_init ();
+
+ /* initialize the info module */
+ _thunar_vfs_info_init ();
+
+ /* initialize the jobs framework */
+ _thunar_vfs_job_init ();
+ }
+}
+
+
+
+/**
+ * thunar_vfs_shutdown:
+ *
+ * Shuts down the ThunarVFS library.
+ **/
+void
+thunar_vfs_shutdown (void)
+{
+ if (g_atomic_int_dec_and_test (&thunar_vfs_ref_count))
+ {
+ /* shutdown the jobs framework */
+ _thunar_vfs_job_shutdown ();
+
+ /* release the info module */
+ _thunar_vfs_info_shutdown ();
+
+ /* shutdown the xfer module */
+ _thunar_vfs_xfer_shutdown ();
+
+ /* shutdown the path module */
+ _thunar_vfs_path_shutdown ();
+ }
+}
+
+
+
+/**
+ * thunar_vfs_listdir:
+ * @path : the #ThunarVfsPath for the folder that should be listed.
+ * @error : return location for errors or %NULL.
+ *
+ * Generates a #ThunarVfsListdirJob, which can be used to list the
+ * contents of a directory (as specified by @path). If the creation
+ * of the job failes for some reason, %NULL will be returned and
+ * @error will be set to point to a #GError describing the cause.
+ * Else the newly allocated #ThunarVfsListdirJob will be returned
+ * and the caller is responsible to call g_object_unref().
+ *
+ * Note, that the returned job is launched right away, so you
+ * don't need to call thunar_vfs_job_launch() on it.
+ *
+ * Return value: the newly allocated #ThunarVfsListdirJob or %NULL
+ * if an error occurs while creating the job.
+ **/
+ThunarVfsJob*
+thunar_vfs_listdir (ThunarVfsPath *path,
+ GError **error)
+{
+ g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+ /* allocate the job */
+ return thunar_vfs_job_launch (thunar_vfs_listdir_job_new (path));
+}
+
+
+
+/**
+ * thunar_vfs_copy_file:
+ * @source_path : the source #ThunarVfsPath.
+ * @target_path : the target #ThunarVfsPath.
+ * @error : return location for errors or %NULL.
+ *
+ * Allocates a new #ThunarVfsTransferJob, which copies the file
+ * from @source_path to @target_path. That said, the file or directory
+ * located at @source_path will be placed at @target_path, NOT INTO
+ * @target_path.
+ *
+ * The caller is responsible to free the returned job using
+ * g_object_unref() when no longer needed.
+ *
+ * Note, that the returned job is launched right away, so you don't
+ * need to call thunar_vfs_job_launch() on it.
+ *
+ * Return value: the newly allocated #ThunarVfsTransferJob or %NULL
+ * if an error occurs while creating the job.
+ **/
+ThunarVfsJob*
+thunar_vfs_copy_file (ThunarVfsPath *source_path,
+ ThunarVfsPath *target_path,
+ GError **error)
+{
+ GList source_path_list;
+ GList target_path_list;
+
+ g_return_val_if_fail (source_path != NULL, NULL);
+ g_return_val_if_fail (target_path != NULL, NULL);
+ g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+ /* fake a source path list */
+ source_path_list.data = source_path;
+ source_path_list.next = NULL;
+ source_path_list.prev = NULL;
+
+ /* fake a target path list */
+ target_path_list.data = target_path;
+ target_path_list.next = NULL;
+ target_path_list.prev = NULL;
+
+ /* allocate the job */
+ return thunar_vfs_copy_files (&source_path_list, &target_path_list, error);
+}
+
+
+
+/**
+ * thunar_vfs_copy_files:
+ * @source_path_list : the list of #ThunarVfsPath<!---->s that should be copied.
+ * @target_path_list : the list of #ThunarVfsPath<!---->s for the targets.
+ * @error : return location for errors or %NULL.
+ *
+ * Similar to thunar_vfs_copy_file(), but takes a bunch of files. The
+ * @source_path_list and @target_path_list must be of the same size.
+ *
+ * Note, that the returned job is launched right away, so you don't
+ * need to call thunar_vfs_job_launch() on it. The caller is responsible
+ * to free the returned object using g_object_unref() when no longer
+ * needed.
+ *
+ * Return value: the newly allocated #ThunarVfsTransferJob or %NULL
+ * if an error occurs while creating the job.
+ **/
+ThunarVfsJob*
+thunar_vfs_copy_files (GList *source_path_list,
+ GList *target_path_list,
+ GError **error)
+{
+ ThunarVfsJob *job;
+
+ g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+ /* allocate/launch the job */
+ job = thunar_vfs_transfer_job_new (source_path_list, target_path_list, FALSE, error);
+ if (G_LIKELY (job != NULL))
+ thunar_vfs_job_launch (job);
+
+ return job;
+}
+
+
+
+/**
+ * thunar_vfs_link_file:
+ * @source_path : the source #ThunarVfsPath.
+ * @target_path : the target #ThunarVfsPath.
+ * @error : return location for errors or %NULL.
+ *
+ * Allocates a new #ThunarVfsLinkJob, which creates a symbolic
+ * link from @source_path to @target_path.
+ *
+ * If @source_path and @target_path refer to the same file,
+ * a new unique target filename will be choosen automatically.
+ *
+ * The caller is responsible to free the returned job using
+ * g_object_unref() when no longer needed.
+ *
+ * Note, that the returned job is launched right away, so you don't
+ * need to call thunar_vfs_job_launch() on it.
+ *
+ * Return value: the newly allocated #ThunarVfsLinkJob or %NULL
+ * if an error occurs while creating the job.
+ **/
+ThunarVfsJob*
+thunar_vfs_link_file (ThunarVfsPath *source_path,
+ ThunarVfsPath *target_path,
+ GError **error)
+{
+ GList source_path_list;
+ GList target_path_list;
+
+ g_return_val_if_fail (!thunar_vfs_path_is_root (source_path), NULL);
+ g_return_val_if_fail (!thunar_vfs_path_is_root (target_path), NULL);
+ g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+ /* fake a source path list */
+ source_path_list.data = source_path;
+ source_path_list.next = NULL;
+ source_path_list.prev = NULL;
+
+ /* fake a target path list */
+ target_path_list.data = target_path;
+ target_path_list.next = NULL;
+ target_path_list.prev = NULL;
+
+ return thunar_vfs_link_files (&source_path_list, &target_path_list, error);
+}
+
+
+
+/**
+ * thunar_vfs_link_files:
+ * @source_path_list : list of #ThunarVfsPath<!---->s to the source files.
+ * @target_path_list : list of #ThunarVfsPath<!---->s to the target files.
+ * @error : return location for errors or %NULL.
+ *
+ * Like thunar_vfs_link_file(), but works on path lists, rather than
+ * a single path.
+ *
+ * The caller is responsible to free the returned job using
+ * g_object_unref() when no longer needed.
+ *
+ * Note, that the returned job is launched right away, so you don't
+ * need to call thunar_vfs_job_launch() on it.
+ *
+ * Return value: the newly allocated #ThunarVfsLinkJob or %NULL
+ * if an error occurs while creating the job.
+ **/
+ThunarVfsJob*
+thunar_vfs_link_files (GList *source_path_list,
+ GList *target_path_list,
+ GError **error)
+{
+ ThunarVfsJob *job;
+
+ g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+ /* allocate/launch the job */
+ job = thunar_vfs_link_job_new (source_path_list, target_path_list, error);
+ if (G_LIKELY (job != NULL))
+ thunar_vfs_job_launch (job);
+
+ return job;
+}
+
+
+
+/**
+ * thunar_vfs_move_file:
+ * @source_path : the source #ThunarVfsPath.
+ * @target_path : the target #ThunarVfsPath.
+ * @error : return location for errors or %NULL.
+ *
+ * Allocates a new #ThunarVfsTransferJob, which moves the file
+ * from @source_path to @target_path. That said, the file or directory
+ * located at @source_path will be placed at @target_path, NOT INTO
+ * @target_path.
+ *
+ * The caller is responsible to free the returned job using
+ * g_object_unref() when no longer needed.
+ *
+ * Note, that the returned job is launched right away, so you don't
+ * need to call thunar_vfs_job_launch() on it.
+ *
+ * Return value: the newly allocated #ThunarVfsTransferJob or %NULL
+ * if an error occurs while creating the job.
+ **/
+ThunarVfsJob*
+thunar_vfs_move_file (ThunarVfsPath *source_path,
+ ThunarVfsPath *target_path,
+ GError **error)
+{
+ GList source_path_list;
+ GList target_path_list;
+
+ g_return_val_if_fail (source_path != NULL, NULL);
+ g_return_val_if_fail (target_path != NULL, NULL);
+ g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+ /* fake a source path list */
+ source_path_list.data = source_path;
+ source_path_list.next = NULL;
+ source_path_list.prev = NULL;
+
+ /* fake a target path list */
+ target_path_list.data = target_path;
+ target_path_list.next = NULL;
+ target_path_list.prev = NULL;
+
+ /* allocate and launch the job */
+ return thunar_vfs_move_files (&source_path_list, &target_path_list, error);
+}
+
+
+
+/**
+ * thunar_vfs_move_into:
+ * @source_path_list : the list of #ThunarVfsPath<!---->s that should be moved.
+ * @target_path_list : the list of #ThunarVfsPath<!---->s to the targets.
+ * @error : return location for errors or %NULL.
+ *
+ * Similar to thunar_vfs_move_file(), but takes a bunch of files. The
+ * @source_path_list and @target_path_list must be of the same size.
+ *
+ * Note, that the returned job is launched right away, so you don't
+ * need to call thunar_vfs_job_launch() on it. The caller is responsible
+ * to free the returned object using g_object_unref() when no longer
+ * needed.
+ *
+ * Return value: the newly allocated #ThunarVfsTransferJob or %NULL
+ * if an error occurs while creating the job.
+ **/
+ThunarVfsJob*
+thunar_vfs_move_files (GList *source_path_list,
+ GList *target_path_list,
+ GError **error)
+{
+ ThunarVfsJob *job;
+
+ g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+ /* allocate/launch the job */
+ job = thunar_vfs_transfer_job_new (source_path_list, target_path_list, TRUE, error);
+ if (G_LIKELY (job != NULL))
+ thunar_vfs_job_launch (job);
+
+ return job;
+}
+
+
+
+/**
+ * thunar_vfs_unlink_file:
+ * @path : a #ThunarVfsPath, that should be unlinked.
+ * @error : return location for errors or %NULL.
+ *
+ * Simple wrapper to thunar_vfs_unlink_files(), which takes
+ * only a single path.
+ *
+ * Note, that the returned job is launched right away, so you
+ * don't need to call thunar_vfs_job_launch() on it. The caller
+ * is responsible to free the returned object using g_object_unref()
+ * when no longer needed.
+ *
+ * Return value: the newly allocated #ThunarVfsUnlinkJob or %NULL
+ * if an error occurs while creating the job.
+ **/
+ThunarVfsJob*
+thunar_vfs_unlink_file (ThunarVfsPath *path,
+ GError **error)
+{
+ GList path_list;
+
+ g_return_val_if_fail (path != NULL, NULL);
+ g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+ /* fake a path list */
+ path_list.data = path;
+ path_list.next = NULL;
+ path_list.prev = NULL;
+
+ /* allocate and launch the job */
+ return thunar_vfs_unlink_files (&path_list, error);
+}
+
+
+
+/**
+ * thunar_vfs_unlink_files:
+ * @path_list : a list of #ThunarVfsPath<!---->s, that should be unlinked.
+ * @error : return location for errors or %NULL.
+ *
+ * Generates a #ThunarVfsInteractiveJob, which can be used to unlink
+ * all files referenced by the @path_list. If the creation of the job
+ * failes for some reason, %NULL will be returned and @error will
+ * be set to point to a #GError describing the cause. Else, the
+ * newly allocated #ThunarVfsUnlinkJob will be returned, and the
+ * caller is responsible to call g_object_unref().
+ *
+ * Note, that the returned job is launched right away, so you
+ * don't need to call thunar_vfs_job_launch() on it.
+ *
+ * Return value: the newly allocated #ThunarVfsUnlinkJob or %NULL
+ * if an error occurs while creating the job.
+ **/
+ThunarVfsJob*
+thunar_vfs_unlink_files (GList *path_list,
+ GError **error)
+{
+ ThunarVfsJob *job;
+
+ g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+ /* try to allocate the job */
+ job = thunar_vfs_unlink_job_new (path_list, error);
+ if (G_LIKELY (job != NULL))
+ thunar_vfs_job_launch (job);
+
+ return job;
+}
+
+
+
+/**
+ * thunar_vfs_make_directory:
+ * @path : the #ThunarVfsPath to the directory to create.
+ * @error : return location for errors or %NULL.
+ *
+ * Generates a #ThunarVfsMkdirJob, which can be used to
+ * asynchronously create a new directory at the given @path. If
+ * the creation of the job fails for some reason, %NULL will be
+ * returned and @error will be set to point to a #GError
+ * describing the cause of the problem. Else the newly allocated
+ * #ThunarVfsMkdirJob will be returned, and the caller is responsible
+ * to call g_object_unref().
+ *
+ * Note, that the returned job is launched right away, so you
+ * don't need to call thunar_vfs_job_launch() on it.
+ *
+ * Return value: the newly allocated #ThunarVfsMkdirJob or %NULL
+ * if an error occurs while creating the job.
+ **/
+ThunarVfsJob*
+thunar_vfs_make_directory (ThunarVfsPath *path,
+ GError **error)
+{
+ GList path_list;
+
+ g_return_val_if_fail (path != NULL, NULL);
+ g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+ /* fake a path list */
+ path_list.data = path;
+ path_list.next = NULL;
+ path_list.prev = NULL;
+
+ /* allocate and launch the job */
+ return thunar_vfs_make_directories (&path_list, error);
+}
+
+
+
+/**
+ * thunar_vfs_make_directories:
+ * @path_list : a list of #ThunarVfsPath<!--->s that contain the paths
+ * to the directories which should be created.
+ * @error : return location for errors or %NULL.
+ *
+ * Similar to thunar_vfs_make_directory(), but allows the creation
+ * of multiple directories using a single #ThunarVfsJob.
+ *
+ * The caller is responsible to free the returned job using
+ * g_object_unref() when no longer needed.
+ *
+ * Note, that the returned job is launched right away, so you don't
+ * need to call thunar_vfs_job_launch() on it.
+ *
+ * Return value: the newly allocated #ThunarVfsMkdirJob or %NULL
+ * if an error occurs while creating the job.
+ **/
+ThunarVfsJob*
+thunar_vfs_make_directories (GList *path_list,
+ GError **error)
+{
+ ThunarVfsJob *job;
+
+ g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+ /* allocate and launch the new job */
+ job = thunar_vfs_mkdir_job_new (path_list, error);
+ if (G_LIKELY (job != NULL))
+ thunar_vfs_job_launch (job);
+
+ return job;
+}
+
+
+
+#define __THUNAR_VFS_C__
+#include <thunar-vfs/thunar-vfs-aliasdef.c>
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,83 @@
+/* $Id: thunar-vfs.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __THUNAR_VFS_H__
+#define __THUNAR_VFS_H__
+
+#define THUNAR_VFS_INSIDE_THUNAR_VFS_H
+
+#include <thunar-vfs/thunar-vfs-enum-types.h>
+#include <thunar-vfs/thunar-vfs-info.h>
+#include <thunar-vfs/thunar-vfs-interactive-job.h>
+#include <thunar-vfs/thunar-vfs-job.h>
+#include <thunar-vfs/thunar-vfs-mime-application.h>
+#include <thunar-vfs/thunar-vfs-mime-database.h>
+#include <thunar-vfs/thunar-vfs-mime-info.h>
+#include <thunar-vfs/thunar-vfs-monitor.h>
+#include <thunar-vfs/thunar-vfs-path.h>
+#include <thunar-vfs/thunar-vfs-thumb.h>
+#include <thunar-vfs/thunar-vfs-user.h>
+#include <thunar-vfs/thunar-vfs-util.h>
+#include <thunar-vfs/thunar-vfs-volume.h>
+
+#undef THUNAR_VFS_INSIDE_THUNAR_VFS_H
+
+G_BEGIN_DECLS;
+
+void thunar_vfs_init (void);
+void thunar_vfs_shutdown (void);
+
+ThunarVfsJob *thunar_vfs_listdir (ThunarVfsPath *path,
+ GError **error) G_GNUC_MALLOC;
+
+ThunarVfsJob *thunar_vfs_copy_file (ThunarVfsPath *source_path,
+ ThunarVfsPath *target_path,
+ GError **error) G_GNUC_MALLOC;
+ThunarVfsJob *thunar_vfs_copy_files (GList *source_path_list,
+ GList *target_path_list,
+ GError **error) G_GNUC_MALLOC;
+
+ThunarVfsJob *thunar_vfs_link_file (ThunarVfsPath *source_path,
+ ThunarVfsPath *target_path,
+ GError **error) G_GNUC_MALLOC;
+ThunarVfsJob *thunar_vfs_link_files (GList *source_path_list,
+ GList *target_path_list,
+ GError **error) G_GNUC_MALLOC;
+
+ThunarVfsJob *thunar_vfs_move_file (ThunarVfsPath *source_path,
+ ThunarVfsPath *target_path,
+ GError **error) G_GNUC_MALLOC;
+ThunarVfsJob *thunar_vfs_move_files (GList *source_path_list,
+ GList *target_path_list,
+ GError **error) G_GNUC_MALLOC;
+
+ThunarVfsJob *thunar_vfs_unlink_file (ThunarVfsPath *path,
+ GError **error) G_GNUC_MALLOC;
+ThunarVfsJob *thunar_vfs_unlink_files (GList *path_list,
+ GError **error) G_GNUC_MALLOC;
+
+ThunarVfsJob *thunar_vfs_make_directory (ThunarVfsPath *path,
+ GError **error) G_GNUC_MALLOC;
+ThunarVfsJob *thunar_vfs_make_directories (GList *path_list,
+ GError **error) G_GNUC_MALLOC;
+
+G_END_DECLS;
+
+#endif /* !__THUNAR_VFS_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs.symbols
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs.symbols 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunar-vfs/thunar-vfs.symbols 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,301 @@
+/* $Id: thunar-vfs.symbols 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+/* This file lists all exported symbols. It is used to generate
+ * the gobject.def file used to control exports on Windows and the
+ * thunar-vfs-alias.h/thunar-vfs-aliasdef.c files used to avoid PLT
+ * entries for * internal uses of exported functions (see
+ * make-thunar-vfs-alias.pl).
+ *
+ * Every symbol must be included in the right
+ * #ifdef IN_HEADER(sym) #endif and
+ * #ifdef IN_SOURCE(sym) #endif sections.
+ */
+
+#ifdef ALL_FILES
+#define IN_SOURCE(x) 1
+#define IN_HEADER(x) 1
+#endif
+
+/* thunar-vfs functions */
+#if IN_HEADER(__THUNAR_VFS_H__)
+#if IN_SOURCE(__THUNAR_VFS_C__)
+thunar_vfs_init
+thunar_vfs_shutdown
+thunar_vfs_listdir G_GNUC_MALLOC
+thunar_vfs_copy_file G_GNUC_MALLOC
+thunar_vfs_copy_files G_GNUC_MALLOC
+thunar_vfs_link_file G_GNUC_MALLOC
+thunar_vfs_link_files G_GNUC_MALLOC
+thunar_vfs_move_file G_GNUC_MALLOC
+thunar_vfs_move_files G_GNUC_MALLOC
+thunar_vfs_unlink_file G_GNUC_MALLOC
+thunar_vfs_unlink_files G_GNUC_MALLOC
+thunar_vfs_make_directory G_GNUC_MALLOC
+thunar_vfs_make_directories G_GNUC_MALLOC
+#endif
+#endif
+
+/* thunar-vfs-config symbols */
+#if IN_HEADER(__THUNAR_VFS_CONFIG_H__)
+#if IN_SOURCE(__THUNAR_VFS_CONFIG_C__)
+thunar_vfs_major_version
+thunar_vfs_minor_version
+thunar_vfs_micro_version
+thunar_vfs_check_version
+#endif
+#endif
+
+/* ThunarVfsInfo methods */
+#if IN_HEADER(__THUNAR_VFS_INFO_H__)
+#if IN_SOURCE(__THUNAR_VFS_INFO_C__)
+thunar_vfs_info_get_type
+thunar_vfs_info_new_for_path G_GNUC_MALLOC
+#ifdef INCLUDE_INTERNAL_SYMBOLS
+thunar_vfs_info_ref
+#endif
+thunar_vfs_info_unref
+thunar_vfs_info_copy
+#ifdef INCLUDE_INTERNAL_SYMBOLS
+thunar_vfs_info_get_custom_icon
+#endif
+thunar_vfs_info_execute
+thunar_vfs_info_rename
+thunar_vfs_info_matches
+#ifdef INCLUDE_INTERNAL_SYMBOLS
+thunar_vfs_info_list_free
+#endif
+#endif
+#endif
+
+/* thunar-vfs-enum-types functions */
+#if IN_HEADER(__THUNAR_VFS_ENUM_TYPES_H__)
+#if IN_SOURCE(__THUNAR_VFS_ENUM_TYPES_C__)
+thunar_vfs_file_flags_get_type G_GNUC_CONST
+thunar_vfs_file_mode_get_type G_GNUC_CONST
+thunar_vfs_file_type_get_type G_GNUC_CONST
+thunar_vfs_interactive_job_response_get_type G_GNUC_CONST
+thunar_vfs_mime_application_error_get_type G_GNUC_CONST
+thunar_vfs_mime_application_flags_get_type G_GNUC_CONST
+thunar_vfs_monitor_event_get_type G_GNUC_CONST
+thunar_vfs_thumb_size_get_type G_GNUC_CONST
+thunar_vfs_volume_kind_get_type G_GNUC_CONST
+thunar_vfs_volume_status_get_type G_GNUC_CONST
+#endif
+#endif
+
+/* ThunarVfsInteractiveJob methods */
+#if IN_HEADER(__THUNAR_VFS_INTERACTIVE_JOB_H__)
+#if IN_SOURCE(__THUNAR_VFS_INTERACTIVE_JOB_C__)
+thunar_vfs_interactive_job_get_type G_GNUC_CONST
+#endif
+#endif
+
+/* ThunarVfsJob methods */
+#if IN_HEADER(__THUNAR_VFS_JOB_H__)
+#if IN_SOURCE(__THUNAR_VFS_JOB_C__)
+thunar_vfs_job_get_type G_GNUC_CONST
+thunar_vfs_job_launch
+thunar_vfs_job_cancel
+#ifdef INCLUDE_INTERNAL_SYMBOLS
+thunar_vfs_job_cancelled
+#endif
+#endif
+#endif
+
+/* ThunarVfsMimeApplication methods */
+#if IN_HEADER(__THUNAR_VFS_MIME_APPLICATION_H__)
+#if IN_SOURCE(__THUNAR_VFS_MIME_APPLICATION_C__)
+thunar_vfs_mime_application_error_quark G_GNUC_CONST
+thunar_vfs_mime_application_get_type G_GNUC_CONST
+thunar_vfs_mime_application_new_from_desktop_id G_GNUC_MALLOC
+thunar_vfs_mime_application_new_from_file G_GNUC_MALLOC
+thunar_vfs_mime_application_ref
+thunar_vfs_mime_application_unref
+thunar_vfs_mime_application_get_command
+thunar_vfs_mime_application_get_desktop_id
+thunar_vfs_mime_application_get_flags
+thunar_vfs_mime_application_get_name
+thunar_vfs_mime_application_get_mime_types
+thunar_vfs_mime_application_exec
+thunar_vfs_mime_application_exec_with_env
+thunar_vfs_mime_application_lookup_icon_name
+thunar_vfs_mime_application_hash
+thunar_vfs_mime_application_equal
+#endif
+#endif
+
+/* ThunarVfsMimeDatabase methods */
+#if IN_HEADER(__THUNAR_VFS_MIME_DATABASE_H__)
+#if IN_SOURCE(__THUNAR_VFS_MIME_DATABASE_C__)
+thunar_vfs_mime_database_get_type G_GNUC_CONST
+thunar_vfs_mime_database_get_default
+thunar_vfs_mime_database_get_info
+thunar_vfs_mime_database_get_info_for_data
+thunar_vfs_mime_database_get_info_for_name
+thunar_vfs_mime_database_get_info_for_file
+thunar_vfs_mime_database_get_infos_for_info
+thunar_vfs_mime_database_get_applications
+thunar_vfs_mime_database_get_default_application
+thunar_vfs_mime_database_set_default_application
+thunar_vfs_mime_database_add_application
+#endif
+#endif
+
+/* ThunarVfsMimeInfo methods */
+#if IN_HEADER(__THUNAR_VFS_MIME_INFO_H__)
+#if IN_SOURCE(__THUNAR_VFS_MIME_INFO_C__)
+thunar_vfs_mime_info_get_type G_GNUC_CONST
+thunar_vfs_mime_info_new G_GNUC_MALLOC
+#ifdef INCLUDE_INTERNAL_SYMBOLS
+thunar_vfs_mime_info_ref
+#endif
+thunar_vfs_mime_info_unref
+thunar_vfs_mime_info_get_comment
+#ifdef INCLUDE_INTERNAL_SYMBOLS
+thunar_vfs_mime_info_get_name
+#endif
+thunar_vfs_mime_info_get_media G_GNUC_MALLOC
+thunar_vfs_mime_info_get_subtype G_GNUC_MALLOC
+thunar_vfs_mime_info_hash
+thunar_vfs_mime_info_equal
+thunar_vfs_mime_info_lookup_icon_name
+#ifdef INCLUDE_INTERNAL_SYMBOLS
+thunar_vfs_mime_info_list_free
+#endif
+#endif
+#endif
+
+/* ThunarVfsMonitor methods */
+#if IN_HEADER(__THUNAR_VFS_MONITOR_H__)
+#if IN_SOURCE(__THUNAR_VFS_MONITOR_C__)
+thunar_vfs_monitor_get_type G_GNUC_CONST
+thunar_vfs_monitor_get_default
+thunar_vfs_monitor_add_directory
+thunar_vfs_monitor_add_file
+thunar_vfs_monitor_remove
+thunar_vfs_monitor_feed
+thunar_vfs_monitor_wait
+#endif
+#endif
+
+/* ThunarVfsPath methods */
+#if IN_HEADER(__THUNAR_VFS_PATH_H__)
+#if IN_SOURCE(__THUNAR_VFS_PATH_C__)
+thunar_vfs_path_get_type G_GNUC_CONST
+thunar_vfs_path_new G_GNUC_MALLOC
+thunar_vfs_path_get_for_home
+thunar_vfs_path_get_for_root
+#ifdef INCLUDE_INTERNAL_SYMBOLS
+thunar_vfs_path_ref
+#endif
+thunar_vfs_path_unref
+thunar_vfs_path_hash
+thunar_vfs_path_equal
+thunar_vfs_path_relative G_GNUC_MALLOC
+thunar_vfs_path_is_home
+#ifdef INCLUDE_INTERNAL_SYMBOLS
+thunar_vfs_path_is_root
+thunar_vfs_path_get_name
+thunar_vfs_path_get_parent
+#endif
+thunar_vfs_path_dup_string G_GNUC_MALLOC
+thunar_vfs_path_to_string
+thunar_vfs_path_dup_uri G_GNUC_MALLOC
+thunar_vfs_path_to_uri
+thunar_vfs_path_list_from_string G_GNUC_MALLOC
+thunar_vfs_path_list_to_string G_GNUC_MALLOC
+#ifdef INCLUDE_INTERNAL_SYMBOLS
+thunar_vfs_path_list_append
+thunar_vfs_path_list_prepend
+thunar_vfs_path_list_copy G_GNUC_MALLOC
+thunar_vfs_path_list_free
+#endif
+#endif
+#endif
+
+/* ThunarVfsThumbFactory methods */
+#if IN_HEADER(__THUNAR_VFS_THUMB_H__)
+#if IN_SOURCE(__THUNAR_VFS_THUMB_C__)
+thunar_vfs_thumb_factory_get_type G_GNUC_CONST
+thunar_vfs_thumb_factory_new G_GNUC_MALLOC
+thunar_vfs_thumb_factory_lookup_thumbnail G_GNUC_MALLOC
+thunar_vfs_thumb_factory_can_thumbnail
+thunar_vfs_thumb_factory_has_failed_thumbnail
+thunar_vfs_thumb_factory_generate_thumbnail G_GNUC_MALLOC
+thunar_vfs_thumb_factory_store_thumbnail
+#endif
+#endif
+
+/* thunar-vfs-thumbnail functions */
+#if IN_HEADER(__THUNAR_VFS_THUMB_H__)
+#if IN_SOURCE(__THUNAR_VFS_THUMB_C__)
+thunar_vfs_thumbnail_for_path G_GNUC_MALLOC
+thunar_vfs_thumbnail_is_valid
+#endif
+#endif
+
+/* ThunarVfsGroup/ThunarVfsUser/ThunarVfsUserManager methods */
+#if IN_HEADER(__THUNAR_VFS_USER_H__)
+#if IN_SOURCE(__THUNAR_VFS_USER_C__)
+thunar_vfs_group_get_type G_GNUC_CONST
+thunar_vfs_group_get_id
+thunar_vfs_group_get_name
+thunar_vfs_user_get_type G_GNUC_CONST
+thunar_vfs_user_get_groups
+thunar_vfs_user_get_primary_group
+thunar_vfs_user_get_id
+thunar_vfs_user_get_name
+thunar_vfs_user_get_real_name
+thunar_vfs_user_is_me
+thunar_vfs_user_manager_get_type
+thunar_vfs_user_manager_get_default
+thunar_vfs_user_manager_get_group_by_id
+thunar_vfs_user_manager_get_user_by_id
+#endif
+#endif
+
+/* thunar-vfs-util functions */
+#if IN_HEADER(__THUNAR_VFS_UTIL_H__)
+#if IN_SOURCE(__THUNAR_VFS_UTIL_C__)
+thunar_vfs_humanize_size
+#endif
+#endif
+
+/* ThunarVfsVolume/ThunarVfsVolumeManager methods */
+#if IN_HEADER(__THUNAR_VFS_VOLUME_H__)
+#if IN_SOURCE(__THUNAR_VFS_VOLUME_C__)
+thunar_vfs_volume_get_type G_GNUC_CONST
+thunar_vfs_volume_get_kind
+thunar_vfs_volume_get_name
+thunar_vfs_volume_get_status
+thunar_vfs_volume_get_mount_point
+thunar_vfs_volume_is_mounted
+thunar_vfs_volume_is_present
+thunar_vfs_volume_is_removable
+thunar_vfs_volume_get_free_space
+thunar_vfs_volume_lookup_icon_name
+thunar_vfs_volume_manager_get_type G_GNUC_CONST
+thunar_vfs_volume_manager_get_default
+thunar_vfs_volume_manager_get_volume_by_info
+thunar_vfs_volume_manager_get_volumes
+#endif
+#endif
+
Added: desktop/trunk/thunar/branches/upstream/current/thunarx/Makefile.am
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunarx/Makefile.am 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunarx/Makefile.am 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,97 @@
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+
+INCLUDES = \
+ -I$(top_srcdir) \
+ -DG_LOG_DOMAIN=\"thunarx\" \
+ -DTHUNARX_COMPILATION \
+ $(PLATFORM_CPPFLAGS)
+
+libthunarx_built_sources = \
+ thunarx-alias.h \
+ thunarx-aliasdef.c
+
+libthunarx_headers = \
+ thunarx.h \
+ thunarx-config.h \
+ thunarx-file-info.h \
+ thunarx-menu-provider.h \
+ thunarx-property-page.h \
+ thunarx-property-page-provider.h
+
+libthunarx_includedir = \
+ $(includedir)/thunarx-$(THUNAR_VERSION_API)/thunarx
+
+libthunarx_include_HEADERS = \
+ $(libthunarx_headers)
+
+lib_LTLIBRARIES = \
+ libthunarx-1.la
+
+libthunarx_1_la_SOURCES = \
+ $(libthunarx_built_sources) \
+ $(libthunarx_headers) \
+ thunarx-config.c \
+ thunarx-file-info.c \
+ thunarx-menu-provider.c \
+ thunarx-property-page.c \
+ thunarx-property-page-provider.c
+
+libthunarx_1_la_CFLAGS = \
+ $(GTK_CFLAGS) \
+ $(PLATFORM_CFLAGS)
+
+libthunarx_1_la_LDFLAGS = \
+ -export-dynamic \
+ -export-symbols-regex "^[^_].*" \
+ -version-info $(THUNAR_VERINFO) \
+ $(PLATFORM_LDFLAGS)
+
+libthunarx_1_la_LIBADD = \
+ $(GTK_LIBS)
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = thunarx-1.pc
+
+EXTRA_DIST = \
+ abicheck.sh \
+ make-thunarx-alias.pl \
+ thunarx.symbols \
+ thunarx-alias.h \
+ thunarx-aliasdef.c
+
+##
+## Rules to auto-generate built sources
+##
+## This is a bit tricky with automake, and non-trivial to implement. The
+## rules below seem to work fine and don't seem to break the build, but
+## they are only enabled in maintainer mode, so arbitrary users don't get
+## trapped in automake's oddities. Therefore we ship the autogenerated
+## files as part of the dist tarball.
+##
+if MAINTAINER_MODE
+CLEANFILES = \
+ actual-abi \
+ expected-abi
+
+DISTCLEANFILES = \
+ $(libthunarx_built_sources)
+
+BUILT_SOURCES = \
+ $(libthunarx_built_sources)
+
+if HAVE_GNUC_VISIBILITY
+TESTS = \
+ abicheck.sh
+endif
+
+thunarx-alias.h: make-thunarx-alias.pl thunarx.symbols
+ $(PERL) $(srcdir)/make-thunarx-alias.pl < $(srcdir)/thunarx.symbols > thunarx-alias.h
+
+thunarx-aliasdef.c: make-thunarx-alias.pl thunarx.symbols
+ $(PERL) $(srcdir)/make-thunarx-alias.pl -def < $(srcdir)/thunarx.symbols > thunarx-aliasdef.c
+endif
+
+# required for gtk-doc
+dist-hook: all
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
Added: desktop/trunk/thunar/branches/upstream/current/thunarx/Makefile.in
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunarx/Makefile.in 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunarx/Makefile.in 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,835 @@
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004 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.
+
+ at SET_MAKE@
+
+# $Id: Makefile.am 18843 2005-11-14 14:25:58Z benny $
+
+
+
+SOURCES = $(libthunarx_1_la_SOURCES)
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+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@
+target_triplet = @target@
+subdir = thunarx
+DIST_COMMON = $(libthunarx_include_HEADERS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in $(srcdir)/thunarx-1.pc.in \
+ $(srcdir)/thunarx-config.h.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = thunarx-1.pc thunarx-config.h
+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 = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" \
+ "$(DESTDIR)$(libthunarx_includedir)"
+libLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(lib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libthunarx_1_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_1 = libthunarx_1_la-thunarx-aliasdef.lo
+am__objects_2 =
+am_libthunarx_1_la_OBJECTS = $(am__objects_1) $(am__objects_2) \
+ libthunarx_1_la-thunarx-config.lo \
+ libthunarx_1_la-thunarx-file-info.lo \
+ libthunarx_1_la-thunarx-menu-provider.lo \
+ libthunarx_1_la-thunarx-property-page.lo \
+ libthunarx_1_la-thunarx-property-page-provider.lo
+libthunarx_1_la_OBJECTS = $(am_libthunarx_1_la_OBJECTS)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link --tag=CC $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(libthunarx_1_la_SOURCES)
+DIST_SOURCES = $(libthunarx_1_la_SOURCES)
+pkgconfigDATA_INSTALL = $(INSTALL_DATA)
+DATA = $(pkgconfig_DATA)
+libthunarx_includeHEADERS_INSTALL = $(INSTALL_HEADER)
+HEADERS = $(libthunarx_include_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CAIRO_REQUIRED_VERSION = @CAIRO_REQUIRED_VERSION@
+CAIRO_VERSION = @CAIRO_VERSION@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@
+ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@
+EXEEXT = @EXEEXT@
+EXO_CFLAGS = @EXO_CFLAGS@
+EXO_LIBS = @EXO_LIBS@
+EXO_REQUIRED_VERSION = @EXO_REQUIRED_VERSION@
+EXO_VERSION = @EXO_VERSION@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GCONF_CFLAGS = @GCONF_CFLAGS@
+GCONF_LIBS = @GCONF_LIBS@
+GCONF_REQUIRED_VERSION = @GCONF_REQUIRED_VERSION@
+GCONF_VERSION = @GCONF_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_REQUIRED_VERSION = @GLIB_REQUIRED_VERSION@
+GLIB_VERSION = @GLIB_VERSION@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTHREAD_REQUIRED_VERSION = @GTHREAD_REQUIRED_VERSION@
+GTHREAD_VERSION = @GTHREAD_VERSION@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+GTK_LIBS = @GTK_LIBS@
+GTK_REQUIRED_VERSION = @GTK_REQUIRED_VERSION@
+GTK_VERSION = @GTK_VERSION@
+HAVE_CAIRO_FALSE = @HAVE_CAIRO_FALSE@
+HAVE_CAIRO_TRUE = @HAVE_CAIRO_TRUE@
+HAVE_GCONF_FALSE = @HAVE_GCONF_FALSE@
+HAVE_GCONF_TRUE = @HAVE_GCONF_TRUE@
+HAVE_GNUC_VISIBILITY_FALSE = @HAVE_GNUC_VISIBILITY_FALSE@
+HAVE_GNUC_VISIBILITY_TRUE = @HAVE_GNUC_VISIBILITY_TRUE@
+HAVE_LIBSTARTUP_NOTIFICATION_FALSE = @HAVE_LIBSTARTUP_NOTIFICATION_FALSE@
+HAVE_LIBSTARTUP_NOTIFICATION_TRUE = @HAVE_LIBSTARTUP_NOTIFICATION_TRUE@
+HTML_DIR = @HTML_DIR@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LIBFAM_CFLAGS = @LIBFAM_CFLAGS@
+LIBFAM_LIBS = @LIBFAM_LIBS@
+LIBFAM_REQUIRED_VERSION = @LIBFAM_REQUIRED_VERSION@
+LIBFAM_VERSION = @LIBFAM_VERSION@
+LIBJPEG_CFLAGS = @LIBJPEG_CFLAGS@
+LIBJPEG_LIBS = @LIBJPEG_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
+LIBPNG_LIBS = @LIBPNG_LIBS@
+LIBPNG_REQUIRED_VERSION = @LIBPNG_REQUIRED_VERSION@
+LIBPNG_VERSION = @LIBPNG_VERSION@
+LIBS = @LIBS@
+LIBSTARTUP_NOTIFICATION_CFLAGS = @LIBSTARTUP_NOTIFICATION_CFLAGS@
+LIBSTARTUP_NOTIFICATION_LIBS = @LIBSTARTUP_NOTIFICATION_LIBS@
+LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION = @LIBSTARTUP_NOTIFICATION_REQUIRED_VERSION@
+LIBSTARTUP_NOTIFICATION_VERSION = @LIBSTARTUP_NOTIFICATION_VERSION@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_CFLAGS = @PLATFORM_CFLAGS@
+PLATFORM_CPPFLAGS = @PLATFORM_CPPFLAGS@
+PLATFORM_LDFLAGS = @PLATFORM_LDFLAGS@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TDB_U32_TYPE = @TDB_U32_TYPE@
+THUNAR_VERINFO = @THUNAR_VERINFO@
+THUNAR_VERSION_API = @THUNAR_VERSION_API@
+THUNAR_VERSION_MAJOR = @THUNAR_VERSION_MAJOR@
+THUNAR_VERSION_MICRO = @THUNAR_VERSION_MICRO@
+THUNAR_VERSION_MINOR = @THUNAR_VERSION_MINOR@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_ARGS = @XGETTEXT_ARGS@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+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@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+INCLUDES = \
+ -I$(top_srcdir) \
+ -DG_LOG_DOMAIN=\"thunarx\" \
+ -DTHUNARX_COMPILATION \
+ $(PLATFORM_CPPFLAGS)
+
+libthunarx_built_sources = \
+ thunarx-alias.h \
+ thunarx-aliasdef.c
+
+libthunarx_headers = \
+ thunarx.h \
+ thunarx-config.h \
+ thunarx-file-info.h \
+ thunarx-menu-provider.h \
+ thunarx-property-page.h \
+ thunarx-property-page-provider.h
+
+libthunarx_includedir = \
+ $(includedir)/thunarx-$(THUNAR_VERSION_API)/thunarx
+
+libthunarx_include_HEADERS = \
+ $(libthunarx_headers)
+
+lib_LTLIBRARIES = \
+ libthunarx-1.la
+
+libthunarx_1_la_SOURCES = \
+ $(libthunarx_built_sources) \
+ $(libthunarx_headers) \
+ thunarx-config.c \
+ thunarx-file-info.c \
+ thunarx-menu-provider.c \
+ thunarx-property-page.c \
+ thunarx-property-page-provider.c
+
+libthunarx_1_la_CFLAGS = \
+ $(GTK_CFLAGS) \
+ $(PLATFORM_CFLAGS)
+
+libthunarx_1_la_LDFLAGS = \
+ -export-dynamic \
+ -export-symbols-regex "^[^_].*" \
+ -version-info $(THUNAR_VERINFO) \
+ $(PLATFORM_LDFLAGS)
+
+libthunarx_1_la_LIBADD = \
+ $(GTK_LIBS)
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = thunarx-1.pc
+EXTRA_DIST = \
+ abicheck.sh \
+ make-thunarx-alias.pl \
+ thunarx.symbols \
+ thunarx-alias.h \
+ thunarx-aliasdef.c
+
+ at MAINTAINER_MODE_TRUE@CLEANFILES = \
+ at MAINTAINER_MODE_TRUE@ actual-abi \
+ at MAINTAINER_MODE_TRUE@ expected-abi
+
+ at MAINTAINER_MODE_TRUE@DISTCLEANFILES = \
+ at MAINTAINER_MODE_TRUE@ $(libthunarx_built_sources)
+
+ at MAINTAINER_MODE_TRUE@BUILT_SOURCES = \
+ at MAINTAINER_MODE_TRUE@ $(libthunarx_built_sources)
+
+ at HAVE_GNUC_VISIBILITY_TRUE@@MAINTAINER_MODE_TRUE at TESTS = \
+ at HAVE_GNUC_VISIBILITY_TRUE@@MAINTAINER_MODE_TRUE@ abicheck.sh
+
+all: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) 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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu thunarx/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu thunarx/Makefile
+.PRECIOUS: 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
+thunarx-1.pc: $(top_builddir)/config.status $(srcdir)/thunarx-1.pc.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+thunarx-config.h: $(top_builddir)/config.status $(srcdir)/thunarx-config.h.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
+ $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-libLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
+ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
+ done
+
+clean-libLTLIBRARIES:
+ -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libthunarx-1.la: $(libthunarx_1_la_OBJECTS) $(libthunarx_1_la_DEPENDENCIES)
+ $(LINK) -rpath $(libdir) $(libthunarx_1_la_LDFLAGS) $(libthunarx_1_la_OBJECTS) $(libthunarx_1_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunarx_1_la-thunarx-aliasdef.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunarx_1_la-thunarx-config.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunarx_1_la-thunarx-file-info.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunarx_1_la-thunarx-menu-provider.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunarx_1_la-thunarx-property-page-provider.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libthunarx_1_la-thunarx-property-page.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libthunarx_1_la-thunarx-aliasdef.lo: thunarx-aliasdef.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunarx_1_la_CFLAGS) $(CFLAGS) -MT libthunarx_1_la-thunarx-aliasdef.lo -MD -MP -MF "$(DEPDIR)/libthunarx_1_la-thunarx-aliasdef.Tpo" -c -o libthunarx_1_la-thunarx-aliasdef.lo `test -f 'thunarx-aliasdef.c' || echo '$(srcdir)/'`thunarx-aliasdef.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunarx_1_la-thunarx-aliasdef.Tpo" "$(DEPDIR)/libthunarx_1_la-thunarx-aliasdef.Plo"; else rm -f "$(DEPDIR)/libthunarx_1_la-thunarx-aliasdef.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunarx-aliasdef.c' object='libthunarx_1_la-thunarx-aliasdef.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunarx_1_la_CFLAGS) $(CFLAGS) -c -o libthunarx_1_la-thunarx-aliasdef.lo `test -f 'thunarx-aliasdef.c' || echo '$(srcdir)/'`thunarx-aliasdef.c
+
+libthunarx_1_la-thunarx-config.lo: thunarx-config.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunarx_1_la_CFLAGS) $(CFLAGS) -MT libthunarx_1_la-thunarx-config.lo -MD -MP -MF "$(DEPDIR)/libthunarx_1_la-thunarx-config.Tpo" -c -o libthunarx_1_la-thunarx-config.lo `test -f 'thunarx-config.c' || echo '$(srcdir)/'`thunarx-config.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunarx_1_la-thunarx-config.Tpo" "$(DEPDIR)/libthunarx_1_la-thunarx-config.Plo"; else rm -f "$(DEPDIR)/libthunarx_1_la-thunarx-config.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunarx-config.c' object='libthunarx_1_la-thunarx-config.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunarx_1_la_CFLAGS) $(CFLAGS) -c -o libthunarx_1_la-thunarx-config.lo `test -f 'thunarx-config.c' || echo '$(srcdir)/'`thunarx-config.c
+
+libthunarx_1_la-thunarx-file-info.lo: thunarx-file-info.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunarx_1_la_CFLAGS) $(CFLAGS) -MT libthunarx_1_la-thunarx-file-info.lo -MD -MP -MF "$(DEPDIR)/libthunarx_1_la-thunarx-file-info.Tpo" -c -o libthunarx_1_la-thunarx-file-info.lo `test -f 'thunarx-file-info.c' || echo '$(srcdir)/'`thunarx-file-info.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunarx_1_la-thunarx-file-info.Tpo" "$(DEPDIR)/libthunarx_1_la-thunarx-file-info.Plo"; else rm -f "$(DEPDIR)/libthunarx_1_la-thunarx-file-info.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunarx-file-info.c' object='libthunarx_1_la-thunarx-file-info.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunarx_1_la_CFLAGS) $(CFLAGS) -c -o libthunarx_1_la-thunarx-file-info.lo `test -f 'thunarx-file-info.c' || echo '$(srcdir)/'`thunarx-file-info.c
+
+libthunarx_1_la-thunarx-menu-provider.lo: thunarx-menu-provider.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunarx_1_la_CFLAGS) $(CFLAGS) -MT libthunarx_1_la-thunarx-menu-provider.lo -MD -MP -MF "$(DEPDIR)/libthunarx_1_la-thunarx-menu-provider.Tpo" -c -o libthunarx_1_la-thunarx-menu-provider.lo `test -f 'thunarx-menu-provider.c' || echo '$(srcdir)/'`thunarx-menu-provider.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunarx_1_la-thunarx-menu-provider.Tpo" "$(DEPDIR)/libthunarx_1_la-thunarx-menu-provider.Plo"; else rm -f "$(DEPDIR)/libthunarx_1_la-thunarx-menu-provider.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunarx-menu-provider.c' object='libthunarx_1_la-thunarx-menu-provider.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunarx_1_la_CFLAGS) $(CFLAGS) -c -o libthunarx_1_la-thunarx-menu-provider.lo `test -f 'thunarx-menu-provider.c' || echo '$(srcdir)/'`thunarx-menu-provider.c
+
+libthunarx_1_la-thunarx-property-page.lo: thunarx-property-page.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunarx_1_la_CFLAGS) $(CFLAGS) -MT libthunarx_1_la-thunarx-property-page.lo -MD -MP -MF "$(DEPDIR)/libthunarx_1_la-thunarx-property-page.Tpo" -c -o libthunarx_1_la-thunarx-property-page.lo `test -f 'thunarx-property-page.c' || echo '$(srcdir)/'`thunarx-property-page.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunarx_1_la-thunarx-property-page.Tpo" "$(DEPDIR)/libthunarx_1_la-thunarx-property-page.Plo"; else rm -f "$(DEPDIR)/libthunarx_1_la-thunarx-property-page.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunarx-property-page.c' object='libthunarx_1_la-thunarx-property-page.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunarx_1_la_CFLAGS) $(CFLAGS) -c -o libthunarx_1_la-thunarx-property-page.lo `test -f 'thunarx-property-page.c' || echo '$(srcdir)/'`thunarx-property-page.c
+
+libthunarx_1_la-thunarx-property-page-provider.lo: thunarx-property-page-provider.c
+ at am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunarx_1_la_CFLAGS) $(CFLAGS) -MT libthunarx_1_la-thunarx-property-page-provider.lo -MD -MP -MF "$(DEPDIR)/libthunarx_1_la-thunarx-property-page-provider.Tpo" -c -o libthunarx_1_la-thunarx-property-page-provider.lo `test -f 'thunarx-property-page-provider.c' || echo '$(srcdir)/'`thunarx-property-page-provider.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libthunarx_1_la-thunarx-property-page-provider.Tpo" "$(DEPDIR)/libthunarx_1_la-thunarx-property-page-provider.Plo"; else rm -f "$(DEPDIR)/libthunarx_1_la-thunarx-property-page-provider.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='thunarx-property-page-provider.c' object='libthunarx_1_la-thunarx-property-page-provider.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libthunarx_1_la_CFLAGS) $(CFLAGS) -c -o libthunarx_1_la-thunarx-property-page-provider.lo `test -f 'thunarx-property-page-provider.c' || echo '$(srcdir)/'`thunarx-property-page-provider.c
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+install-pkgconfigDATA: $(pkgconfig_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkgconfigdir)" || $(mkdir_p) "$(DESTDIR)$(pkgconfigdir)"
+ @list='$(pkgconfig_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(pkgconfigDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
+ $(pkgconfigDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgconfigdir)/$$f"; \
+ done
+
+uninstall-pkgconfigDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkgconfig_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(pkgconfigdir)/$$f"; \
+ done
+install-libthunarx_includeHEADERS: $(libthunarx_include_HEADERS)
+ @$(NORMAL_INSTALL)
+ test -z "$(libthunarx_includedir)" || $(mkdir_p) "$(DESTDIR)$(libthunarx_includedir)"
+ @list='$(libthunarx_include_HEADERS)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(libthunarx_includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(libthunarx_includedir)/$$f'"; \
+ $(libthunarx_includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(libthunarx_includedir)/$$f"; \
+ done
+
+uninstall-libthunarx_includeHEADERS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(libthunarx_include_HEADERS)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(libthunarx_includedir)/$$f'"; \
+ rm -f "$(DESTDIR)$(libthunarx_includedir)/$$f"; \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list='$(TESTS)'; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *" $$tst "*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *" $$tst "*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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-TESTS
+check: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS)
+installdirs:
+ for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(libthunarx_includedir)"; 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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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)
+clean: clean-am
+
+clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-libthunarx_includeHEADERS \
+ install-pkgconfigDATA
+
+install-exec-am: install-libLTLIBRARIES
+
+install-info: install-info-am
+
+install-man:
+
+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-info-am uninstall-libLTLIBRARIES \
+ uninstall-libthunarx_includeHEADERS uninstall-pkgconfigDATA
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-generic clean-libLTLIBRARIES clean-libtool ctags \
+ 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-exec install-exec-am install-info \
+ install-info-am install-libLTLIBRARIES \
+ install-libthunarx_includeHEADERS install-man \
+ install-pkgconfigDATA install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am uninstall-info-am \
+ uninstall-libLTLIBRARIES uninstall-libthunarx_includeHEADERS \
+ uninstall-pkgconfigDATA
+
+
+ at MAINTAINER_MODE_TRUE@thunarx-alias.h: make-thunarx-alias.pl thunarx.symbols
+ at MAINTAINER_MODE_TRUE@ $(PERL) $(srcdir)/make-thunarx-alias.pl < $(srcdir)/thunarx.symbols > thunarx-alias.h
+
+ at MAINTAINER_MODE_TRUE@thunarx-aliasdef.c: make-thunarx-alias.pl thunarx.symbols
+ at MAINTAINER_MODE_TRUE@ $(PERL) $(srcdir)/make-thunarx-alias.pl -def < $(srcdir)/thunarx.symbols > thunarx-aliasdef.c
+
+# required for gtk-doc
+dist-hook: all
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
+# 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:
Added: desktop/trunk/thunar/branches/upstream/current/thunarx/abicheck.sh
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunarx/abicheck.sh 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunarx/abicheck.sh 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,24 @@
+#!/bin/sh
+#
+# Copyright (c) 2004 The GLib Development Team.
+# Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public
+# License along with this library; if not, write to the
+# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+#
+
+cpp -P -DALL_FILES ${srcdir:-.}/thunarx.symbols | sed -e '/^$/d' -e 's/ G_GNUC.*$//' -e 's/ PRIVATE//' | sort > expected-abi
+nm -D .libs/libthunarx-1.so | grep " T\|R " | cut -d ' ' -f 3 | grep -v '^_.*' | sort > actual-abi
+diff -u expected-abi actual-abi && rm expected-abi actual-abi
Property changes on: desktop/trunk/thunar/branches/upstream/current/thunarx/abicheck.sh
___________________________________________________________________
Name: svn:executable
+
Added: desktop/trunk/thunar/branches/upstream/current/thunarx/make-thunarx-alias.pl
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunarx/make-thunarx-alias.pl 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunarx/make-thunarx-alias.pl 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,155 @@
+#!/usr/bin/env perl -w
+#
+# Copyright (c) 2004 The GLib Development Team.
+# Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public
+# License along with this library; if not, write to the
+# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+#
+
+my $option_def = 0;
+
+if (($#ARGV >= 0) && ($ARGV[0] eq "-def"))
+ {
+ shift;
+ $option_def = 1;
+ }
+
+print <<EOF;
+/* Generated by make-thunarx-alias.pl. Do not edit this file. */
+
+#ifdef HAVE_GNUC_VISIBILITY
+
+#include <glib.h>
+
+EOF
+
+if ($option_def)
+ {
+ print <<EOF
+#undef IN_HEADER
+#define IN_HEADER(x) 1
+
+#undef IN_SOURCE
+#define IN_SOURCE defined
+
+EOF
+ }
+else
+ {
+ print <<EOF
+#define IN_HEADER defined
+#define IN_SOURCE(x) 1
+
+EOF
+ }
+
+my $in_comment = 0;
+my $in_skipped_section = 0;
+
+while (<>)
+ {
+ # ignore empty lines
+ next if /^\s*$/;
+
+ # skip comments
+ if ($_ =~ /^\s*\/\*/)
+ {
+ $in_comment = 1;
+ }
+
+ if ($in_comment)
+ {
+ if ($_ =~ /\*\/\s$/)
+ {
+ $in_comment = 0;
+ }
+ next;
+ }
+
+ # handle ifdefs
+ if ($_ =~ /^\#endif/)
+ {
+ if (!$in_skipped_section)
+ {
+ print $_;
+ }
+
+ $in_skipped_section = 0;
+ next;
+ }
+
+ if ($_ =~ /^\#ifdef\s+(INCLUDE_VARIABLES|INCLUDE_INTERNAL_SYMBOLS|ALL_FILES)/)
+ {
+ $in_skipped_section = 1;
+ }
+
+ if ($in_skipped_section)
+ {
+ next;
+ }
+
+ if ($_ =~ /^\#ifn?def\s+G/)
+ {
+ print $_;
+ next;
+ }
+
+ if ($_ =~ /^\#if.*(IN_SOURCE|IN_HEADER)/)
+ {
+ print $_;
+ next;
+ }
+
+ chop;
+ my $line = $_;
+ my @words;
+ my $attributes = "";
+
+ @words = split (/ /, $line);
+ my $symbol = shift (@words);
+ chomp ($symbol);
+ my $alias = "IA__".$symbol;
+
+ # Drop any Win32 specific .def file syntax, but keep attributes
+ foreach $word (@words)
+ {
+ $attributes = "$attributes $word" unless $word eq "PRIVATE";
+ }
+
+ if (!$option_def)
+ {
+ print <<EOF
+extern __typeof ($symbol) $alias __attribute((visibility("hidden")))$attributes;
+\#define $symbol $alias
+
+EOF
+ }
+ else
+ {
+ print <<EOF
+\#undef $symbol
+extern __typeof ($symbol) $symbol __attribute((alias("$alias"), visibility("default")));
+
+EOF
+ }
+ }
+
+print <<EOF;
+
+#endif /* HAVE_GNUC_VISIBILITY */
+EOF
+
+
Property changes on: desktop/trunk/thunar/branches/upstream/current/thunarx/make-thunarx-alias.pl
___________________________________________________________________
Name: svn:executable
+
Added: desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-1.pc.in
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-1.pc.in 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-1.pc.in 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,13 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+extensionsdir=${libdir}/thunarx- at THUNAR_VERSION_API@
+
+Name: thunarx
+Description: A library to create Thunar extensions
+Requires: gtk+-2.0
+Version: @PACKAGE_VERSION@
+Libs: -L${libdir} -lthunarx- at THUNAR_VERSION_API@
+Cflags: -I${includedir}/thunarx- at THUNAR_VERSION_API@
Added: desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-alias.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-alias.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-alias.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,109 @@
+/* Generated by make-thunarx-alias.pl. Do not edit this file. */
+
+#ifdef HAVE_GNUC_VISIBILITY
+
+#include <glib.h>
+
+#define IN_HEADER defined
+#define IN_SOURCE(x) 1
+
+#if IN_HEADER(__THUNARX_CONFIG_H__)
+#if IN_SOURCE(__THUNARX_CONFIG_C__)
+extern __typeof (thunarx_major_version) IA__thunarx_major_version __attribute((visibility("hidden")));
+#define thunarx_major_version IA__thunarx_major_version
+
+extern __typeof (thunarx_minor_version) IA__thunarx_minor_version __attribute((visibility("hidden")));
+#define thunarx_minor_version IA__thunarx_minor_version
+
+extern __typeof (thunarx_micro_version) IA__thunarx_micro_version __attribute((visibility("hidden")));
+#define thunarx_micro_version IA__thunarx_micro_version
+
+extern __typeof (thunarx_check_version) IA__thunarx_check_version __attribute((visibility("hidden")));
+#define thunarx_check_version IA__thunarx_check_version
+
+#endif
+#endif
+#if IN_HEADER(__THUNARX_FILE_INFO_H__)
+#if IN_SOURCE(__THUNARX_FILE_INFO_C__)
+extern __typeof (thunarx_file_info_get_type) IA__thunarx_file_info_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define thunarx_file_info_get_type IA__thunarx_file_info_get_type
+
+extern __typeof (thunarx_file_info_get_name) IA__thunarx_file_info_get_name __attribute((visibility("hidden")));
+#define thunarx_file_info_get_name IA__thunarx_file_info_get_name
+
+extern __typeof (thunarx_file_info_get_uri) IA__thunarx_file_info_get_uri __attribute((visibility("hidden")));
+#define thunarx_file_info_get_uri IA__thunarx_file_info_get_uri
+
+extern __typeof (thunarx_file_info_get_parent_uri) IA__thunarx_file_info_get_parent_uri __attribute((visibility("hidden")));
+#define thunarx_file_info_get_parent_uri IA__thunarx_file_info_get_parent_uri
+
+extern __typeof (thunarx_file_info_get_uri_scheme) IA__thunarx_file_info_get_uri_scheme __attribute((visibility("hidden")));
+#define thunarx_file_info_get_uri_scheme IA__thunarx_file_info_get_uri_scheme
+
+extern __typeof (thunarx_file_info_get_mime_type) IA__thunarx_file_info_get_mime_type __attribute((visibility("hidden")));
+#define thunarx_file_info_get_mime_type IA__thunarx_file_info_get_mime_type
+
+extern __typeof (thunarx_file_info_has_mime_type) IA__thunarx_file_info_has_mime_type __attribute((visibility("hidden")));
+#define thunarx_file_info_has_mime_type IA__thunarx_file_info_has_mime_type
+
+extern __typeof (thunarx_file_info_is_directory) IA__thunarx_file_info_is_directory __attribute((visibility("hidden")));
+#define thunarx_file_info_is_directory IA__thunarx_file_info_is_directory
+
+extern __typeof (thunarx_file_info_list_copy) IA__thunarx_file_info_list_copy __attribute((visibility("hidden")));
+#define thunarx_file_info_list_copy IA__thunarx_file_info_list_copy
+
+extern __typeof (thunarx_file_info_list_free) IA__thunarx_file_info_list_free __attribute((visibility("hidden")));
+#define thunarx_file_info_list_free IA__thunarx_file_info_list_free
+
+#endif
+#endif
+#if IN_HEADER(__THUNARX_MENU_PROVIDER_H__)
+#if IN_SOURCE(__THUNARX_MENU_PROVIDER_C__)
+extern __typeof (thunarx_menu_provider_get_type) IA__thunarx_menu_provider_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define thunarx_menu_provider_get_type IA__thunarx_menu_provider_get_type
+
+extern __typeof (thunarx_menu_provider_get_file_actions) IA__thunarx_menu_provider_get_file_actions __attribute((visibility("hidden")));
+#define thunarx_menu_provider_get_file_actions IA__thunarx_menu_provider_get_file_actions
+
+extern __typeof (thunarx_menu_provider_get_folder_actions) IA__thunarx_menu_provider_get_folder_actions __attribute((visibility("hidden")));
+#define thunarx_menu_provider_get_folder_actions IA__thunarx_menu_provider_get_folder_actions
+
+#endif
+#endif
+#if IN_HEADER(__THUNARX_PROPERTY_PAGE_H__)
+#if IN_SOURCE(__THUNARX_PROPERTY_PAGE_C__)
+extern __typeof (thunarx_property_page_get_type) IA__thunarx_property_page_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define thunarx_property_page_get_type IA__thunarx_property_page_get_type
+
+extern __typeof (thunarx_property_page_new) IA__thunarx_property_page_new __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define thunarx_property_page_new IA__thunarx_property_page_new
+
+extern __typeof (thunarx_property_page_new_with_label_widget) IA__thunarx_property_page_new_with_label_widget __attribute((visibility("hidden"))) G_GNUC_MALLOC;
+#define thunarx_property_page_new_with_label_widget IA__thunarx_property_page_new_with_label_widget
+
+extern __typeof (thunarx_property_page_get_label) IA__thunarx_property_page_get_label __attribute((visibility("hidden")));
+#define thunarx_property_page_get_label IA__thunarx_property_page_get_label
+
+extern __typeof (thunarx_property_page_set_label) IA__thunarx_property_page_set_label __attribute((visibility("hidden")));
+#define thunarx_property_page_set_label IA__thunarx_property_page_set_label
+
+extern __typeof (thunarx_property_page_get_label_widget) IA__thunarx_property_page_get_label_widget __attribute((visibility("hidden")));
+#define thunarx_property_page_get_label_widget IA__thunarx_property_page_get_label_widget
+
+extern __typeof (thunarx_property_page_set_label_widget) IA__thunarx_property_page_set_label_widget __attribute((visibility("hidden")));
+#define thunarx_property_page_set_label_widget IA__thunarx_property_page_set_label_widget
+
+#endif
+#endif
+#if IN_HEADER(__THUNARX_PROPERTY_PAGE_PROVIDER_H__)
+#if IN_SOURCE(__THUNARX_PROPERTY_PAGE_PROVIDER_C__)
+extern __typeof (thunarx_property_page_provider_get_type) IA__thunarx_property_page_provider_get_type __attribute((visibility("hidden"))) G_GNUC_CONST;
+#define thunarx_property_page_provider_get_type IA__thunarx_property_page_provider_get_type
+
+extern __typeof (thunarx_property_page_provider_get_pages) IA__thunarx_property_page_provider_get_pages __attribute((visibility("hidden")));
+#define thunarx_property_page_provider_get_pages IA__thunarx_property_page_provider_get_pages
+
+#endif
+#endif
+
+#endif /* HAVE_GNUC_VISIBILITY */
Added: desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-aliasdef.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-aliasdef.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-aliasdef.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,112 @@
+/* Generated by make-thunarx-alias.pl. Do not edit this file. */
+
+#ifdef HAVE_GNUC_VISIBILITY
+
+#include <glib.h>
+
+#undef IN_HEADER
+#define IN_HEADER(x) 1
+
+#undef IN_SOURCE
+#define IN_SOURCE defined
+
+#if IN_HEADER(__THUNARX_CONFIG_H__)
+#if IN_SOURCE(__THUNARX_CONFIG_C__)
+#undef thunarx_major_version
+extern __typeof (thunarx_major_version) thunarx_major_version __attribute((alias("IA__thunarx_major_version"), visibility("default")));
+
+#undef thunarx_minor_version
+extern __typeof (thunarx_minor_version) thunarx_minor_version __attribute((alias("IA__thunarx_minor_version"), visibility("default")));
+
+#undef thunarx_micro_version
+extern __typeof (thunarx_micro_version) thunarx_micro_version __attribute((alias("IA__thunarx_micro_version"), visibility("default")));
+
+#undef thunarx_check_version
+extern __typeof (thunarx_check_version) thunarx_check_version __attribute((alias("IA__thunarx_check_version"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__THUNARX_FILE_INFO_H__)
+#if IN_SOURCE(__THUNARX_FILE_INFO_C__)
+#undef thunarx_file_info_get_type
+extern __typeof (thunarx_file_info_get_type) thunarx_file_info_get_type __attribute((alias("IA__thunarx_file_info_get_type"), visibility("default")));
+
+#undef thunarx_file_info_get_name
+extern __typeof (thunarx_file_info_get_name) thunarx_file_info_get_name __attribute((alias("IA__thunarx_file_info_get_name"), visibility("default")));
+
+#undef thunarx_file_info_get_uri
+extern __typeof (thunarx_file_info_get_uri) thunarx_file_info_get_uri __attribute((alias("IA__thunarx_file_info_get_uri"), visibility("default")));
+
+#undef thunarx_file_info_get_parent_uri
+extern __typeof (thunarx_file_info_get_parent_uri) thunarx_file_info_get_parent_uri __attribute((alias("IA__thunarx_file_info_get_parent_uri"), visibility("default")));
+
+#undef thunarx_file_info_get_uri_scheme
+extern __typeof (thunarx_file_info_get_uri_scheme) thunarx_file_info_get_uri_scheme __attribute((alias("IA__thunarx_file_info_get_uri_scheme"), visibility("default")));
+
+#undef thunarx_file_info_get_mime_type
+extern __typeof (thunarx_file_info_get_mime_type) thunarx_file_info_get_mime_type __attribute((alias("IA__thunarx_file_info_get_mime_type"), visibility("default")));
+
+#undef thunarx_file_info_has_mime_type
+extern __typeof (thunarx_file_info_has_mime_type) thunarx_file_info_has_mime_type __attribute((alias("IA__thunarx_file_info_has_mime_type"), visibility("default")));
+
+#undef thunarx_file_info_is_directory
+extern __typeof (thunarx_file_info_is_directory) thunarx_file_info_is_directory __attribute((alias("IA__thunarx_file_info_is_directory"), visibility("default")));
+
+#undef thunarx_file_info_list_copy
+extern __typeof (thunarx_file_info_list_copy) thunarx_file_info_list_copy __attribute((alias("IA__thunarx_file_info_list_copy"), visibility("default")));
+
+#undef thunarx_file_info_list_free
+extern __typeof (thunarx_file_info_list_free) thunarx_file_info_list_free __attribute((alias("IA__thunarx_file_info_list_free"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__THUNARX_MENU_PROVIDER_H__)
+#if IN_SOURCE(__THUNARX_MENU_PROVIDER_C__)
+#undef thunarx_menu_provider_get_type
+extern __typeof (thunarx_menu_provider_get_type) thunarx_menu_provider_get_type __attribute((alias("IA__thunarx_menu_provider_get_type"), visibility("default")));
+
+#undef thunarx_menu_provider_get_file_actions
+extern __typeof (thunarx_menu_provider_get_file_actions) thunarx_menu_provider_get_file_actions __attribute((alias("IA__thunarx_menu_provider_get_file_actions"), visibility("default")));
+
+#undef thunarx_menu_provider_get_folder_actions
+extern __typeof (thunarx_menu_provider_get_folder_actions) thunarx_menu_provider_get_folder_actions __attribute((alias("IA__thunarx_menu_provider_get_folder_actions"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__THUNARX_PROPERTY_PAGE_H__)
+#if IN_SOURCE(__THUNARX_PROPERTY_PAGE_C__)
+#undef thunarx_property_page_get_type
+extern __typeof (thunarx_property_page_get_type) thunarx_property_page_get_type __attribute((alias("IA__thunarx_property_page_get_type"), visibility("default")));
+
+#undef thunarx_property_page_new
+extern __typeof (thunarx_property_page_new) thunarx_property_page_new __attribute((alias("IA__thunarx_property_page_new"), visibility("default")));
+
+#undef thunarx_property_page_new_with_label_widget
+extern __typeof (thunarx_property_page_new_with_label_widget) thunarx_property_page_new_with_label_widget __attribute((alias("IA__thunarx_property_page_new_with_label_widget"), visibility("default")));
+
+#undef thunarx_property_page_get_label
+extern __typeof (thunarx_property_page_get_label) thunarx_property_page_get_label __attribute((alias("IA__thunarx_property_page_get_label"), visibility("default")));
+
+#undef thunarx_property_page_set_label
+extern __typeof (thunarx_property_page_set_label) thunarx_property_page_set_label __attribute((alias("IA__thunarx_property_page_set_label"), visibility("default")));
+
+#undef thunarx_property_page_get_label_widget
+extern __typeof (thunarx_property_page_get_label_widget) thunarx_property_page_get_label_widget __attribute((alias("IA__thunarx_property_page_get_label_widget"), visibility("default")));
+
+#undef thunarx_property_page_set_label_widget
+extern __typeof (thunarx_property_page_set_label_widget) thunarx_property_page_set_label_widget __attribute((alias("IA__thunarx_property_page_set_label_widget"), visibility("default")));
+
+#endif
+#endif
+#if IN_HEADER(__THUNARX_PROPERTY_PAGE_PROVIDER_H__)
+#if IN_SOURCE(__THUNARX_PROPERTY_PAGE_PROVIDER_C__)
+#undef thunarx_property_page_provider_get_type
+extern __typeof (thunarx_property_page_provider_get_type) thunarx_property_page_provider_get_type __attribute((alias("IA__thunarx_property_page_provider_get_type"), visibility("default")));
+
+#undef thunarx_property_page_provider_get_pages
+extern __typeof (thunarx_property_page_provider_get_pages) thunarx_property_page_provider_get_pages __attribute((alias("IA__thunarx_property_page_provider_get_pages"), visibility("default")));
+
+#endif
+#endif
+
+#endif /* HAVE_GNUC_VISIBILITY */
Added: desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-config.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-config.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-config.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,131 @@
+/* $Id: thunarx-config.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <thunarx/thunarx-config.h>
+#include <thunarx/thunarx-alias.h>
+
+
+
+/**
+ * thunarx_major_version:
+ *
+ * The major version number of the
+ * <systemitem class="library">thunarx</systemitem> library (e.g. in
+ * version 0.5.1 this is 0).
+ *
+ * This variable is in the library, so represents the
+ * <systemitem class="library">thunarx</systemitem> library you have
+ * linked against. Contrast with the #THUNARX_MAJOR_VERSION macro, which
+ * represents the major version of the
+ * <systemitem class="library">thunarx</systemitem> headers you have
+ * included.
+ **/
+const guint thunarx_major_version = THUNARX_MAJOR_VERSION;
+
+
+
+/**
+ * thunarx_minor_version:
+ *
+ * The minor version number of the
+ * <systemitem class="library">thunarx</systemitem> library (e.g. in
+ * version 0.5.1 this is 5).
+ *
+ * This variable is in the library, so represents the
+ * <systemitem class="library">thunarx</systemitem> library you have
+ * linked against. Contrast with the #THUNARX_MINOR_VERSION macro, which
+ * represents the minor version of the
+ * <systemitem class="library">thunarx</systemitem> headers you have
+ * included.
+ **/
+const guint thunarx_minor_version = THUNARX_MINOR_VERSION;
+
+
+
+/**
+ * thunarx_micro_version:
+ *
+ * The micro version number of the
+ * <systemitem class="library">thunarx</systemitem> library (e.g. in
+ * version 0.5.1 this is 1).
+ *
+ * This variable is in the library, so represents the
+ * <systemitem class="library">thunarx</systemitem> library you have
+ * linked against. Contrast with the #THUNARX_MICRO_VERSION macro, which
+ * represents the micro version of the
+ * <systemitem class="library">thunarx</systemitem> headers you have
+ * included.
+ **/
+const guint thunarx_micro_version = THUNARX_MICRO_VERSION;
+
+
+
+/**
+ * thunarx_check_version:
+ * @required_major : the required major version.
+ * @required_minor : the required minor version.
+ * @required_micro : the required micro version.
+ *
+ * Checks that the <systemitem class="library">thunarx</systemitem> library
+ * in use is compatible with the given version. Generally you would pass in
+ * the constants #THUNARX_MAJOR_VERSION, #THUNARX_MINOR_VERSION and
+ * #THUNARX_VERSION_MICRO as the three arguments to this function; that produces
+ * a check that the library in use is compatible with the version of
+ * <systemitem class="library">thunarx</systemitem> the extension was
+ * compiled against.
+ *
+ * This function should be called by extensions in the
+ * thunar_extension_initialize() method to verify that the <systemitem
+ * class="library">thunarx</systemitem> library used by file manager is
+ * compatible with the version the extension was compiled with.
+ *
+ * <example>
+ * <title>Checking the runtime version of the Thunar Extension library</title>
+ * <programlisting>
+ * const gchar *mismatch;
+ * mismatch = thunarx_check_version (THUNARX_VERSION_MAJOR,
+ * THUNARX_VERSION_MINOR,
+ * THUNARX_VERSION_MICRO);
+ * if (G_UNLIKELY (mismatch != NULL))
+ * g_error ("Version mismatch: %<!---->s", mismatch);
+ * </programlisting>
+ * </example>
+ *
+ * Return value: %NULL if the library is compatible with the given version,
+ * or a string describing the version mismatch. The returned
+ * string is owned by the library and must not be freed or
+ * modified by the caller.
+ **/
+const gchar*
+thunarx_check_version (guint required_major,
+ guint required_minor,
+ guint required_micro)
+{
+ return NULL;
+}
+
+
+
+#define __THUNARX_CONFIG_C__
+#include <thunarx/thunarx-aliasdef.c>
Added: desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-config.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-config.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-config.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,54 @@
+/* $Id: thunarx-config.h.in 17553 2005-09-11 00:07:08Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#if !defined(THUNARX_INSIDE_THUNARX_H) && !defined(THUNARX_COMPILATION)
+#error "Only <thunarx/thunarx.h> can be included directly, this file may disappear or change contents"
+#endif
+
+#ifndef __THUNARX_CONFIG_H__
+#define __THUNARX_CONFIG_H__
+
+#include <glib.h>
+
+G_BEGIN_DECLS;
+
+#define THUNARX_MAJOR_VERSION 0
+#define THUNARX_MINOR_VERSION 1
+#define THUNARX_MICRO_VERSION 4
+
+#define THUNARX_CHECK_VERSION(major,minor,micro) \
+ (THUNARX_MAJOR_VERSION > (major) \
+ || (THUNARX_MAJOR_VERSION == (major) \
+ && THUNARX_MINOR_VERSION > (minor)) \
+ || (THUNARX_MAJOR_VERSION == (major) \
+ && THUNARX_MINOR_VERSION == (minor) \
+ && THUNARX_MICRO_VERSION >= (micro)))
+
+extern const guint thunarx_major_version;
+extern const guint thunarx_minor_version;
+extern const guint thunarx_micro_version;
+
+const gchar *thunarx_check_version (guint required_major,
+ guint required_minor,
+ guint required_micro);
+
+G_END_DECLS;
+
+#endif /* !__THUNARX_CONFIG_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-config.h.in
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-config.h.in 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-config.h.in 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,54 @@
+/* $Id: thunarx-config.h.in 17553 2005-09-11 00:07:08Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#if !defined(THUNARX_INSIDE_THUNARX_H) && !defined(THUNARX_COMPILATION)
+#error "Only <thunarx/thunarx.h> can be included directly, this file may disappear or change contents"
+#endif
+
+#ifndef __THUNARX_CONFIG_H__
+#define __THUNARX_CONFIG_H__
+
+#include <glib.h>
+
+G_BEGIN_DECLS;
+
+#define THUNARX_MAJOR_VERSION @THUNAR_VERSION_MAJOR@
+#define THUNARX_MINOR_VERSION @THUNAR_VERSION_MINOR@
+#define THUNARX_MICRO_VERSION @THUNAR_VERSION_MICRO@
+
+#define THUNARX_CHECK_VERSION(major,minor,micro) \
+ (THUNARX_MAJOR_VERSION > (major) \
+ || (THUNARX_MAJOR_VERSION == (major) \
+ && THUNARX_MINOR_VERSION > (minor)) \
+ || (THUNARX_MAJOR_VERSION == (major) \
+ && THUNARX_MINOR_VERSION == (minor) \
+ && THUNARX_MICRO_VERSION >= (micro)))
+
+extern const guint thunarx_major_version;
+extern const guint thunarx_minor_version;
+extern const guint thunarx_micro_version;
+
+const gchar *thunarx_check_version (guint required_major,
+ guint required_minor,
+ guint required_micro);
+
+G_END_DECLS;
+
+#endif /* !__THUNARX_CONFIG_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-file-info.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-file-info.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-file-info.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,277 @@
+/* $Id: thunarx-file-info.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <thunarx/thunarx-file-info.h>
+#include <thunarx/thunarx-alias.h>
+
+
+
+GType
+thunarx_file_info_get_type (void)
+{
+ static GType type = G_TYPE_INVALID;
+
+ if (G_UNLIKELY (type == G_TYPE_INVALID))
+ {
+ static const GTypeInfo info =
+ {
+ sizeof (ThunarxFileInfoIface),
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ 0,
+ 0,
+ NULL,
+ NULL,
+ };
+
+ type = g_type_register_static (G_TYPE_INTERFACE, "ThunarxFileInfo", &info, 0);
+
+ g_type_interface_add_prerequisite (type, G_TYPE_OBJECT);
+ }
+
+ return type;
+}
+
+
+
+/**
+ * thunarx_file_info_get_name:
+ * @file_info : a #ThunarxFileInfo.
+ *
+ * Returns the real name of the file represented
+ * by @file_info in the local file system encoding.
+ * You can use g_filename_display_name() or similar
+ * functions to generate an UTF-8 version of the
+ * name, which is suitable for use in the user
+ * interface.
+ *
+ * The caller is responsible to free the returned
+ * string using g_free() when no longer needed.
+ *
+ * Return value: the real name of the file represented
+ * by @file_info.
+ **/
+gchar*
+thunarx_file_info_get_name (ThunarxFileInfo *file_info)
+{
+ g_return_val_if_fail (THUNARX_IS_FILE_INFO (file_info), NULL);
+ return (*THUNARX_FILE_INFO_GET_IFACE (file_info)->get_name) (file_info);
+}
+
+
+
+/**
+ * thunarx_file_info_get_uri:
+ * @file_info : a #ThunarxFileInfo.
+ *
+ * Returns the escaped, fully qualified URI
+ * of the file object represented by @file_info.
+ * You may use g_filename_from_uri() and similar
+ * functions to work with the returned URI.
+ *
+ * The caller is responsible to free the returned
+ * string using g_free() when no longer needed.
+ *
+ * Return value: the fully qualified URI of @file_info.
+ **/
+gchar*
+thunarx_file_info_get_uri (ThunarxFileInfo *file_info)
+{
+ g_return_val_if_fail (THUNARX_IS_FILE_INFO (file_info), NULL);
+ return (*THUNARX_FILE_INFO_GET_IFACE (file_info)->get_uri) (file_info);
+}
+
+
+
+/**
+ * thunarx_file_info_get_parent_uri:
+ * @file_info : a #ThunarxFileInfo.
+ *
+ * Returns the URI to the parent file of
+ * @file_info or %NULL if @file_info has
+ * no parent. Note that the parent URI
+ * may be of a different type than the
+ * URI of @file_info. For example, the
+ * parent of "file:///" is "computer:///".
+ *
+ * The caller is responsible to free the
+ * returned string using g_free() when no
+ * longer needed.
+ *
+ * Return value: the parent URI for @file_info
+ * or %NULL.
+ **/
+gchar*
+thunarx_file_info_get_parent_uri (ThunarxFileInfo *file_info)
+{
+ g_return_val_if_fail (THUNARX_IS_FILE_INFO (file_info), NULL);
+ return (*THUNARX_FILE_INFO_GET_IFACE (file_info)->get_parent_uri) (file_info);
+}
+
+
+
+/**
+ * thunarx_file_info_get_uri_scheme:
+ * @file_info : a #ThunarxFileInfo.
+ *
+ * Returns the URI scheme of the file represented
+ * by @file_info. E.g. if @file_info refers to the
+ * file "file:///usr/home", the return value will
+ * be "file".
+ *
+ * The caller is responsible to free the returned
+ * string using g_free() when no longer needed.
+ *
+ * Return value: the URI scheme for @file_info.
+ **/
+gchar*
+thunarx_file_info_get_uri_scheme (ThunarxFileInfo *file_info)
+{
+ g_return_val_if_fail (THUNARX_IS_FILE_INFO (file_info), NULL);
+ return (*THUNARX_FILE_INFO_GET_IFACE (file_info)->get_uri_scheme) (file_info);
+}
+
+
+
+/**
+ * thunarx_file_info_get_mime_type:
+ * @file_info : a #ThunarxFileInfo.
+ *
+ * Returns the MIME-type of the file represented by
+ * @file_info or %NULL if no MIME-type is known for
+ * @file_info.
+ *
+ * The caller is responsible to free the returned
+ * string using g_free() when no longer needed.
+ *
+ * Return value: the MIME-type for @file_info or
+ * %NULL.
+ **/
+gchar*
+thunarx_file_info_get_mime_type (ThunarxFileInfo *file_info)
+{
+ g_return_val_if_fail (THUNARX_IS_FILE_INFO (file_info), NULL);
+ return (*THUNARX_FILE_INFO_GET_IFACE (file_info)->get_mime_type) (file_info);
+}
+
+
+
+/**
+ * thunarx_file_info_has_mime_type:
+ * @file_info : a #ThunarxFileInfo.
+ * @mime_type : a MIME-type (e.g. "text/plain").
+ *
+ * Checks whether @file_info is of the given @mime_type
+ * or whether the MIME-type of @file_info is a subclass
+ * of @mime_type.
+ *
+ * This is the preferred way for most extensions to check
+ * whether they support a given file or not, and you should
+ * consider using this method rather than
+ * thunarx_file_info_get_mime_type(). A simple example would
+ * be a menu extension that performs a certain action on
+ * text files. In this case you want to check whether a given
+ * #ThunarxFileInfo refers to any kind of text file, not only
+ * to "text/plain" (e.g. this also includes "text/xml" and
+ * "application/x-desktop").
+ *
+ * But you should be aware that this method may take some
+ * time to test whether @mime_type is valid for @file_info,
+ * so don't call it too often.
+ *
+ * Return value: %TRUE if @mime_type is valid for @file_info,
+ * else %FALSE.
+ **/
+gboolean
+thunarx_file_info_has_mime_type (ThunarxFileInfo *file_info,
+ const gchar *mime_type)
+{
+ g_return_val_if_fail (THUNARX_IS_FILE_INFO (file_info), FALSE);
+ g_return_val_if_fail (mime_type != NULL, FALSE);
+ return (*THUNARX_FILE_INFO_GET_IFACE (file_info)->has_mime_type) (file_info, mime_type);
+}
+
+
+
+/**
+ * thunarx_file_info_is_directory:
+ * @file_info : a #ThunarxFileInfo.
+ *
+ * Checks whether @file_info refers to a directory.
+ *
+ * Return value: %TRUE if @file_info is a directory.
+ **/
+gboolean
+thunarx_file_info_is_directory (ThunarxFileInfo *file_info)
+{
+ g_return_val_if_fail (THUNARX_IS_FILE_INFO (file_info), FALSE);
+ return (*THUNARX_FILE_INFO_GET_IFACE (file_info)->is_directory) (file_info);
+}
+
+
+
+/**
+ * thunarx_file_info_list_copy:
+ * @file_infos : a #GList of #ThunarxFileInfo<!---->s.
+ *
+ * Does a deep copy of @file_infos and returns the
+ * new list.
+ *
+ * Return value: a copy of @file_infos.
+ **/
+GList*
+thunarx_file_info_list_copy (GList *file_infos)
+{
+ GList *list;
+
+ list = g_list_copy (file_infos);
+ g_list_foreach (list, (GFunc) g_object_ref, NULL);
+
+ return list;
+}
+
+
+
+/**
+ * thunarx_file_info_list_free:
+ * @file_infos : a #GList of #ThunarxFileInfo<!---->s.
+ *
+ * Frees the resources allocated for the @file_infos
+ * list and decreases the reference count on the
+ * #ThunarxFileInfo<!---->s contained within.
+ **/
+void
+thunarx_file_info_list_free (GList *file_infos)
+{
+ g_list_foreach (file_infos, (GFunc) g_object_unref, NULL);
+ g_list_free (file_infos);
+}
+
+
+
+#define __THUNARX_FILE_INFO_C__
+#include <thunarx/thunarx-aliasdef.c>
Added: desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-file-info.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-file-info.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-file-info.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,86 @@
+/* $Id: thunarx-file-info.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#if !defined(THUNARX_INSIDE_THUNARX_H) && !defined(THUNARX_COMPILATION)
+#error "Only <thunarx/thunarx.h> can be included directly, this file may disappear or change contents"
+#endif
+
+#ifndef __THUNARX_FILE_INFO_H__
+#define __THUNARX_FILE_INFO_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarxFileInfoIface ThunarxFileInfoIface;
+typedef struct _ThunarxFileInfo ThunarxFileInfo;
+
+#define THUNARX_TYPE_FILE_INFO (thunarx_file_info_get_type ())
+#define THUNARX_FILE_INFO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNARX_TYPE_FILE_INFO, ThunarxFileInfo))
+#define THUNARX_IS_FILE_INFO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNARX_TYPE_FILE_INFO))
+#define THUNARX_FILE_INFO_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), THUNARX_TYPE_FILE_INFO, ThunarxFileInfoIface))
+
+struct _ThunarxFileInfoIface
+{
+ /*< private >*/
+ GTypeInterface __parent__;
+
+ /*< public >*/
+ gchar *(*get_name) (ThunarxFileInfo *file_info);
+
+ gchar *(*get_uri) (ThunarxFileInfo *file_info);
+ gchar *(*get_parent_uri) (ThunarxFileInfo *file_info);
+ gchar *(*get_uri_scheme) (ThunarxFileInfo *file_info);
+
+ gchar *(*get_mime_type) (ThunarxFileInfo *file_info);
+ gboolean (*has_mime_type) (ThunarxFileInfo *file_info,
+ const gchar *mime_type);
+
+ gboolean (*is_directory) (ThunarxFileInfo *file_info);
+
+ /*< private >*/
+ void (*reserved1) (void);
+ void (*reserved2) (void);
+ void (*reserved3) (void);
+ void (*reserved4) (void);
+ void (*reserved5) (void);
+ void (*reserved6) (void);
+ void (*reserved7) (void);
+};
+
+GType thunarx_file_info_get_type (void) G_GNUC_CONST;
+
+gchar *thunarx_file_info_get_name (ThunarxFileInfo *file_info);
+gchar *thunarx_file_info_get_uri (ThunarxFileInfo *file_info);
+gchar *thunarx_file_info_get_parent_uri (ThunarxFileInfo *file_info);
+gchar *thunarx_file_info_get_uri_scheme (ThunarxFileInfo *file_info);
+
+gchar *thunarx_file_info_get_mime_type (ThunarxFileInfo *file_info);
+gboolean thunarx_file_info_has_mime_type (ThunarxFileInfo *file_info,
+ const gchar *mime_type);
+
+gboolean thunarx_file_info_is_directory (ThunarxFileInfo *file_info);
+
+GList *thunarx_file_info_list_copy (GList *file_infos);
+void thunarx_file_info_list_free (GList *file_infos);
+
+G_END_DECLS;
+
+#endif /* !__THUNARX_FILE_INFO_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-menu-provider.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-menu-provider.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-menu-provider.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,188 @@
+/* $Id: thunarx-menu-provider.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <thunarx/thunarx-menu-provider.h>
+#include <thunarx/thunarx-alias.h>
+
+
+
+static GQuark thunarx_menu_provider_action_quark;
+
+
+
+GType
+thunarx_menu_provider_get_type (void)
+{
+ static GType type = G_TYPE_INVALID;
+
+ if (G_UNLIKELY (type == G_TYPE_INVALID))
+ {
+ static const GTypeInfo info =
+ {
+ sizeof (ThunarxMenuProviderIface),
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ 0,
+ 0,
+ NULL,
+ NULL,
+ };
+
+ /* register the menu provider interface */
+ type = g_type_register_static (G_TYPE_INTERFACE, "ThunarxMenuProvider", &info, 0);
+ g_type_interface_add_prerequisite (type, G_TYPE_OBJECT);
+
+ /* allocate the thunarx-menu-provider-action quark */
+ thunarx_menu_provider_action_quark = g_quark_from_static_string ("thunarx-menu-provider-action");
+ }
+
+ return type;
+}
+
+
+
+/**
+ * thunarx_menu_provider_get_file_actions:
+ * @provider : a #ThunarxMenuProvider.
+ * @window : the #GtkWindow within which the actions will be used.
+ * @files : the list of #ThunarxFileInfo<!---->s to which the actions will be applied.
+ *
+ * Returns the list of #GtkAction<!---->s that @provider has to offer for
+ * @files.
+ *
+ * As a special note, this method automatically takes a reference on the
+ * @provider for every #GtkAction object returned from the real implementation
+ * of this method in @provider. This is to make sure that the extension stays
+ * in memory for atleast the time that the actions are used. If the extension
+ * wants to stay in memory for a longer time, it'll need to take care of this
+ * itself (e.g. by taking an additional reference on the @provider itself,
+ * that's released at a later time).
+ *
+ * The caller is responsible to free the returned list of actions using
+ * something like this when no longer needed:
+ * <informalexample><programlisting>
+ * g_list_foreach (list, (GFunc) g_object_unref, NULL);
+ * g_list_free (list);
+ * </programlisting></informalexample>
+ *
+ * Return value: the list of #GtkAction<!---->s that @provider has to offer
+ * for @files.
+ **/
+GList*
+thunarx_menu_provider_get_file_actions (ThunarxMenuProvider *provider,
+ GtkWidget *window,
+ GList *files)
+{
+ GList *actions;
+ GList *lp;
+
+ g_return_val_if_fail (THUNARX_IS_MENU_PROVIDER (provider), NULL);
+ g_return_val_if_fail (GTK_IS_WINDOW (window), NULL);
+ g_return_val_if_fail (files != NULL, NULL);
+
+ if (THUNARX_MENU_PROVIDER_GET_IFACE (provider)->get_file_actions != NULL)
+ {
+ /* query the actions and take a reference on the provider for each action */
+ actions = (*THUNARX_MENU_PROVIDER_GET_IFACE (provider)->get_file_actions) (provider, window, files);
+ for (lp = actions; lp != NULL; lp = lp->next)
+ {
+ g_object_set_qdata_full (G_OBJECT (lp->data), thunarx_menu_provider_action_quark, provider, g_object_unref);
+ g_object_ref (G_OBJECT (provider));
+ }
+ }
+ else
+ {
+ actions = NULL;
+ }
+
+ return actions;
+}
+
+
+
+/**
+ * thunarx_menu_provider_get_folder_actions:
+ * @provider : a #ThunarxMenuProvider.
+ * @window : the #GtkWindow within which the actions will be used.
+ * @folder : the folder to which the actions should will be applied.
+ *
+ * Returns the list of #GtkAction<!---->s that @provider has to offer for
+ * @folder.
+ *
+ * As a special note, this method automatically takes a reference on the
+ * @provider for every #GtkAction object returned from the real implementation
+ * of this method in @provider. This is to make sure that the extension stays
+ * in memory for atleast the time that the actions are used. If the extension
+ * wants to stay in memory for a longer time, it'll need to take care of this
+ * itself (e.g. by taking an additional reference on the @provider itself,
+ * that's released at a later time).
+ *
+ * The caller is responsible to free the returned list of actions using
+ * something like this when no longer needed:
+ * <informalexample><programlisting>
+ * g_list_foreach (list, (GFunc) g_object_unref, NULL);
+ * g_list_free (list);
+ * </programlisting></informalexample>
+ *
+ * Return value: the list of #GtkAction<!---->s that @provider has to offer
+ * for @folder.
+ **/
+GList*
+thunarx_menu_provider_get_folder_actions (ThunarxMenuProvider *provider,
+ GtkWidget *window,
+ ThunarxFileInfo *folder)
+{
+ GList *actions;
+ GList *lp;
+
+ g_return_val_if_fail (THUNARX_IS_MENU_PROVIDER (provider), NULL);
+ g_return_val_if_fail (GTK_IS_WINDOW (window), NULL);
+ g_return_val_if_fail (THUNARX_IS_FILE_INFO (folder), NULL);
+ g_return_val_if_fail (thunarx_file_info_is_directory (folder), NULL);
+
+ if (THUNARX_MENU_PROVIDER_GET_IFACE (provider)->get_folder_actions != NULL)
+ {
+ /* query the actions and take a reference on the provider for each action */
+ actions = (*THUNARX_MENU_PROVIDER_GET_IFACE (provider)->get_folder_actions) (provider, window, folder);
+ for (lp = actions; lp != NULL; lp = lp->next)
+ {
+ g_object_set_qdata_full (G_OBJECT (lp->data), thunarx_menu_provider_action_quark, provider, g_object_unref);
+ g_object_ref (G_OBJECT (provider));
+ }
+ }
+ else
+ {
+ actions = NULL;
+ }
+
+ return actions;
+}
+
+
+
+#define __THUNARX_MENU_PROVIDER_C__
+#include <thunarx/thunarx-aliasdef.c>
Added: desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-menu-provider.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-menu-provider.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-menu-provider.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,75 @@
+/* $Id: thunarx-menu-provider.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#if !defined(THUNARX_INSIDE_THUNARX_H) && !defined(THUNARX_COMPILATION)
+#error "Only <thunarx/thunarx.h> can be included directly, this file may disappear or change contents"
+#endif
+
+#ifndef __THUNARX_MENU_PROVIDER_H__
+#define __THUNARX_MENU_PROVIDER_H__
+
+#include <gtk/gtk.h>
+
+#include <thunarx/thunarx-file-info.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarxMenuProviderIface ThunarxMenuProviderIface;
+typedef struct _ThunarxMenuProvider ThunarxMenuProvider;
+
+#define THUNARX_TYPE_MENU_PROVIDER (thunarx_menu_provider_get_type ())
+#define THUNARX_MENU_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNARX_TYPE_MENU_PROVIDER, ThunarxMenuProvider))
+#define THUNARX_IS_MENU_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNARX_TYPE_MENU_PROVIDER))
+#define THUNARX_MENU_PROVIDER_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), THUNARX_TYPE_MENU_PROVIDER, ThunarxMenuProviderIface))
+
+struct _ThunarxMenuProviderIface
+{
+ /*< private >*/
+ GTypeInterface __parent__;
+
+ /*< public >*/
+ GList *(*get_file_actions) (ThunarxMenuProvider *provider,
+ GtkWidget *window,
+ GList *files);
+
+ GList *(*get_folder_actions) (ThunarxMenuProvider *provider,
+ GtkWidget *window,
+ ThunarxFileInfo *folder);
+
+ /*< private >*/
+ void (*reserved1) (void);
+ void (*reserved2) (void);
+ void (*reserved3) (void);
+ void (*reserved4) (void);
+};
+
+GType thunarx_menu_provider_get_type (void) G_GNUC_CONST;
+
+GList *thunarx_menu_provider_get_file_actions (ThunarxMenuProvider *provider,
+ GtkWidget *window,
+ GList *files);
+
+GList *thunarx_menu_provider_get_folder_actions (ThunarxMenuProvider *provider,
+ GtkWidget *window,
+ ThunarxFileInfo *folder);
+
+G_END_DECLS;
+
+#endif /* !__THUNARX_MENU_PROVIDER_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-property-page-provider.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-property-page-provider.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-property-page-provider.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,126 @@
+/* $Id: thunarx-property-page-provider.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <thunarx/thunarx-property-page-provider.h>
+#include <thunarx/thunarx-alias.h>
+
+
+
+static GQuark thunarx_property_page_quark;
+
+
+
+GType
+thunarx_property_page_provider_get_type (void)
+{
+ static GType type = G_TYPE_INVALID;
+
+ if (G_UNLIKELY (type == G_TYPE_INVALID))
+ {
+ static const GTypeInfo info =
+ {
+ sizeof (ThunarxPropertyPageProviderIface),
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ 0,
+ 0,
+ NULL,
+ NULL,
+ };
+
+ /* register the property page provider interface */
+ type = g_type_register_static (G_TYPE_INTERFACE, "ThunarxPropertyPageProvider", &info, 0);
+ g_type_interface_add_prerequisite (type, G_TYPE_OBJECT);
+
+ /* allocate the thunarx-property-page quark */
+ thunarx_property_page_quark = g_quark_from_static_string ("thunarx-property-page");
+ }
+
+ return type;
+}
+
+
+
+/**
+ * thunarx_property_page_provider_get_pages:
+ * @provider : a #ThunarxPropertyPageProvider.
+ * @files : the list of #ThunarxFileInfo<!---->s for which a properties dialog will be displayed.
+ *
+ * Returns the list of #ThunarxPropertyPage<!---->s that @provider has to offer for @files.
+ *
+ * As a special note, this method automatically takes a reference on the
+ * @provider for every #ThunarxPropertyPage object returned from the real implementation
+ * of this method in @provider. This is to make sure that the extension stays
+ * in memory for atleast the time that the pages are used. If the extension
+ * wants to stay in memory for a longer time, it'll need to take care of this
+ * itself (e.g. by taking an additional reference on the @provider itself,
+ * that's released at a later time).
+ *
+ * The caller is responsible to free the returned list of pages using
+ * something like this when no longer needed:
+ * <informalexample><programlisting>
+ * g_list_foreach (list, (GFunc) g_object_ref, NULL);
+ * g_list_foreach (list, (GFunc) gtk_object_sink, NULL);
+ * g_list_foreach (list, (GFunc) g_object_unref, NULL);
+ * g_list_free (list);
+ * </programlisting></informalexample>
+ *
+ * Return value: the list of #ThunarxPropertyPage<!---->s that @provider has to offer
+ * for @files.
+ **/
+GList*
+thunarx_property_page_provider_get_pages (ThunarxPropertyPageProvider *provider,
+ GList *files)
+{
+ GList *pages;
+ GList *lp;
+
+ g_return_val_if_fail (THUNARX_IS_PROPERTY_PAGE_PROVIDER (provider), NULL);
+ g_return_val_if_fail (files != NULL, NULL);
+
+ if (THUNARX_PROPERTY_PAGE_PROVIDER_GET_IFACE (provider)->get_pages != NULL)
+ {
+ /* query the property pages and take a reference on the provider for each page */
+ pages = (*THUNARX_PROPERTY_PAGE_PROVIDER_GET_IFACE (provider)->get_pages) (provider, files);
+ for (lp = pages; lp != NULL; lp = lp->next)
+ {
+ g_object_set_qdata_full (G_OBJECT (lp->data), thunarx_property_page_quark, provider, g_object_unref);
+ g_object_ref (G_OBJECT (provider));
+ }
+ }
+ else
+ {
+ pages = NULL;
+ }
+
+ return pages;
+}
+
+
+
+#define __THUNARX_PROPERTY_PAGE_PROVIDER_C__
+#include <thunarx/thunarx-aliasdef.c>
Added: desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-property-page-provider.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-property-page-provider.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-property-page-provider.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,64 @@
+/* $Id: thunarx-property-page-provider.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#if !defined(THUNARX_INSIDE_THUNARX_H) && !defined(THUNARX_COMPILATION)
+#error "Only <thunarx/thunarx.h> can be included directly, this file may disappear or change contents"
+#endif
+
+#ifndef __THUNARX_PROPERTY_PAGE_PROVIDER_H__
+#define __THUNARX_PROPERTY_PAGE_PROVIDER_H__
+
+#include <thunarx/thunarx-property-page.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarxPropertyPageProviderIface ThunarxPropertyPageProviderIface;
+typedef struct _ThunarxPropertyPageProvider ThunarxPropertyPageProvider;
+
+#define THUNARX_TYPE_PROPERTY_PAGE_PROVIDER (thunarx_property_page_provider_get_type ())
+#define THUNARX_PROPERTY_PAGE_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNARX_TYPE_PROPERTY_PAGE_PROVIDER, ThunarxPropertyPageProvider))
+#define THUNARX_IS_PROPERTY_PAGE_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNARX_TYPE_PROPERTY_PAGE_PROVIDER))
+#define THUNARX_PROPERTY_PAGE_PROVIDER_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), THUNARX_TYPE_PROPERTY_PAGE_PROVIDER, ThunarxPropertyPageProviderIface))
+
+struct _ThunarxPropertyPageProviderIface
+{
+ /*< private >*/
+ GTypeInterface __parent__;
+
+ /*< public >*/
+ GList *(*get_pages) (ThunarxPropertyPageProvider *provider,
+ GList *files);
+
+ /*< private >*/
+ void (*reserved1) (void);
+ void (*reserved2) (void);
+ void (*reserved3) (void);
+ void (*reserved4) (void);
+ void (*reserved5) (void);
+};
+
+GType thunarx_property_page_provider_get_type (void) G_GNUC_CONST;
+
+GList *thunarx_property_page_provider_get_pages (ThunarxPropertyPageProvider *provider,
+ GList *files);
+
+G_END_DECLS;
+
+#endif /* !__THUNARX_PROPERTY_PAGE_PROVIDER_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-property-page.c
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-property-page.c 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-property-page.c 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,401 @@
+/* $Id: thunarx-property-page.c 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <glib/gi18n-lib.h>
+
+#include <thunarx/thunarx-property-page.h>
+#include <thunarx/thunarx-alias.h>
+
+
+
+#define THUNARX_PROPERTY_PAGE_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), THUNARX_TYPE_PROPERTY_PAGE, ThunarxPropertyPagePrivate))
+
+
+
+/* Property identifiers */
+enum
+{
+ PROP_0,
+ PROP_LABEL,
+ PROP_LABEL_WIDGET,
+};
+
+
+
+static void thunarx_property_page_class_init (ThunarxPropertyPageClass *klass);
+static void thunarx_property_page_init (ThunarxPropertyPage *property_page);
+static void thunarx_property_page_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void thunarx_property_page_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void thunarx_property_page_destroy (GtkObject *object);
+static void thunarx_property_page_size_request (GtkWidget *widget,
+ GtkRequisition *requisition);
+static void thunarx_property_page_size_allocate (GtkWidget *widget,
+ GtkAllocation *allocation);
+
+
+
+struct _ThunarxPropertyPagePrivate
+{
+ GtkWidget *label_widget;
+};
+
+
+
+G_DEFINE_TYPE (ThunarxPropertyPage, thunarx_property_page, GTK_TYPE_BIN);
+
+
+
+static void
+thunarx_property_page_class_init (ThunarxPropertyPageClass *klass)
+{
+ GtkObjectClass *gtkobject_class;
+ GtkWidgetClass *gtkwidget_class;
+ GObjectClass *gobject_class;
+
+ /* add our private data to the class type */
+ g_type_class_add_private (klass, sizeof (ThunarxPropertyPagePrivate));
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->get_property = thunarx_property_page_get_property;
+ gobject_class->set_property = thunarx_property_page_set_property;
+
+ gtkobject_class = GTK_OBJECT_CLASS (klass);
+ gtkobject_class->destroy = thunarx_property_page_destroy;
+
+ gtkwidget_class = GTK_WIDGET_CLASS (klass);
+ gtkwidget_class->size_request = thunarx_property_page_size_request;
+ gtkwidget_class->size_allocate = thunarx_property_page_size_allocate;
+
+ /**
+ * ThunarxPropertyPage::label:
+ *
+ * Text of the page's label.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_LABEL,
+ g_param_spec_string ("label",
+ _("Label"),
+ _("Text of the page's label"),
+ NULL,
+ G_PARAM_READWRITE));
+
+ /**
+ * ThunarxPropertyPage::label-widget:
+ *
+ * A widget to display in place of the usual page label.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_LABEL_WIDGET,
+ g_param_spec_object ("label-widget",
+ _("Label widget"),
+ _("A widget to display in place of the usual page label"),
+ GTK_TYPE_WIDGET,
+ G_PARAM_READWRITE));
+}
+
+
+
+static void
+thunarx_property_page_init (ThunarxPropertyPage *property_page)
+{
+ property_page->priv = THUNARX_PROPERTY_PAGE_GET_PRIVATE (property_page);
+}
+
+
+
+static void
+thunarx_property_page_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarxPropertyPage *property_page = THUNARX_PROPERTY_PAGE (object);
+
+ switch (prop_id)
+ {
+ case PROP_LABEL:
+ g_value_set_string (value, thunarx_property_page_get_label (property_page));
+ break;
+
+ case PROP_LABEL_WIDGET:
+ g_value_set_object (value, thunarx_property_page_get_label_widget (property_page));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunarx_property_page_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ ThunarxPropertyPage *property_page = THUNARX_PROPERTY_PAGE (object);
+
+ switch (prop_id)
+ {
+ case PROP_LABEL:
+ thunarx_property_page_set_label (property_page, g_value_get_string (value));
+ break;
+
+ case PROP_LABEL_WIDGET:
+ thunarx_property_page_set_label_widget (property_page, g_value_get_object (value));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+
+static void
+thunarx_property_page_destroy (GtkObject *object)
+{
+ ThunarxPropertyPage *property_page = THUNARX_PROPERTY_PAGE (object);
+
+ /* destroy the label widget (if any) */
+ if (G_LIKELY (property_page->priv->label_widget != NULL))
+ {
+ gtk_object_destroy (GTK_OBJECT (property_page->priv->label_widget));
+ g_object_unref (G_OBJECT (property_page->priv->label_widget));
+ property_page->priv->label_widget = NULL;
+ }
+
+ (*GTK_OBJECT_CLASS (thunarx_property_page_parent_class)->destroy) (object);
+}
+
+
+
+static void
+thunarx_property_page_size_request (GtkWidget *widget,
+ GtkRequisition *requisition)
+{
+ GtkBin *bin = GTK_BIN (widget);
+
+ if (G_LIKELY (bin->child != NULL && GTK_WIDGET_VISIBLE (bin->child)))
+ {
+ gtk_widget_size_request (bin->child, requisition);
+ }
+ else
+ {
+ requisition->width = 0;
+ requisition->height = 0;
+ }
+
+ requisition->width += 2 * (GTK_CONTAINER (bin)->border_width + widget->style->xthickness);
+ requisition->height += 2 * (GTK_CONTAINER (bin)->border_width + widget->style->ythickness);
+}
+
+
+
+static void
+thunarx_property_page_size_allocate (GtkWidget *widget,
+ GtkAllocation *allocation)
+{
+ GtkAllocation child_allocation;
+ GtkBin *bin = GTK_BIN (widget);
+
+ /* apply the allocation to the property page */
+ widget->allocation = *allocation;
+
+ /* apply the child allocation if we have a child */
+ if (G_LIKELY (bin->child != NULL && GTK_WIDGET_VISIBLE (bin->child)))
+ {
+ /* calculate the allocation for the child widget */
+ child_allocation.x = allocation->x + GTK_CONTAINER (bin)->border_width + widget->style->xthickness;
+ child_allocation.y = allocation->y + GTK_CONTAINER (bin)->border_width + widget->style->ythickness;
+ child_allocation.width = allocation->width - 2 * (GTK_CONTAINER (bin)->border_width + widget->style->xthickness);
+ child_allocation.height = allocation->height - 2 * (GTK_CONTAINER (bin)->border_width + widget->style->ythickness);
+
+ /* apply the child allocation */
+ gtk_widget_size_allocate (bin->child, &child_allocation);
+ }
+}
+
+
+
+/**
+ * thunarx_property_page_new:
+ * @label : the text to use as the label of the page.
+ *
+ * Allocates a new #ThunarxPropertyPage widget and sets its label to the
+ * specified @label. If @label is %NULL, the label is omitted.
+ *
+ * Return value: the newly allocated #ThunarxPropertyPage
+ * widget.
+ **/
+GtkWidget*
+thunarx_property_page_new (const gchar *label)
+{
+ return g_object_new (THUNARX_TYPE_PROPERTY_PAGE, "label", label, NULL);
+}
+
+
+
+/**
+ * thunarx_property_page_new_with_label_widget:
+ * @label_widget : a #GtkWidget, which should be used as label.
+ *
+ * Allocates a new #ThunarxPropertyPage widget and sets its label to
+ * the specified @label_widget.
+ *
+ * Return value: the newly allocated #ThunarxPropertyPage widget.
+ **/
+GtkWidget*
+thunarx_property_page_new_with_label_widget (GtkWidget *label_widget)
+{
+ return g_object_new (THUNARX_TYPE_PROPERTY_PAGE, "label-widget", label_widget, NULL);
+}
+
+
+
+/**
+ * thunarx_property_page_get_label:
+ * @property_page : a #ThunarxPropertyPage.
+ *
+ * If the @property_page's label widget is a #GtkLabel, returns the text
+ * in the label widget (the @property_page will have a #GtkLabel for the
+ * label widget if a non-%NULL argument was passed to thunarx_property_page_new()).
+ *
+ * Return value: the text in the label or %NULL if there was no label widget or
+ * the label widget was not a #GtkLabel. The returned string is
+ * owned by the @property_page and must not be modified or freed.
+ **/
+const gchar*
+thunarx_property_page_get_label (ThunarxPropertyPage *property_page)
+{
+ g_return_val_if_fail (THUNARX_IS_PROPERTY_PAGE (property_page), NULL);
+
+ if (property_page->priv->label_widget != NULL && GTK_IS_LABEL (property_page->priv->label_widget))
+ return gtk_label_get_text (GTK_LABEL (property_page->priv->label_widget));
+ else
+ return NULL;
+}
+
+
+
+/**
+ * thunarx_property_page_set_label:
+ * @property_page : a #ThunarxPropertyPage.
+ * @label : the text to use as the label of the page.
+ *
+ * Sets the text of the label. If @label is %NULL, the current label is
+ * removed.
+ **/
+void
+thunarx_property_page_set_label (ThunarxPropertyPage *property_page,
+ const gchar *label)
+{
+ GtkWidget *widget;
+
+ g_return_if_fail (THUNARX_IS_PROPERTY_PAGE (property_page));
+
+ if (label == NULL)
+ {
+ thunarx_property_page_set_label_widget (property_page, NULL);
+ }
+ else
+ {
+ widget = gtk_label_new (label);
+ thunarx_property_page_set_label_widget (property_page, widget);
+ gtk_widget_show (widget);
+ }
+}
+
+
+
+/**
+ * thunarx_property_page_get_label_widget:
+ * @property_page : a #ThunarxPropertyPage.
+ *
+ * Returns the label widget for the @property_page. See
+ * thunarx_property_page_set_label_widget().
+ *
+ * return value: the label widget or %NULL if there is none.
+ **/
+GtkWidget*
+thunarx_property_page_get_label_widget (ThunarxPropertyPage *property_page)
+{
+ g_return_val_if_fail (THUNARX_IS_PROPERTY_PAGE (property_page), NULL);
+ return property_page->priv->label_widget;
+}
+
+
+
+/**
+ * thunarx_property_page_set_label_widget:
+ * @property_page : a #ThunarxPropertyPage.
+ * @label_widget : the new label widget.
+ *
+ * Sets the label widget for the @property_page. This is the widget
+ * that will appear in the notebook header for the @property_page.
+ **/
+void
+thunarx_property_page_set_label_widget (ThunarxPropertyPage *property_page,
+ GtkWidget *label_widget)
+{
+ g_return_if_fail (THUNARX_IS_PROPERTY_PAGE (property_page));
+ g_return_if_fail (label_widget == NULL || (GTK_IS_WIDGET (label_widget) && label_widget->parent == NULL));
+
+ if (G_UNLIKELY (label_widget == property_page->priv->label_widget))
+ return;
+
+ /* disconnect from the previous label widget */
+ if (G_LIKELY (property_page->priv->label_widget != NULL))
+ g_object_unref (G_OBJECT (property_page->priv->label_widget));
+
+ /* activate the new label widget */
+ property_page->priv->label_widget = label_widget;
+
+ /* connect to the new label widget */
+ if (G_LIKELY (label_widget != NULL))
+ {
+ g_object_ref (G_OBJECT (label_widget));
+ gtk_object_sink (GTK_OBJECT (label_widget));
+ }
+
+ /* notify listeners */
+ g_object_freeze_notify (G_OBJECT (property_page));
+ g_object_notify (G_OBJECT (property_page), "label");
+ g_object_notify (G_OBJECT (property_page), "label-widget");
+ g_object_thaw_notify (G_OBJECT (property_page));
+}
+
+
+
+#define __THUNARX_PROPERTY_PAGE_C__
+#include <thunarx/thunarx-aliasdef.c>
Added: desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-property-page.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-property-page.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx-property-page.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,77 @@
+/* $Id: thunarx-property-page.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#if !defined(THUNARX_INSIDE_THUNARX_H) && !defined(THUNARX_COMPILATION)
+#error "Only <thunarx/thunarx.h> can be included directly, this file may disappear or change contents"
+#endif
+
+#ifndef __THUNARX_PROPERTY_PAGE_H__
+#define __THUNARX_PROPERTY_PAGE_H__
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _ThunarxPropertyPagePrivate ThunarxPropertyPagePrivate;
+typedef struct _ThunarxPropertyPageClass ThunarxPropertyPageClass;
+typedef struct _ThunarxPropertyPage ThunarxPropertyPage;
+
+#define THUNARX_TYPE_PROPERTY_PAGE (thunarx_property_page_get_type ())
+#define THUNARX_PROPERTY_PAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), THUNARX_TYPE_PROPERTY_PAGE, ThunarxPropertyPage))
+#define THUNARX_PROPERTY_PAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), THUNARX_TYPE_PROPERTY_PAGE, ThunarxPropertyPageClass))
+#define THUNARX_IS_PROPERTY_PAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), THUNARX_TYPE_PROPERTY_PAGE))
+#define THUNARX_IS_PROPERTY_PAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), THUNARX_TYPE_PROPERTY_PAGE))
+#define THUNARX_PROPERTY_PAGE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), THUNARX_TYPE_PROPERTY_PAGE))
+
+struct _ThunarxPropertyPageClass
+{
+ GtkBinClass __parent__;
+
+ /*< private >*/
+ void (*reserved1) (void);
+ void (*reserved2) (void);
+ void (*reserved3) (void);
+ void (*reserved4) (void);
+};
+
+struct _ThunarxPropertyPage
+{
+ GtkBin __parent__;
+
+ /*< private >*/
+ ThunarxPropertyPagePrivate *priv;
+};
+
+GType thunarx_property_page_get_type (void) G_GNUC_CONST;
+
+GtkWidget *thunarx_property_page_new (const gchar *label) G_GNUC_MALLOC;
+GtkWidget *thunarx_property_page_new_with_label_widget (GtkWidget *label_widget) G_GNUC_MALLOC;
+
+const gchar *thunarx_property_page_get_label (ThunarxPropertyPage *property_page);
+void thunarx_property_page_set_label (ThunarxPropertyPage *property_page,
+ const gchar *label);
+
+GtkWidget *thunarx_property_page_get_label_widget (ThunarxPropertyPage *property_page);
+void thunarx_property_page_set_label_widget (ThunarxPropertyPage *property_page,
+ GtkWidget *label_widget);
+
+G_END_DECLS;
+
+#endif /* !__THUNARX_PROPERTY_PAGE_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx.h
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx.h 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx.h 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,34 @@
+/* $Id: thunarx.h 18843 2005-11-14 14:25:58Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __THUNARX_H__
+#define __THUNARX_H__
+
+#define THUNARX_INSIDE_THUNARX_H
+
+#include <thunarx/thunarx-config.h>
+#include <thunarx/thunarx-file-info.h>
+#include <thunarx/thunarx-menu-provider.h>
+#include <thunarx/thunarx-property-page.h>
+#include <thunarx/thunarx-property-page-provider.h>
+
+#undef THUNARX_INSIDE_THUNARX_H
+
+#endif /* !__THUNARX_H__ */
Added: desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx.symbols
===================================================================
--- desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx.symbols 2005-11-17 13:36:21 UTC (rev 305)
+++ desktop/trunk/thunar/branches/upstream/current/thunarx/thunarx.symbols 2005-11-17 13:47:07 UTC (rev 306)
@@ -0,0 +1,92 @@
+/* $Id: thunarx.symbols 17553 2005-09-11 00:07:08Z benny $ */
+/*-
+ * Copyright (c) 2005 Benedikt Meurer <benny at xfce.org>.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+/* This file lists all exported symbols. It is used to generate
+ * the thunarx.def file used to control exports on Windows and the
+ * thunarx-alias.h/thunarx-aliasdef.c files used to avoid PLT
+ * entries for * internal uses of exported functions (see
+ * make-thunarx-alias.pl).
+ *
+ * Every symbol must be included in the right
+ * #ifdef IN_HEADER(sym) #endif and
+ * #ifdef IN_SOURCE(sym) #endif sections.
+ */
+
+#ifdef ALL_FILES
+#define IN_SOURCE(x) 1
+#define IN_HEADER(x) 1
+#endif
+
+/* thunarx-config symbols */
+#if IN_HEADER(__THUNARX_CONFIG_H__)
+#if IN_SOURCE(__THUNARX_CONFIG_C__)
+thunarx_major_version
+thunarx_minor_version
+thunarx_micro_version
+thunarx_check_version
+#endif
+#endif
+
+/* ThunarxFileInfo methods */
+#if IN_HEADER(__THUNARX_FILE_INFO_H__)
+#if IN_SOURCE(__THUNARX_FILE_INFO_C__)
+thunarx_file_info_get_type G_GNUC_CONST
+thunarx_file_info_get_name
+thunarx_file_info_get_uri
+thunarx_file_info_get_parent_uri
+thunarx_file_info_get_uri_scheme
+thunarx_file_info_get_mime_type
+thunarx_file_info_has_mime_type
+thunarx_file_info_is_directory
+thunarx_file_info_list_copy
+thunarx_file_info_list_free
+#endif
+#endif
+
+/* ThunarxMenuProvider methods */
+#if IN_HEADER(__THUNARX_MENU_PROVIDER_H__)
+#if IN_SOURCE(__THUNARX_MENU_PROVIDER_C__)
+thunarx_menu_provider_get_type G_GNUC_CONST
+thunarx_menu_provider_get_file_actions
+thunarx_menu_provider_get_folder_actions
+#endif
+#endif
+
+/* ThunarxPropertyPage methods */
+#if IN_HEADER(__THUNARX_PROPERTY_PAGE_H__)
+#if IN_SOURCE(__THUNARX_PROPERTY_PAGE_C__)
+thunarx_property_page_get_type G_GNUC_CONST
+thunarx_property_page_new G_GNUC_MALLOC
+thunarx_property_page_new_with_label_widget G_GNUC_MALLOC
+thunarx_property_page_get_label
+thunarx_property_page_set_label
+thunarx_property_page_get_label_widget
+thunarx_property_page_set_label_widget
+#endif
+#endif
+
+/* ThunarxPropertyPageProvider methods */
+#if IN_HEADER(__THUNARX_PROPERTY_PAGE_PROVIDER_H__)
+#if IN_SOURCE(__THUNARX_PROPERTY_PAGE_PROVIDER_C__)
+thunarx_property_page_provider_get_type G_GNUC_CONST
+thunarx_property_page_provider_get_pages
+#endif
+#endif
+
More information about the Pkg-xfce-commits
mailing list