openSUSE Commits
Threads by month
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
October 2006
- 1 participants
- 1670 discussions
Hello community,
here is the log from the commit of package gnome-blog
checked in at Tue Oct 31 00:10:39 CET 2006.
--------
--- GNOME/gnome-blog/gnome-blog.changes 2006-08-16 12:12:38.000000000 +0200
+++ /mounts/work_src_done/STABLE/gnome-blog/gnome-blog.changes 2006-10-30 23:48:59.000000000 +0100
@@ -1,0 +2,5 @@
+Mon Oct 30 23:48:46 CET 2006 - jhargadon(a)suse.de
+
+- added gnome-python-desktop to Requires
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gnome-blog.spec ++++++
--- /var/tmp/diff_new_pack.EMNUWF/_old 2006-10-31 00:10:34.000000000 +0100
+++ /var/tmp/diff_new_pack.EMNUWF/_new 2006-10-31 00:10:34.000000000 +0100
@@ -13,12 +13,12 @@
Name: gnome-blog
BuildRequires: gnutls-devel intltool libglade2-devel libgnomeprintui-devel libgnomeui-devel libwnck-devel mDNSResponder-devel perl-XML-Parser python-devel python-gnome-devel python-gobject2-devel update-desktop-files
Version: 0.9.1
-Release: 4
-License: GPL
+Release: 22
+License: GNU General Public License (GPL) - all versions
Group: Productivity/Networking/Web/Utilities
Autoreqprov: on
-Requires: python-gnome python-gnome-extras
-Summary: A panel applet that can post to bloggerAPI compatible blogs.
+Requires: python-gnome python-gnome-extras gnome-python-desktop
+Summary: A GNOME Panel Applet for Posting to bloggerAPI-Compatible Blogs
URL: http://www.gnome.org/~seth/gnome-blog/
Source: %{name}-%{version}.tar.bz2
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -52,7 +52,7 @@
--datadir=%prefix/share \
--localstatedir=/var/%_lib \
--with-kde-datadir=/opt/kde3/share
-make
+make %{?jobs:-j %jobs}
%install
export GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1
@@ -90,6 +90,8 @@
%{prefix}/share/pixmaps/gnome-blog.png
%changelog -n gnome-blog
+* Mon Oct 30 2006 - jhargadon(a)suse.de
+- added gnome-python-desktop to Requires
* Wed Aug 16 2006 - cthiel(a)suse.de
- buildrequire python-gnome-devel instead of python-gnome
* Wed Aug 16 2006 - ro(a)suse.de
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package drbd
checked in at Tue Oct 31 00:10:29 CET 2006.
--------
--- drbd/drbd.changes 2006-10-06 14:05:13.000000000 +0200
+++ /mounts/work_src_done/STABLE/drbd/drbd.changes 2006-10-30 23:33:26.000000000 +0100
@@ -1,0 +2,7 @@
+Mon Oct 30 23:33:13 CET 2006 - lmb(a)suse.de
+
+- Update to the officially released 0.7.22 version.
+- Implement "freeze_io" feature.
+- convert-MODULE_PARM.diff: drop unneeded patch.
+
+-------------------------------------------------------------------
Old:
----
convert-MODULE_PARM.diff
New:
----
drbd-kver.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ drbd.spec ++++++
--- /var/tmp/diff_new_pack.hjkqG2/_old 2006-10-31 00:10:06.000000000 +0100
+++ /var/tmp/diff_new_pack.hjkqG2/_new 2006-10-31 00:10:06.000000000 +0100
@@ -13,14 +13,14 @@
BuildRequires: glib-devel kernel-source kernel-syms
Summary: Distributed Replicated Block Device
Version: 0.7.22
-Release: 1
+Release: 15
Source: %{name}-%{version}.tar.gz
# Source: drbd-SVN.tar.bz2
Source1: drbd-Makefile.module
Source2: drbd-modprobe.d
Patch0: drbd-optflags.patch
-Patch2: convert-MODULE_PARM.diff
-License: GPL
+Patch1: drbd-kver.patch
+License: GNU General Public License (GPL) - all versions
Group: Productivity/Clustering/HA
Provides: drbdsetup drbd-control
URL: http://www.drbd.org/
@@ -59,7 +59,7 @@
%prep
%setup -n drbd-%{version}
%patch0 -p1
-%patch2 -p1
+%patch1 -p0
mkdir source
cp -a drbd/. source/. || :
cp %{SOURCE1} source/Makefile
@@ -139,16 +139,20 @@
%doc scripts/drbd.conf
%changelog -n drbd
+* Mon Oct 30 2006 - lmb(a)suse.de
+- Update to the officially released 0.7.22 version.
+- Implement "freeze_io" feature.
+- convert-MODULE_PARM.diff: drop unneeded patch.
* Fri Oct 06 2006 - lmb(a)suse.de
- Update to 0.7.22:
-- In protocol A and B, on connection loss, drbd could "forget" to set
+ - In protocol A and B, on connection loss, drbd could "forget" to set
certain areas out of sync.
-- fix races between failure in drbd_send_dblock and concurrently
+ - fix races between failure in drbd_send_dblock and concurrently
running tl_clear.
-- fix potential access-afer-free in drbd_dio_end.
-- fix possible list corruption respective resulting deadlock in
+ - fix potential access-afer-free in drbd_dio_end.
+ - fix possible list corruption respective resulting deadlock in
receive_DataRequest.
-- improved the drbd_thread_stop / start code.
+ - improved the drbd_thread_stop / start code.
* Mon Aug 14 2006 - lmb(a)suse.de
- Update to 0.7.21.
* Fixed the "syncer stalled" after reconnect symptom.
@@ -195,18 +199,18 @@
GFP_NOIO) to avoid possible deadlock.
* Mon Mar 06 2006 - lmb(a)suse.de
- Import upstream fixes from 0.7.17:
-- There was a bug that could cause the activity log to be not applied
+ - There was a bug that could cause the activity log to be not applied
after a primary crash, when an other size than 127 elements was
configured.
-- There was a bug in the activity log code, that could cause that the
+ - There was a bug in the activity log code, that could cause that the
latest update to the AL is omitted at recovery time.
-- The "Marked additional XXKB as out-of-synced based on AL." message
+ - The "Marked additional XXKB as out-of-synced based on AL." message
showed one one eighth of the real amount.
* Thu Feb 16 2006 - lmb(a)suse.de
- Update to 0.7.16, new fixes:
-- DRBD no longer shrinks an consistent device if it gets connected to
+ - DRBD no longer shrinks an consistent device if it gets connected to
an smaller peer or attached to a smaller disk.
-- There was a bug related to the degr-wcf-timeout config option, it was
+ - There was a bug related to the degr-wcf-timeout config option, it was
never used in recent DRBD releases. Fixed.
* Fri Feb 03 2006 - agruen(a)suse.de
- drbd.spec: Replace %%arch with %%_target_cpu.
@@ -262,15 +266,15 @@
smooth.
* Fri Aug 06 2004 - lmb(a)suse.de
- Update to 0.7.2-final (still from SVN).
-- Proper handling of backing storage devices that occasionally fail
+ - Proper handling of backing storage devices that occasionally fail
READA (=read ahead) requests. (E.g. LVM and MD) DRBD now fails READA
requests itself, if a resynchronisation is running and it would need
to fetch the block from its peer.
-- "drbdadm adjust" had a race, which caused random errors. ( Missing
+ - "drbdadm adjust" had a race, which caused random errors. ( Missing
waitpid() ). Fixed now.
-- Properly substract SyncPause times from the syncer performance
+ - Properly substract SyncPause times from the syncer performance
numbers.
-- Fix to the syncer progress bar in /proc/drbd.
+ - Fix to the syncer progress bar in /proc/drbd.
* Fri Aug 06 2004 - lmb(a)suse.de
- Fix minor module build issue.
* Wed Aug 04 2004 - lmb(a)suse.de
@@ -290,11 +294,11 @@
- Merge upstream code cleanups.
* Fri Jun 18 2004 - lmb(a)suse.de
- Update to drbd-0.7-pre8 from upstream:
-- Disabling zero-copy IO for now (#41852).
-- Bitmap code restructured and lots of bugs fixed.
-- Safe default: Always force a full-resync on initial setup.
-- Ensuring that we never sync/read from an inconsistent peer.
-- Various other fixes.
+ - Disabling zero-copy IO for now (#41852).
+ - Bitmap code restructured and lots of bugs fixed.
+ - Safe default: Always force a full-resync on initial setup.
+ - Ensuring that we never sync/read from an inconsistent peer.
+ - Various other fixes.
* Wed Jun 09 2004 - lmb(a)suse.de
- fix ioctls on s390x
- Fix failure in local disk handling.
@@ -374,21 +378,21 @@
- Add all directories to filelist
* Tue Jun 03 2003 - jg(a)suse.de
- Update to 0.6.4, changes:
-- Reworked build system (i.e. better Makefiles)
-- SyncAll works forward insead of backwards. Improves performance on some
+ - Reworked build system (i.e. better Makefiles)
+ - SyncAll works forward insead of backwards. Improves performance on some
storage controlers.
-- Reworked /etc/init.d/drbd script (i.e. better support of different bash
+ - Reworked /etc/init.d/drbd script (i.e. better support of different bash
releases)
* Wed Mar 26 2003 - jg(a)suse.de
- Update to 0.6.3, changes:
-- Lockup of primary if secondary fails during resync. Fixed. (Stupid!)
-- Probabely SMP only deadlock in the drop-conection code path.
-- Improved connect code. (The old code could trap into a distributed
+ - Lockup of primary if secondary fails during resync. Fixed. (Stupid!)
+ - Probabely SMP only deadlock in the drop-conection code path.
+ - Improved connect code. (The old code could trap into a distributed
deadlock, resulting in an endless connect/disconnect loop.)
-- The 'BitMap too small bug' was actually caused by a patch in
+ - The 'BitMap too small bug' was actually caused by a patch in
SuSE's distribution kernel. This patch makes DRBD 'more' compatible
with SuSE's kernel.
-- Improved code to allocate buffers for the rsynchronisation process.
+ - Improved code to allocate buffers for the rsynchronisation process.
The old code allocated physical adjacent pages although the syncer
does not need them! The old code could fail under high memory pressure.
- Removed BitMap too small patch (is part of 0.6.3)
@@ -399,8 +403,8 @@
- Added "BitMap too small" fix (Bug #25384)
* Wed Feb 12 2003 - jg(a)suse.de
- Updated to 0.6.2
-- SMP fix in drbd_dio_end_sec()
-- /etc/init.d/drbd knows about returncodes of fsck
+ - SMP fix in drbd_dio_end_sec()
+ - /etc/init.d/drbd knows about returncodes of fsck
* Tue Dec 17 2002 - jg(a)suse.de
- Moved drbdsetup from /usr/sbin to /sbin to support /usr on nfs
- Removed accidentialy included CVS directories from tar-file
@@ -411,20 +415,20 @@
- changed neededforbuild <sp> to <opensp>
* Wed Oct 02 2002 - jg(a)suse.de
- Updated to 0.6.1-pre17, changes:
-- Merged syncer speedup code by Lars G. Ellenberg
-- Merged most of Lars' modifications to the ioctl interface
-- Marged the bug-fixes from the lge-branch
-- Implemented the TimoutCounter in the meta-data code.
-- Fixed a bug that could cause lockup of the primary node on
+ - Merged syncer speedup code by Lars G. Ellenberg
+ - Merged most of Lars' modifications to the ioctl interface
+ - Marged the bug-fixes from the lge-branch
+ - Implemented the TimoutCounter in the meta-data code.
+ - Fixed a bug that could cause lockup of the primary node on
SMP systems using a SCSI device for DRBD, it always happened
during resynchronisation. (!)
- Checking /.buildenv now in buildsystem instead of /etc/*-release
* Tue Sep 03 2002 - jg(a)suse.de
- Init script fixes:
-- Removed abortion on non existing block devices (may
+ - Removed abortion on non existing block devices (may
break LVM setups)
-- Sourcing . /etc/rc.status earlier now
-- Allowing execution via rcdrbd link
+ - Sourcing . /etc/rc.status earlier now
+ - Allowing execution via rcdrbd link
* Mon Sep 02 2002 - jg(a)suse.de
- Incorporated latest changes from CVS
- Using lge branch now (syncer much faster)
@@ -445,9 +449,9 @@
- Fixed broken specfile
* Mon Mar 04 2002 - jg(a)suse.de
- updated to bugfix release 0.6.1pre10
-- Data-corruption bug in SyncAll fixed (was introduced in pre9)
-- Fixed an OOPS in tl_check_sector() (was introduced in pre9)
-- Fixed Linux-2.2.x compability (was broken in pre9)
+ - Data-corruption bug in SyncAll fixed (was introduced in pre9)
+ - Fixed an OOPS in tl_check_sector() (was introduced in pre9)
+ - Fixed Linux-2.2.x compability (was broken in pre9)
- removed documentation patch (not needed anymore)
* Wed Feb 20 2002 - jg(a)suse.de
- modified init script to honor inittimeout settings
++++++ drbd-0.7.22.tar.gz ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/drbd-0.7.22/.filelist new/drbd-0.7.22/.filelist
--- old/drbd-0.7.22/.filelist 2006-10-06 14:00:14.000000000 +0200
+++ new/drbd-0.7.22/.filelist 2006-10-30 22:52:11.000000000 +0100
@@ -1,36 +1,38 @@
drbd-0.7.22/upgrade_0.6.x_to_0.7.0.txt
-drbd-0.7.22/ChangeLog
drbd-0.7.22/scripts/drbd.conf
+drbd-0.7.22/scripts/get_uts_release.sh
drbd-0.7.22/scripts/drbd.gentoo
drbd-0.7.22/scripts/drbddisk
drbd-0.7.22/scripts/adjust_drbd_config_h.sh
drbd-0.7.22/scripts/drbd
drbd-0.7.22/scripts/Makefile
-drbd-0.7.22/scripts/patch-kernel
drbd-0.7.22/scripts/README
+drbd-0.7.22/scripts/patch-kernel
+drbd-0.7.22/ChangeLog
drbd-0.7.22/benchmark/dm.c
+drbd-0.7.22/benchmark/io-latency-test.c
drbd-0.7.22/benchmark/report_to_html.pl
drbd-0.7.22/benchmark/Makefile
-drbd-0.7.22/benchmark/run.sh
drbd-0.7.22/benchmark/README
+drbd-0.7.22/benchmark/run.sh
drbd-0.7.22/README
drbd-0.7.22/INSTALL
drbd-0.7.22/COPYING
-drbd-0.7.22/drbd.spec.in
drbd-0.7.22/documentation/drbd.conf.sgml
drbd-0.7.22/documentation/drbddisk.sgml
drbd-0.7.22/documentation/drbd.sgml
-drbd-0.7.22/documentation/drbdsetup.sgml
drbd-0.7.22/documentation/Makefile
drbd-0.7.22/documentation/Makefile.lang
+drbd-0.7.22/documentation/drbdsetup.sgml
drbd-0.7.22/documentation/drbdadm.sgml
+drbd-0.7.22/drbd.spec.in
drbd-0.7.22/drbd/drbd_proc.c
drbd-0.7.22/drbd/drbd_receiver.c
drbd-0.7.22/drbd/Makefile-2.6
drbd-0.7.22/drbd/Kconfig
drbd-0.7.22/drbd/drbd_fs.c
-drbd-0.7.22/drbd/drbd_actlog.c
drbd-0.7.22/drbd/drbd_worker.c
+drbd-0.7.22/drbd/drbd_actlog.c
drbd-0.7.22/drbd/drbd_compat_wrappers.h
drbd-0.7.22/drbd/drbd_compat_types.h
drbd-0.7.22/drbd/drbd_bitmap.c
@@ -48,38 +50,38 @@
drbd-0.7.22/drbd/Makefile
drbd-0.7.22/drbd/Makefile-2.4
drbd-0.7.22/upgrade_0.7.0_to_0.7.1.txt
-drbd-0.7.22/testing/uml-2.6.gdbinit
drbd-0.7.22/testing/ioctl_structs_sizes.c
+drbd-0.7.22/testing/uml-2.6.gdbinit
drbd-0.7.22/testing/compare.pl
drbd-0.7.22/testing/test_al.pl
drbd-0.7.22/testing/uml_profile-USER@HOST
drbd-0.7.22/testing/access_and_verify.c
drbd-0.7.22/testing/show_size.c
-drbd-0.7.22/testing/uml-2.4.gdbinit
drbd-0.7.22/testing/Makefile
drbd-0.7.22/testing/README
+drbd-0.7.22/testing/uml-2.4.gdbinit
drbd-0.7.22/testing/write_gc.pl
drbd-0.7.22/testing/CTH/T-006.sh
-drbd-0.7.22/testing/CTH/LGE_CTH.pm
drbd-0.7.22/testing/CTH/T-007.sh
+drbd-0.7.22/testing/CTH/LGE_CTH.pm
drbd-0.7.22/testing/CTH/functions.sh
drbd-0.7.22/testing/CTH/uml-minna.conf
drbd-0.7.22/testing/CTH/CTH_bash.sh
drbd-0.7.22/testing/CTH/generic_test.pl
drbd-0.7.22/testing/CTH/tiobench/BUGS
-drbd-0.7.22/testing/CTH/tiobench/tiotest.h
drbd-0.7.22/testing/CTH/tiobench/tiobench-0.3.3.diff
+drbd-0.7.22/testing/CTH/tiobench/tiotest.h
drbd-0.7.22/testing/CTH/tiobench/crc32.h
drbd-0.7.22/testing/CTH/tiobench/TODO
drbd-0.7.22/testing/CTH/tiobench/tiobench.pl
drbd-0.7.22/testing/CTH/tiobench/COPYING
drbd-0.7.22/testing/CTH/tiobench/tiosum.pl
drbd-0.7.22/testing/CTH/tiobench/tiotest.c
-drbd-0.7.22/testing/CTH/tiobench/crc32.c
-drbd-0.7.22/testing/CTH/tiobench/README
drbd-0.7.22/testing/CTH/tiobench/Makefile
-drbd-0.7.22/testing/CTH/chipdale.conf
+drbd-0.7.22/testing/CTH/tiobench/README
+drbd-0.7.22/testing/CTH/tiobench/crc32.c
drbd-0.7.22/testing/CTH/README
+drbd-0.7.22/testing/CTH/chipdale.conf
drbd-0.7.22/testing/CTH/CTH_bash.conf
drbd-0.7.22/testing/CTH/LGE_CTH/FileSystem.pm
drbd-0.7.22/testing/CTH/LGE_CTH/Node.pm
@@ -96,8 +98,8 @@
drbd-0.7.22/testing/CTH/T-000.sh
drbd-0.7.22/testing/CTH/T-001.sh
drbd-0.7.22/testing/CTH/T-002.sh
-drbd-0.7.22/testing/CTH/CTH_bash.helpers
drbd-0.7.22/testing/CTH/T-003.sh
+drbd-0.7.22/testing/CTH/CTH_bash.helpers
drbd-0.7.22/testing/CTH/T-004.sh
drbd-0.7.22/testing/CTH/bloodymary.sh.conf
drbd-0.7.22/testing/CTH/T-005.sh
@@ -105,13 +107,13 @@
drbd-0.7.22/testing/uml-screen-debug
drbd-0.7.22/Makefile
drbd-0.7.22/user/drbdadm_parser.y
-drbd-0.7.22/user/drbdadm_main.c
drbd-0.7.22/user/drbd_limits.h
+drbd-0.7.22/user/drbdadm_main.c
drbd-0.7.22/user/drbdadm.h
drbd-0.7.22/user/drbdadm_scanner.fl
drbd-0.7.22/user/drbdadm_adjust.c
-drbd-0.7.22/user/drbdsetup.c
drbd-0.7.22/user/Makefile
+drbd-0.7.22/user/drbdsetup.c
drbd-0.7.22/documentation/drbd.8
drbd-0.7.22/documentation/drbd.conf.5
drbd-0.7.22/documentation/drbdsetup.8
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/drbd-0.7.22/ChangeLog new/drbd-0.7.22/ChangeLog
--- old/drbd-0.7.22/ChangeLog 2006-10-06 13:51:18.000000000 +0200
+++ new/drbd-0.7.22/ChangeLog 2006-10-30 22:51:52.000000000 +0100
@@ -1,25 +1,25 @@
Latest:
------
- ChangeLog last updated: $LastChangedRevision: 2505 $
- $LastChangedDate: 2006-10-04 11:57:57 +0200 (Wed, 04 Oct 2006) $
+ ChangeLog last updated: $LastChangedRevision: 2554 $
+ $LastChangedDate: 2006-10-23 10:57:37 +0200 (Mon, 23 Oct 2006) $
Cumulative changes since last tarball.
For even more detail, use "svn log" and "svn diff".
0.7.22 (api:79/proto:74)
-----
- * *** anyone using protocol A or B should upgrade! ***
- while rewriting the request code for drbd8,
+ * Fixed bugs in the implementation of protocol A and B.
we noticed that in protocol A and B, on connection loss,
we could "forget" to set certain areas out of sync.
so resync in those protocol has been broken all along!
- * fix races between failure in drbd_send_dblock
+ * Fix races between failure in drbd_send_dblock
and concurrently running tl_clear
- * fix potential access-afer-free in drbd_dio_end
- * fix possible list corruption
- respective resulting deadlock in receive_DataRequest
- * improved the drbd_thread_stop / start code
- * gracefull removal of devfs and other updates...
+ * Fix potential access-afer-free in drbd_dio_end
+ * Fix possible list corruption respective resulting deadlock in
+ receive_DataRequest
+ * Improved the drbd_thread_stop / start code
+ * Gracefull removal of devfs and other updates.
+ * Implemented the "freeze_io" option for "on-disconnect"
0.7.21 (api:79/proto:74)
-----
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/drbd-0.7.22/Makefile new/drbd-0.7.22/Makefile
--- old/drbd-0.7.22/Makefile 2006-10-06 13:51:18.000000000 +0200
+++ new/drbd-0.7.22/Makefile 2006-10-30 22:51:52.000000000 +0100
@@ -159,10 +159,10 @@
all tools doc .filelist: drbd/drbd_buildtag.c
KDIR := $(shell echo /lib/modules/`uname -r`/build)
-KVER := $(shell \
- echo -e "\#include <linux/version.h>\ndrbd_kernel_release UTS_RELEASE" | \
- gcc -nostdinc -E -P -I$(KDIR)/include - 2>&1 | \
- sed -ne 's/^drbd_kernel_release "\(.*\)".*/\1/p')
+KVER := $(shell KDIR=$(KDIR) O=$(O) scripts/get_uts_release.sh)
+ifeq ($(KVER),)
+$(error "could not determine uts_release")
+endif
kernel-patch: drbd/drbd_buildtag.c
set -o errexit; \
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/drbd-0.7.22/benchmark/Makefile new/drbd-0.7.22/benchmark/Makefile
--- old/drbd-0.7.22/benchmark/Makefile 2004-10-08 11:22:47.000000000 +0200
+++ new/drbd-0.7.22/benchmark/Makefile 2006-10-30 22:51:48.000000000 +0100
@@ -1,6 +1,9 @@
CFLAGS=-Wall
-all: dm
+all: dm io-latency-test
+
+io-latency-test: io-latency-test.c
+ $(CC) -pthread -o $@ $^
install:
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/drbd-0.7.22/benchmark/io-latency-test.c new/drbd-0.7.22/benchmark/io-latency-test.c
--- old/drbd-0.7.22/benchmark/io-latency-test.c 1970-01-01 01:00:00.000000000 +0100
+++ new/drbd-0.7.22/benchmark/io-latency-test.c 2006-10-30 22:51:48.000000000 +0100
@@ -0,0 +1,259 @@
+/*
+ io-latency-test.c
+
+ By Philipp Reisner.
+
+ Copyright (C) 2006, Philipp Reisner <philipp.reisner(a)linbit.com>.
+ Initial author.
+
+ io-latency-test 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.
+
+ dm is distributed in the hope that 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 dm; see the file COPYING. If not, write to
+ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ */
+
+/* In case this crashes (in your UML)
+ touch /etc/ld.so.nohwcap
+ */
+
+// compile with gcc -pthread -o io-latency-test io-latency-test.c
+
+#include <sys/poll.h>
+#include <sys/time.h>
+#include <unistd.h>
+#include <time.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <stdlib.h>
+#define _GNU_SOURCE
+#include <getopt.h>
+
+#define MONITOR_TIME 300000
+// Check every 300 milliseconds. (3.33 times per second)
+
+#define RECORD_TIME 20000
+// Try to write a record every 20 milliseconds (50 per second)
+
+unsigned int monitor_time=MONITOR_TIME;
+unsigned int record_time=RECORD_TIME;
+unsigned long records=0;
+
+struct shared_data {
+ pthread_mutex_t mutex;
+ unsigned long record_nr;
+ unsigned int write_duration_us;
+ unsigned int write_duration_records;
+ double avg_write_duration;
+};
+
+void* wd_thread(void *arg)
+{
+ struct shared_data *data = (struct shared_data*) arg;
+ unsigned long last_record_nr=-1, current_record_nr=0;
+ unsigned int avg_write,wd,wr;
+ double avg_write_duration;
+
+ enum { IO_RUNNING, IO_BLOCKED } io_state = IO_RUNNING;
+
+ while(1) {
+ usleep(monitor_time); // sleep some milliseconds
+
+ pthread_mutex_lock(&data->mutex);
+ current_record_nr = data->record_nr;
+ wd = data->write_duration_us;
+ wr = data->write_duration_records;
+ data->write_duration_us = 0;
+ data->write_duration_records = 0;
+ avg_write_duration = data->avg_write_duration;
+ pthread_mutex_unlock(&data->mutex);
+
+ if( records && current_record_nr == records) break;
+
+ switch(io_state) {
+ case IO_RUNNING:
+ if(current_record_nr == last_record_nr) {
+ printf("IO got frozen. Last completely "
+ "written record: %lu\n",
+ last_record_nr);
+ io_state = IO_BLOCKED;
+ } else {
+ if(wr==0) wr=1;
+ avg_write = wd/wr;
+
+ printf("Current record: %lu "
+ "( cur. write duration %d.%02dms; "
+ "avg. wd. %.2fms)\r",
+ current_record_nr,
+ avg_write/1000,(avg_write%1000)/10,
+ avg_write_duration/1000);
+ fflush(stdout);
+ }
+ last_record_nr = current_record_nr;
+ case IO_BLOCKED:
+ if(current_record_nr != last_record_nr) {
+ printf("IO just resumed.\n");
+ io_state = IO_RUNNING;
+ }
+ }
+ }
+ if(io_state == IO_RUNNING) printf("\n");
+}
+
+void usage(char *prgname)
+{
+ fprintf(stderr, "USAGE: %s [options] recordfile\n"
+ " Available options:\n"
+ " --records val -n val\n"
+ " --record-interval-ms -r val\n"
+ " --monitor-interval-ms -m val\n",
+ prgname);
+ exit(20);
+}
+
+int main(int argc, char** argv)
+{
+ pthread_t watch_dog;
+ unsigned long record_nr=0;
+ FILE* record_f;
+
+ struct timeval now_tv, then_tv;
+ struct tm now_tm;
+ int write_duration_us=0;
+ int min_wd=(1<<30), max_wd=0;
+ double avg_write_duration;
+ int avg_wd_nr=0,c;
+
+ struct shared_data data;
+
+ static struct option options[] = {
+ {"records", required_argument, 0, 'n'},
+ {"record-interval-ms", required_argument, 0, 'r'},
+ {"monitor-interval-ms", required_argument, 0, 'm'},
+ {0, 0, 0, 0 }
+ };
+
+ while (1) {
+ c = getopt_long(argc, argv, "n:r:m:", options, 0);
+ if (c == -1)
+ break;
+ switch (c) {
+ case 'n':
+ records = atol(optarg);
+ break;
+ case 'r':
+ record_time = atoi(optarg) * 1000;
+ break;
+ case 'm':
+ monitor_time = atoi(optarg) * 1000;
+ break;
+ default:
+ usage(argv[0]);
+ }
+ }
+
+ if(optind != argc-1) {
+ usage(argv[0]);
+ }
+
+ if(!(record_f = fopen(argv[optind],"w"))) {
+ perror("fopen:");
+ fprintf(stderr,"Failed to open '%s' for writing\n",
+ argv[optind]);
+ return 10;
+ }
+
+ printf("\n"
+ "This programm writes records to a file, shows the write latency\n"
+ "of the file system and block device combination and informs\n"
+ "you in case IO completely stalls.\n\n"
+ " Due to the nature of the 'D' process state on Linux\n"
+ " (and other Unix operating systems) you can not kill this\n"
+ " test programm while IO is frozen. You have to kill it with\n"
+ " Ctrl-C (SIGINT) while IO is running.\n\n"
+ "In case the record file's block device freezes, this "
+ "program will\n"
+ "inform you here which record was completely written before it "
+ "freezed.\n\n"
+ );
+
+ pthread_mutex_init(&data.mutex,NULL);
+ data.record_nr = record_nr;
+ data.write_duration_us = 0;
+ data.write_duration_records = 1;
+ pthread_create(&watch_dog,NULL,wd_thread,&data);
+
+ for( ; !records || record_nr < records ; record_nr++) {
+ gettimeofday(&now_tv, NULL);
+ localtime_r(&now_tv.tv_sec,&now_tm);
+
+ fprintf(record_f,
+ "%04d-%02d-%02d %02d:%02d:%02d.%06ld: "
+ "Record number: %-6lu "
+ "(L.r.w.t.: %d.%02dms)\n",
+ 1900+ now_tm.tm_year,
+ 1+ now_tm.tm_mon,
+ now_tm.tm_mday,
+ now_tm.tm_hour,
+ now_tm.tm_min,
+ now_tm.tm_sec,
+ now_tv.tv_usec,
+ record_nr,
+ write_duration_us/1000,
+ (write_duration_us%1000)/10);
+
+ fflush(record_f); // flush it from glibc to the kernel.
+ fdatasync(fileno(record_f)); // from buffer cache to disk.
+
+ // eventually wait for full record_time
+ gettimeofday(&then_tv, NULL);
+ write_duration_us =
+ ( (then_tv.tv_sec - now_tv.tv_sec ) * 1000000 +
+ (then_tv.tv_usec - now_tv.tv_usec) );
+
+ if(write_duration_us < monitor_time) {
+ if(write_duration_us < min_wd) min_wd = write_duration_us;
+ if(write_duration_us > max_wd) max_wd = write_duration_us;
+
+ avg_write_duration =
+ (avg_write_duration * avg_wd_nr +
+ write_duration_us) / (++avg_wd_nr);
+ }
+
+ pthread_mutex_lock(&data.mutex);
+ data.record_nr = record_nr;
+ data.write_duration_us += write_duration_us;
+ data.write_duration_records++;
+ data.avg_write_duration = avg_write_duration;
+ pthread_mutex_unlock(&data.mutex);
+
+ if(write_duration_us < record_time ) {
+ usleep(record_time - write_duration_us);
+ }
+ }
+
+ pthread_mutex_lock(&data.mutex);
+ data.record_nr = record_nr;
+ pthread_mutex_unlock(&data.mutex);
+
+ pthread_join(watch_dog,NULL);
+
+ printf( "STATS:\n"
+ " Records written: %lu\n"
+ " Average write duration: %.2fms\n"
+ " Longest write duration (<%dms): %.2fms\n"
+ " Shortest write duration: %.2fms\n",
+ records,
+ avg_write_duration/1000,
+ monitor_time/1000,(double)max_wd/1000,
+ (double)min_wd/1000);
+}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/drbd-0.7.22/documentation/drbd.8 new/drbd-0.7.22/documentation/drbd.8
--- old/drbd-0.7.22/documentation/drbd.8 2006-10-06 14:00:11.000000000 +0200
+++ new/drbd-0.7.22/documentation/drbd.8 2006-10-30 22:52:08.000000000 +0100
@@ -3,7 +3,7 @@
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve(a)ggi-project.org>.
-.TH "DRBD" "8" "06 October 2006" "" ""
+.TH "DRBD" "8" "30 October 2006" "" ""
.SH NAME
/etc/init.d/drbd \- The start and stop script for DRBD
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/drbd-0.7.22/documentation/drbd.conf.5 new/drbd-0.7.22/documentation/drbd.conf.5
--- old/drbd-0.7.22/documentation/drbd.conf.5 2006-10-06 14:00:10.000000000 +0200
+++ new/drbd-0.7.22/documentation/drbd.conf.5 2006-10-30 22:52:07.000000000 +0100
@@ -3,7 +3,7 @@
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve(a)ggi-project.org>.
-.TH "DRBD.CONF" "5" "06 October 2006" "" ""
+.TH "DRBD.CONF" "5" "30 October 2006" "" ""
.SH NAME
drbd.conf \- Configuration file for DRBD's devices
@@ -305,10 +305,11 @@
The default is 0, which disables this feature.
.TP
\fBon-disconnect \fIhandler\fB\fR
-When the connection to the peer is lost, DRBD can either
-go into stand alone mode, or try to reconnect to the peer.
-Valid handler specifiers are \fBstand_alone\fR and
-\fBreconnect\fR\&.
+When the connection to the peer is lost, DRBD can either go into standd
+alone mode, try to reconnect to the peer, or try to reconnect and freeze
+application IO while not not connected.
+Valid handler specifiers are \fBstand_alone\fR,
+\fBreconnect\fR and \fBfreeze_io\fR\&.
The default handler is \fBreconnect\fR\&.
\fBstand_alone\fR: Do not reconnect, go into
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/drbd-0.7.22/documentation/drbd.conf.sgml new/drbd-0.7.22/documentation/drbd.conf.sgml
--- old/drbd-0.7.22/documentation/drbd.conf.sgml 2006-10-06 13:51:18.000000000 +0200
+++ new/drbd-0.7.22/documentation/drbd.conf.sgml 2006-10-30 22:51:48.000000000 +0100
@@ -456,10 +456,11 @@
<varlistentry>
<term><option>on-disconnect <replaceable>handler</replaceable></option></term>
<listitem><para>
- When the connection to the peer is lost, DRBD can either
- go into stand alone mode, or try to reconnect to the peer.
- Valid handler specifiers are <option>stand_alone</option> and
- <option>reconnect</option>.
+ When the connection to the peer is lost, DRBD can either go into standd
+ alone mode, try to reconnect to the peer, or try to reconnect and freeze
+ application IO while not not connected.
+ Valid handler specifiers are <option>stand_alone</option>,
+ <option>reconnect</option> and <option>freeze_io</option>.
The default handler is <option>reconnect</option>.
</para>
<para><option>stand_alone</option>: Do not reconnect, go into
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/drbd-0.7.22/documentation/drbdadm.8 new/drbd-0.7.22/documentation/drbdadm.8
--- old/drbd-0.7.22/documentation/drbdadm.8 2006-10-06 14:00:12.000000000 +0200
+++ new/drbd-0.7.22/documentation/drbdadm.8 2006-10-30 22:52:09.000000000 +0100
@@ -3,7 +3,7 @@
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve(a)ggi-project.org>.
-.TH "DRBDADM" "8" "06 October 2006" "" ""
+.TH "DRBDADM" "8" "30 October 2006" "" ""
.SH NAME
drbdadm \- Administration tool for DRBD
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/drbd-0.7.22/documentation/drbddisk.8 new/drbd-0.7.22/documentation/drbddisk.8
--- old/drbd-0.7.22/documentation/drbddisk.8 2006-10-06 14:00:13.000000000 +0200
+++ new/drbd-0.7.22/documentation/drbddisk.8 2006-10-30 22:52:10.000000000 +0100
@@ -3,7 +3,7 @@
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve(a)ggi-project.org>.
-.TH "DRBDDISK" "8" "06 October 2006" "" ""
+.TH "DRBDDISK" "8" "30 October 2006" "" ""
.SH NAME
/etc/ha.d/resource.d/drbddisk \- Script to mark devices as primary and mount filesystems
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/drbd-0.7.22/documentation/drbdsetup.8 new/drbd-0.7.22/documentation/drbdsetup.8
--- old/drbd-0.7.22/documentation/drbdsetup.8 2006-10-06 14:00:09.000000000 +0200
+++ new/drbd-0.7.22/documentation/drbdsetup.8 2006-10-30 22:52:06.000000000 +0100
@@ -3,7 +3,7 @@
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng <steve(a)ggi-project.org>.
-.TH "DRBDSETUP" "8" "06 October 2006" "" ""
+.TH "DRBDSETUP" "8" "30 October 2006" "" ""
.SH NAME
drbdsetup \- Setup tool for DRBD
@@ -182,9 +182,11 @@
.TP
\fB-d, --on-disconnect \fIdiscon_handler\fB\fR
When the connection to the peer is lost, DRBD can either
-go into stand alone mode, or try to reconnect to the peer.
-The keywords are: \fBstand_alone\fR and
-\fBreconnect\fR\&.
+go into stand alone mode, try to reconnect to the peer, or
+try to reconnect and freeze application IO while not
+not connected.
+The keywords are: \fBstand_alone\fR,
+\fBreconnect\fR or \fBfreeze_io\fR
The default handler is \fBreconnect\fR\&.
.SS "SYNCER"
.PP
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/drbd-0.7.22/documentation/drbdsetup.sgml new/drbd-0.7.22/documentation/drbdsetup.sgml
--- old/drbd-0.7.22/documentation/drbdsetup.sgml 2006-10-06 13:51:18.000000000 +0200
+++ new/drbd-0.7.22/documentation/drbdsetup.sgml 2006-10-30 22:51:48.000000000 +0100
@@ -333,9 +333,11 @@
<listitem>
<para>
When the connection to the peer is lost, DRBD can either
- go into stand alone mode, or try to reconnect to the peer.
- The keywords are: <option>stand_alone</option> and
- <option>reconnect</option>.
+ go into stand alone mode, try to reconnect to the peer, or
+ try to reconnect and freeze application IO while not
+ not connected.
+ The keywords are: <option>stand_alone</option>,
+ <option>reconnect</option> or <option>freeze_io</option>
The default handler is <option>reconnect</option>.
</para>
</listitem>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/drbd-0.7.22/drbd/Makefile new/drbd-0.7.22/drbd/Makefile
--- old/drbd-0.7.22/drbd/Makefile 2006-08-10 13:45:32.000000000 +0200
+++ new/drbd-0.7.22/drbd/Makefile 2006-10-30 22:51:50.000000000 +0100
@@ -121,16 +121,19 @@
endif
-mv .drbd_kernelrelease.new .drbd_kernelrelease
@echo -n "Memorizing module configuration ... "
- @{ echo -e "#\n# drbd.o was compiled with" ; \
+ @config=$$( (for x in $(KDIR)/.config $(O)/.config ; do \
+ if test -e $$x ; then echo $$x ; exit 0; fi ; \
+ done; echo $(KDIR)/.config) | sed -e 's,//,/,g') ; \
+ { echo -e "#\n# drbd.o was compiled with" ; \
echo "# `gcc -v 2>&1 | tail -1`" ; \
echo "# against this kernelrelease:" ; \
sed 's/^/# /' .drbd_kernelrelease ; \
echo "# kernel .config from" ; \
- echo -n "# $(KDIR)/.config" ; \
- test -L "$(KDIR)" && echo " alias" && \
- echo "# $$(readlink $(KDIR))/.config" || echo "" ; \
+ echo -n "# $$config" ; \
+ test -L "$${config%/.config}" && echo " alias" && \
+ echo "# $$(readlink $${config%/.config})/.config" || echo "" ; \
echo -e "# follows\n#\n" ; \
- cat $(KDIR)/.config ; } | gzip > .kernel.config.gz
+ cat $$config ; } | gzip > .kernel.config.gz
@echo "done."
ifneq ($(KDIR_Makefile_PATCHLEVEL),6)
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/drbd-0.7.22/drbd/drbd_buildtag.c new/drbd-0.7.22/drbd/drbd_buildtag.c
--- old/drbd-0.7.22/drbd/drbd_buildtag.c 2006-10-06 14:00:14.000000000 +0200
+++ new/drbd-0.7.22/drbd/drbd_buildtag.c 2006-10-30 22:52:11.000000000 +0100
@@ -1,6 +1,6 @@
/* automatically generated. DO NOT EDIT. */
const char * drbd_buildtag(void)
{
- return "SVN Revision: 2515"
- " build by lmb@dale, 2006-10-06 14:00:14";
+ return "SVN Revision: 2554"
+ " build by lmb@dale, 2006-10-30 22:52:11";
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/drbd-0.7.22/drbd/drbd_compat_types.h new/drbd-0.7.22/drbd/drbd_compat_types.h
--- old/drbd-0.7.22/drbd/drbd_compat_types.h 2005-06-21 11:53:20.000000000 +0200
+++ new/drbd-0.7.22/drbd/drbd_compat_types.h 2006-10-30 22:51:49.000000000 +0100
@@ -8,6 +8,8 @@
typedef struct buffer_head drbd_bio_t;
typedef unsigned long sector_t;
+#define REQ_NEXT b_reqnext
+
#define NOT_IN_26(x...) x
#define ONLY_IN_26(x...)
@@ -316,6 +318,8 @@
typedef struct bio drbd_bio_t;
+#define REQ_NEXT bi_next
+
#define SIGHAND_HACK
#define NOT_IN_26(x...)
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/drbd-0.7.22/drbd/drbd_compat_wrappers.h new/drbd-0.7.22/drbd/drbd_compat_wrappers.h
--- old/drbd-0.7.22/drbd/drbd_compat_wrappers.h 2006-10-06 13:51:18.000000000 +0200
+++ new/drbd-0.7.22/drbd/drbd_compat_wrappers.h 2006-10-30 22:51:49.000000000 +0100
@@ -625,7 +625,7 @@
static inline int _drbd_send_bio(drbd_dev *mdev, struct bio *bio)
{
- struct bio_vec *bvec = bio_iovec(bio);
+ struct bio_vec *bvec = bio_iovec_idx(bio,0);
struct page *page = bvec->bv_page;
size_t size = bvec->bv_len;
int offset = bvec->bv_offset;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/drbd-0.7.22/drbd/drbd_fs.c new/drbd-0.7.22/drbd/drbd_fs.c
--- old/drbd-0.7.22/drbd/drbd_fs.c 2006-08-10 13:45:32.000000000 +0200
+++ new/drbd-0.7.22/drbd/drbd_fs.c 2006-10-30 22:51:49.000000000 +0100
@@ -1293,8 +1293,7 @@
err=-ENODATA;
break;
}
- /* FIXME what if fsync returns error */
- drbd_sync_me(mdev);
+
set_bit(DO_NOT_INC_CONCNT,&mdev->flags);
set_cstate(mdev,Unconnected);
drbd_thread_stop(&mdev->receiver);
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/drbd-0.7.22/drbd/drbd_int.h new/drbd-0.7.22/drbd/drbd_int.h
--- old/drbd-0.7.22/drbd/drbd_int.h 2006-10-06 13:51:18.000000000 +0200
+++ new/drbd-0.7.22/drbd/drbd_int.h 2006-10-30 22:51:50.000000000 +0100
@@ -690,7 +690,8 @@
MD_DIRTY, // current gen counts and flags not yet on disk
SYNC_STARTED, // Needed to agree on the exact point in time..
USE_DEGR_WFC_T, // Use degr-wfc-timeout instad of wfc-timeout.
- CRASHED_PRIMARY // This node was a crashed primary
+ CRASHED_PRIMARY, // This node was a crashed primary
+ IO_FROZEN // IO Frozen.
};
struct drbd_bitmap; // opaque for Drbd_Conf
@@ -801,6 +802,8 @@
struct list_head done_ee; // send ack
struct list_head read_ee; // IO in progress
struct list_head net_ee; // zero-copy network send in progress
+ drbd_bio_t *first_frozen_bio;
+ drbd_bio_t *last_frozen_bio;
spinlock_t pr_lock;
struct list_head app_reads;
struct list_head resync_reads;
@@ -832,6 +835,7 @@
extern void tl_release(drbd_dev *mdev,unsigned int barrier_nr,
unsigned int set_size);
extern void tl_clear(drbd_dev *mdev);
+extern void tl_resend(drbd_dev *mdev);
extern int tl_dependence(drbd_dev *mdev, drbd_request_t * item, int free_it);
extern void drbd_free_sock(drbd_dev *mdev);
extern int drbd_send(drbd_dev *mdev, struct socket *sock,
@@ -863,6 +867,9 @@
extern int drbd_io_error(drbd_dev* mdev);
extern void drbd_mdev_cleanup(drbd_dev *mdev);
+extern int drbd_resend_barrier(drbd_dev *mdev,struct drbd_barrier *b);
+extern int drbd_resend_dblock(drbd_dev *mdev, drbd_request_t *req);
+
// drbd_meta-data.c (still in drbd_main.c)
extern void drbd_md_write(drbd_dev *mdev);
extern int drbd_md_read(drbd_dev *mdev);
@@ -1035,6 +1042,7 @@
#endif
extern int drbd_read_remote(drbd_dev *mdev, drbd_request_t *req);
+extern void drbd_thaw_frozen_reqs(drbd_dev *mdev);
// drbd_fs.c
extern char* ppsize(char* buf, size_t size);
extern int drbd_determin_dev_size(drbd_dev*);
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/drbd-0.7.22/drbd/drbd_main.c new/drbd-0.7.22/drbd/drbd_main.c
--- old/drbd-0.7.22/drbd/drbd_main.c 2006-10-06 13:51:18.000000000 +0200
+++ new/drbd-0.7.22/drbd/drbd_main.c 2006-10-30 22:51:49.000000000 +0100
@@ -214,7 +214,7 @@
new_item->barrier = b;
new_item->rq_status |= RQ_DRBD_IN_TL;
- list_add(&new_item->w.list,&b->requests);
+ list_add_tail(&new_item->w.list,&b->requests);
if( b->n_req++ > mdev->conf.max_epoch_size ) {
set_bit(ISSUE_BARRIER,&mdev->flags);
@@ -282,10 +282,49 @@
D_ASSERT(b->br_number == barrier_nr);
D_ASSERT(b->n_req == set_size);
+#if 1
+ if(b->br_number != barrier_nr) {
+ DUMPI(b->br_number);
+ DUMPI(barrier_nr);
+ }
+ if(b->n_req != set_size) {
+ DUMPI(b->n_req);
+ DUMPI(set_size);
+ }
+#endif
+
list_del(&b->requests);
kfree(b);
}
+/* Since IO is frozen, nobody may modifiy the Transfer right log now...
+ */
+void tl_resend(drbd_dev *mdev)
+{
+ struct drbd_request *req;
+ struct list_head *le;
+ struct drbd_barrier *b;
+ int n_req;
+
+ D_ASSERT(test_bit(IO_FROZEN,&mdev->flags));
+
+ b = mdev->oldest_barrier;
+ while(1) {
+ n_req=0;
+ list_for_each(le, &b->requests) {
+ req = list_entry(le, struct drbd_request,w.list);
+ drbd_resend_dblock(mdev,req);
+ n_req++;
+ }
+ b->n_req = n_req; // only necessary for the oldest...
+ if( b == mdev->newest_barrier ) break;
+ drbd_resend_barrier(mdev,b);
+ b = b->next;
+ }
+ D_ASSERT(test_bit(IO_FROZEN,&mdev->flags));
+}
+
+
void tl_clear(drbd_dev *mdev)
{
struct list_head *le,*tle;
@@ -455,6 +494,19 @@
// FIXME EXPLAIN
clear_bit(MD_IO_ALLOWED,&mdev->flags);
}
+
+ if(mdev->conf.on_disconnect == FreezeIO && mdev->state == Primary) {
+ if(os >= Connected && ns < Connected) {
+ set_bit(IO_FROZEN, &mdev->flags);
+ }
+ }
+
+ if( ns <= StandAlone && test_bit(IO_FROZEN, &mdev->flags)) {
+ WARN("Going to thaw IO, setting out of sync %d requests.\n",
+ atomic_read(&mdev->ap_pending_cnt));
+ tl_clear(mdev);
+ clear_bit(IO_FROZEN, &mdev->flags);
+ }
}
STATIC int drbd_thread_setup(void* arg)
@@ -803,6 +855,17 @@
return ok;
}
+int drbd_resend_barrier(drbd_dev *mdev,struct drbd_barrier *b)
+{
+ int ok;
+ Drbd_Barrier_Packet p;
+
+ p.barrier=b->br_number;
+ ok=drbd_send_cmd(mdev,USE_DATA_SOCKET, Barrier,(Drbd_Header*)&p,sizeof(p));
+
+ return ok;
+}
+
int drbd_send_b_ack(drbd_dev *mdev, u32 barrier_nr,u32 set_size)
{
int ok;
@@ -1051,15 +1114,31 @@
* in down(). we have to check that, to avoid a race with tl_clear
* cleaning up before we can tl_add */
if (unlikely(!mdev->data.socket)) {
- /* this req is not in the tl, tl_clear cannot find it.
- * we cannot just tl_add it here, either, because tl_clear
- * might be done already. so we have to mark this request
- * "SENT" here, otherwise it won't ever complete.
- * FIXME won't work for freeze io.
- * FIXME if we are Diskless, we complete a WRITE
- * as successful here, that has never been written! */
- drbd_set_out_of_sync(mdev, req->sector, req->size);
- drbd_end_req(req,RQ_DRBD_SENT,1);
+ /* this req is not in the tl, tl_clear cannot find it.
+ *
+ * For Freeze-IO,
+ * we add the req to the tl anyways, possibly creating
+ * a new epoch, and then do nothing. It will then still be
+ * submitted locally, but it cannot possibly signal
+ * completion to the upper layers before it was
+ * resent (tl_resend) or canceled (tl_clear).
+ *
+ * Otherwise,
+ * we cannot just tl_add it here, either, because tl_clear
+ * might be done already. so we have to mark this request
+ * "SENT" here, otherwise it won't ever complete.
+ * FIXME if we are Diskless, we complete a WRITE
+ * as successful here, that has never been written! */
+ if (test_bit(IO_FROZEN,&mdev->flags)) {
+ if(test_and_clear_bit(ISSUE_BARRIER,&mdev->flags)) {
+ inc_ap_pending(mdev);
+ tl_add_barrier(mdev);
+ }
+ tl_add(mdev,req);
+ } else {
+ drbd_set_out_of_sync(mdev, req->sector, req->size);
+ drbd_end_req(req,RQ_DRBD_SENT,1);
+ }
goto out;
}
@@ -1098,6 +1177,39 @@
return ok;
}
+int drbd_resend_dblock(drbd_dev *mdev, drbd_request_t *req)
+{
+ int ok;
+ Drbd_Data_Packet p;
+
+ p.head.magic = BE_DRBD_MAGIC;
+ p.head.command = cpu_to_be16(Data);
+ p.head.length = cpu_to_be16(sizeof(p)-sizeof(Drbd_Header)+req->size);
+
+ p.sector = cpu_to_be64(req->sector);
+ p.block_id = (unsigned long)req;
+
+ down(&mdev->data.mutex);
+
+ spin_lock(&mdev->send_task_lock);
+ mdev->send_task=current;
+ spin_unlock(&mdev->send_task_lock);
+
+ dump_packet(mdev,mdev->data.socket,0,(void*)&p, __FILE__, __LINE__);
+ ok = sizeof(p) == drbd_send(mdev,mdev->data.socket,&p,sizeof(p),MSG_MORE);
+ if(ok) {
+ ok = _drbd_send_bio(mdev,req->master_bio);
+ }
+
+ spin_lock(&mdev->send_task_lock);
+ mdev->send_task=NULL;
+ spin_unlock(&mdev->send_task_lock);
+
+ up(&mdev->data.mutex);
+ return ok;
+}
+
+
int drbd_send_block(drbd_dev *mdev, Drbd_Packet_Cmd cmd,
struct Tl_epoch_entry *e)
{
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/drbd-0.7.22/drbd/drbd_proc.c new/drbd-0.7.22/drbd/drbd_proc.c
--- old/drbd-0.7.22/drbd/drbd_proc.c 2006-08-10 13:45:32.000000000 +0200
+++ new/drbd-0.7.22/drbd/drbd_proc.c 2006-10-30 22:51:49.000000000 +0100
@@ -254,7 +254,7 @@
seq_printf( seq, "%2d: cs:Unconfigured\n", i);
else
seq_printf( seq,
- "%2d: cs:%s st:%s/%s ld:%s\n"
+ "%2d: cs:%s st:%s/%s ld:%s %c\n"
" ns:%u nr:%u dw:%u dr:%u al:%u bm:%u "
"lo:%d pe:%d ua:%d ap:%d\n",
i, sn,
@@ -262,7 +262,7 @@
nodestate_to_name(drbd_conf[i].o_state),
(drbd_conf[i].gen_cnt[Flags]
& MDF_Consistent) ? "Consistent" : "Inconsistent",
- // FIXME partner consistent?
+ test_bit(IO_FROZEN, &drbd_conf[i].flags)? 'F' : ' ',
drbd_conf[i].send_cnt/2,
drbd_conf[i].recv_cnt/2,
drbd_conf[i].writ_cnt/2,
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/drbd-0.7.22/drbd/drbd_receiver.c new/drbd-0.7.22/drbd/drbd_receiver.c
--- old/drbd-0.7.22/drbd/drbd_receiver.c 2006-10-06 13:51:18.000000000 +0200
+++ new/drbd-0.7.22/drbd/drbd_receiver.c 2006-10-30 22:51:49.000000000 +0100
@@ -810,7 +810,7 @@
drbd_thread_start(&mdev->asender);
- drbd_send_param(mdev,0);
+ drbd_send_param(mdev,test_bit(IO_FROZEN, &mdev->flags) ? 4 : 0);
clear_bit(USE_DEGR_WFC_T,&mdev->flags);
return 1;
@@ -1528,6 +1528,8 @@
}
if(be32_to_cpu(p->flags)&2) consider_sync=1;
+ if(be32_to_cpu(p->flags)&4) consider_sync=0;
+
// XXX harmless race with ioctl ...
mdev->sync_conf.rate =
max_t(int,mdev->sync_conf.rate, be32_to_cpu(p->sync_rate));
@@ -1583,13 +1585,30 @@
if (mdev->cstate == WFReportParams) {
INFO("Connection established.\n");
+
+ if(test_bit(IO_FROZEN, &mdev->flags)) {
+ WARN("Going to thaw IO, resending %d requests.\n",
+ atomic_read(&mdev->ap_pending_cnt));
+ tl_resend(mdev);
+ set_bit(ISSUE_BARRIER,&mdev->flags);
+ if (mdev->cstate == WFReportParams) {
+ consider_sync = 0;
+ } else return FALSE;
+ }
}
if (consider_sync) {
if (!drbd_sync_handshake(mdev,p)) return FALSE;
}
- if (mdev->cstate == WFReportParams) set_cstate(mdev,Connected);
+ if (mdev->cstate == WFReportParams) {
+ set_cstate(mdev,Connected);
+ if(test_bit(IO_FROZEN, &mdev->flags)) {
+ clear_bit(IO_FROZEN, &mdev->flags);
+ drbd_thaw_frozen_reqs(mdev);
+ consider_sync = 0;
+ }
+ }
oo_state = mdev->o_state;
mdev->o_state = be32_to_cpu(p->state);
@@ -1869,11 +1888,20 @@
drbd_wait_ee(mdev,&mdev->sync_ee);
drbd_clear_done_ee(mdev);
- // primary
- tl_clear(mdev);
- clear_bit(ISSUE_BARRIER,&mdev->flags);
- wait_event( mdev->cstate_wait, atomic_read(&mdev->ap_pending_cnt)==0 );
- D_ASSERT(mdev->oldest_barrier->n_req == 0);
+ if(test_bit(IO_FROZEN, &mdev->flags)) {
+ WARN("IO frozen with ap_pending_cnt = %d\n",
+ atomic_read(&mdev->ap_pending_cnt));
+ } else {
+ tl_clear(mdev);
+ clear_bit(ISSUE_BARRIER,&mdev->flags);
+ wait_event( mdev->cstate_wait, atomic_read(&mdev->ap_pending_cnt)==0 );
+ D_ASSERT(mdev->oldest_barrier->n_req == 0);
+
+ if(atomic_read(&mdev->ap_pending_cnt)) {
+ ERR("ap_pending_cnt = %d\n",atomic_read(&mdev->ap_pending_cnt));
+ atomic_set(&mdev->ap_pending_cnt,0);
+ }
+ }
// both
clear_bit(PARTNER_CONSISTENT, &mdev->flags);
@@ -1905,11 +1933,6 @@
on the fly. */
atomic_set(&mdev->rs_pending_cnt,0);
- if(atomic_read(&mdev->ap_pending_cnt)) {
- ERR("ap_pending_cnt = %d\n",atomic_read(&mdev->ap_pending_cnt));
- atomic_set(&mdev->ap_pending_cnt,0);
- }
-
wake_up(&mdev->cstate_wait);
if ( mdev->state == Primary &&
@@ -2289,6 +2312,7 @@
int received = 0;
int expect = sizeof(Drbd_Header);
int cmd = -1;
+ int empty;
static struct asender_cmd asender_tbl[] = {
[Ping] ={ sizeof(Drbd_Header), got_Ping },
@@ -2320,12 +2344,12 @@
* this needs to be fixed properly, I'd vote for a separate
* msock sender thread, but others will frown upon yet an other
* kernel thread...
- * -- lge
+ * -- lge
*/
set_bit(SIGNAL_ASENDER, &mdev->flags);
-
+
if (!drbd_process_ee(mdev,0)) goto err;
-
+
rv = drbd_recv_short(mdev,buf,expect-received);
clear_bit(SIGNAL_ASENDER, &mdev->flags);
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/drbd-0.7.22/drbd/drbd_req.c new/drbd-0.7.22/drbd/drbd_req.c
--- old/drbd-0.7.22/drbd/drbd_req.c 2006-10-06 13:51:18.000000000 +0200
+++ new/drbd-0.7.22/drbd/drbd_req.c 2006-10-30 22:51:49.000000000 +0100
@@ -167,12 +167,34 @@
{
drbd_request_t *req;
int local, remote;
+ unsigned long flags;
+ ONLY_IN_26(
+ /* Currently our BARRIER code is disabled. */
+ if(unlikely(bio_barrier(bio))) {
+ bio_endio(bio, bio->bi_size, -EOPNOTSUPP);
+ return 0;
+ }
+ )
if (unlikely(drbd_did_panic == DRBD_MAGIC)) {
drbd_bio_IO_error(bio);
return 0;
}
+ if( rw == WRITE && test_bit(IO_FROZEN, &mdev->flags)) {
+ bio->REQ_NEXT = NULL;
+
+ spin_lock_irqsave(&mdev->req_lock,flags);
+ if(mdev->last_frozen_bio == NULL) {
+ mdev->first_frozen_bio = bio;
+ mdev->last_frozen_bio = bio;
+ } else {
+ mdev->last_frozen_bio->REQ_NEXT = bio;
+ mdev->last_frozen_bio = bio;
+ }
+ spin_unlock_irqrestore(&mdev->req_lock,flags);
+ return 0;
+ }
/*
* If someone tries to mount on Secondary, and this is a 2.4 kernel,
* it would lead to a readonly mounted, but not cache-coherent,
@@ -243,8 +265,8 @@
// down_read(mdev->device_lock);
wait_event( mdev->cstate_wait,
- (volatile int)(mdev->cstate < WFBitMapS ||
- mdev->cstate > WFBitMapT) );
+ (volatile int)mdev->cstate < WFBitMapS ||
+ (volatile int) mdev->cstate > WFBitMapT);
local = inc_local(mdev);
NOT_IN_26( if (rw == READA) rw=READ );
@@ -411,3 +433,27 @@
bio->bi_sector,bio);
}
#endif
+
+void drbd_thaw_frozen_reqs(drbd_dev *mdev)
+{
+ drbd_bio_t *bio;
+ int reqs=0;
+
+ spin_lock_irq(&mdev->req_lock);
+ bio = mdev->first_frozen_bio;
+ mdev->first_frozen_bio = NULL;
+ mdev->last_frozen_bio = NULL;
+ spin_unlock_irq(&mdev->req_lock);
+
+ while(bio) {
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
+ drbd_make_request_common(mdev,WRITE,bio->b_size,bio->b_rsector,bio);
+#else
+ drbd_make_request_common(mdev,WRITE,bio->bi_size,bio->bi_sector,bio);
+#endif
+ bio = bio->REQ_NEXT;
+ reqs++;
+ }
+ WARN("Continued %d requests (which where issued after IO-freeze).\n",
+ reqs);
+}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/drbd-0.7.22/drbd/drbd_worker.c new/drbd-0.7.22/drbd/drbd_worker.c
--- old/drbd-0.7.22/drbd/drbd_worker.c 2006-10-06 13:51:18.000000000 +0200
+++ new/drbd-0.7.22/drbd/drbd_worker.c 2006-10-30 22:51:49.000000000 +0100
@@ -150,7 +150,7 @@
drbd_chk_io_error(mdev,!uptodate);
// req may get freed within drbd_end_req
rsector = req->sector;
- drbd_end_req(req, RQ_DRBD_LOCAL, uptodate, rsector);
+ drbd_end_req(req, RQ_DRBD_LOCAL, uptodate);
drbd_al_complete_io(mdev,rsector);
dec_local(mdev);
}
@@ -286,6 +286,8 @@
ERR_IF (bio->bi_size)
return 1;
+ if(error) DUMPI(error);
+
drbd_chk_io_error(mdev,error);
// req may get freed within drbd_end_req
rsector = req->sector;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/drbd-0.7.22/drbd/linux/drbd_config.h new/drbd-0.7.22/drbd/linux/drbd_config.h
--- old/drbd-0.7.22/drbd/linux/drbd_config.h 2006-10-06 13:51:18.000000000 +0200
+++ new/drbd-0.7.22/drbd/linux/drbd_config.h 2006-10-30 22:51:49.000000000 +0100
@@ -69,6 +69,6 @@
// but more recent kernels define it in arch/um/include/mem.h
#define HAVE_UML_TO_VIRT
-#define NO_MORE_DEV_FS
+//#define NO_MORE_DEV_FS
#endif
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/drbd-0.7.22/drbd.spec.in new/drbd-0.7.22/drbd.spec.in
--- old/drbd-0.7.22/drbd.spec.in 2006-10-06 13:51:18.000000000 +0200
+++ new/drbd-0.7.22/drbd.spec.in 2006-10-30 22:51:52.000000000 +0100
@@ -64,9 +64,7 @@
%prep
%setup
test -d %{kdir}/.
-test $(echo -e "#include <linux/version.h>\ndrbd_kernel_release UTS_RELEASE" |
- gcc -nostdinc -E -P -I%{kdir}/include - |
- sed -ne 's/^drbd_kernel_release "\(.*\)".*/\1/p') = %{kernelversion}
+test "$(scripts/get_uts_release.sh)" = %{kernelversion}
%build
echo kernelversion=%{kernelversion}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/drbd-0.7.22/scripts/adjust_drbd_config_h.sh new/drbd-0.7.22/scripts/adjust_drbd_config_h.sh
--- old/drbd-0.7.22/scripts/adjust_drbd_config_h.sh 2006-10-06 13:51:17.000000000 +0200
+++ new/drbd-0.7.22/scripts/adjust_drbd_config_h.sh 2006-10-30 22:51:48.000000000 +0100
@@ -22,10 +22,20 @@
test -n "$KDIR"
KDIR=${KDIR%/}
+if test -z "$O"; then
+ O=$KDIR;
+else
+ O=${O%/}
+fi
-ls >/dev/null \
-$KDIR/{.config,Makefile,include/{linux/{version,sched,list,fs},asm/bitops}.h}
-
+# some paranoia: check that all files are where we expect them
+ls > /dev/null \
+$KDIR/{Makefile,include/linux/{sched,list,fs}.h}
+ls > /dev/null \
+$O/{.config,Makefile,include/linux/version.h}
+test -e $KDIR/include/asm/bitops.h ||
+test -e $O/include2/asm/bitops.h ||
+exit 1
if grep_q "^PATCHLEVEL *= *4" $KDIR/Makefile ; then
# do we have the threadding stuff in the kernel,
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/drbd-0.7.22/scripts/drbd.conf new/drbd-0.7.22/scripts/drbd.conf
--- old/drbd-0.7.22/scripts/drbd.conf 2006-10-06 13:51:17.000000000 +0200
+++ new/drbd-0.7.22/scripts/drbd.conf 2006-10-30 22:51:48.000000000 +0100
@@ -197,9 +197,6 @@
# "stand_alone" -> Do not reconnect (AKA StandAlone state)
# "freeze_io" -> Try to reconnect but freeze all IO until
# the connection is established again.
- # [ lge: oops. freeze_io is not implemented yet... ]
- # [ at least not in drbd 0.7.x; but nobody wanted to use ]
- # [ that anyways, otherwise we had noticed earlier :-) ]
# on-disconnect reconnect;
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/drbd-0.7.22/scripts/get_uts_release.sh new/drbd-0.7.22/scripts/get_uts_release.sh
--- old/drbd-0.7.22/scripts/get_uts_release.sh 1970-01-01 01:00:00.000000000 +0100
+++ new/drbd-0.7.22/scripts/get_uts_release.sh 2006-10-30 22:51:48.000000000 +0100
@@ -0,0 +1,12 @@
+#!/bin/bash
+{
+ for x in include/linux/{utsrelease,version}.h;
+ do
+ for d in $KDIR $O;
+ do
+ test -e "$d/$x" || continue;
+ echo "#include \"$d/$x\"";
+ done;
+ done;
+ echo "drbd_kernel_release UTS_RELEASE"
+} | gcc -nostdinc -E -P - | sed -ne 's/^drbd_kernel_release "\(.*\)".*/\1/p'
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/drbd-0.7.22/user/drbdsetup.c new/drbd-0.7.22/user/drbdsetup.c
--- old/drbd-0.7.22/user/drbdsetup.c 2006-08-10 13:45:32.000000000 +0200
+++ new/drbd-0.7.22/user/drbdsetup.c 2006-10-30 22:51:52.000000000 +0100
@@ -188,7 +188,7 @@
const char *dh_names[] = {
[Reconnect] = "reconnect",
[DropNetConf] = "stand_alone",
- // [FreezeIO] = "freeze_io" // TODO on the kernel side...
+ [FreezeIO] = "freeze_io"
};
unsigned long resolv(const char* name)
++++++ drbd-kver.patch ++++++
Index: drbd/linux/drbd_config.h
===================================================================
--- drbd/linux/drbd_config.h (revision 2574)
+++ drbd/linux/drbd_config.h (working copy)
@@ -69,6 +69,6 @@
// but more recent kernels define it in arch/um/include/mem.h
#define HAVE_UML_TO_VIRT
-//#define NO_MORE_DEV_FS
+#define NO_MORE_DEV_FS
#endif
Index: Makefile
===================================================================
--- Makefile (revision 2574)
+++ Makefile (working copy)
@@ -160,9 +160,6 @@
KDIR := $(shell echo /lib/modules/`uname -r`/build)
KVER := $(shell KDIR=$(KDIR) O=$(O) scripts/get_uts_release.sh)
-ifeq ($(KVER),)
-$(error "could not determine uts_release")
-endif
kernel-patch: drbd/drbd_buildtag.c
set -o errexit; \
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package yast2-storage
checked in at Mon Oct 30 22:51:43 CET 2006.
--------
--- yast2-storage/yast2-storage.changes 2006-10-24 12:38:51.000000000 +0200
+++ /mounts/work_src_done/STABLE/yast2-storage/yast2-storage.changes 2006-10-30 18:15:47.000000000 +0100
@@ -1,0 +2,17 @@
+Mon Oct 30 16:33:30 CET 2006 - fehr(a)suse.de
+
+- fix missing LVM/EVMS/HOME proposal buttons on empty disk (#215674)
+- fix too small boot partition with VM proposal on PPC (#216222)
+- version 2.14.14
+
+-------------------------------------------------------------------
+Thu Oct 26 13:17:08 CEST 2006 - fehr(a)suse.de
+
+- map SLES releases to SL releases in Storage::Update (#153576)
+
+-------------------------------------------------------------------
+Wed Oct 25 10:47:43 CEST 2006 - fehr(a)suse.de
+
+- add code to detect mismatch of kernel and modules
+
+-------------------------------------------------------------------
Old:
----
yast2-storage-2.14.13.tar.bz2
New:
----
yast2-storage-2.14.14.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-storage.spec ++++++
--- /var/tmp/diff_new_pack.pr3thf/_old 2006-10-30 22:51:28.000000000 +0100
+++ /var/tmp/diff_new_pack.pr3thf/_new 2006-10-30 22:51:28.000000000 +0100
@@ -1,5 +1,5 @@
#
-# spec file for package yast2-storage (Version 2.14.13)
+# spec file for package yast2-storage (Version 2.14.14)
#
# Copyright (c) 2006 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@@ -11,12 +11,12 @@
# norootforbuild
Name: yast2-storage
-Version: 2.14.13
+Version: 2.14.14
Release: 1
License: GNU General Public License (GPL) - all versions
Group: System/YaST
BuildRoot: %{_tmppath}/%{name}-%{version}-build
-Source0: yast2-storage-2.14.13.tar.bz2
+Source0: yast2-storage-2.14.14.tar.bz2
prefix: /usr
BuildRequires: blocxx-devel docbook-xsl-stylesheets doxygen evms gcc-c++ libxcrypt-devel libxslt openssl-devel perl-XML-Writer sablot sgml-skel swig update-desktop-files yast2 yast2-core-devel yast2-devtools yast2-installation yast2-perl-bindings yast2-testsuite
Requires: yast2 parted yast2-installation yast2-storage-lib yast2-perl-bindings
@@ -40,7 +40,7 @@
%prep
-%setup -n yast2-storage-2.14.13
+%setup -n yast2-storage-2.14.14
%build
%{prefix}/bin/y2tool y2autoconf
@@ -165,6 +165,14 @@
%doc %{prefix}/share/doc/packages/yast2-storage/config.xml.description
%changelog -n yast2-storage
+* Mon Oct 30 2006 - fehr(a)suse.de
+- fix missing LVM/EVMS/HOME proposal buttons on empty disk (#215674)
+- fix too small boot partition with VM proposal on PPC (#216222)
+- version 2.14.14
+* Thu Oct 26 2006 - fehr(a)suse.de
+- map SLES releases to SL releases in Storage::Update (#153576)
+* Wed Oct 25 2006 - fehr(a)suse.de
+- add code to detect mismatch of kernel and modules
* Tue Oct 24 2006 - fehr(a)suse.de
- enable special handling for exactly one selected partition in
target partitioner (#214284)
++++++ yast2-storage-2.14.13.tar.bz2 -> yast2-storage-2.14.14.tar.bz2 ++++++
++++ 6368 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/yast2-storage-2.14.13/VERSION new/yast2-storage-2.14.14/VERSION
--- old/yast2-storage-2.14.13/VERSION 2006-10-24 12:38:55.000000000 +0200
+++ new/yast2-storage-2.14.14/VERSION 2006-10-26 13:50:07.000000000 +0200
@@ -1 +1 @@
-2.14.13
+2.14.14
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/yast2-storage-2.14.13/libstorage/src/Storage.cc new/yast2-storage-2.14.14/libstorage/src/Storage.cc
--- old/yast2-storage-2.14.13/libstorage/src/Storage.cc 2006-10-23 11:10:21.000000000 +0200
+++ new/yast2-storage-2.14.14/libstorage/src/Storage.cc 2006-10-30 16:35:08.000000000 +0100
@@ -98,6 +98,37 @@
zeroNewPartitions = false;
defaultMountBy = MOUNTBY_DEVICE;
detectMounted = true;
+ ifstream File( "/proc/version" );
+ string line;
+ getline( File, line );
+ File.close();
+ y2mil( "kernel version:" << line );
+ if( inst_sys )
+ {
+ DIR *dir;
+ struct dirent *entry;
+ string mtest;
+ if( (dir=opendir( "/lib/modules" ))!=NULL )
+ {
+ while( (entry=readdir( dir ))!=NULL )
+ {
+ if( strcmp( entry->d_name, "." )!=0 &&
+ strcmp( entry->d_name, ".." )!=0 )
+ {
+ y2mil( "modules dir:" << entry->d_name );
+ line = (string)"/lib/modules/" + entry->d_name + "/updates/initrd/ext3.ko";
+ if( access( line.c_str(), R_OK )==0 )
+ mtest = line;
+ }
+ }
+ closedir( dir );
+ }
+ if( mtest.length()>0 )
+ {
+ line = "/sbin/modinfo " + mtest;
+ SystemCmd c( line );
+ }
+ }
}
void
@@ -3703,6 +3734,10 @@
new_pair = false;
}
pt++;
+ SystemCmd c;
+ c.execute( "dmsetup ls" );
+ c.execute( "dmsetup table" );
+ c.execute( "dmsetup info" );
logProcData();
}
if( evms_activate && haveEvms() )
@@ -3790,7 +3825,8 @@
static bool isDmContainer( const Container& co )
{
- return( co.type()==EVMS || co.type()==DM || co.type()==LVM );
+ return( co.type()==EVMS || co.type()==DM || co.type()==LVM ||
+ co.type()==DMRAID );
}
bool Storage::removeDmMapsTo( const string& dev, bool also_evms )
@@ -4423,6 +4459,7 @@
bool ret = false;
if( c.retcode()==0 )
{
+ c.execute( "dmsetup info \"" + table + "\"" );
c.execute( "dmsetup remove \"" + table + "\"" );
waitForDevice();
ret = c.retcode()==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/yast2-storage-2.14.13/storage/src/include/auto_part_ui.ycp new/yast2-storage-2.14.14/storage/src/include/auto_part_ui.ycp
--- old/yast2-storage-2.14.13/storage/src/include/auto_part_ui.ycp 2006-09-18 19:48:20.000000000 +0200
+++ new/yast2-storage-2.14.14/storage/src/include/auto_part_ui.ycp 2006-10-30 16:35:55.000000000 +0100
@@ -9,7 +9,7 @@
*
*
*
- * $Id: auto_part_ui.ycp 32957 2006-09-18 17:49:54Z fehr $
+ * $Id: auto_part_ui.ycp 33868 2006-10-30 15:35:53Z fehr $
*
* used globals:
*
@@ -79,7 +79,6 @@
define map construct_partition_dialog( list<map> partitions, string ptype,
integer bps )
``{
- map cfg = Storage::GetControlCfg();
term vbox_contents =
`VBox( // Message between the full name of the hard disk to use
// and the "Use entire hard disk" button
@@ -122,32 +121,14 @@
}
}
});
-
- vbox_contents = add (vbox_contents, `VSpacing(1.5) );
- vbox_contents = add (vbox_contents,
- `Left( `HBox(`HSpacing(3),
- `CheckBox( `id(`home),
- // Label text
- _("Propose Separate &Home Partition" ),
- cfg["home"]:false ))));
- vbox_contents = add (vbox_contents, `VSpacing(1) );
- vbox_contents = add( vbox_contents,
- `Left(`HBox(`HSpacing(3), `CheckBox(`id(`lvm), `opt(`notify),
- // Label text
- _("Create &LVM Based Proposal"), cfg["prop_lvm"]:false ))));
- if( cfg["evms_config"]:false )
- vbox_contents = add( vbox_contents,
- `Left(`HBox(`HSpacing(3), `CheckBox(`id(`evms), `opt(`notify),
- // Label text
- _("Create &EVMS Based Proposal"), cfg["prop_evms"]:false ))));
return $[ "term": vbox_contents, "high_id": ui_id ];
};
define term create_whole_disk_dialog () ``{
// There were no prior partitions on this disk.
// No partitions to choose from will be displayed.
- return (`Left(`Label( sformat(_("There are no partitions on this disk yet.
-The entire disk will be used for %1."),Product::name))));
+ return (`VBox(`Left(`Label( sformat(_("There are no partitions on this disk yet.
+The entire disk will be used for %1."),Product::name)))));
};
define term create_resize_dialog (list<map> partitions, integer bps)
@@ -156,13 +137,7 @@
string explanation = _("This disk appears to be used by Windows.
There is not enough space to install Linux.");
- map pentry = partitions[0]:$[];
- string part_name = sformat ( "%1, %2 (%3)",
- ByteToHumanString(size_of_region(pentry["region"]:[], bps )),
- pentry["fstype"]:"",
- pentry["device"]:"" );
-
- return (`HVSquash (
+ return (`VBox(
`RadioButtonGroup (
`HBox(
`HSpacing(1.5),
@@ -232,7 +207,7 @@
`VSpacing(0.5),
// All partitions are listed that are found on the target (hard disk).
- `Left(`HVSquash( targetbox ) ),
+ `VSquash( targetbox ),
`VSpacing(0.5)
),
`HSpacing()
@@ -266,7 +241,6 @@
// Information what to do, background information
Wizard::SetContents( _("Preparing Hard Disk -- Step 2"),
`HCenter(
- `HSquash(
`Frame(
// Frame title for installation target hard disk / partition(s)
_("Installing on:"),
@@ -281,14 +255,38 @@
`VSpacing(0.5),
// All partitions are listed that are found on the target (hard disk).
- `Left(`HVSquash( targetbox ) ),
+ `VSquash(targetbox),
`VSpacing(0.5)
),
`HSpacing()
)
)
- )
), helptext, (boolean)WFM::Args(0), (boolean)WFM::Args (1));
};
+term add_common_widgets( term vbox )
+ {
+ map cfg = Storage::GetControlCfg();
+ term vb = `VBox();
+ vb = add (vb,
+ `Left(`HBox(`HSpacing(3), `CheckBox( `id(`home),
+ // Label text
+ _("Propose Separate &Home Partition" ),
+ cfg["home"]:false ))));
+ vb = add (vb, `VSpacing(1) );
+ vb = add( vb,
+ `Left(`HBox(`HSpacing(3), `CheckBox(`id(`lvm), `opt(`notify),
+ // Label text
+ _("Create &LVM Based Proposal"), cfg["prop_lvm"]:false ))));
+ if( cfg["evms_config"]:false )
+ vb = add( vb,
+ `Left(`HBox(`HSpacing(3), `CheckBox(`id(`evms), `opt(`notify),
+ // Label text
+ _("Create &EVMS Based Proposal"),
+ cfg["prop_evms"]:false ))));
+ vbox = add (vbox, `VSpacing(1.5) );
+ term frame = `HVCenter(`Frame( _( "Proposal type" ), `HVCenter(vb) ));
+ vbox = add (vbox, frame );
+ return( vbox );
+ }
}
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/yast2-storage-2.14.13/storage/src/include/do_proposal_flexible.ycp new/yast2-storage-2.14.14/storage/src/include/do_proposal_flexible.ycp
--- old/yast2-storage-2.14.13/storage/src/include/do_proposal_flexible.ycp 2006-10-12 15:30:02.000000000 +0200
+++ new/yast2-storage-2.14.14/storage/src/include/do_proposal_flexible.ycp 2006-10-30 19:02:00.000000000 +0100
@@ -14,7 +14,7 @@
*
*************************************************************
- $Id: do_proposal_flexible.ycp 33354 2006-10-12 13:30:00Z fehr $
+ $Id: do_proposal_flexible.ycp 33906 2006-10-30 18:01:58Z fehr $
*/
{
@@ -217,6 +217,7 @@
map ret = $[];
ret["ok"] = false;
+ integer fsid = conf["partitions",0,"id"]:0;
if( Storage::IsPartitionable( disk ))
{
y2milestone( "do_vm_disk_conf processing disk %1", dev );
@@ -243,7 +244,11 @@
if( !ok )
{
integer gstart = -1;
- integer cyl_num = tc["partitions",1,"cylinders"]:0;
+ map bo = find( map p, (list<map>)tc["partitions"]:[],
+ ``(p["mount"]:""==boot["mount"]:"") );
+ y2milestone( "do_vm_disk_conf boot %1", bo );
+ integer cyl_num = bo["cylinders"]:1;
+ y2milestone( "do_vm_disk_conf boot cyl %1", cyl_num );
gap["gap"] = maplist( map g, gap["gap"]:[],
``{
if( !g["exists"]:false && !ok && g["cylinders"]:0>=cyl_num &&
@@ -301,7 +306,6 @@
ret["weight"] = 0;
if( ok && size(vmkey)==0 )
{
- integer fsid = tc["partitions",0,"id"]:0;
if( size(gap["ext_reg"]:[])>0 )
{
integer ext_end = gap["ext_reg",0]:0 + gap["ext_reg",1]:0 - 1;
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/yast2-storage-2.14.13/storage/src/inst_target_part.ycp new/yast2-storage-2.14.14/storage/src/inst_target_part.ycp
--- old/yast2-storage-2.14.13/storage/src/inst_target_part.ycp 2006-09-18 19:48:20.000000000 +0200
+++ new/yast2-storage-2.14.14/storage/src/inst_target_part.ycp 2006-10-30 16:35:55.000000000 +0100
@@ -9,7 +9,7 @@
* -Ask the user which partition to use.
* -Check the input and return error-messages.
*
- * $Id: inst_target_part.ycp 32957 2006-09-18 17:49:54Z fehr $
+ * $Id: inst_target_part.ycp 33868 2006-10-30 15:35:53Z fehr $
*/
{
textdomain "storage";
@@ -172,6 +172,7 @@
// this is the resize case
//
vbox = create_resize_dialog (partitions, target["cyl_size"]:1 );
+ vbox = add_common_widgets( vbox );
y2milestone ("can resize !");
}
else
@@ -181,7 +182,7 @@
map tmp = construct_partition_dialog( partitions,
target["label"]:"",
target["cyl_size"]:1 );
- vbox = tmp["term"]:`Empty();
+ vbox = add_common_widgets( tmp["term"]:`Empty() );
}
}
@@ -190,6 +191,7 @@
else
{
vbox = create_whole_disk_dialog();
+ vbox = add_common_widgets( vbox );
Storage::SetWholeDisk( true );
}
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/yast2-storage-2.14.13/storage/src/modules/Storage.ycp new/yast2-storage-2.14.14/storage/src/modules/Storage.ycp
--- old/yast2-storage-2.14.13/storage/src/modules/Storage.ycp 2006-10-23 15:25:13.000000000 +0200
+++ new/yast2-storage-2.14.14/storage/src/modules/Storage.ycp 2006-10-26 13:20:42.000000000 +0200
@@ -19,7 +19,7 @@
* wurde versucht "intelligent" zu gestallten und ist im einzelen bei den
* entspechenden Funktionen näher erklärt.
*
- * $Id: Storage.ycp 33576 2006-10-23 13:25:11Z fehr $
+ * $Id: Storage.ycp 33681 2006-10-26 11:20:40Z fehr $
*/
{
@@ -4829,6 +4829,23 @@
global define void Update( map oldv, map newv )
``{
y2milestone( "Update old:%1 new:%2", oldv, newv );
+
+ // Enterprise products do not have minor release number
+ // map enterprise releases to corresponding code bases of SL
+ map sles_major_to_minor = $[ 8 : 2, 9 : 1, 10 : 1 ];
+ if( haskey( oldv, "major" ) && !haskey( oldv, "minor" ) )
+ {
+ oldv["minor"] = sles_major_to_minor[oldv["major"]:0]:0;
+ y2milestone( "Update old:%1", oldv );
+ }
+ if( haskey( newv, "major" ) && !haskey( newv, "minor" ) )
+ {
+ newv["minor"] = sles_major_to_minor[newv["major"]:0]:0;
+ y2milestone( "Update new:%1", newv );
+ }
+ if( !haskey( oldv, "major" ) || !haskey( newv, "major" ) )
+ y2error( "Missing key major or minor" );
+
if( oldv["major"]:0<=9 )
{
UpdateFstabSysfs();
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package yast2-samba-server
checked in at Mon Oct 30 22:51:21 CET 2006.
--------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-samba-server.spec ++++++
--- /var/tmp/diff_new_pack.dT142c/_old 2006-10-30 22:51:15.000000000 +0100
+++ /var/tmp/diff_new_pack.dT142c/_new 2006-10-30 22:51:15.000000000 +0100
@@ -12,7 +12,7 @@
Name: yast2-samba-server
Version: 2.14.1
-Release: 1
+Release: 2
License: GNU General Public License (GPL) - all versions
Group: System/YaST
BuildRoot: %{_tmppath}/%{name}-%{version}-build
++++++ yast2-samba-server-2.14.1.tar.bz2 ++++++
++++ 26444 lines of diff (skipped)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package yast2-qt
checked in at Mon Oct 30 22:51:10 CET 2006.
--------
--- yast2-qt/yast2-qt.changes 2006-10-27 14:35:28.000000000 +0200
+++ /mounts/work_src_done/STABLE/yast2-qt/yast2-qt.changes 2006-10-30 18:22:40.000000000 +0100
@@ -1,0 +2,7 @@
+Mon Oct 30 18:11:50 CET 2006 - sh(a)suse.de
+
+- Consistent handling of isSatisfied and isBroken for bug #173488
+- Added real "isSatisfied" icon
+- V 2.13.72
+
+-------------------------------------------------------------------
Old:
----
yast2-qt-2.13.71.tar.bz2
New:
----
yast2-qt-2.13.72.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-qt.spec ++++++
--- /var/tmp/diff_new_pack.OqxyNC/_old 2006-10-30 22:51:03.000000000 +0100
+++ /var/tmp/diff_new_pack.OqxyNC/_new 2006-10-30 22:51:03.000000000 +0100
@@ -1,5 +1,5 @@
#
-# spec file for package yast2-qt (Version 2.13.71)
+# spec file for package yast2-qt (Version 2.13.72)
#
# Copyright (c) 2006 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@@ -11,12 +11,12 @@
# norootforbuild
Name: yast2-qt
-Version: 2.13.71
+Version: 2.13.72
Release: 1
License: GNU General Public License (GPL) - all versions
Group: System/YaST
BuildRoot: %{_tmppath}/%{name}-%{version}-build
-Source0: yast2-qt-2.13.71.tar.bz2
+Source0: yast2-qt-2.13.72.tar.bz2
prefix: /usr
BuildRequires: boost-devel curl-devel dbus-1-devel docbook-xsl-stylesheets doxygen hal-devel libdrm-devel libjpeg-devel libxcrypt-devel libxslt libzypp-devel perl-XML-Writer qt3-devel rpm-devel sgml-skel update-desktop-files yast2-core-devel yast2-devtools
Summary: YaST2 - Graphical User Interface
@@ -42,7 +42,7 @@
Stefan Hundhammer <sh(a)suse.de>
%prep
-%setup -n yast2-qt-2.13.71
+%setup -n yast2-qt-2.13.72
%build
%{prefix}/bin/y2tool y2autoconf
@@ -85,6 +85,10 @@
%doc %{prefix}/share/doc/packages/yast2-qt
%changelog -n yast2-qt
+* Mon Oct 30 2006 - sh(a)suse.de
+- Consistent handling of isSatisfied and isBroken for bug #173488
+- Added real "isSatisfied" icon
+- V 2.13.72
* Fri Oct 27 2006 - sh(a)suse.de
- Added missing icon to dist tarball
- V 2.13.71
++++++ yast2-qt-2.13.71.tar.bz2 -> yast2-qt-2.13.72.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-qt-2.13.71/VERSION new/yast2-qt-2.13.72/VERSION
--- old/yast2-qt-2.13.71/VERSION 2006-10-27 13:43:39.000000000 +0200
+++ new/yast2-qt-2.13.72/VERSION 2006-10-30 18:11:47.000000000 +0100
@@ -1 +1 @@
-2.13.71
+2.13.72
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-qt-2.13.71/src/YQIconPool.cc new/yast2-qt-2.13.72/src/YQIconPool.cc
--- old/yast2-qt-2.13.71/src/YQIconPool.cc 2006-10-26 13:07:20.000000000 +0200
+++ new/yast2-qt-2.13.72/src/YQIconPool.cc 2006-10-30 15:49:47.000000000 +0100
@@ -51,6 +51,7 @@
#include "icons/tree_plus.xpm"
#include "icons/tree_minus.xpm"
#include "icons/warning_sign.xpm"
+#include "icons/satisfied.xpm"
#include "icons/normal_conflict.xpm"
#include "icons/select_conflict.xpm"
@@ -106,6 +107,7 @@
QPixmap YQIconPool::treeMinus() { return iconPool()->cachedIcon( tree_minus_xpm ); }
QPixmap YQIconPool::warningSign() { return iconPool()->cachedIcon( warning_sign_xpm ); }
+QPixmap YQIconPool::pkgSatisfied() { return iconPool()->cachedIcon( satisfied_xpm ); }
YQIconPool * YQIconPool::iconPool()
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-qt-2.13.71/src/YQPkgObjList.cc new/yast2-qt-2.13.72/src/YQPkgObjList.cc
--- old/yast2-qt-2.13.71/src/YQPkgObjList.cc 2006-10-26 18:55:56.000000000 +0200
+++ new/yast2-qt-2.13.72/src/YQPkgObjList.cc 2006-10-30 17:52:13.000000000 +0100
@@ -55,6 +55,7 @@
_sizeCol = -42;
_brokenIconCol = -42;
_satisfiedIconCol = -42;
+ _debug = false;
createActions();
@@ -559,6 +560,18 @@
{
if ( event )
{
+ unsigned special_combo = ( Qt::ControlButton | Qt::ShiftButton | Qt::AltButton );
+
+ if ( ( event->state() & special_combo ) == special_combo )
+ {
+ if ( event->key() == Qt::Key_Q )
+ {
+ _debug= ! _debug;
+ y2milestone( "Debug mode %s", _debug ? "on" : "off" );
+ }
+
+ }
+
QListViewItem * selectedListViewItem = selectedItem();
if ( selectedListViewItem )
@@ -634,6 +647,28 @@
selectNextItem();
event->accept();
return;
+
+ case 'b':
+ case 'B': // Toggle debugIsBroken flag
+
+ if ( _debug )
+ {
+ item->toggleDebugIsBroken();
+ item->setStatusIcon();
+ }
+ event->accept();
+ break;
+
+ case 's':
+ case 'S': // Toggle debugIsSatisfied flag
+
+ if ( _debug )
+ {
+ item->toggleDebugIsSatisfied();
+ item->setStatusIcon();
+ }
+ event->accept();
+ break;
}
}
}
@@ -695,9 +730,10 @@
if ( _zyppObj == 0 && _selectable )
_zyppObj = _selectable->theObj();
-
- _candidateIsNewer = false;
- _installedIsNewer = false;
+ _debugIsBroken = false;
+ _debugIsSatisfied = false;
+ _candidateIsNewer = false;
+ _installedIsNewer = false;
const ZyppObj candidate = selectable()->candidateObj();
const ZyppObj installed = selectable()->installedObj();
@@ -843,11 +879,6 @@
setPixmap( statusCol(), _pkgObjList->statusIcon( status(), enabled, bySelection() ) );
}
- //
- // Set special icon for zyppObjs that are not marked as installed,
- // but satisfied anyway (e.g. for patches or patterns where the user
- // selected all required packages manually)
- //
if ( brokenIconCol() >= 0 )
{
@@ -857,67 +888,79 @@
if ( satisfiedIconCol() >= 0 )
{
- if ( ! _selectable->hasInstalledObj() &&
- _selectable->installedPoolItem().status().isSatisfied() )
- {
-#warning FIXME: Use another icon
- setPixmap( satisfiedIconCol(), YQIconPool::pkgSelAutoInstall() );
- }
- else
- {
- setPixmap( satisfiedIconCol(), QPixmap() );
- }
+ // Set special icon for zyppObjs that are not marked as installed,
+ // but satisfied anyway (e.g. for patches or patterns where the user
+ // selected all required packages manually)
+
+ setPixmap( satisfiedIconCol(), isSatisfied() ? YQIconPool::pkgSatisfied() : QPixmap() );
}
- //
- // Set special icon for zyppObjs that are installed, but broken
- // (dependencies no longer satisfied, e.g. for patches or patterns)
- //
if ( brokenIconCol() >= 0 )
{
- if ( _selectable->hasInstalledObj() )
+ // Set special icon for zyppObjs that are installed, but broken
+ // (dependencies no longer satisfied, e.g. for patches or patterns)
+
+ if ( isBroken() )
{
- bool isBroken = _selectable->installedPoolItem().status().isIncomplete();
- bool willBeFixed = false;
+ setPixmap( brokenIconCol(), YQIconPool::warningSign() );
- switch ( status() )
- {
- case S_KeepInstalled:
- case S_Protected:
+ y2warning( "Broken object: %s - %s",
+ _selectable->theObj()->name().c_str(),
+ _selectable->theObj()->summary().c_str() );
+ }
+ }
- willBeFixed = false;
- break;
+}
- case S_Update:
- case S_AutoUpdate:
- case S_Del:
- case S_AutoDel:
- case S_NoInst:
-
- willBeFixed = true;
- break;
-
- case S_Install:
- case S_AutoInstall:
- case S_Taboo:
- y2error( "Expected uninstalled zyppObj" );
- break;
- }
+bool
+YQPkgObjListItem::isSatisfied() const
+{
+ if ( _debugIsSatisfied )
+ return true;
- if ( isBroken && ! willBeFixed )
- {
- setPixmap( brokenIconCol(), YQIconPool::warningSign() );
-
- y2warning( "Broken object: %s - %s",
- _selectable->theObj()->name().c_str(),
- _selectable->theObj()->summary().c_str() );
- }
- }
+ if ( _selectable->hasInstalledObj() )
+ return false;
+
+ return _selectable->candidatePoolItem().status().isSatisfied();
+}
+
+
+bool YQPkgObjListItem::isBroken() const
+{
+ if ( _debugIsBroken )
+ return true;
+
+ if ( ! _selectable->hasInstalledObj() )
+ return false; // can't be broken if not installed
+
+ switch ( status() )
+ {
+ case S_KeepInstalled:
+ case S_Protected:
+
+ return _selectable->installedPoolItem().status().isIncomplete();
+
+ case S_Update: // will be fixed by updating
+ case S_AutoUpdate:
+ case S_Del: // will no longer be relevant after deleting
+ case S_AutoDel:
+
+ return false;
+
+ case S_NoInst: // should not happen - no installed obj
+ case S_Install:
+ case S_AutoInstall:
+ case S_Taboo:
+
+ y2error( "Expected uninstalled zyppObj" );
+ return false;
}
+ y2error( "Should never get here" );
+ return false;
}
@@ -1136,6 +1179,24 @@
return tip;
}
+ if ( col == brokenIconCol() )
+ {
+ if ( isBroken() )
+ // Translators: tool tip for patches / patterns that are installed,
+ // but whose dependencies are broken (no longer satisfied)
+ return _( "Dependencies broken" );
+ }
+
+ // don't use "else if" here, it might be the same colum as another one!
+
+ if ( col == satisfiedIconCol() )
+ {
+ if ( isSatisfied() )
+ // Translators: tool tip for patches / patterns that are not installed,
+ // but whose dependencies are satisfied
+ return _( "All dependencies satisfied" );
+ }
+
return QString::null;
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-qt-2.13.71/src/YQPkgSelList.cc new/yast2-qt-2.13.72/src/YQPkgSelList.cc
--- old/yast2-qt-2.13.71/src/YQPkgSelList.cc 2006-08-18 15:53:46.000000000 +0200
+++ new/yast2-qt-2.13.72/src/YQPkgSelList.cc 2006-10-30 17:12:44.000000000 +0100
@@ -41,6 +41,9 @@
addColumn( _( "Selection" ) ); _summaryCol = numCol++;
setAllColumnsShowFocus( true );
+ _satisfiedIconCol = _summaryCol;
+ _brokenIconCol = _summaryCol;
+
if ( autoFilter )
{
connect( this, SIGNAL( selectionChanged( QListViewItem * ) ),
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-qt-2.13.71/src/include/YQIconPool.h new/yast2-qt-2.13.72/src/include/YQIconPool.h
--- old/yast2-qt-2.13.71/src/include/YQIconPool.h 2006-10-26 13:07:36.000000000 +0200
+++ new/yast2-qt-2.13.72/src/include/YQIconPool.h 2006-10-30 15:48:47.000000000 +0100
@@ -71,6 +71,7 @@
static QPixmap treeMinus();
static QPixmap warningSign();
+ static QPixmap pkgSatisfied();
protected:
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-qt-2.13.71/src/include/YQPkgObjList.h new/yast2-qt-2.13.72/src/include/YQPkgObjList.h
--- old/yast2-qt-2.13.71/src/include/YQPkgObjList.h 2006-10-26 18:55:56.000000000 +0200
+++ new/yast2-qt-2.13.72/src/include/YQPkgObjList.h 2006-10-30 17:42:09.000000000 +0100
@@ -311,6 +311,7 @@
int _brokenIconCol;
int _satisfiedIconCol;
bool _editable;
+ bool _debug;
QPopupMenu * _installedContextMenu;
@@ -439,6 +440,21 @@
bool installedIsNewer() const { return _installedIsNewer; }
/**
+ * Check if this item is satisfied, even though it is not installed.
+ * This is useful for package collections, e.g., patterns and patches:
+ * 'true' is returned if all requirements are fulfilled, but the object
+ * itself is not installed.
+ **/
+ bool isSatisfied() const;
+
+ /**
+ * Check if this item is "broken": If it is installed, but any of its
+ * dependencies are no longer satisfied.
+ * This is useful for package collections, e.g., patterns and patches.
+ **/
+ bool isBroken() const;
+
+ /**
* Display this item's notify text (if there is any) that corresponds to
* the specified status (S_Install, S_Del) in a pop-up window.
**/
@@ -501,6 +517,16 @@
**/
virtual QString toolTip( int column );
+
+ // Handle Debug isBroken and isSatisfied flags
+
+ bool debugIsBroken() const { return _debugIsBroken; }
+ bool debugIsSatisfied() const { return _debugIsSatisfied; }
+ void setDebugIsBroken ( bool val = true ) { _debugIsBroken = val; }
+ void setDebugIsSatisfied( bool val = true ) { _debugIsSatisfied = val; }
+ void toggleDebugIsBroken() { _debugIsBroken = ! _debugIsBroken; }
+ void toggleDebugIsSatisfied() { _debugIsSatisfied = ! _debugIsSatisfied; }
+
// Columns
@@ -564,9 +590,12 @@
YQPkgObjList * _pkgObjList;
ZyppSel _selectable;
ZyppObj _zyppObj;
- bool _editable;
- bool _candidateIsNewer;
- bool _installedIsNewer;
+ bool _editable:1;
+ bool _candidateIsNewer:1;
+ bool _installedIsNewer:1;
+
+ bool _debugIsBroken:1;
+ bool _debugIsSatisfied:1;
};
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-qt-2.13.71/src/include/icons/Makefile.am new/yast2-qt-2.13.72/src/include/icons/Makefile.am
--- old/yast2-qt-2.13.71/src/include/icons/Makefile.am 2006-10-27 13:31:21.000000000 +0200
+++ new/yast2-qt-2.13.72/src/include/icons/Makefile.am 2006-10-30 15:47:26.000000000 +0100
@@ -31,6 +31,7 @@
sel_autoinstall_disabled.xpm \
sel_autoupdate.xpm \
sel_autoupdate_disabled.xpm \
+ satisfied.xpm \
select_conflict.xpm \
stop.xpm \
taboo.xpm \
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-qt-2.13.71/src/include/icons/Makefile.in new/yast2-qt-2.13.72/src/include/icons/Makefile.in
--- old/yast2-qt-2.13.71/src/include/icons/Makefile.in 2006-10-27 13:44:53.000000000 +0200
+++ new/yast2-qt-2.13.72/src/include/icons/Makefile.in 2006-10-30 16:42:20.000000000 +0100
@@ -241,6 +241,7 @@
sel_autoinstall_disabled.xpm \
sel_autoupdate.xpm \
sel_autoupdate_disabled.xpm \
+ satisfied.xpm \
select_conflict.xpm \
stop.xpm \
taboo.xpm \
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-qt-2.13.71/src/include/icons/satisfied.xpm new/yast2-qt-2.13.72/src/include/icons/satisfied.xpm
--- old/yast2-qt-2.13.71/src/include/icons/satisfied.xpm 1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-qt-2.13.72/src/include/icons/satisfied.xpm 2006-10-30 17:48:50.000000000 +0100
@@ -0,0 +1,29 @@
+/* XPM */
+static const char * satisfied_xpm[] = {
+"17 16 10 1",
+" c None",
+". c #FEFEFE",
+"+ c #E8E8E8",
+"@ c #757575",
+"# c #8D8D8D",
+"$ c #C9C9C9",
+"% c #F2F2F2",
+"& c #C3C3C3",
+"* c #D3D3D3",
+"= c #FFFFFF",
+" ",
+" ",
+" .... ",
+" .+@#. ",
+" .+@@@+ ",
+" .+@@@@. ",
+" ....+ .+@@@@.$ ",
+" .+@#++%+@@@@.&* ",
+" .@@@@++@@@@.$*+ ",
+" +.@@@@@@@@.&*= ",
+" +.@@@@@@.&*+ ",
+" +.@@@@.&*+ ",
+" +.@@.&*+ ",
+" +..&*+ ",
+" +&*+ ",
+" ++ "};
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package xorg-x11-driver-video
checked in at Mon Oct 30 22:50:57 CET 2006.
--------
--- xorg-x11-driver-video/xorg-x11-driver-video.changes 2006-10-30 10:09:35.000000000 +0100
+++ /mounts/work_src_done/STABLE/xorg-x11-driver-video/xorg-x11-driver-video.changes 2006-10-30 13:11:12.000000000 +0100
@@ -1,0 +2,5 @@
+Mon Oct 30 13:10:43 CET 2006 - sndirsch(a)suse.de
+
+- added intel modesetting driver "i810beta" (optional)
+
+-------------------------------------------------------------------
New:
----
xf86-video-intel.modesetting.diff
xf86-video-intel.modesetting.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xorg-x11-driver-video.spec ++++++
--- /var/tmp/diff_new_pack.04FGrZ/_old 2006-10-30 22:50:35.000000000 +0100
+++ /var/tmp/diff_new_pack.04FGrZ/_new 2006-10-30 22:50:35.000000000 +0100
@@ -14,7 +14,7 @@
BuildRequires: Mesa-devel libdrm-devel pkgconfig xorg-x11-proto-devel xorg-x11-server-sdk
URL: http://xorg.freedesktop.org/
Version: 7.2
-Release: 7
+Release: 8
License: X11/MIT
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Group: System/X11/Servers/XF86_4
@@ -66,6 +66,7 @@
Source42: xf86-video-voodoo-1.1.1.tar.bz2
Source43: xf86-video-impact-0.2.0.tar.bz2
Source44: HALlib-4.1.tar.gz
+Source45: xf86-video-intel.modesetting.tar.bz2
Patch1: radeon-xrandr-dotclock.diff
Patch2: radeon_dell.diff
Patch3: ps_nv.diff
@@ -85,6 +86,7 @@
Patch21: xf86-video-i810-setcursorposition.diff
Patch22: xf86-video-i810-mergedfb-checks.diff
Patch23: xf86-video-i810-965g-xv-hang.diff
+Patch24: xf86-video-intel.modesetting.diff
%description
This package contains X.Org video drivers.
@@ -140,15 +142,21 @@
%patch22 -p1
%patch23 -p1
popd
+pushd xf86-video-intel.modesetting
+%patch24 -p0
+mv man/i810.man man/i810beta.man
+popd
%build
for dir in xf86-video-via-* \
+ xf86-video-intel.modesetting \
xf86-video-nv-* \
xf86-video-i810-* \
xf86-video-mga-* \
xf86-video-ati-* \
$(ls | grep -v -e xf86-video-impact \
-e xf86-video-via \
+ -e xf86-video-intel.modesetting \
-e xf86-video-nv \
-e xf86-video-i810 \
-e xf86-video-mga \
@@ -156,6 +164,7 @@
pushd $dir
case $dir in
xf86-video-i810-* | \
+ xf86-video-intel.modesetting | \
xf86-video-mga-* | \
xf86-video-nsc-*) autoreconf -fi ;;
*) ;;
@@ -167,9 +176,12 @@
done
%install
-for dir in $(ls | grep -v -e xf86-video-impact); do
+for dir in $(ls | grep -v -e xf86-video-impact \
+ -e xf86-video-intel.modesetting); do
make -C $dir install DESTDIR=$RPM_BUILD_ROOT
done
+install -m 755 xf86-video-intel.modesetting/src/.libs/i810_drv.so \
+ $RPM_BUILD_ROOT/usr/%{_lib}/xorg/modules/drivers/i810beta_drv.so
ln -snf nv_drv.so \
$RPM_BUILD_ROOT/usr/%{_lib}/xorg/modules/drivers/nvidia_drv.so
%ifarch %ix86
@@ -193,6 +205,8 @@
%changelog -n xorg-x11-driver-video
* Mon Oct 30 2006 - sndirsch(a)suse.de
+- added intel modesetting driver "i810beta" (optional)
+* Mon Oct 30 2006 - sndirsch(a)suse.de
- xf86-video-i810-video-debug.diff:
* Make VIDEO_DEBUG into a configure option
- xf86-video-i810-linearalloc.diff:
++++++ xf86-video-intel.modesetting.diff ++++++
diff -u -r ../xf86-video-intel.modesetting.orig/configure.ac ./configure.ac
--- ../xf86-video-intel.modesetting.orig/configure.ac 2006-10-30 12:58:58.000000000 +0100
+++ ./configure.ac 2006-10-30 13:01:09.000000000 +0100
@@ -125,7 +125,7 @@
AC_SUBST([WARN_CFLAGS])
AC_SUBST([moduledir])
-DRIVER_NAME=i810
+DRIVER_NAME=i810beta
AC_SUBST([DRIVER_NAME])
XORG_MANPAGE_SECTIONS
diff -u -r ../xf86-video-intel.modesetting.orig/src/i810.h ./src/i810.h
--- ../xf86-video-intel.modesetting.orig/src/i810.h 2006-10-27 17:08:25.000000000 +0200
+++ ./src/i810.h 2006-10-30 13:02:23.000000000 +0100
@@ -62,8 +62,8 @@
#include "common.h"
#define I810_VERSION 4000
-#define I810_NAME "I810"
-#define I810_DRIVER_NAME "i810"
+#define I810_NAME "I810BETA"
+#define I810_DRIVER_NAME "i810beta"
/* HWMC Surfaces */
#define I810_MAX_SURFACES 7
diff -u -r ../xf86-video-intel.modesetting.orig/src/i810_driver.c ./src/i810_driver.c
--- ../xf86-video-intel.modesetting.orig/src/i810_driver.c 2006-10-30 12:58:58.000000000 +0100
+++ ./src/i810_driver.c 2006-10-30 13:03:07.000000000 +0100
@@ -382,7 +382,7 @@
static MODULESETUPPROTO(i810Setup);
static XF86ModuleVersionInfo i810VersRec = {
- "i810",
+ "i810beta",
MODULEVENDORSTRING,
MODINFOSTRING1,
MODINFOSTRING2,
@@ -394,7 +394,7 @@
{0, 0, 0, 0}
};
-_X_EXPORT XF86ModuleData i810ModuleData = { &i810VersRec, i810Setup, 0 };
+_X_EXPORT XF86ModuleData i810betaModuleData = { &i810VersRec, i810Setup, 0 };
static pointer
i810Setup(pointer module, pointer opts, int *errmaj, int *errmin)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package pm-utils
checked in at Mon Oct 30 22:50:29 CET 2006.
--------
--- pm-utils/pm-utils.changes 2006-10-27 19:05:15.000000000 +0200
+++ /mounts/work_src_done/STABLE/pm-utils/pm-utils.changes 2006-10-30 21:20:54.000000000 +0100
@@ -1,0 +2,5 @@
+Mon Oct 30 21:20:16 CET 2006 - seife(a)suse.de
+
+- update to current CVS, some of our fixes incorporated upstream
+
+-------------------------------------------------------------------
Old:
----
pm-utils-0.20.0.20061024-suse.diff
pm-utils-0.20.0.20061024.tar.gz
New:
----
pm-utils-0.20.0.20061030-suse.diff
pm-utils-0.20.0.20061030.tar.gz
pm-utils-fix-running-hooks-output.diff
pm-utils-fix-source-configs.diff
pm-utils-uswsusp-support.diff
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ pm-utils.spec ++++++
--- /var/tmp/diff_new_pack.NFKjsl/_old 2006-10-30 22:50:21.000000000 +0100
+++ /var/tmp/diff_new_pack.NFKjsl/_new 2006-10-30 22:50:21.000000000 +0100
@@ -1,5 +1,5 @@
#
-# spec file for package pm-utils (Version 0.20.0.20061024)
+# spec file for package pm-utils (Version 0.20.0.20061030)
#
# Copyright (c) 2006 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@@ -12,13 +12,16 @@
Name: pm-utils
URL: http://webcvs.freedesktop.org/pm-utils/
-Version: 0.20.0.20061024
-Release: 2
+Version: 0.20.0.20061030
+Release: 1
Summary: Tools to suspend and hibernate computers.
License: GNU General Public License (GPL) - all versions
Group: System/Base
Source: %{name}-%{version}.tar.gz
-Patch0: pm-utils-0.20.0.20061024-suse.diff
+Patch0: pm-utils-0.20.0.20061030-suse.diff
+Patch1: pm-utils-fix-running-hooks-output.diff
+Patch2: pm-utils-fix-source-configs.diff
+Patch3: pm-utils-uswsusp-support.diff
Source1: pm-utils-suse.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Prefix: /usr
@@ -40,6 +43,9 @@
%prep
%setup -b 1
+%patch1 -p0
+%patch2 -p0
+%patch3 -p0
%patch0 -p0
%build
@@ -68,6 +74,8 @@
%doc README COPYING ChangeLog AUTHORS
%changelog -n pm-utils
+* Mon Oct 30 2006 - seife(a)suse.de
+- update to current CVS, some of our fixes incorporated upstream
* Fri Oct 27 2006 - hmacht(a)suse.de
- readd lost S2DISK_BIN and S2DISK_CONF variables
* Tue Oct 24 2006 - hmacht(a)suse.de
++++++ pm-utils-0.20.0.20061024-suse.diff -> pm-utils-0.20.0.20061030-suse.diff ++++++
--- pm-utils/pm-utils-0.20.0.20061024-suse.diff 2006-10-27 18:51:37.000000000 +0200
+++ /mounts/work_src_done/STABLE/pm-utils/pm-utils-0.20.0.20061030-suse.diff 2006-10-30 21:52:31.000000000 +0100
@@ -1,52 +1,14 @@
--- pm/functions
+++ pm/functions
-@@ -5,7 +5,10 @@
+@@ -5,7 +5,6 @@
# default values go here
HIBERNATE_RESUME_POST_VIDEO=no
SUSPEND_MODULES=""
-RESUME_MODULES=""
-+INHIBIT=/var/run/pm-utils.inhibit
-+S2DISK_BIN=/usr/sbin/s2disk
-+S2DISK_CONF=/var/lib/s2disk.conf
-+
- LOGFILE=/var/log/pm-suspend.log
-
- [ -f /etc/pm/config ] && . /etc/pm/config
-@@ -19,21 +22,22 @@
- # export them all here
- add_global HIBERNATE_RESUME_POST_VIDEO
- add_global SUSPEND_MODULES
--add_global RESUME_MODULES
-+add_global INHIBIT
- add_global LOGFILE
-+add_global S2DISK_BIN
-+add_global S2DISK_CONF
-
- source_configs()
- {
-- for cfg in $(ls -1 /etc/pm/config.d/* 2>/dev/null) ; do
-- [[ "$cfg" =~ ".*~$" ]] && continue
-- STR=". $cfg"
-- for v in $GLOBAL_CONFIG_VARIABLES ; do
-- STR="$STR ; echo x_$v=\"\$(eval echo \$$v)\""
-- done
-- eval $(bash -c "$STR")
-- for v in $GLOBAL_CONFIG_VARIABLES ; do
-- eval $v="$(eval echo $(eval echo \$$v) \$x_$v)"
-- done
-+ for cfg in $(ls -1 /etc/pm/config.d/*[^~] 2>/dev/null) ; do
-+ while read LINE; do
-+ for v in $GLOBAL_CONFIG_VARIABLES ; do
-+ case "$LINE" in
-+ $v=*) continue 2 ;;
-+ esac
-+ done
-+ eval $LINE
-+ done < $cfg
- done
- }
-
-@@ -57,7 +61,7 @@
+ PM_LOGFILE=${PM_LOGFILE:=/var/log/pm-suspend.log}
+ INHIBIT=/var/run/pm-utils.inhibit
+ S2DISK_BIN=/usr/sbin/s2disk
+@@ -62,7 +61,7 @@
remove_suspend_lock()
{
@@ -55,7 +17,7 @@
chvt 1
chvt $VT
openvt -- sh -c "usleep $1 ; rm -f /.suspended >/dev/null 2>&1 0<&1" >/dev/null 2>&1 0<&1 &
-@@ -68,7 +72,7 @@
+@@ -73,7 +72,7 @@
[ -z "$1" ] && return 0
[ -f /var/run/pm-suspend ] && . /var/run/pm-suspend
@@ -64,87 +26,6 @@
echo "$(date): running $1 hooks."
-@@ -80,14 +84,14 @@
- let filen--
- file="${filea[$filen]}"
- if [ -x $file ]; then
-- echo "$i"
-+ echo "===== current hook: $file ====="
- $file $1
- fi
- done
- else
- for file in $files ; do
- if [ -x $file ]; then
-- echo "$i"
-+ echo "===== current hook: $file ====="
- $file $1
- fi
- done
-@@ -113,24 +117,59 @@
- return $RETVAL
- }
-
-+do_suspend()
-+{
-+ RETVAL=0
-+ if [ -x /usr/sbin/s2ram ]; then
-+ /usr/sbin/s2ram $S2RAM_OPTS
-+ else
-+ echo -n "mem" > /sys/power/state
-+ fi
-+}
-+
- pm_main()
- {
- if [ -n "$LOGFILE" ]; then
- [ -f "$LOGFILE" ] && rm -f "$LOGFILE"
- touch "$LOGFILE"
- fi
-+ [ -n "$LOGFILE" ] && exec > $LOGFILE 2>&1
-+
- take_suspend_lock || exit 1
-+ rm -f $INHIBIT
-+
- run_hooks "$1"
- sync ; sync ; sync
-
-+ [ -e /etc/pm/config.d/$1 ] && . /etc/pm/config.d/$1
-+
- case "$1" in
- suspend)
-- pm-pmu --suspend || echo -n "mem" > /sys/power/state
-- run_hooks resume reverse
-+ if [ ! -e $INHIBIT ]; then
-+ pm-pmu --suspend || do_suspend
-+ run_hooks resume reverse
-+ fi
-+
- ;;
- hibernate)
-- echo -n "platform" > /sys/power/disk
-- echo -n "disk" > /sys/power/state
-+ if [ -z "$HIBERNATE" ]; then
-+ if [ -x $S2DISK_BIN -a -c /dev/snapshot ]; then
-+ HIBERNATE="userspace"
-+ else
-+ HIBERNATE="kernel"
-+ fi
-+ fi
-+ if [ ! -e $INHIBIT ]; then
-+ case $HIBERNATE in
-+ userspace)
-+ $S2DISK_BIN -f $S2DISK_CONF
-+ ;;
-+ kernel)
-+ echo -n "platform" > /sys/power/disk
-+ echo -n "disk" > /sys/power/state
-+ ;;
-+ esac
-+ fi
- run_hooks thaw reverse
- ;;
- esac
--- pm/hooks/50modules
+++ pm/hooks/50modules
@@ -6,6 +6,7 @@
@@ -170,7 +51,7 @@
savestate ${x}_governor $(cat $x/cpufreq/scaling_governor)
- sh -c "echo userspace > $x/cpufreq/scaling_governor" >/dev/null 2>&1
-+ sh -c "echo performance > $x/cpufreq/scaling_governor" >/dev/null 2>&1
++ echo performance > $x/cpufreq/scaling_governor 2>/dev/null
done
popd >/dev/null 2>&1
}
++++++ pm-utils-0.20.0.20061024.tar.gz -> pm-utils-0.20.0.20061030.tar.gz ++++++
++++ 8948 lines of diff (skipped)
++++++ pm-utils-fix-running-hooks-output.diff ++++++
Index: pm/functions
===================================================================
RCS file: /cvs/pm-utils/pm-utils/pm/functions,v
retrieving revision 1.26
diff -u -p -r1.26 functions
--- pm/functions 30 Oct 2006 15:40:42 -0000 1.26
+++ pm/functions 30 Oct 2006 20:05:33 -0000
@@ -80,14 +80,14 @@ run_hooks()
let filen--
file="${filea[$filen]}"
if [ -x $file ]; then
- echo "$i"
+ echo "===== current hook: $file ====="
$file $1
fi
done
else
for file in $files ; do
if [ -x $file ]; then
- echo "$i"
+ echo "===== current hook: $file ====="
$file $1
fi
done
++++++ pm-utils-fix-source-configs.diff ++++++
Index: pm/functions
===================================================================
RCS file: /cvs/pm-utils/pm-utils/pm/functions,v
retrieving revision 1.26
diff -u -p -r1.26 functions
--- pm/functions 30 Oct 2006 15:40:42 -0000 1.26
+++ pm/functions 30 Oct 2006 20:06:50 -0000
@@ -24,16 +24,15 @@ add_global PM_LOGFILE
source_configs()
{
- for cfg in $(ls -1 /etc/pm/config.d/* 2>/dev/null) ; do
- [[ "$cfg" =~ ".*~$" ]] && continue
- STR=". $cfg"
- for v in $GLOBAL_CONFIG_VARIABLES ; do
- STR="$STR ; echo x_$v=\"\$(eval echo \$$v)\""
- done
- eval $(bash -c "$STR")
- for v in $GLOBAL_CONFIG_VARIABLES ; do
- eval $v="$(eval echo $(eval echo \$$v) \$x_$v)"
- done
+ cfgs="/etc/pm/config.d/*[^~]"
+ for cfg in $cfgs ; do
+ [ -x $cfg ] || continue
+ while read LINE ; do
+ case "$GLOBAL_CONFIG_VARIABLES " in
+ *" ${LINE%=*} "*) continue ;;
+ *) eval $LINE ;;
+ esac
+ done < $cfg
done
}
++++++ pm-utils-uswsusp-support.diff ++++++
Index: pm/functions
===================================================================
RCS file: /cvs/pm-utils/pm-utils/pm/functions,v
retrieving revision 1.26
diff -u -p -r1.26 functions
--- pm/functions 30 Oct 2006 15:40:42 -0000 1.26
+++ pm/functions 30 Oct 2006 21:20:36 -0000
@@ -4,9 +4,13 @@ export PATH=/sbin:/usr/sbin:/bin:/usr/bi
# default values go here
HIBERNATE_RESUME_POST_VIDEO=no
+HIBERNATE_METHOD=""
SUSPEND_MODULES=""
RESUME_MODULES=""
PM_LOGFILE=${PM_LOGFILE:=/var/log/pm-suspend.log}
+INHIBIT=/var/run/pm-utils.inhibit
+S2DISK_BIN=/usr/sbin/s2disk
+S2DISK_CONF=/var/lib/s2disk.conf
[ -f /etc/pm/config ] && . /etc/pm/config
@@ -18,9 +22,13 @@ add_global() {
# export them all here
add_global HIBERNATE_RESUME_POST_VIDEO
+add_global HIBERNATE_METHOD
add_global SUSPEND_MODULES
add_global RESUME_MODULES
add_global PM_LOGFILE
+add_global INHIBIT
+add_global S2DISK_BIN
+add_global S2DISK_CONF
source_configs()
{
@@ -113,6 +121,35 @@ get_power_status()
return $RETVAL
}
+do_suspend()
+{
+ if [ -x /usr/sbin/s2ram ]; then
+ /usr/sbin/s2ram $S2RAM_OPTS
+ else
+ echo -n "mem" > /sys/power/state
+ fi
+}
+
+do_hibernate()
+{
+ if [ -z "$HIBERNATE_METHOD" ]; then
+ if [ -x $S2DISK_BIN -a -c /dev/snapshot ]; then
+ HIBERNATE_METHOD="userspace"
+ else
+ HIBERNATE_METHOD="kernel"
+ fi
+ fi
+ case $HIBERNATE_METHOD in
+ userspace)
+ $S2DISK_BIN -f $S2DISK_CONF
+ ;;
+ kernel)
+ echo -n "platform" > /sys/power/disk
+ echo -n "disk" > /sys/power/state
+ ;;
+ esac
+}
+
pm_main()
{
if [ -n "$PM_LOGFILE" ]; then
@@ -120,17 +157,23 @@ pm_main()
exec > "$PM_LOGFILE" 2>&1
fi
take_suspend_lock || exit 1
+
+ rm -f $INHIBIT
+
run_hooks "$1"
sync ; sync ; sync
case "$1" in
suspend)
- pm-pmu --suspend || echo -n "mem" > /sys/power/state
+ if [ ! -e $INHIBIT ]; then
+ pm-pmu --suspend || do_suspend
+ fi
run_hooks resume reverse
;;
hibernate)
- echo -n "platform" > /sys/power/disk
- echo -n "disk" > /sys/power/state
+ if [ ! -e $INHIBIT ]; then
+ do_hibernate
+ fi
run_hooks thaw reverse
;;
esac
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package sffview
checked in at Mon Oct 30 22:34:25 CET 2006.
--------
--- sffview/sffview.changes 2006-10-16 09:08:17.000000000 +0200
+++ /mounts/work_src_done/STABLE/sffview/sffview.changes 2006-10-30 18:06:58.000000000 +0100
@@ -1,0 +2,7 @@
+Mon Oct 30 18:05:43 CET 2006 - kkeil(a)suse.de
+
+- update to 0.4
+ * include all our fixes
+ * print support
+
+-------------------------------------------------------------------
Old:
----
sffview-0.3-gcc4.diff
sffview-0.3-types.diff
sffview-0.3-utf.diff
sffview-0.3.diff
sffview-0.3.tar.bz2
New:
----
sffview-0.4.diff
sffview-0.4.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ sffview.spec ++++++
--- /var/tmp/diff_new_pack.lXwtWB/_old 2006-10-30 22:34:11.000000000 +0100
+++ /var/tmp/diff_new_pack.lXwtWB/_new 2006-10-30 22:34:11.000000000 +0100
@@ -1,5 +1,5 @@
#
-# spec file for package sffview (Version 0.3)
+# spec file for package sffview (Version 0.4)
#
# Copyright (c) 2006 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@@ -15,16 +15,13 @@
License: X11/MIT
Group: Hardware/ISDN
Autoreqprov: on
-Version: 0.3
-Release: 34
+Version: 0.4
+Release: 1
Summary: Simple viewer for Structured Fax Files (.sff) used by ISDN applications
Source: %{name}-%{version}.tar.bz2
URL: http://sfftools.sourceforge.net/
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Patch0: %{name}-%{version}.diff
-Patch1: %{name}-%{version}-types.diff
-Patch2: %{name}-%{version}-gcc4.diff
-Patch3: %{name}-%{version}-utf.diff
%description
The CAPI interface for programming ISDN hardware expects and gives you
@@ -44,9 +41,6 @@
%prep
%setup
%patch -p1
-%patch -P 1 -p1
-%patch -P 2 -p1
-%patch -P 3 -p1
%build
make
@@ -66,6 +60,10 @@
%doc %{_defaultdocdir}/sffview
%changelog -n sffview
+* Mon Oct 30 2006 - kkeil(a)suse.de
+- update to 0.4
+ * include all our fixes
+ * print support
* Mon Oct 16 2006 - kkeil(a)suse.de
- compile with RPM_OPT_FLAGS
- compile with unicode support (Thanks Andreas Hanke, #212502)
++++++ sffview-0.3-gcc4.diff -> sffview-0.4.diff ++++++
--- sffview/sffview-0.3-gcc4.diff 2005-11-02 22:15:24.000000000 +0100
+++ /mounts/work_src_done/STABLE/sffview/sffview-0.4.diff 2006-10-30 18:04:40.000000000 +0100
@@ -1,10 +1,24 @@
---- sffview-0.3/common.cpp.orig 2005-04-09 21:29:42.572872818 +0000
-+++ sffview-0.3/common.cpp 2005-04-09 21:24:46.369945271 +0000
-@@ -45,6 +45,7 @@
-
- #include <cassert>
- #include <iostream>
-+#include <errno.h>
+--- sffview-0.4/Makefile.org 2006-10-30 17:41:52.000000000 +0100
++++ sffview-0.4/Makefile 2006-10-30 17:41:52.000000000 +0100
+@@ -19,10 +19,10 @@
+ OBJECTS = $(PROGRAM).o common.o codes.o decoder.o sfffile.o sffapp.o sffdoc.o
- using namespace std;
+ #WXCONFIG_CPP = `wxgtk2-2.5-config --cflags`
+-WXCONFIG_CPP = `wx-config --cflags`
++WXCONFIG_CPP = `wx-config --unicode=yes --cflags`
+
+ #WXCONFIG_LD = `wxgtk2-2.5-config --libs --static`
+-WXCONFIG_LD = `wx-config --libs`
++WXCONFIG_LD = `wx-config --unicode=yes --libs`
+
+ # /usr/lib/libglib-2.0.a \
+ # /usr/lib/libgobject-2.0.a \
+@@ -53,7 +53,7 @@
+ .SUFFIXES: .o .cpp
+
+ .cpp.o :
+- $(CC) -g -march=i686 -Os -c $(WXCONFIG_CPP) -o $@ $<
++ $(CC) -g $(RPM_OPT_FLAGS) -c $(WXCONFIG_CPP) -o $@ $<
+
+ all: $(PROGRAM)
++++++ sffview-0.3.tar.bz2 -> sffview-0.4.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/sffview-0.3/Makefile new/sffview-0.4/Makefile
--- old/sffview-0.3/Makefile 2004-03-05 22:42:32.000000000 +0100
+++ new/sffview-0.4/Makefile 2005-05-20 23:27:29.000000000 +0200
@@ -18,18 +18,42 @@
PROGRAM = sffview
OBJECTS = $(PROGRAM).o common.o codes.o decoder.o sfffile.o sffapp.o sffdoc.o
-WXCONFIG_CPP = `wxgtk2-2.5-config --cflags`
-#WXCONFIG_CPP = `wx-config --cflags`
+#WXCONFIG_CPP = `wxgtk2-2.5-config --cflags`
+WXCONFIG_CPP = `wx-config --cflags`
-WXCONFIG_LD = `wxgtk2-2.5-config --libs`
-#WXCONFIG_LD = `wx-config --libs`
+#WXCONFIG_LD = `wxgtk2-2.5-config --libs --static`
+WXCONFIG_LD = `wx-config --libs`
+# /usr/lib/libglib-2.0.a \
+# /usr/lib/libgobject-2.0.a \
+# /usr/lib/libgmodule-2.0.a \
+# /usr/lib/libgthread-2.0.a \
+
+WXCONFIG_LD_STATIC = -L/usr/X11R6/lib \
+ /usr/local/lib/libwx_gtk2_html-2.5.a \
+ /usr/local/lib/libwx_gtk2_adv-2.5.a \
+ /usr/local/lib/libwx_gtk2_core-2.5.a \
+ /usr/local/lib/libwx_base_xml-2.5.a \
+ /usr/local/lib/libwx_base_net-2.5.a \
+ /usr/local/lib/libwx_base-2.5.a \
+ -Wl,-Bstatic -pthread \
+ -lpangoxft-1.0 -lpangox-1.0 -lpangoft2-1.0 -lpango-1.0 -lgtk-x11-2.0 -lpangoxft-1.0 -lpangox-1.0 -lgdk-x11-2.0 -latk-1.0 -lpangoxft-1.0 -lpangox-1.0 -lgdk_pixbuf-2.0 \
+ -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lfontconfig -lexpat -ltiff -lpng -ljpeg -lz -lXft -lfreetype \
+ -Wl,-Bdynamic \
+ -lXi -lXrandr -lX11 -lXext -lXcursor -lXrender -lXinerama \
+ -lm -lpthread -ldl
+
+#LDADD = -L/usr/X11R6/lib \
+# -Wl,-Bstatic -lgtk -lgdk -rdynamic -lgmodule -lglib -Wl,-Bdynamic \
+# -lXi -lXext -lX11 -lXpm -lSM -lICE \
+# -Wl,-Bstatic -ltiff -ljpeg -lz -Wl,-Bdynamic \
+# -lm -lpthread -ldl
# implementation
.SUFFIXES: .o .cpp
.cpp.o :
- $(CC) -g -march=athlon -mcpu=athlon-xp -c $(WXCONFIG_CPP) -o $@ $<
+ $(CC) -g -march=i686 -Os -c $(WXCONFIG_CPP) -o $@ $<
all: $(PROGRAM)
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/sffview-0.3/codes.cpp new/sffview-0.4/codes.cpp
--- old/sffview-0.3/codes.cpp 2004-02-29 23:27:25.000000000 +0100
+++ new/sffview-0.4/codes.cpp 2005-05-20 23:27:29.000000000 +0200
@@ -27,7 +27,7 @@
//
/*-RCS-Info----------------------------------------------------
- $Id: codes.cpp,v 1.1 2003/02/03 21:20:41 pschaefer Exp $
+ $Id: codes.cpp,v 1.1.1.1 2005/05/20 21:27:29 pschaefer Exp $
---RCS-Info--------------------------------------------------*/
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/sffview-0.3/codes.h new/sffview-0.4/codes.h
--- old/sffview-0.3/codes.h 2004-02-29 23:27:46.000000000 +0100
+++ new/sffview-0.4/codes.h 2005-05-20 23:27:29.000000000 +0200
@@ -29,7 +29,7 @@
//
/*-RCS-Info----------------------------------------------------
- $Id: codes.h,v 1.1 2003/02/03 21:20:42 pschaefer Exp $
+ $Id: codes.h,v 1.1.1.1 2005/05/20 21:27:29 pschaefer Exp $
---RCS-Info--------------------------------------------------*/
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/sffview-0.3/common.cpp new/sffview-0.4/common.cpp
--- old/sffview-0.3/common.cpp 2004-02-29 23:27:56.000000000 +0100
+++ new/sffview-0.4/common.cpp 2006-10-29 17:45:44.000000000 +0100
@@ -27,12 +27,13 @@
//
/*-RCS-Info----------------------------------------------------
- $Id: util.cpp,v 1.5 2003/03/26 10:04:24 pschaefer Exp $
+ $Id: common.cpp,v 1.2 2006/10/29 16:42:27 pschaefer Exp $
---RCS-Info--------------------------------------------------*/
#include "sfftypes.h"
#include "common.h"
+#include "errno.h"
#include <time.h>
#if defined(_MSC_VER)
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/sffview-0.3/common.h new/sffview-0.4/common.h
--- old/sffview-0.3/common.h 2004-02-29 23:28:06.000000000 +0100
+++ new/sffview-0.4/common.h 2005-05-20 23:27:29.000000000 +0200
@@ -29,11 +29,11 @@
//
/*-RCS-Info----------------------------------------------------
- $Id: util.h,v 1.4 2003/03/26 10:04:24 pschaefer Exp $
+ $Id: common.h,v 1.1.1.1 2005/05/20 21:27:29 pschaefer Exp $
---RCS-Info--------------------------------------------------*/
-#include <boost/filesystem/path.hpp>
+#include <string>
class CSimpleException
{
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/sffview-0.3/decoder.cpp new/sffview-0.4/decoder.cpp
--- old/sffview-0.3/decoder.cpp 2004-02-29 23:28:12.000000000 +0100
+++ new/sffview-0.4/decoder.cpp 2005-05-20 23:27:29.000000000 +0200
@@ -27,7 +27,7 @@
//
/*-RCS-Info----------------------------------------------------
- $Id: sfftobmp.cpp,v 1.9 2000/08/12 17:46:33 peter Exp peter $
+ $Id: decoder.cpp,v 1.1.1.1 2005/05/20 21:27:29 pschaefer Exp $
---RCS-Info--------------------------------------------------*/
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/sffview-0.3/decoder.h new/sffview-0.4/decoder.h
--- old/sffview-0.3/decoder.h 2004-02-29 23:28:19.000000000 +0100
+++ new/sffview-0.4/decoder.h 2005-05-20 23:27:29.000000000 +0200
@@ -29,7 +29,7 @@
//
/*-RCS-Info----------------------------------------------------
- $Id: sfftobmp.cpp,v 1.9 2000/08/12 17:46:33 peter Exp peter $
+ $Id: decoder.h,v 1.1.1.1 2005/05/20 21:27:29 pschaefer Exp $
---RCS-Info--------------------------------------------------*/
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/sffview-0.3/doc/changes new/sffview-0.4/doc/changes
--- old/sffview-0.3/doc/changes 1970-01-01 01:00:00.000000000 +0100
+++ new/sffview-0.4/doc/changes 2006-10-29 20:33:57.000000000 +0100
@@ -0,0 +1,9 @@
+CHANGES
+-------
+
+V0.4 : me:
+ added printing support (BETA)
+ added MRU list
+ remember window position and size
+--
+$Id: changes,v 1.2 2006/10/29 19:33:57 pschaefer Exp $
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/sffview-0.3/doc/copying new/sffview-0.4/doc/copying
--- old/sffview-0.3/doc/copying 2004-04-20 21:57:08.000000000 +0200
+++ new/sffview-0.4/doc/copying 2006-10-29 17:45:44.000000000 +0100
@@ -1,6 +1,6 @@
This is sffview, a program to view structured fax files (sff).
-Copyright (c) 2000-2004 Peter Schaefer-Hutter ("THE AUTHOR")
+Copyright (c) 2000-2006 Peter Schaefer-Hutter ("THE AUTHOR")
Permission to use, copy, modify, distribute, and sell this software and
its documentation for any purpose is hereby granted without fee.
@@ -17,4 +17,4 @@
You can contact the original author by email at peter.schaefer(a)gmx.de.
-$Id: copying,v 1.3 2003/02/03 21:32:48 pschaefer Exp $
+$Id: copying,v 1.2 2006/10/29 16:42:27 pschaefer Exp $
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/sffview-0.3/doc/readme new/sffview-0.4/doc/readme
--- old/sffview-0.3/doc/readme 2004-04-20 22:03:04.000000000 +0200
+++ new/sffview-0.4/doc/readme 2006-10-29 17:45:44.000000000 +0100
@@ -1,5 +1,5 @@
-----------
-SFFVIEW 0.3
+SFFVIEW 0.4
-----------
Tool to view "structured fax files" in X11.
@@ -21,11 +21,6 @@
wxGTK, version 2.5.1 or newer and all libraries that wxGTK
needs itself.
-Note that wxGTK version 2.5.x is the current development tree!
-However, only this contains a performance fix for black&white
-bitmaps that is really needed for SffView because otherwise
-the fit-to-window scaling algorithm is too slow to be useful!
-
Contact:
--------
peter.schaefer(a)gmx.net
@@ -34,6 +29,11 @@
Suggestions, extensions and patches welcome, flames will go
to /dev/null.
+If you *really* like sffview or depend on it, please look
+into my wishlist:
+
+http://www.amazon.de/gp/registry/wishlist/OVQ6LSYS4E4D/028-1843567-9543743
+
I'm always pleased to hear that somebody is actually using my
software. If you can manage it, e-mail me a quick notice.
Thanks!
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/sffview-0.3/sffapp.cpp new/sffview-0.4/sffapp.cpp
--- old/sffview-0.3/sffapp.cpp 2004-04-20 21:53:40.000000000 +0200
+++ new/sffview-0.4/sffapp.cpp 2006-10-29 20:33:57.000000000 +0100
@@ -27,7 +27,7 @@
//
/*-RCS-Info----------------------------------------------------
- $Id: sfftobmp.h,v 1.6 1999/12/19 07:47:53 peter Exp peter $
+ $Id: sffapp.cpp,v 1.3 2006/10/29 19:33:57 pschaefer Exp $
---RCS-Info--------------------------------------------------*/
@@ -38,6 +38,8 @@
#endif
#include <wx/docview.h>
+#include <wx/config.h>
+#include <wx/printdlg.h>
#include "sfftypes.h"
#include "common.h"
@@ -107,20 +109,27 @@
bool SffApp::OnInit(void)
{
- SetAppName("SFF Viewer");
+ SetAppName(wxT("SFF Viewer"));
//// Create a document manager
m_docManager = new wxDocManager();
+ m_config = new wxConfig(wxT("sffview"));
//// Create a template relating drawing documents to their views
- (void) new wxDocTemplate(m_docManager, "SFF File", "*.sff;*.SFF", "", "sff",
- "SFF Doc", "SFF View", CLASSINFO(SffDocument), CLASSINFO(SffView));
+ (void) new wxDocTemplate(m_docManager, wxT("SFF File"), wxT("*.sff;*.SFF"),
+ wxT(""), wxT("sff"), wxT("SFF Doc"), wxT("SFF View"),
+ CLASSINFO(SffDocument), CLASSINFO(SffView));
m_docManager->SetMaxDocsOpen(2);
//// Create the main frame window
- frame = new SffFrame(m_docManager, (wxFrame *) NULL, -1,
- GetAppName(), wxPoint(0, 0), wxSize(500, 400),
+ int x = m_config->Read(_T("/Window/x"), 1);
+ int y = m_config->Read(_T("/Window/y"), 1);
+ int w = m_config->Read(_T("/Window/w"), 750);
+ int h = m_config->Read(_T("/Window/h"), 600);
+
+ frame = new SffFrame(m_docManager, (wxFrame *) NULL, m_config, -1,
+ GetAppName(), wxPoint(x,y), wxSize(w,h),
wxDEFAULT_FRAME_STYLE);
//// Give it an icon (this is ignored in MDI mode: uses resources)
@@ -132,35 +141,39 @@
wxMenu *file_menu = new wxMenu;
file_menu->Append(new wxMenuItem(file_menu, wxID_OPEN,
- "&Open...", "Opens a SFF fax file"));
+ wxT("&Open..."), wxT("Opens a SFF fax file")));
file_menu->Append(new wxMenuItem(file_menu, wxID_CLOSE,
- "&Close", "Closes currently loaded file"));
+ wxT("&Close"), wxT("Closes currently loaded file")));
+ file_menu->AppendSeparator();
+ file_menu->Append(new wxMenuItem(file_menu, wxID_PRINT,
+ wxT("&Print..."), wxT("Prints the currently loaded file")));
+ /*
+ file_menu->Append(new wxMenuItem(file_menu, wxID_PRINT_SETUP,
+ wxT("Print &Setup..."), wxT("Let you choose a printer to print to")));
+ file_menu->Append(new wxMenuItem(file_menu, wxID_PREVIEW,
+ wxT("&Print Pre&view..."), wxT("Displays the file as it would be printed")));
+ */
file_menu->AppendSeparator();
-// file_menu->Append(new wxMenuItem(file_menu, wxID_PRINT,
-// "&Print...", "Prints the currently loaded file"));
-// file_menu->Append(new wxMenuItem(file_menu, wxID_PRINT_SETUP,
-// "Print &Setup...", "Let you choose a printer to print to"));
-// file_menu->Append(new wxMenuItem(file_menu, wxID_PREVIEW,
-// "&Print Pre&view...", "Displays the file as it would be printed"));
-// file_menu->AppendSeparator();
file_menu->Append(new wxMenuItem(file_menu, wxID_EXIT,
- "E&xit", "Quits the application"));
+ wxT("E&xit"), wxT("Quits the application")));
// A nice touch: a history of files visited. Use this menu.
+ m_docManager->FileHistoryLoad(*m_config);
m_docManager->FileHistoryUseMenu(file_menu);
+ m_docManager->FileHistoryAddFilesToMenu();
wxMenu *view_menu = new wxMenu;
view_menu->Append(new wxMenuItem(view_menu, ID_PREVPAGE,
- "&Previous Page", "Displays the previous page of a multipage document"));
+ wxT("&Previous Page"), wxT("Displays the previous page of a multipage document")));
view_menu->Append(new wxMenuItem(view_menu, ID_NEXTPAGE,
- "&Next Page", "Displays the next page of a multipage document"));
+ wxT("&Next Page"), wxT("Displays the next page of a multipage document")));
view_menu->AppendSeparator();
view_menu->Append(new wxMenuItem(view_menu, ID_ZOOMNORMAL,
- "&Actual size", "Displays the page at normal scale"));
+ wxT("&Actual size"), wxT("Displays the page at normal scale")));
view_menu->Append(new wxMenuItem(view_menu, ID_ZOOMWIDTH,
- "Fit &width", "Fit page width in window"));
+ wxT("Fit &width"), wxT("Fit page width in window")));
view_menu->Append(new wxMenuItem(view_menu, ID_ZOOMHEIGHT,
- "&Fit in window", "Fit whole page in window"));
+ wxT("&Fit in window"), wxT("Fit whole page in window")));
/*
view_menu->AppendSeparator();
view_menu->Append(new wxMenuItem(view_menu, ID_FLIPX,
@@ -170,12 +183,12 @@
*/
wxMenu *help_menu = new wxMenu;
help_menu->Append(new wxMenuItem(view_menu, ID_ABOUT,
- "&About", "Shows information about the application"));
+ wxT("&About"), wxT("Shows information about the application")));
wxMenuBar *menu_bar = new wxMenuBar;
- menu_bar->Append(file_menu, "&File");
- menu_bar->Append(view_menu, "&View");
- menu_bar->Append(help_menu, "&Help");
+ menu_bar->Append(file_menu, wxT("&File"));
+ menu_bar->Append(view_menu, wxT("&View"));
+ menu_bar->Append(help_menu, wxT("&Help"));
frame->canvas = frame->CreateCanvas((wxView *) NULL, frame);
@@ -186,8 +199,6 @@
frame->CreateStatusBar(2);
int widths[] = { -1, 100 };
frame->SetStatusWidths( 2, widths );
-
- frame->Centre(wxBOTH);
frame->Show(TRUE);
SetTopWindow(frame);
@@ -201,7 +212,9 @@
int SffApp::OnExit(void)
{
+ m_docManager->FileHistorySave(*m_config);
delete m_docManager;
+ delete m_config;
return 0;
}
@@ -223,29 +236,32 @@
EVT_MENU(ID_ZOOMHEIGHT, SffFrame::OnFitHeight)
EVT_UPDATE_UI_RANGE(ID_FILELOADED1, ID_FILELOADED2, SffFrame::OnUpdateFileOps)
EVT_UPDATE_UI_RANGE(ID_MULTIPAGE1, ID_MULTIPAGE2, SffFrame::OnUpdateMultipage)
+ EVT_MENU_RANGE(wxID_FILE1, wxID_FILE9, SffFrame::OnMRUFile)
EVT_SIZE(SffFrame::OnSize)
+ EVT_CLOSE(SffFrame::OnCloseWindow)
END_EVENT_TABLE()
-/*
-*/
-SffFrame::SffFrame(wxDocManager *manager, wxFrame *frame, wxWindowID id, const wxString& title,
+
+SffFrame::SffFrame(wxDocManager *manager, wxFrame *frame, wxConfig *config,
+ wxWindowID id, const wxString& title,
const wxPoint& pos, const wxSize& size, const long type) :
wxDocParentFrame(manager, frame, id, title, pos, size, type)
{
canvas = (SffCanvas *) NULL;
+ m_config = config;
}
void SffFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
{
(void)wxMessageBox(
- "This is SffView 0.3, a program to view structured fax files (sff)\n\n"
+ wxT("This is SffView 0.4, a program to view structured fax files (sff)\n\n"
"This software and its documentation is\n"
- "Copyright (C) 2000-2004 Peter Schaefer-Hutter\n\n"
+ "Copyright (C) 2000-2006 Peter Schaefer-Hutter\n\n"
"Permission to use, copy, modify, and distribute this software and its "
"documentation for any purpose and without fee is hereby granted, provided "
"that the above copyright notice appear in all copies. This software "
"is provided 'as is' without expressed or implied warranty.\n\n"
- "You can contact the author by email at peter.schaefer(a)gmx.de",
- "About...", wxICON_INFORMATION | wxOK );
+ "You can contact the author by email at peter.schaefer(a)gmx.de"),
+ wxT("About..."), wxICON_INFORMATION | wxOK );
}
void SffFrame::RecreateToolbar()
@@ -284,19 +300,25 @@
int currentX = 5;
- toolBar->AddTool(wxID_OPEN, toolBarBitmaps[0], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Open File");
+ toolBar->AddTool(wxID_OPEN, toolBarBitmaps[0], wxNullBitmap, FALSE,
+ currentX, -1, (wxObject *) NULL, wxT("Open File"));
currentX += width + 5;
toolBar->AddSeparator();
- toolBar->AddTool(ID_PREVPAGE, toolBarBitmaps[1], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Previous Page");
+ toolBar->AddTool(ID_PREVPAGE, toolBarBitmaps[1], wxNullBitmap, FALSE,
+ currentX, -1, (wxObject *) NULL, wxT("Previous Page"));
currentX += width + 5;
- toolBar->AddTool(ID_NEXTPAGE, toolBarBitmaps[2], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Next Page");
+ toolBar->AddTool(ID_NEXTPAGE, toolBarBitmaps[2], wxNullBitmap, FALSE,
+ currentX, -1, (wxObject *) NULL, wxT("Next Page"));
currentX += width + 5;
toolBar->AddSeparator();
- toolBar->AddTool(ID_ZOOMNORMAL, toolBarBitmaps[10], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Actual Size");
+ toolBar->AddTool(ID_ZOOMNORMAL, toolBarBitmaps[10], wxNullBitmap, FALSE,
+ currentX, -1, (wxObject *) NULL, wxT("Actual Size"));
currentX += width + 5;
- toolBar->AddTool(ID_ZOOMWIDTH, toolBarBitmaps[9], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Fit Width");
+ toolBar->AddTool(ID_ZOOMWIDTH, toolBarBitmaps[9], wxNullBitmap, FALSE,
+ currentX, -1, (wxObject *) NULL, wxT("Fit Width"));
currentX += width + 5;
- toolBar->AddTool(ID_ZOOMHEIGHT, toolBarBitmaps[8], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Fit In Window");
+ toolBar->AddTool(ID_ZOOMHEIGHT, toolBarBitmaps[8], wxNullBitmap, FALSE,
+ currentX, -1, (wxObject *) NULL, wxT("Fit In Window"));
currentX += width + 5;
/*
toolBar->AddTool(ID_ZOOMIN, toolBarBitmaps[4], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Zoom +");
@@ -309,7 +331,8 @@
currentX += width + 5;
*/
toolBar->AddSeparator();
- toolBar->AddTool(ID_ABOUT, toolBarBitmaps[3], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Open About Dialog");
+ toolBar->AddTool(ID_ABOUT, toolBarBitmaps[3], wxNullBitmap, FALSE,
+ currentX, -1, (wxObject *) NULL, wxT("Open About Dialog"));
toolBar->Realize();
@@ -329,6 +352,7 @@
void SffFrame::OnUpdateMultipage(wxUpdateUIEvent& event)
{
+ event.Enable(false);
SffDocument *pDoc = (SffDocument *)
m_docManager->GetCurrentDocument();
if ((pDoc != NULL) && (pDoc->GetPageCount() > 1)) {
@@ -436,6 +460,24 @@
}
}
+void SffFrame::OnMRUFile(wxCommandEvent& event)
+{
+ wxString f(m_docManager->GetHistoryFile(event.GetId() - wxID_FILE1));
+ if (!f.IsEmpty())
+ (void)m_docManager->CreateDocument(f, wxDOC_SILENT);
+}
+
+void SffFrame::OnCloseWindow(wxCloseEvent& event)
+{
+ int x, y, w, h;
+ GetPosition(&x, &y); GetSize(&w, &h);
+ m_config->Write(_T("/Window/x"), (long)x);
+ m_config->Write(_T("/Window/y"), (long)y);
+ m_config->Write(_T("/Window/w"), (long)w);
+ m_config->Write(_T("/Window/h"), (long)h);
+ wxDocParentFrame::OnCloseWindow(event);
+}
+
// ---------------------------------------------------
SffFrame *GetMainFrame(void)
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/sffview-0.3/sffapp.h new/sffview-0.4/sffapp.h
--- old/sffview-0.3/sffapp.h 2004-02-29 23:28:34.000000000 +0100
+++ new/sffview-0.4/sffapp.h 2006-10-29 20:33:57.000000000 +0100
@@ -29,7 +29,7 @@
//
/*-RCS-Info----------------------------------------------------
-$Id: sfftobmp.h,v 1.6 1999/12/19 07:47:53 peter Exp peter $
+$Id: sffapp.h,v 1.3 2006/10/29 19:33:57 pschaefer Exp $
---RCS-Info--------------------------------------------------*/
@@ -40,11 +40,12 @@
// forwards
class wxDocManager;
+class wxConfig;
class SffCanvas;
// Main application class
-class SffApp: public wxApp
+class SffApp : public wxApp
{
public:
SffApp(void);
@@ -54,20 +55,22 @@
protected:
wxDocManager* m_docManager;
+ wxConfig * m_config;
};
DECLARE_APP(SffApp)
// Main frame class
-class SffFrame: public wxDocParentFrame
+class SffFrame : public wxDocParentFrame
{
DECLARE_CLASS(SffFrame)
public:
SffCanvas *canvas;
- SffFrame(wxDocManager *manager, wxFrame *frame,
+ SffFrame(wxDocManager *manager, wxFrame *frame,
+ wxConfig *config,
wxWindowID id, const wxString& title,
const wxPoint& pos, const wxSize& size,
const long type);
@@ -88,11 +91,15 @@
void OnZoomNormal(wxCommandEvent& event);
void OnFitWidth(wxCommandEvent& event);
void OnFitHeight(wxCommandEvent& event);
-
+
+ void OnMRUFile(wxCommandEvent& event);
void OnSize(wxSizeEvent& event);
+ void OnCloseWindow(wxCloseEvent& event);
-
DECLARE_EVENT_TABLE()
+
+protected:
+ wxConfig *m_config;
};
extern SffFrame *GetMainFrame(void);
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/sffview-0.3/sffdoc.cpp new/sffview-0.4/sffdoc.cpp
--- old/sffview-0.3/sffdoc.cpp 2004-04-20 21:54:31.000000000 +0200
+++ new/sffview-0.4/sffdoc.cpp 2006-10-29 17:45:44.000000000 +0100
@@ -27,7 +27,7 @@
//
/*-RCS-Info----------------------------------------------------
- $Id: sfftobmp.h,v 1.6 1999/12/19 07:47:53 peter Exp peter $
+ $Id: sffdoc.cpp,v 1.2 2006/10/29 16:42:26 pschaefer Exp $
---RCS-Info--------------------------------------------------*/
@@ -45,6 +45,9 @@
#include "sffdoc.h"
#include "sffview.h"
+#include <iostream>
+using namespace std;
+
// ---------------------------------------------------------------------
CBitmapDecoder::CBitmapDecoder(wxUint32 aWidth, wxUint32 aHeight) :
@@ -129,7 +132,8 @@
try {
wxBusyCursor wait;
m_nPageIdx = 0;
- m_pSffFile = new CSffFile(filename.c_str());
+ std::string strFN(filename.fn_str());
+ m_pSffFile = new CSffFile(strFN);
m_pDecoder = new CBitmapDecoder(GetWidth(), GetHeight());
SetFilename(filename, TRUE);
Modify(FALSE);
@@ -137,7 +141,7 @@
rc = true;
}
catch (CSimpleException e) {
- wxLogError( e.what().c_str() );
+ wxLogError( (wxChar *) e.what().c_str() );
}
return rc;
}
@@ -212,8 +216,70 @@
}
}
catch (CSimpleException e) {
- wxLogError( e.what().c_str() );
+ wxLogError( (wxChar *)e.what().c_str() );
+ }
+}
+
+wxBitmap *SffDocument::GetPageBitmap(int nPage)
+{
+ int i;
+ int lines, cols;
+ bool bLowRes;
+
+
+ if (m_pSffFile == NULL)
+ return NULL;
+
+ wxBitmap *pBmp = NULL;
+
+ try
+ {
+ TSFFRecord rec;
+ // CDCFile outfile;
+ m_pSffFile->SeekPage(nPage-1);
+ bLowRes = m_pSffFile->IsLowRes(nPage-1);
+ lines = GetHeight();
+ cols = GetWidth();
+ // Decode SFF Records ...
+ m_pDecoder->Reset();
+ while ((lines > 0) && m_pSffFile->GetRecord(rec)) {
+ switch(rec.type) {
+ case NORMAL :
+ m_pDecoder->BlankLine();
+ m_pSffFile->DecodeRecord(rec, m_pDecoder->GetBitSink());
+ m_pDecoder->WriteLine(); --lines;
+ if (bLowRes) { // double line if low-res
+ m_pDecoder->WriteLine(); --lines;
+ }
+ if (rec.pData != 0) free(rec.pData);
+ break;
+ case USERINFO :
+ // not supported
+ if (rec.pData != 0) free(rec.pData);
+ break;
+ case BADLINE :
+ case WHITESKIP :
+ // a white skip is, ah, skipped ;)
+ m_pDecoder->BlankLine();
+ for (i=0; i < rec.cb; ++i) {
+ m_pDecoder->WriteLine(); --lines;
+ if (bLowRes) { // double line if low-res
+ m_pDecoder->WriteLine(); --lines;
+ }
+ }
+ break;
+ default :
+ break;
+ }
+ }
+ pBmp = new wxBitmap((const char*)m_pDecoder->GetBitmap(),
+ GetWidth(), GetHeight());
+ }
+ catch (CSimpleException e) {
+ wxLogError( (wxChar *)e.what().c_str() );
}
+
+ return pBmp;
}
wxUint32 SffDocument::GetHeight()
@@ -277,8 +343,15 @@
bool SffPrintout::OnPrintPage(int page)
{
+ wxBitmap *pBmp = m_Doc->GetPageBitmap(page);
+ int nBitmapHeight = pBmp->GetHeight();
+ int nBitmapWidth = pBmp->GetWidth();
+
wxDC *dc = GetDC();
+ wxMemoryDC mem_dc;
+ mem_dc.SelectObject(*pBmp);
+
// Get the logical pixels per inch of screen and printer
int ppiScreenX, ppiScreenY;
GetPPIScreen(&ppiScreenX, &ppiScreenY);
@@ -305,8 +378,17 @@
// If printer pageWidth == current DC width, then this doesn't
// change. But we might be the preview bitmap width, so scale down.
float overallScale = scale * (float)(w/(float)pageWidth);
- dc->SetUserScale(overallScale, overallScale);
-
+ float zoomW = w; zoomW = zoomW/(nBitmapWidth*overallScale);
+ float zoomH = h; zoomH = zoomH/(nBitmapHeight*overallScale);
+ dc->SetUserScale(overallScale * zoomW, overallScale * zoomH);
+ dc->SetBackground(*wxWHITE_BRUSH);
+ if (pageWidth != w) {
+ // Strange misbehaviour of wxGTK -> if we blit zoomed, the colours
+ // get inversed ??!? Workaround: wxSRC_INVERT
+ dc->Blit(0,0,nBitmapWidth,nBitmapHeight,&mem_dc,0,0,wxSRC_INVERT);
+ } else {
+ dc->Blit(0,0,nBitmapWidth,nBitmapHeight,&mem_dc,0,0,wxCOPY);
+ }
return TRUE;
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/sffview-0.3/sffdoc.h new/sffview-0.4/sffdoc.h
--- old/sffview-0.3/sffdoc.h 2004-03-11 21:22:41.000000000 +0100
+++ new/sffview-0.4/sffdoc.h 2006-10-29 17:45:44.000000000 +0100
@@ -29,7 +29,7 @@
//
/*-RCS-Info----------------------------------------------------
-$Id: sfftobmp.h,v 1.6 1999/12/19 07:47:53 peter Exp peter $
+$Id: sffdoc.h,v 1.2 2006/10/29 16:42:26 pschaefer Exp $
---RCS-Info--------------------------------------------------*/
@@ -88,6 +88,7 @@
wxUint32 GetWidth();
wxBitmap *GetPageBitmap() { return m_pPageBmp; };
+ wxBitmap *GetPageBitmap(int nPage);
virtual bool OnOpenDocument(const wxString& filename);
};
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/sffview-0.3/sfffile.cpp new/sffview-0.4/sfffile.cpp
--- old/sffview-0.3/sfffile.cpp 2004-02-29 23:28:52.000000000 +0100
+++ new/sffview-0.4/sfffile.cpp 2006-10-29 17:45:44.000000000 +0100
@@ -27,7 +27,7 @@
//
/*-RCS-Info----------------------------------------------------
- $Id: input.cpp,v 1.3 2003/03/26 10:04:23 pschaefer Exp $
+ $Id: sfffile.cpp,v 1.2 2006/10/29 16:42:26 pschaefer Exp $
---RCS-Info--------------------------------------------------*/
@@ -79,6 +79,7 @@
sff_byte b1 = 0, b2 = 0;
sff_word w;
int nLineCount = 0;
+ int fuzz = 0;
TSFFPage *pPage;
if (Eof())
@@ -88,13 +89,21 @@
do {
switch (state) {
case NEED_MAGIC :
- Read(&dh, sizeof(dh));
- if (Eof())
- throw CSimpleException(CSimpleException::err_invalidfile);
+ for (fuzz = 0; fuzz < 2048; ++fuzz) {
+ Seek(fuzz, CFile::sk_from_start);
+ Read(&dh, sizeof(dh));
+ if (Eof())
+ throw CSimpleException(CSimpleException::err_invalidfile);
+ if (::memcmp(&dh.sff_id, &m_SFFID, sizeof(m_SFFID)) == 0)
+ break;
+ }
if (::memcmp(&dh.sff_id, &m_SFFID, sizeof(m_SFFID)) != 0)
throw CSimpleException(CSimpleException::err_invalidfile);
if (dh.version > 1)
throw CSimpleException(CSimpleException::err_invalidversion);
+ if (fuzz>0) {
+ dh.first_page += fuzz;
+ }
Seek(dh.first_page, CFile::sk_from_start);
state = NEED_PAGESTART;
break;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/sffview-0.3/sfffile.h new/sffview-0.4/sfffile.h
--- old/sffview-0.3/sfffile.h 2004-02-29 23:28:58.000000000 +0100
+++ new/sffview-0.4/sfffile.h 2005-05-20 23:27:30.000000000 +0200
@@ -29,7 +29,7 @@
//
/*-RCS-Info----------------------------------------------------
- $Id: input.h,v 1.3 2003/03/26 10:04:25 pschaefer Exp $
+ $Id: sfffile.h,v 1.1.1.1 2005/05/20 21:27:30 pschaefer Exp $
---RCS-Info--------------------------------------------------*/
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/sffview-0.3/sfftypes.h new/sffview-0.4/sfftypes.h
--- old/sffview-0.3/sfftypes.h 2004-02-29 23:29:04.000000000 +0100
+++ new/sffview-0.4/sfftypes.h 2005-05-20 23:27:30.000000000 +0200
@@ -29,7 +29,7 @@
//
/*-RCS-Info----------------------------------------------------
- $Id: sfftypes.h,v 1.2 2003/03/26 10:04:24 pschaefer Exp $
+ $Id: sfftypes.h,v 1.1.1.1 2005/05/20 21:27:30 pschaefer Exp $
---RCS-Info--------------------------------------------------*/
@@ -52,7 +52,7 @@
typedef unsigned char sff_byte;
typedef unsigned short sff_word;
-typedef unsigned long sff_dword;
+typedef unsigned int sff_dword;
#ifndef _MAX_PATH
#define _MAX_PATH 256
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/sffview-0.3/sffview.cpp new/sffview-0.4/sffview.cpp
--- old/sffview-0.3/sffview.cpp 2004-03-11 21:21:15.000000000 +0100
+++ new/sffview-0.4/sffview.cpp 2006-10-29 20:18:52.000000000 +0100
@@ -110,24 +110,27 @@
void SffView::CalcScale()
{
- int w, h;
- switch (m_nScaleType)
- {
- case FULLSCALE:
- m_nZoom=1;
- canvas->SetScrollbars( 1, 1, m_nBitmapWidth, m_nBitmapHeight);
- break;
- case FITWIDTH:
- frame->GetClientSize(&w, &h);
- m_nZoom=w; m_nZoom = m_nZoom/m_nBitmapWidth;
- canvas->SetScrollbars( 1, 1, 1, m_nBitmapHeight*m_nZoom);
- break;
- case FULLPAGE:
- frame->GetClientSize(&w, &h);
- m_nZoom=h; m_nZoom /= m_nBitmapHeight;
- canvas->SetScrollbars( 1, 1, m_nBitmapWidth*m_nZoom, 1);
- break;
- }
+ int w, h;
+ switch (m_nScaleType)
+ {
+ case FULLSCALE:
+ m_nZoom=1;
+ canvas->SetScrollbars( 1, 1, m_nBitmapWidth, m_nBitmapHeight);
+ canvas->Refresh();
+ break;
+ case FITWIDTH:
+ frame->GetClientSize(&w, &h);
+ m_nZoom=w; m_nZoom = m_nZoom/m_nBitmapWidth;
+ canvas->SetScrollbars( 1, 1, 1, (int)(m_nBitmapHeight*m_nZoom));
+ canvas->Refresh();
+ break;
+ case FULLPAGE:
+ frame->GetClientSize(&w, &h);
+ m_nZoom=h; m_nZoom /= m_nBitmapHeight;
+ canvas->SetScrollbars( 1, 1, (int)(m_nBitmapWidth*m_nZoom), 1);
+ canvas->Refresh();
+ break;
+ }
}
void SffView::OnDraw(wxDC *dc)
@@ -180,7 +183,7 @@
SetFrame((wxFrame *) NULL);
Activate(FALSE);
-
+
return TRUE;
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/sffview-0.3/sffview.h new/sffview-0.4/sffview.h
--- old/sffview-0.3/sffview.h 2004-03-11 21:20:58.000000000 +0100
+++ new/sffview-0.4/sffview.h 2005-05-20 23:27:30.000000000 +0200
@@ -29,7 +29,7 @@
//
/*-RCS-Info----------------------------------------------------
-$Id: sfftobmp.h,v 1.6 1999/12/19 07:47:53 peter Exp peter $
+$Id: sffview.h,v 1.1.1.1 2005/05/20 21:27:30 pschaefer Exp $
---RCS-Info--------------------------------------------------*/
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/sffview-0.3/sffview.kateproject new/sffview-0.4/sffview.kateproject
--- old/sffview-0.3/sffview.kateproject 2004-02-29 17:33:49.000000000 +0100
+++ new/sffview-0.4/sffview.kateproject 1970-01-01 01:00:00.000000000 +0100
@@ -1,11 +0,0 @@
-[Dir inc]
-Dirs=
-Files=sffapp.h/sffdoc.h/sfftobmp.h/sffview.h
-
-[Project Dir]
-Dirs=
-Files=Makefile/sffapp.cpp/sffdoc.cpp/sffview.cpp/codes.h/decoder.h/sffapp.h/sffdoc.h/sffview.h/codes.cpp/decoder.cpp/sfftypes.h/common.cpp/common.h/sfffile.cpp/sfffile.h
-
-[Project File]
-Name=sffview
-Type=Default
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package rubygems
checked in at Mon Oct 30 22:34:05 CET 2006.
--------
--- rubygems/rubygems.changes 2006-10-20 01:33:57.000000000 +0200
+++ /mounts/work_src_done/STABLE/rubygems/rubygems.changes 2006-10-30 19:59:33.000000000 +0100
@@ -1,0 +2,6 @@
+Mon Oct 30 19:57:56 CET 2006 - mrueckert(a)suse.de
+
+- added Provides: rake = %{version}-%{release} for easier compat
+ with older packages
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ rubygems.spec ++++++
--- /var/tmp/diff_new_pack.QxUYpg/_old 2006-10-30 22:33:58.000000000 +0100
+++ /var/tmp/diff_new_pack.QxUYpg/_new 2006-10-30 22:33:58.000000000 +0100
@@ -13,7 +13,7 @@
Name: rubygems
#
Version: 0.9.0
-Release: 13
+Release: 19
#
License: Other uncritical OpenSource License
Group: Development/Languages/Ruby
@@ -22,6 +22,7 @@
BuildRequires: ruby-devel >= 1.8.4
Requires: ruby-devel >= 1.8.4
Provides: rubygems_with_buildroot_patch
+Provides: rake = %{version}-%{release}
#
URL: http://rubyforge.org/projects/rubygems/
Source: http://rubyforge.org/frs/download.php/11289/rubygems-0.9.0.tgz
@@ -101,6 +102,9 @@
%{_libdir}/ruby/gems/%{rb_ver}/doc/
%changelog -n rubygems
+* Mon Oct 30 2006 - mrueckert(a)suse.de
+- added Provides: rake = %%{version}-%%{release} for easier compat
+ with older packages
* Sun Oct 15 2006 - mrueckert(a)suse.de
- added gem_build_cleanup to delete temporary files from native
extensions.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package libgphoto2
checked in at Mon Oct 30 22:33:17 CET 2006.
--------
--- GNOME/libgphoto2/libgphoto2.changes 2006-10-27 16:54:46.000000000 +0200
+++ /mounts/work_src_done/STABLE/libgphoto2/libgphoto2.changes 2006-10-30 18:21:50.000000000 +0100
@@ -1,0 +2,7 @@
+Mon Oct 30 18:08:45 CET 2006 - meissner(a)suse.de
+
+- include doxygen documentation
+- use correct types for portable_audio_player so we
+ get ACLs from hal-resmgr.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libgphoto2.spec ++++++
--- /var/tmp/diff_new_pack.FNEiuc/_old 2006-10-30 22:32:50.000000000 +0100
+++ /var/tmp/diff_new_pack.FNEiuc/_new 2006-10-30 22:32:50.000000000 +0100
@@ -18,7 +18,7 @@
Group: Hardware/Other
Summary: A Digital Camera Library
Version: 2.2.1.5.trunk
-Release: 8
+Release: 9
Source0: libgphoto2-%{version}.tar.bz2
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Requires: udev resmgr
@@ -26,7 +26,7 @@
Requires: hal
%endif
%package devel
-Summary: A Digital Camera Library
+Summary: Development headers for libgphoto2
License: GNU Library General Public License v. 2.0 and 2.1 (LGPL)
Group: Hardware/Other
Requires: libgphoto2 = %version libusb libexif
@@ -91,16 +91,9 @@
%description devel
gPhoto (GNU Photo) is a set of libraries for previewing, retrieving,
and capturing images from a range of supported digital cameras to your
-local hard drive. It does not support digital cameras based on the USB
-storage protocol. Those can be mounted by Linux directly.
-
-As of this time, gPhoto supports around 500 cameras, listed on:
+local hard drive.
-http://gphoto.sourceforge.net/proj/libgphoto2/support.php
-
-or by running
-
-gphoto2 --list-cameras
+These are its development libraries and headers.
@@ -197,6 +190,7 @@
fi
%endif
popd
+mv doc/doxygen-output/libgphoto2-api.html apidocs
%clean
rm -rf $RPM_BUILD_ROOT
@@ -222,6 +216,7 @@
%files devel
%defattr(-,root,root)
+%doc apidocs
%{prefix}/include/gphoto2
%{prefix}/bin/gphoto2-config
%{prefix}/bin/gphoto2-port-config
@@ -236,6 +231,10 @@
%run_ldconfig
%changelog -n libgphoto2
+* Mon Oct 30 2006 - meissner(a)suse.de
+- include doxygen documentation
+- use correct types for portable_audio_player so we
+ get ACLs from hal-resmgr.
* Fri Oct 27 2006 - meissner(a)suse.de
- split into libgphoto2 and libgphoto2-devel
- updated to current TRUNK
++++++ libgphoto2-2.2.1.5.trunk.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libgphoto2-2.2.1.5.trunk/packaging/generic/print-camera-list.c new/libgphoto2-2.2.1.5.trunk/packaging/generic/print-camera-list.c
--- old/libgphoto2-2.2.1.5.trunk/packaging/generic/print-camera-list.c 2006-10-17 10:05:34.000000000 +0200
+++ new/libgphoto2-2.2.1.5.trunk/packaging/generic/print-camera-list.c 2006-10-30 18:06:22.000000000 +0100
@@ -770,8 +770,8 @@
printf(" <append key=\"info.capabilities\" type=\"strlist\">camera</append>\n");
printf(" <merge key=\"info.category\" type=\"string\">portable_audio_player</merge>\n");
printf(" <append key=\"info.capabilities\" type=\"strlist\">portable_audio_player</append>\n");
- printf(" <merge key=\"portable_audio_player.access_method\" type=\"string\">libgphoto2</merge>\n");
- printf(" <merge key=\"portable_audio_player.type\" type=\"string\">user</merge>\n");
+ printf(" <merge key=\"portable_audio_player.access_method\" type=\"string\">user</merge>\n");
+ printf(" <merge key=\"portable_audio_player.type\" type=\"string\">mtp</merge>\n");
/* FIXME: needs true formats ... But all of them can do MP3 */
printf(" <append key=\"portable_audio_player.output_formats\" type=\"strlist\">audio/mpeg</append>\n");
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0