Hello community,
here is the log from the commit of package gvfs
checked in at Mon Oct 6 18:23:19 CEST 2008.
--------
--- GNOME/gvfs/gvfs.changes 2008-09-22 15:55:15.000000000 +0200
+++ /mounts/work_src_done/STABLE/gvfs/gvfs.changes 2008-10-03 03:26:57.000000000 +0200
@@ -1,0 +2,12 @@
+Fri Oct 3 11:26:25 WST 2008 - mboman@suse.de
+
+- Update to version 1.0.1:
+ + bgo#547568 - gvfsd-trash crash due to race condition
+
+-------------------------------------------------------------------
+Wed Sep 24 00:37:04 CDT 2008 - hpj@suse.de
+
+- Add gvfs-dice-backend.patch, which implements the Novell
+ IceDesktop backend.
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
gvfs-1.0.0.tar.bz2
New:
----
gvfs-1.0.1.tar.bz2
gvfs-dice-backend.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gvfs.spec ++++++
--- /var/tmp/diff_new_pack.o17890/_old 2008-10-06 18:21:26.000000000 +0200
+++ /var/tmp/diff_new_pack.o17890/_new 2008-10-06 18:21:26.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package gvfs (Version 1.0.0)
+# spec file for package gvfs (Version 1.0.1)
#
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -44,13 +44,15 @@
BuildRequires: extra-rpm-macros
%endif
Summary: VFS functionality for GLib
-Version: 1.0.0
+Version: 1.0.1
Release: 1
License: LGPL v2.0 or later
Group: Development/Libraries/C and C++
Source0: %{name}-%{version}.tar.bz2
# PATCH-FIX-UPSTREAM gvfs-no-shebang.patch bgo523420 maw@suse.de
Patch0: gvfs-no-shebang.patch
+# PATCH-FEATURE-OPENSUSE gvfs-dice-backend.patch hpj@suse.de -- Implements Novell IceDesktop backend. Should be upstreamed eventually.
+Patch1: gvfs-dice-backend.patch
Url: http://www.gnome.org
BuildRoot: %{_tmppath}/%{name}-%{version}-build
AutoReqProv: on
@@ -136,9 +138,12 @@
%prep
%setup -n %{name}-%{version}
%patch0 -p1
+%patch1
%build
export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing"
+autoreconf -f
+libtoolize -c -f
%configure \
--libexecdir=%{_libdir}/%{name}
%__make
@@ -190,6 +195,12 @@
%files lang -f %{name}.lang
%changelog
+* Fri Oct 03 2008 mboman@suse.de
+- Update to version 1.0.1:
+ + bgo#547568 - gvfsd-trash crash due to race condition
+* Wed Sep 24 2008 hpj@suse.de
+- Add gvfs-dice-backend.patch, which implements the Novell
+ IceDesktop backend.
* Mon Sep 22 2008 maw@suse.de
- Update to version 1.0.0:
+ Bug fixed: bgo#524498.
@@ -199,9 +210,9 @@
+ Fix crash while browsing ssh locations
+ Fix --enable/disable-keyring configure switch
+ Updated translations.
-* Tue Sep 16 2008 dmueller@suse.de
+* Wed Sep 17 2008 dmueller@suse.de
- update buildrequires
-* Wed Sep 10 2008 maw@suse.de
+* Thu Sep 11 2008 maw@suse.de
- Update to version 0.99.7.1:
+ Revert to using powers of 10 instead of powers of 2 for
display sizes; this means we will agree with printed sizes for
@@ -209,19 +220,19 @@
report "64MB volume" instead of "61.7MB volume" as previously
+ Bugs fixed: bgo#546971 and bgo#550858
+ Updated translations.
-* Mon Sep 08 2008 kukuk@suse.de
+* Tue Sep 09 2008 kukuk@suse.de
- Make obex-data-server really a recommends as requested initialy
in bugzilla.
-* Mon Sep 01 2008 mboman@novell.com
+* Tue Sep 02 2008 mboman@novell.com
- Update to version 0.99.6:
+ Better cross-backend copy/move logic.
+ Bugs fixed: bgo#548841, bgo#547133, bgo#538573, bgo#549253,
bgo#549553, bgo#550100, bgo#529971, rh#460223
+ Translation updates
-* Sun Aug 31 2008 ro@suse.de
+* Mon Sep 01 2008 ro@suse.de
- add libexpat-devel to buildrequires so that obex backend
is built
-* Thu Aug 28 2008 maw@suse.de
+* Fri Aug 29 2008 maw@suse.de
- Update to version 0.93.5:
+ Support und update serialization of GEmblem and GEmblemedIcon
+ Add x-content/* support to daemon mounts
@@ -235,14 +246,14 @@
+ Updated translations
- Drop gvfs-bnc382172-home-trash-monitoring.patch, because it has
been upstreamed (see bgo#509740 and bnc#382172).
-* Fri Aug 01 2008 maw@suse.de
+* Sat Aug 02 2008 maw@suse.de
- Update to version 0.99.3:
+ Move hal and gphoto volume monitors out of process
+ Fix recursive copying
+ Make the fuse daemon more reliable
+ Many smaller bugfixes
+ Updated translations.
-* Fri Jun 06 2008 maw@suse.de
+* Sat Jun 07 2008 maw@suse.de
- Update to versino 0.99.1:
+ Fix directory copy/delete problems
+ Fuse daemon robustness fixes
@@ -255,14 +266,14 @@
+ Many smaller bug fixes
+ Updated translations
- Remove upstreamed patch: gvfs-bnc368628-fuse-robustness.patch.
-* Fri May 23 2008 hpj@suse.de
+* Sat May 24 2008 hpj@suse.de
- Merge gvfs-bgo531516-fuse-cleanup-when-killed.patch into
gvfs-bnc368628-fuse-robustness.patch so as to avoid overlapping
patches.
- Add upstream fixes to thread locking and file handle life-cycles
to gvfs-bnc368628-fuse-robustness.patch. Prevents more crashes.
- Depend on libcdio-devel for building, so we get the CDDA backend.
-* Wed May 21 2008 hpj@suse.de
+* Thu May 22 2008 hpj@suse.de
- Add gvfs-bgo531516-fuse-cleanup-when-killed.patch, which fixes
the remaining issues covered by BNC #368628.
* Tue May 13 2008 hpj@suse.de
@@ -271,7 +282,7 @@
* Thu May 08 2008 hpj@suse.de
- Add gvfs-bnc368628-fuse-robustness.patch, which probably fixes
BNC #368628.
-* Wed Apr 09 2008 maw@suse.de
+* Thu Apr 10 2008 maw@suse.de
- Update to version 0.2.3:
+ WebDAV: implement set_display_name
+ WebDAV fixes
@@ -282,7 +293,7 @@
* Wed Apr 09 2008 sbrabec@suse.cz
- Directory ownership of %%{_libdir}/gio/modules moved to glib2,
where it logically belongs.
-* Tue Apr 01 2008 rodrigo@suse.de
+* Wed Apr 02 2008 rodrigo@suse.de
- Update to version 0.2.2:
* Respect the giomoduledir provided in gio package config file
* Better mount icon and name for archive backend
@@ -294,13 +305,13 @@
* sftp: Kerberos support
* smb: Port to new samba 3.2.0 API (backwards compat)
* sftp: Handle overwrites correctly (was silent overwrite)
-* Tue Mar 25 2008 maw@suse.de
+* Wed Mar 26 2008 maw@suse.de
- gvfs now recommends gvfs-backends (bnc#373477).
-* Wed Mar 19 2008 maw@suse.de
+* Thu Mar 20 2008 maw@suse.de
- Reduce build requirements
- Split out a shared library package, libgnomevfscommon0, and two
module subpackages, gvfs-backends and gvfs-fuse.
-* Tue Mar 18 2008 jpr@suse.de
+* Wed Mar 19 2008 jpr@suse.de
- Update to version 0.2.1
* Added archive backend
* Implement most of the async functions in GDaemonFile
@@ -314,7 +325,7 @@
* Enviroment variable to disable fuse backend at runtime
* Mon Mar 17 2008 jpr@suse.de
- Add recommends for obex-data-server (bnc #368776)
-* Thu Mar 13 2008 maw@suse.de
+* Fri Mar 14 2008 maw@suse.de
- Update to version 0.2.0.1:
+ Fix crashes
+ Build and portability fixes
@@ -326,14 +337,14 @@
+ obex: Give better error message on broken phones
+ sftp: Allow setting permissions
+ dav: Correct mount name, file icons and file types.
-* Tue Mar 04 2008 jpr@suse.de
+* Wed Mar 05 2008 jpr@suse.de
- Update to version 0.1.11
* Correctly free mounts
* Disable debug log
* Fix volume monitor change reporting
* Fix timeout during automount
- enable obex backend
-* Tue Mar 04 2008 maw@suse.de
+* Wed Mar 05 2008 maw@suse.de
- Update to version 0.1.9:
+ Added ftp backend
+ Added obexftp backend
@@ -343,7 +354,7 @@
+ Allow backends to specify uri details in .mount file
+ Fix leaks and crashes
+ Fix icon for audio cds.
-* Fri Feb 29 2008 jpr@suse.de
+* Sat Mar 01 2008 jpr@suse.de
- Update to 0.1.8
* Update for gio API changes
* Add gphoto2 backend
@@ -360,10 +371,10 @@
* Add bash completion support for command line apps
* Fix handling of blank cds and audio cds
* Support port in sftp uris
-* Thu Feb 28 2008 jpr@suse.de
+* Fri Feb 29 2008 jpr@suse.de
- Move the gio modules into the main package (#358748)
- Enable gconf backend
-* Mon Feb 18 2008 maw@suse.de
+* Tue Feb 19 2008 maw@suse.de
- Update to version 0.1.7:
+ Update for gio API changes
+ Add gconf based implementation of
@@ -376,9 +387,9 @@
+ Pick up cdrom icons from autorun.inf
+ Add "filesystem" file to computer://
+ Fix renaming in sftp and smb.
-* Fri Feb 08 2008 maw@suse.de
+* Sat Feb 09 2008 maw@suse.de
- Recomend fuse (bnc#359928).
-* Wed Jan 30 2008 maw@suse.de
+* Thu Jan 31 2008 maw@suse.de
- Update to version 0.1.6:
+ Updates to work with more recent glib
+ Fix sftp error handling on reading directories
@@ -387,5 +398,5 @@
+ hal: Don't show drives if all volumes are hidden
+ Enable translations
+ Plus some files that were missing in 0.1.5.
-* Tue Jan 22 2008 maw@suse.de
+* Wed Jan 23 2008 maw@suse.de
- Initial package, version 0.1.4.
++++++ gvfs-1.0.0.tar.bz2 -> gvfs-1.0.1.tar.bz2 ++++++
++++ 67302 lines of diff (skipped)
++++ retrying with extended exclude list
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gvfs-1.0.0/ChangeLog new/gvfs-1.0.1/ChangeLog
--- old/gvfs-1.0.0/ChangeLog 2008-09-22 12:17:27.000000000 +0200
+++ new/gvfs-1.0.1/ChangeLog 2008-09-24 14:28:49.000000000 +0200
@@ -1,3 +1,53 @@
+2008-09-24 Christian Kellner,,,
+
+ reviewed by: <delete if not using a buddy>
+
+ * NEWS:
+
+2008-09-23 Alexander Larsson
+
+ * monitor/proxy/gproxyvolumemonitor.[ch]:
+ * monitor/proxy/gproxyvolumemonitor.h:
+ * monitor/proxy/remote-volume-monitor-module.c:
+ Only call the IsSupported dbus call when the class
+ is actually needed instead of on gio init.
+ Don't integrate internal session bus with mainloop
+ during is_support code, as that is not necessary yet, and
+ it caused problem if done in a thread.
+
+ This fixes the trash crash issue in bug #547568.
+
+2008-09-23 Alexander Larsson
+
+ * client/Makefile.am:
+ * common/Makefile.am:
+ * common/gmountsource.c:
+ * common/gmounttracker.c:
+ * monitor/gphoto2/Makefile.am:
+ * monitor/hal/Makefile.am:
+ * monitor/proxy/Makefile.am:
+ Link all modules against the installed libgvfscommon instead
+ of duplicating the statically linked one. This is safe wrt
+ namespace conflicts, because the modules are opened RTLD_LOCAL
+ so the dependencies will not pollute the global namespace.
+
+ * client/gdaemonvfs.c:
+ Make the gvfsdbus module persistant. This means we will never
+ unload it, and thus not unload libgvfscommon which could
+ be problematic. This is not a huge problem, as:
+ + The gio modules will not be loaded anyway unless you use gio
+ + The gvfsdbus module will be persistent anyway as soon as
+ the app references the GVfs object, which likely all gio apps do
+ + The module load order doesn't matter wrt unload order, because
+ all gio modules are loaded before any one is unloaded.
+
+2008-09-22 Alexander Larsson
+
+ * configure.ac:
+ Post release version bump
+
+=== gvfs 1.0.0. ===
+
2008-09-22 Alexander Larsson
* NEWS:
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gvfs-1.0.0/client/gdaemonvfs.c new/gvfs-1.0.1/client/gdaemonvfs.c
--- old/gvfs-1.0.0/client/gdaemonvfs.c 2008-09-14 14:05:05.000000000 +0200
+++ new/gvfs-1.0.1/client/gdaemonvfs.c 2008-09-24 14:26:07.000000000 +0200
@@ -983,6 +983,14 @@
if (g_getenv ("DBUS_SESSION_BUS_ADDRESS") == NULL)
return;
+ /* Make this module resident so that we ground the common
+ * library. If that is unloaded we could get into all kinds
+ * of strange situations. This is safe to do even if we loaded
+ * some other common-using module first as all modules are loaded
+ * before any are freed.
+ */
+ g_type_module_use (G_TYPE_MODULE (module));
+
g_daemon_vfs_register_type (G_TYPE_MODULE (module));
g_daemon_volume_monitor_register_types (G_TYPE_MODULE (module));
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gvfs-1.0.0/client/Makefile.am new/gvfs-1.0.1/client/Makefile.am
--- old/gvfs-1.0.0/client/Makefile.am 2008-09-14 14:05:05.000000000 +0200
+++ new/gvfs-1.0.1/client/Makefile.am 2008-09-24 14:26:07.000000000 +0200
@@ -39,7 +39,7 @@
$(NULL)
vfslibs = \
- $(top_builddir)/common/libgvfscommon-noin.la \
+ $(top_builddir)/common/libgvfscommon.la \
$(DBUS_LIBS) \
$(GLIB_LIBS) \
$(NULL)
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gvfs-1.0.0/common/gmountsource.c new/gvfs-1.0.1/common/gmountsource.c
--- old/gvfs-1.0.0/common/gmountsource.c 2008-09-14 14:05:05.000000000 +0200
+++ new/gvfs-1.0.1/common/gmountsource.c 2008-09-24 14:26:07.000000000 +0200
@@ -35,32 +35,7 @@
char *obj_path;
};
-/* We use this hack to avoid problems when this code
- is shared in both the daemon and the client */
-static GType _g_mount_source_get_type (void) G_GNUC_CONST;
-
-#define g_mount_source_get_type _g_mount_source_get_type
G_DEFINE_TYPE (GMountSource, g_mount_source, G_TYPE_OBJECT)
-#undef g_mount_source_get_type
-
-GType
-g_mount_source_get_type (void)
-{
- static volatile gsize type_volatile = 0;
-
- if (g_once_init_enter (&type_volatile))
- {
- GType type;
-
- type = g_type_from_name ("GMountSource");
- if (type == 0)
- type = _g_mount_source_get_type ();
-
- g_once_init_leave (&type_volatile, type);
- }
-
- return type_volatile;
-}
static void
g_mount_source_finalize (GObject *object)
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gvfs-1.0.0/common/gmounttracker.c new/gvfs-1.0.1/common/gmounttracker.c
--- old/gvfs-1.0.0/common/gmounttracker.c 2008-09-14 14:05:05.000000000 +0200
+++ new/gvfs-1.0.1/common/gmounttracker.c 2008-09-24 14:26:07.000000000 +0200
@@ -54,33 +54,7 @@
DBusConnection *connection;
};
-/* We use this hack to avoid problems when this code
- is shared in both the daemon and the client */
-static GType _g_mount_tracker_get_type (void) G_GNUC_CONST;
-
-#define g_mount_tracker_get_type _g_mount_tracker_get_type
G_DEFINE_TYPE (GMountTracker, g_mount_tracker, G_TYPE_OBJECT)
-#undef g_mount_tracker_get_type
-
-GType
-g_mount_tracker_get_type (void)
-{
- static volatile gsize type_volatile = 0;
-
- if (g_once_init_enter (&type_volatile))
- {
- GType type;
-
- type = g_type_from_name ("GMountTracker");
- if (type == 0)
- type = _g_mount_tracker_get_type ();
-
- g_once_init_leave (&type_volatile, type);
- }
-
- return type_volatile;
-}
-
static DBusHandlerResult g_mount_tracker_filter_func (DBusConnection *conn,
DBusMessage *message,
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gvfs-1.0.0/common/Makefile.am new/gvfs-1.0.1/common/Makefile.am
--- old/gvfs-1.0.0/common/Makefile.am 2008-09-14 14:05:05.000000000 +0200
+++ new/gvfs-1.0.1/common/Makefile.am 2008-09-24 14:26:07.000000000 +0200
@@ -1,6 +1,5 @@
NULL =
-noinst_LTLIBRARIES = libgvfscommon-noin.la
lib_LTLIBRARIES=libgvfscommon.la
INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/gvfs \
@@ -9,7 +8,7 @@
-DG_LOG_DOMAIN=\"GVFS\" -DG_DISABLE_DEPRECATED \
-DDBUS_API_SUBJECT_TO_CHANGE
-libgvfscommon_noin_la_SOURCES = \
+libgvfscommon_la_SOURCES = \
gsysutils.c gsysutils.h \
gdbusutils.c gdbusutils.h \
gmountspec.c gmountspec.h \
@@ -19,9 +18,6 @@
gvfsdaemonprotocol.c gvfsdaemonprotocol.h \
$(NULL)
-libgvfscommon_noin_la_LIBADD = \
+libgvfscommon_la_LIBADD = \
$(DBUS_LIBS) \
$(GLIB_LIBS)
-
-libgvfscommon_la_SOURCES =
-libgvfscommon_la_LIBADD = libgvfscommon-noin.la
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gvfs-1.0.0/config.h.in new/gvfs-1.0.1/config.h.in
--- old/gvfs-1.0.0/config.h.in 2008-09-22 12:21:46.000000000 +0200
+++ new/gvfs-1.0.1/config.h.in 2008-09-24 14:29:51.000000000 +0200
@@ -156,6 +156,10 @@
/* Define to 1 if you have the header file. */
#undef HAVE_UTMP_H
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+ */
+#undef LT_OBJDIR
+
/* Define to 1 if your C compiler doesn't accept -c and -o together. */
#undef NO_MINUS_C_MINUS_O
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gvfs-1.0.0/configure.ac new/gvfs-1.0.1/configure.ac
--- old/gvfs-1.0.0/configure.ac 2008-09-22 12:15:51.000000000 +0200
+++ new/gvfs-1.0.1/configure.ac 2008-09-24 14:26:07.000000000 +0200
@@ -1,6 +1,6 @@
AC_INIT(client/gdaemonvfs.h)
-AM_INIT_AUTOMAKE(gvfs, 1.0.0)
+AM_INIT_AUTOMAKE(gvfs, 1.0.1)
AM_CONFIG_HEADER(config.h)
AM_SANITY_CHECK
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gvfs-1.0.0/missing new/gvfs-1.0.1/missing
--- old/gvfs-1.0.0/missing 2008-02-04 14:53:53.000000000 +0100
+++ new/gvfs-1.0.1/missing 2006-12-06 16:55:19.000000000 +0100
@@ -1,9 +1,9 @@
#! /bin/sh
# Common stub for a few missing GNU programs while installing.
-scriptversion=2006-05-10.23
+scriptversion=2005-06-08.21
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
# Free Software Foundation, Inc.
# Originally by Fran,cois Pinard , 1996.
@@ -33,8 +33,6 @@
fi
run=:
-sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
-sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
# In the cases where this matters, `missing' is being run in the
# srcdir already.
@@ -46,7 +44,7 @@
msg="missing on your system"
-case $1 in
+case "$1" in
--run)
# Try to run requested program, and just exit if it succeeds.
run=
@@ -79,7 +77,6 @@
aclocal touch file \`aclocal.m4'
autoconf touch file \`configure'
autoheader touch file \`config.h.in'
- autom4te touch the output file, or create a stub one
automake touch all \`Makefile.in' files
bison create \`y.tab.[ch]', if possible, from existing .[ch]
flex create \`lex.yy.c', if possible, from existing .c
@@ -109,7 +106,7 @@
# 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
+case "$1" in
lex|yacc)
# Not GNU programs, they don't have --version.
;;
@@ -138,7 +135,7 @@
# If it does not exist, or fails to run (possibly an outdated version),
# try to emulate it.
-case $1 in
+case "$1" in
aclocal*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
@@ -167,7 +164,7 @@
test -z "$files" && files="config.h"
touch_files=
for f in $files; do
- case $f in
+ case "$f" in
*:*) touch_files="$touch_files "`echo "$f" |
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
*) touch_files="$touch_files $f.in";;
@@ -195,8 +192,8 @@
You can get \`$1' as part of \`Autoconf' from any GNU
archive site."
- file=`echo "$*" | sed -n "$sed_output"`
- test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ 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
@@ -217,25 +214,25 @@
in order for those modifications to take effect. You can get
\`Bison' from any GNU archive site."
rm -f y.tab.c y.tab.h
- if test $# -ne 1; then
+ if [ $# -ne 1 ]; then
eval LASTARG="\${$#}"
- case $LASTARG in
+ case "$LASTARG" in
*.y)
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
- if test -f "$SRCFILE"; then
+ if [ -f "$SRCFILE" ]; then
cp "$SRCFILE" y.tab.c
fi
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
- if test -f "$SRCFILE"; then
+ if [ -f "$SRCFILE" ]; then
cp "$SRCFILE" y.tab.h
fi
;;
esac
fi
- if test ! -f y.tab.h; then
+ if [ ! -f y.tab.h ]; then
echo >y.tab.h
fi
- if test ! -f y.tab.c; then
+ if [ ! -f y.tab.c ]; then
echo 'main() { return 0; }' >y.tab.c
fi
;;
@@ -247,18 +244,18 @@
in order for those modifications to take effect. You can get
\`Flex' from any GNU archive site."
rm -f lex.yy.c
- if test $# -ne 1; then
+ if [ $# -ne 1 ]; then
eval LASTARG="\${$#}"
- case $LASTARG in
+ case "$LASTARG" in
*.l)
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
- if test -f "$SRCFILE"; then
+ if [ -f "$SRCFILE" ]; then
cp "$SRCFILE" lex.yy.c
fi
;;
esac
fi
- if test ! -f lex.yy.c; then
+ if [ ! -f lex.yy.c ]; then
echo 'main() { return 0; }' >lex.yy.c
fi
;;
@@ -270,9 +267,11 @@
\`Help2man' package in order for those modifications to take
effect. You can get \`Help2man' from any GNU archive site."
- file=`echo "$*" | sed -n "$sed_output"`
- test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
- if test -f "$file"; then
+ 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
@@ -290,17 +289,11 @@
DU, IRIX). You might want to install the \`Texinfo' package or
the \`GNU make' package. Grab either from any GNU archive site."
# The file to touch is that specified with -o ...
- file=`echo "$*" | sed -n "$sed_output"`
- test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
if test -z "$file"; then
# ... or it is the one specified with @setfilename ...
infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
- file=`sed -n '
- /^@setfilename/{
- s/.* \([^ ]*\) *$/\1/
- p
- q
- }' $infile`
+ file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile`
# ... or it is derived from the source name (dir/f.texi becomes f.info)
test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
fi
@@ -324,13 +317,13 @@
fi
firstarg="$1"
if shift; then
- case $firstarg in
+ case "$firstarg" in
*o*)
firstarg=`echo "$firstarg" | sed s/o//`
tar "$firstarg" "$@" && exit 0
;;
esac
- case $firstarg in
+ case "$firstarg" in
*h*)
firstarg=`echo "$firstarg" | sed s/h//`
tar "$firstarg" "$@" && exit 0
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gvfs-1.0.0/monitor/gphoto2/Makefile.am new/gvfs-1.0.1/monitor/gphoto2/Makefile.am
--- old/gvfs-1.0.0/monitor/gphoto2/Makefile.am 2008-09-14 14:05:05.000000000 +0200
+++ new/gvfs-1.0.1/monitor/gphoto2/Makefile.am 2008-09-24 14:26:07.000000000 +0200
@@ -40,7 +40,7 @@
gvfs_gphoto2_volume_monitor_LDADD = \
$(GLIB_LIBS) \
$(HAL_LIBS) \
- $(top_builddir)/common/libgvfscommon-noin.la \
+ $(top_builddir)/common/libgvfscommon.la \
$(top_builddir)/monitor/proxy/libgvfsproxyvolumemonitordaemon-noin.la \
$(NULL)
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gvfs-1.0.0/monitor/hal/Makefile.am new/gvfs-1.0.1/monitor/hal/Makefile.am
--- old/gvfs-1.0.0/monitor/hal/Makefile.am 2008-09-14 14:05:05.000000000 +0200
+++ new/gvfs-1.0.1/monitor/hal/Makefile.am 2008-09-24 14:26:07.000000000 +0200
@@ -42,7 +42,7 @@
gvfs_hal_volume_monitor_LDADD = \
$(GLIB_LIBS) \
$(HAL_LIBS) \
- $(top_builddir)/common/libgvfscommon-noin.la \
+ $(top_builddir)/common/libgvfscommon.la \
$(top_builddir)/monitor/proxy/libgvfsproxyvolumemonitordaemon-noin.la \
$(NULL)
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gvfs-1.0.0/monitor/proxy/gproxyvolumemonitor.c new/gvfs-1.0.1/monitor/proxy/gproxyvolumemonitor.c
--- old/gvfs-1.0.0/monitor/proxy/gproxyvolumemonitor.c 2008-09-14 14:05:05.000000000 +0200
+++ new/gvfs-1.0.1/monitor/proxy/gproxyvolumemonitor.c 2008-09-24 14:26:07.000000000 +0200
@@ -58,6 +58,7 @@
G_LOCK_DEFINE_STATIC(proxy_vm);
static DBusConnection *the_session_bus = NULL;
+static gboolean the_session_bus_is_integrated = FALSE;
static GHashTable *the_volume_monitors = NULL;
struct _GProxyVolumeMonitor {
@@ -81,6 +82,30 @@
static void signal_emit_in_idle (gpointer object, const char *signal_name, gpointer other_object);
+static gboolean is_supported (GProxyVolumeMonitorClass *klass);
+
+/* The is_supported API is kinda lame and doesn't pass in the class,
+ so we work around this with this hack */
+typedef gboolean (*is_supported_func) (void);
+
+static GProxyVolumeMonitorClass *is_supported_classes[10] = { NULL };
+static gboolean is_supported_0 (void) { return is_supported (is_supported_classes[0]); };
+static gboolean is_supported_1 (void) { return is_supported (is_supported_classes[1]); };
+static gboolean is_supported_2 (void) { return is_supported (is_supported_classes[2]); };
+static gboolean is_supported_3 (void) { return is_supported (is_supported_classes[3]); };
+static gboolean is_supported_4 (void) { return is_supported (is_supported_classes[4]); };
+static gboolean is_supported_5 (void) { return is_supported (is_supported_classes[5]); };
+static gboolean is_supported_6 (void) { return is_supported (is_supported_classes[6]); };
+static gboolean is_supported_7 (void) { return is_supported (is_supported_classes[7]); };
+static gboolean is_supported_8 (void) { return is_supported (is_supported_classes[8]); };
+static gboolean is_supported_9 (void) { return is_supported (is_supported_classes[9]); };
+static is_supported_func is_supported_funcs[] = {
+ is_supported_0, is_supported_1, is_supported_2, is_supported_3,
+ is_supported_4, is_supported_5, is_supported_6, is_supported_7,
+ is_supported_8, is_supported_9,
+ NULL
+};
+
static char *
get_match_rule (GProxyVolumeMonitor *monitor)
{
@@ -606,6 +631,7 @@
static void
g_proxy_volume_monitor_init (GProxyVolumeMonitor *monitor)
{
+ g_proxy_volume_monitor_setup_session_bus_connection (TRUE);
}
static void
@@ -617,15 +643,22 @@
typedef struct {
char *dbus_name;
gboolean is_native;
+ int is_supported_nr;
} ProxyClassData;
static ProxyClassData *
proxy_class_data_new (const char *dbus_name, gboolean is_native)
{
ProxyClassData *data;
+ static int is_supported_nr = 0;
+
data = g_new0 (ProxyClassData, 1);
data->dbus_name = g_strdup (dbus_name);
data->is_native = is_native;
+ data->is_supported_nr = is_supported_nr++;
+
+ g_assert (is_supported_funcs[data->is_supported_nr] != NULL);
+
return data;
}
@@ -635,15 +668,79 @@
ProxyClassData *data = (ProxyClassData *) class_data;
klass->dbus_name = g_strdup (data->dbus_name);
klass->is_native = data->is_native;
+ klass->is_supported_nr = data->is_supported_nr;
g_proxy_volume_monitor_class_intern_init (klass);
}
static gboolean
-is_supported (void)
+is_remote_monitor_supported (const char *dbus_name)
{
- if (the_session_bus != NULL)
- return TRUE;
- return FALSE;
+ DBusMessage *message;
+ DBusMessage *reply;
+ DBusError dbus_error;
+ dbus_bool_t is_supported;
+
+ message = NULL;
+ reply = NULL;
+ is_supported = FALSE;
+
+ message = dbus_message_new_method_call (dbus_name,
+ "/",
+ "org.gtk.Private.RemoteVolumeMonitor",
+ "IsSupported");
+ if (message == NULL)
+ {
+ g_warning ("Cannot allocate memory for DBusMessage");
+ goto fail;
+ }
+ dbus_error_init (&dbus_error);
+ reply = dbus_connection_send_with_reply_and_block (the_session_bus,
+ message,
+ -1,
+ &dbus_error);
+ if (dbus_error_is_set (&dbus_error))
+ {
+ g_warning ("invoking IsSupported() failed for remote volume monitor with dbus name %s: %s: %s",
+ dbus_name,
+ dbus_error.name,
+ dbus_error.message);
+ dbus_error_free (&dbus_error);
+ goto fail;
+ }
+
+ if (!dbus_message_get_args (reply, &dbus_error,
+ DBUS_TYPE_BOOLEAN, &is_supported,
+ DBUS_TYPE_INVALID))
+ {
+ g_warning ("Error parsing args in reply for IsSupported(): %s: %s", dbus_error.name, dbus_error.message);
+ dbus_error_free (&dbus_error);
+ goto fail;
+ }
+
+ if (!is_supported)
+ g_warning ("remote volume monitor with dbus name %s is not supported", dbus_name);
+
+ fail:
+ if (message != NULL)
+ dbus_message_unref (message);
+ if (reply != NULL)
+ dbus_message_unref (reply);
+ return is_supported;
+}
+
+static gboolean
+is_supported (GProxyVolumeMonitorClass *klass)
+{
+ gboolean res;
+
+ G_LOCK (proxy_vm);
+ res = g_proxy_volume_monitor_setup_session_bus_connection (FALSE);
+ G_UNLOCK (proxy_vm);
+
+ if (res)
+ res = is_remote_monitor_supported (klass->dbus_name);
+
+ return res;
}
static GVolume *
@@ -702,6 +799,7 @@
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
GVolumeMonitorClass *monitor_class = G_VOLUME_MONITOR_CLASS (klass);
GNativeVolumeMonitorClass *native_class = G_NATIVE_VOLUME_MONITOR_CLASS (klass);
+ int i;
gobject_class->constructor = g_proxy_volume_monitor_constructor;
gobject_class->finalize = g_proxy_volume_monitor_finalize;
@@ -712,7 +810,10 @@
monitor_class->get_volume_for_uuid = get_volume_for_uuid;
monitor_class->get_mount_for_uuid = get_mount_for_uuid;
monitor_class->adopt_orphan_mount = adopt_orphan_mount;
- monitor_class->is_supported = is_supported;
+
+ i = klass->is_supported_nr;
+ is_supported_classes[i] = klass;
+ monitor_class->is_supported = is_supported_funcs[i];
native_class->get_mount_for_mount_path = get_mount_for_mount_path;
}
@@ -1041,47 +1142,47 @@
priority);
}
+/* Call with proxy_vm lock held */
gboolean
-g_proxy_volume_monitor_setup_session_bus_connection (void)
+g_proxy_volume_monitor_setup_session_bus_connection (gboolean need_integration)
{
gboolean ret;
DBusError dbus_error;
ret = FALSE;
- G_LOCK (proxy_vm);
if (the_session_bus != NULL)
- {
- g_warning ("session bus connection is already up!");
- dbus_connection_ref (the_session_bus);
- goto out;
- }
+ goto has_bus_already;
/* This is so that system daemons can use gio
* without spawning private dbus instances.
* See bug 526454.
*/
if (g_getenv ("DBUS_SESSION_BUS_ADDRESS") == NULL)
- {
- goto out;
- }
+ goto out;
dbus_error_init (&dbus_error);
the_session_bus = dbus_bus_get_private (DBUS_BUS_SESSION, &dbus_error);
- if (dbus_error_is_set (&dbus_error)) {
- g_warning ("cannot connect to the session bus: %s: %s", dbus_error.name, dbus_error.message);
- dbus_error_free (&dbus_error);
- goto out;
- }
-
- _g_dbus_connection_integrate_with_main (the_session_bus);
+ if (dbus_error_is_set (&dbus_error))
+ {
+ g_warning ("cannot connect to the session bus: %s: %s", dbus_error.name, dbus_error.message);
+ dbus_error_free (&dbus_error);
+ goto out;
+ }
the_volume_monitors = g_hash_table_new (g_direct_hash, g_direct_equal);
+ has_bus_already:
+
+ if (need_integration && !the_session_bus_is_integrated)
+ {
+ _g_dbus_connection_integrate_with_main (the_session_bus);
+ the_session_bus_is_integrated = TRUE;
+ }
+
ret = TRUE;
out:
- G_UNLOCK (proxy_vm);
return ret;
}
@@ -1091,8 +1192,9 @@
G_LOCK (proxy_vm);
if (the_session_bus != NULL)
{
- /* it would be nice to check that refcount==1 here */
- _g_dbus_connection_remove_from_main (the_session_bus);
+ if (the_session_bus_is_integrated)
+ _g_dbus_connection_remove_from_main (the_session_bus);
+ the_session_bus_is_integrated = FALSE;
dbus_connection_close (the_session_bus);
the_session_bus = NULL;
@@ -1102,62 +1204,6 @@
G_UNLOCK (proxy_vm);
}
-static gboolean
-is_remote_monitor_supported (const char *dbus_name)
-{
- DBusMessage *message;
- DBusMessage *reply;
- DBusError dbus_error;
- dbus_bool_t is_supported;
-
- message = NULL;
- reply = NULL;
- is_supported = FALSE;
-
- message = dbus_message_new_method_call (dbus_name,
- "/",
- "org.gtk.Private.RemoteVolumeMonitor",
- "IsSupported");
- if (message == NULL)
- {
- g_warning ("Cannot allocate memory for DBusMessage");
- goto fail;
- }
- dbus_error_init (&dbus_error);
- reply = dbus_connection_send_with_reply_and_block (the_session_bus,
- message,
- -1,
- &dbus_error);
- if (dbus_error_is_set (&dbus_error))
- {
- g_warning ("invoking IsSupported() failed for remote volume monitor with dbus name %s: %s: %s",
- dbus_name,
- dbus_error.name,
- dbus_error.message);
- dbus_error_free (&dbus_error);
- goto fail;
- }
-
- if (!dbus_message_get_args (reply, &dbus_error,
- DBUS_TYPE_BOOLEAN, &is_supported,
- DBUS_TYPE_INVALID))
- {
- g_warning ("Error parsing args in reply for IsSupported(): %s: %s", dbus_error.name, dbus_error.message);
- dbus_error_free (&dbus_error);
- goto fail;
- }
-
- if (!is_supported)
- g_warning ("remote volume monitor with dbus name %s is not supported", dbus_name);
-
- fail:
- if (message != NULL)
- dbus_message_unref (message);
- if (reply != NULL)
- dbus_message_unref (reply);
- return is_supported;
-}
-
void
g_proxy_volume_monitor_register (GIOModule *module)
{
@@ -1256,14 +1302,11 @@
native_priority = 0;
}
- if (is_remote_monitor_supported (dbus_name))
- {
- register_volume_monitor (G_TYPE_MODULE (module),
- type_name,
- dbus_name,
- is_native,
- native_priority);
- }
+ register_volume_monitor (G_TYPE_MODULE (module),
+ type_name,
+ dbus_name,
+ is_native,
+ native_priority);
cont:
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gvfs-1.0.0/monitor/proxy/gproxyvolumemonitor.h new/gvfs-1.0.1/monitor/proxy/gproxyvolumemonitor.h
--- old/gvfs-1.0.0/monitor/proxy/gproxyvolumemonitor.h 2008-09-14 14:05:05.000000000 +0200
+++ new/gvfs-1.0.1/monitor/proxy/gproxyvolumemonitor.h 2008-09-24 14:26:07.000000000 +0200
@@ -49,6 +49,7 @@
GNativeVolumeMonitorClass parent_class;
char *dbus_name;
gboolean is_native;
+ int is_supported_nr;
};
GType g_proxy_volume_monitor_get_type (void) G_GNUC_CONST;
@@ -63,7 +64,7 @@
DBusConnection *g_proxy_volume_monitor_get_dbus_connection (GProxyVolumeMonitor *volume_monitor);
const char *g_proxy_volume_monitor_get_dbus_name (GProxyVolumeMonitor *volume_monitor);
-gboolean g_proxy_volume_monitor_setup_session_bus_connection (void);
+gboolean g_proxy_volume_monitor_setup_session_bus_connection (gboolean need_integration);
void g_proxy_volume_monitor_teardown_session_bus_connection (void);
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gvfs-1.0.0/monitor/proxy/Makefile.am new/gvfs-1.0.1/monitor/proxy/Makefile.am
--- old/gvfs-1.0.0/monitor/proxy/Makefile.am 2008-09-14 14:05:05.000000000 +0200
+++ new/gvfs-1.0.1/monitor/proxy/Makefile.am 2008-09-24 14:26:07.000000000 +0200
@@ -33,7 +33,7 @@
libgioremote_volume_monitor_la_LIBADD = \
$(GLIB_LIBS) \
$(DBUS_LIBS) \
- $(top_builddir)/common/libgvfscommon-noin.la \
+ $(top_builddir)/common/libgvfscommon.la \
$(NULL)
############################################################################
@@ -57,7 +57,7 @@
libgvfsproxyvolumemonitordaemon_noin_la_LIBADD = \
$(GLIB_LIBS) \
$(DBUS_LIBS) \
- $(top_builddir)/common/libgvfscommon-noin.la \
+ $(top_builddir)/common/libgvfscommon.la \
$(NULL)
clean-local:
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gvfs-1.0.0/monitor/proxy/remote-volume-monitor-module.c new/gvfs-1.0.1/monitor/proxy/remote-volume-monitor-module.c
--- old/gvfs-1.0.0/monitor/proxy/remote-volume-monitor-module.c 2008-09-14 14:05:05.000000000 +0200
+++ new/gvfs-1.0.1/monitor/proxy/remote-volume-monitor-module.c 2008-09-24 14:26:07.000000000 +0200
@@ -43,9 +43,6 @@
bindtextdomain (GETTEXT_PACKAGE, GVFS_LOCALEDIR);
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
- if (!g_proxy_volume_monitor_setup_session_bus_connection ())
- goto out;
-
g_proxy_drive_register (module);
g_proxy_mount_register (module);
g_proxy_volume_register (module);
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gvfs-1.0.0/NEWS new/gvfs-1.0.1/NEWS
--- old/gvfs-1.0.0/NEWS 2008-09-22 12:16:53.000000000 +0200
+++ new/gvfs-1.0.1/NEWS 2008-09-24 14:28:38.000000000 +0200
@@ -1,3 +1,8 @@
+Major changes in 1.0.1
+
+* Bug fixes:
+ 547568 - gvfsd-trash crash due to race condition
+
Major changes in 1.0.0
======================
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gvfs-1.0.0/po/ChangeLog new/gvfs-1.0.1/po/ChangeLog
--- old/gvfs-1.0.0/po/ChangeLog 2008-09-22 12:00:13.000000000 +0200
+++ new/gvfs-1.0.1/po/ChangeLog 2008-09-24 14:26:07.000000000 +0200
@@ -1,3 +1,5 @@
+=== gvfs 1.0.0. ===
+
2008-09-22 Shankar Prasad
* kn.po: Added Kannada Translation
++++++ gvfs-dice-backend.patch ++++++
++++ 1549 lines (skipped)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org