openSUSE Commits
Threads by month
- ----- 2024 -----
- 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
April 2010
- 2 participants
- 1248 discussions
Hello community,
here is the log from the commit of package sssd for openSUSE:Factory
checked in at Thu Apr 1 18:01:32 CEST 2010.
--------
--- sssd/sssd.changes 2010-03-08 15:07:06.000000000 +0100
+++ /mounts/work_src_done/STABLE/sssd/sssd.changes 2010-03-31 16:03:24.000000000 +0200
@@ -1,0 +2,28 @@
+Wed Mar 31 14:02:43 UTC 2010 - rhafer(a)novell.com
+
+- Package pam- and nss-Modules as baselibs
+- cleaned up file list and dependencies
+- fixed init script dependencies
+
+-------------------------------------------------------------------
+Wed Mar 31 07:57:25 UTC 2010 - rhafer(a)novell.com
+
+- Updated to 1.1.0
+ * Support for IPv6
+ * Support for LDAP referrals
+ * Offline failed login counter
+ * Fix for the long-standing cache cleanup performance issues
+ * libini_config, libcollection, libdhash, libref_array and
+ libpath_utils are now built as shared libraries for general
+ consumption (libref_array and libpath_utils are currently not
+ packaged, as no component in sssd links against them)
+ * Users get feedback from PAM if they authenticated offline
+ * Native local backend now has a utility to show nested memberships
+ (sss_groupshow)
+ * New "simple" access provider for easy restriction of users
+- Backported libcrypto support from master to avoid Mozilla NSS
+ dependency
+- Backported password policy improvments for LDAP provider from
+ master
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
0001-by-default-use-logfiles-for-debug-messages.dif
sssd-1.0.5.tar.gz
New:
----
0001-Added-option-to-use-libcrypto-instead-of-NSS.patch
0002-Improvements-for-LDAP-Password-Policy-support.patch
0003-ldap-provider-ld-flags.patch
0004-init-script-dependencies.patch
baselibs.conf
sssd-1.1.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ sssd.spec ++++++
--- /var/tmp/diff_new_pack.Ceul2N/_old 2010-04-01 17:49:22.000000000 +0200
+++ /var/tmp/diff_new_pack.Ceul2N/_new 2010-04-01 17:49:22.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package sssd (Version 1.0.5)
+# spec file for package sssd (Version 1.1.0)
#
# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -18,18 +18,25 @@
Name: sssd
-Version: 1.0.5
-Release: 2
+Version: 1.1.0
+Release: 1
Group: System/Daemons
Summary: System Security Services Daemon
-# The entire source code is GPLv3+ except replace/ which is LGPLv3+
License: GPLv3+ and LGPLv3+
Url: https://fedorahosted.org/sssd/
Source0: %{name}-%{version}.tar.gz
-Patch0: 0001-by-default-use-logfiles-for-debug-messages.dif
+Source1: baselibs.conf
+Patch1: 0001-Added-option-to-use-libcrypto-instead-of-NSS.patch
+Patch2: 0002-Improvements-for-LDAP-Password-Policy-support.patch
+Patch3: 0003-ldap-provider-ld-flags.patch
+Patch4: 0004-init-script-dependencies.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
-### Patches ###
+%define dhash_version 0.4.0
+%define path_utils_version 0.2.0
+%define collection_version 0.4.0
+%define ini_config_version 0.4.0
+%define refarray_version 0.1.0
### Dependencies ###
%define servicename sssd
@@ -38,7 +45,6 @@
%define pipepath %{sssdstatedir}/pipes
### Build Dependencies ###
-
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: libtool
@@ -52,8 +58,6 @@
BuildRequires: openldap2-devel
BuildRequires: pam-devel
BuildRequires: pkg-config
-BuildRequires: mozilla-nss-devel
-BuildRequires: mozilla-nspr-devel
BuildRequires: pcre-devel
BuildRequires: libxslt
BuildRequires: libxml2
@@ -99,11 +103,84 @@
Provide python module to access and manage configuration of the System
Security Services Daemon (sssd).
+%package -n libdhash1
+Summary: Dynamic hash table
+Group: Development/Libraries/C and C++
+Version: %{dhash_version}
+Release: 1
+License: LGPLv3+
+
+%description -n libdhash1
+A hash table which will dynamically resize to achieve optimal storage & access
+time properties
+
+%package -n libdhash-devel
+Summary: Development files for libdhash
+Group: Development/Libraries/C and C++
+Version: %{dhash_version}
+Release: 1
+Requires: libdhash1 = %{dhash_version}
+License: LGPLv3+
+
+%description -n libdhash-devel
+A hash table which will dynamically resize to achieve optimal storage & access
+time properties
+
+%package -n libcollection1
+Summary: Collection data-type for C
+Group: Development/Libraries/C and C++
+Version: %{collection_version}
+Release: 1
+License: LGPLv3+
+
+%description -n libcollection1
+A data-type to collect data in a heirarchical structure for easy iteration
+and serialization
+
+%package -n libcollection-devel
+Summary: Development files for libcollection
+Group: Development/Libraries/C and C++
+Version: %{collection_version}
+Release: 1
+Requires: libcollection1 = %{collection_version}
+License: LGPLv3+
+
+%description -n libcollection-devel
+A data-type to collect data in a heirarchical structure for easy iteration
+and serialization
+
+%package -n libini_config1
+Summary: INI file parser for C
+Group: Development/Libraries/C and C++
+Version: %{ini_config_version}
+Release: 1
+License: LGPLv3+
+
+%description -n libini_config1
+Library to process config files in INI format into a libcollection data
+structure
+
+%package -n libini_config-devel
+Summary: Development files for libini_config
+Group: Development/Libraries/C and C++
+Version: %{ini_config_version}
+Release: 1
+Requires: libini_config1 = %{ini_config_version}
+License: LGPLv3+
+
+%description -n libini_config-devel
+Library to process config files in INI format into a libcollection data
+structure
+
%prep
%setup -q
-%patch0 -p1
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
%build
+autoreconf
export LDB_LIBS="-lldb"
export LDB_CFLAGS="-I/usr/include"
%configure \
@@ -112,6 +189,7 @@
--with-pipe-path=%{pipepath} \
--with-init-dir=%{_initrddir} \
--enable-nsslibdir=/%{_lib} \
+ --enable-cryptp=yes \
--with-ldb-lib-dir=%{_libdir}/ldb \
--with-selinux=no
@@ -124,41 +202,82 @@
make install DESTDIR=$RPM_BUILD_ROOT
# Copy default sssd.conf file
-mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/sssd
-install -m600 server/examples/sssd.conf $RPM_BUILD_ROOT%{_sysconfdir}/sssd/sssd.conf
-install server/sysv/SUSE/sssd $RPM_BUILD_ROOT%{_sysconfdir}/init.d/sssd
+install -d $RPM_BUILD_ROOT/%{_sysconfdir}/sssd
+install -m600 src/examples/sssd.conf $RPM_BUILD_ROOT%{_sysconfdir}/sssd/sssd.conf
+install src/sysv/SUSE/sssd $RPM_BUILD_ROOT%{_sysconfdir}/init.d/sssd
ln -sf ../../etc/init.d/sssd $RPM_BUILD_ROOT/usr/sbin/rcsssd
# Remove .la files created by libtool
rm -f \
$RPM_BUILD_ROOT/%{_lib}/libnss_sss.la \
$RPM_BUILD_ROOT/%{_lib}/security/pam_sss.la \
+ $RPM_BUILD_ROOT/%{_libdir}/*.la \
$RPM_BUILD_ROOT/%{_libdir}/ldb/memberof.la \
$RPM_BUILD_ROOT/%{_libdir}/python2.6/site-packages/pysss.la \
$RPM_BUILD_ROOT/%{_libdir}/sssd/libsss_ldap.la \
$RPM_BUILD_ROOT/%{_libdir}/sssd/libsss_proxy.la \
$RPM_BUILD_ROOT/%{_libdir}/sssd/libsss_krb5.la \
$RPM_BUILD_ROOT/%{_libdir}/sssd/libsss_ipa.la \
+ $RPM_BUILD_ROOT/%{_libdir}/sssd/libsss_simple.la \
$RPM_BUILD_ROOT/%{_libdir}/krb5/plugins/libkrb5/sssd_krb5_locator_plugin.la
+rm $RPM_BUILD_ROOT/%{_libdir}/*.a
%find_lang sss_daemon
-%find_lang sss_client
-cat sss_client.lang >> sss_daemon.lang
+#%find_lang sss_client
+#cat sss_client.lang >> sss_daemon.lang
+
+install -d $RPM_BUILD_ROOT/%{_docdir}/dhash
+mv $RPM_BUILD_ROOT/%{_datarootdir}/doc/dhash/* $RPM_BUILD_ROOT/%{_docdir}/dhash
+
+# remove currently unused libraries
+rm -f \
+ $RPM_BUILD_ROOT/%{_libdir}/libref_array.* \
+ $RPM_BUILD_ROOT/%{_libdir}/pkgconfig/ref_array.pc \
+ $RPM_BUILD_ROOT/%{_prefix}/include/ref_array*.h \
+ $RPM_BUILD_ROOT/%{_libdir}/libpath_utils.* \
+ $RPM_BUILD_ROOT/%{_libdir}/pkgconfig/path_utils.pc \
+ $RPM_BUILD_ROOT/%{_prefix}/include/path_utils.h
%clean
rm -rf $RPM_BUILD_ROOT
+%post -p /sbin/ldconfig
+
+%preun
+%stop_on_removal sssd
+
+%postun
+/sbin/ldconfig
+%restart_on_update sssd
+%insserv_cleanup
+
+%post -n libdhash1 -p /sbin/ldconfig
+
+%postun -n libdhash1 -p /sbin/ldconfig
+
+%post -n libcollection1 -p /sbin/ldconfig
+
+%postun -n libcollection1 -p /sbin/ldconfig
+
+%post -n libini_config1 -p /sbin/ldconfig
+
+%postun -n libini_config1 -p /sbin/ldconfig
+
%files -f sss_daemon.lang
%defattr(-,root,root,-)
%doc COPYING
%{_initrddir}/%{name}
%{_sbindir}/sssd
%{_sbindir}/rcsssd
-%{_libexecdir}/%{servicename}/
-%dir %{_libdir}/%{name}/
+%dir %{_libdir}/%{name}
+%dir %{_libexecdir}/%{name}
+%{_libexecdir}/%{name}/sss*
+%{_libexecdir}/%{name}/*_child
+%{_libexecdir}/%{name}/upgrade_config.py
%{_libdir}/%{name}/libsss_krb5*
%{_libdir}/%{name}/libsss_ldap*
%{_libdir}/%{name}/libsss_proxy*
+%{_libdir}/%{name}/libsss_simple*
%{_libdir}/ldb/memberof.so
%{_libdir}/krb5/plugins/libkrb5/*
%dir %{sssdstatedir}
@@ -174,10 +293,12 @@
%config %{_sysconfdir}/sssd/sssd.api.d/sssd-ldap.conf
%config %{_sysconfdir}/sssd/sssd.api.d/sssd-local.conf
%config %{_sysconfdir}/sssd/sssd.api.d/sssd-proxy.conf
+%config %{_sysconfdir}/sssd/sssd.api.d/sssd-simple.conf
/%{_lib}/libnss_sss.so.2
/%{_lib}/security/pam_sss.so
%{_mandir}/man5/sssd-krb5.*
%{_mandir}/man5/sssd-ldap.*
+%{_mandir}/man5/sssd-simple.*
%{_mandir}/man5/sssd.conf.*
%files tools
@@ -189,6 +310,7 @@
%{_sbindir}/sss_groupadd
%{_sbindir}/sss_groupdel
%{_sbindir}/sss_groupmod
+%{_sbindir}/sss_groupshow
%files ipa-provider
%defattr(-,root,root,-)
@@ -202,15 +324,35 @@
%{python_sitelib}/*.py*
%{python_sitelib}/*.egg-info
-%post
-/sbin/ldconfig
+%files -n libdhash1
+%defattr(-,root,root,-)
+%{_libdir}/libdhash.so.*
-%preun
-%stop_on_removal sssd
+%files -n libdhash-devel
+%defattr(-,root,root,-)
+%{_libdir}/libdhash.so
+%{_libdir}/pkgconfig/dhash.pc
+%{_prefix}/include/dhash.h
+%doc %{_docdir}/dhash
-%postun
-/sbin/ldconfig
-%restart_on_update sssd
-%insserv_cleanup
+%files -n libini_config1
+%defattr(-,root,root,-)
+%{_libdir}/libini_config.so.*
+
+%files -n libini_config-devel
+%defattr(-,root,root,-)
+%{_libdir}/libini_config.so
+%{_libdir}/pkgconfig/ini_config.pc
+%{_prefix}/include/ini_config.h
+
+%files -n libcollection1
+%defattr(-,root,root,-)
+%{_libdir}/libcollection.so.*
+
+%files -n libcollection-devel
+%defattr(-,root,root,-)
+%{_libdir}/libcollection.so
+%{_libdir}/pkgconfig/collection.pc
+%{_prefix}/include/collection*.h
%changelog
++++++ 0001-Added-option-to-use-libcrypto-instead-of-NSS.patch ++++++
>From bf75a22ffc04dfa0387a1389750b0a1e6d3ac397 Mon Sep 17 00:00:00 2001
From: Ralf Haferkamp <rhafer(a)suse.de>
Date: Fri, 26 Mar 2010 15:04:51 +0100
Subject: [PATCH] Added option to use libcrypto instead of NSS.
crypto_sha512crypt.c is a clone of nss_sha512crypt.c with the exception that
all usage of NSS and related libraries has been switched to libcrypto.
I renamed nss_sha512crypt.h to sha512crypt.h since it is common to both
crypto_sha512crypt.c and nss_sha512crypt.c. Note that the random number
generator is not seeded manually and thus relies on seeding done
automatically by libcrypto. On some systems without /dev/urandom
seeding may not be performed.
See http://www.openssl.org/docs/crypto/RAND_add.html.
Signed-off-by: George McCollister <georgem(a)novatech-llc.com>
Conflicts:
server/util/nss_sha512crypt.h
server/util/sha512crypt.h
src/Makefile.am
src/configure.ac
src/util/sha512crypt.h
---
server/external/crypto.m4 | 13 ++
server/util/crypto_sha512crypt.c | 382 ++++++++++++++++++++++++++++++++++++++
server/util/sha512crypt.h | 4 +
3 files changed, 399 insertions(+), 0 deletions(-)
create mode 100644 server/external/crypto.m4
create mode 100644 server/util/crypto_sha512crypt.c
create mode 100644 server/util/sha512crypt.h
diff --git a/server/external/crypto.m4 b/server/external/crypto.m4
new file mode 100644
index 0000000..d1bcf40
--- /dev/null
+++ b/server/external/crypto.m4
@@ -0,0 +1,13 @@
+AC_ARG_ENABLE(crypto,
+ [ --enable-crypto Use OpenSSL crypto instead of NSS],
+ [CRYPTO="$enableval"],
+ [CRYPTO="no"]
+)
+
+if test x$CRYPTO != xyes; then
+ PKG_CHECK_MODULES([NSS],[nss],[have_nss=1],[have_nss=])
+else
+ PKG_CHECK_MODULES([CRYPTO],[libcrypto],[have_crypto=1],[have_crypto=])
+fi
+AM_CONDITIONAL([HAVE_NSS], [test x$have_nss != x])
+AM_CONDITIONAL([HAVE_CRYPTO], [test x$have_crypto != x])
diff --git a/server/util/crypto_sha512crypt.c b/server/util/crypto_sha512crypt.c
new file mode 100644
index 0000000..9cd03a1
--- /dev/null
+++ b/server/util/crypto_sha512crypt.c
@@ -0,0 +1,382 @@
+/* This file is based on nss_sha512crypt.c which is based on the work of
+ * Ulrich Drepper (http://people.redhat.com/drepper/SHA-crypt.txt).
+ *
+ * libcrypto is used to provide SHA512 and random number generation.
+ * (http://www.openssl.org/docs/crypto/crypto.html).
+ *
+ * Sumit Bose <sbose(a)redhat.com>
+ * George McCollister <georgem(a)novatech-llc.com>
+ */
+/* SHA512-based Unix crypt implementation.
+ Released into the Public Domain by Ulrich Drepper <drepper(a)redhat.com>. */
+
+#define _GNU_SOURCE
+#include <endian.h>
+#include <errno.h>
+#include <limits.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/param.h>
+#include <sys/types.h>
+
+#include "util/util.h"
+
+#include <openssl/evp.h>
+#include <openssl/rand.h>
+
+/* Define our magic string to mark salt for SHA512 "encryption" replacement. */
+const char sha512_salt_prefix[] = "$6$";
+#define SALT_PREF_SIZE (sizeof(sha512_salt_prefix) - 1)
+
+/* Prefix for optional rounds specification. */
+const char sha512_rounds_prefix[] = "rounds=";
+#define ROUNDS_SIZE (sizeof(sha512_rounds_prefix) - 1)
+
+#define SALT_LEN_MAX 16
+#define ROUNDS_DEFAULT 5000
+#define ROUNDS_MIN 1000
+#define ROUNDS_MAX 999999999
+
+/* Table with characters for base64 transformation. */
+const char b64t[64] =
+ "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+
+/* base64 conversion function */
+static inline void b64_from_24bit(char **dest, size_t *len, size_t n,
+ uint8_t b2, uint8_t b1, uint8_t b0)
+{
+ uint32_t w;
+ size_t i;
+
+ if (*len < n) n = *len;
+
+ w = (b2 << 16) | (b1 << 8) | b0;
+ for (i = 0; i < n; i++) {
+ (*dest)[i] = b64t[w & 0x3f];
+ w >>= 6;
+ }
+
+ *len -= i;
+ *dest += i;
+}
+
+#define PTR_2_INT(x) ((x) - ((__typeof__ (x)) NULL))
+#define ALIGN64 __alignof__(uint64_t)
+
+static int sha512_crypt_r(const char *key,
+ const char *salt,
+ char *buffer, size_t buflen)
+{
+ unsigned char temp_result[64] __attribute__((__aligned__(ALIGN64)));
+ unsigned char alt_result[64] __attribute__((__aligned__(ALIGN64)));
+ size_t rounds = ROUNDS_DEFAULT;
+ bool rounds_custom = false;
+ EVP_MD_CTX alt_ctx;
+ EVP_MD_CTX ctx;
+ size_t salt_len;
+ size_t key_len;
+ size_t cnt;
+ char *copied_salt = NULL;
+ char *copied_key = NULL;
+ char *p_bytes = NULL;
+ char *s_bytes = NULL;
+ int p1, p2, p3, pt, n;
+ unsigned int part;
+ char *cp, *tmp;
+ int ret;
+
+ /* Find beginning of salt string. The prefix should normally always be
+ * present. Just in case it is not. */
+ if (strncmp(salt, sha512_salt_prefix, SALT_PREF_SIZE) == 0) {
+ /* Skip salt prefix. */
+ salt += SALT_PREF_SIZE;
+ }
+
+ if (strncmp(salt, sha512_rounds_prefix, ROUNDS_SIZE) == 0) {
+ unsigned long int srounds;
+ const char *num;
+ char *endp;
+
+ num = salt + ROUNDS_SIZE;
+ srounds = strtoul(num, &endp, 10);
+ if (*endp == '$') {
+ salt = endp + 1;
+ if (srounds < ROUNDS_MIN) srounds = ROUNDS_MIN;
+ if (srounds > ROUNDS_MAX) srounds = ROUNDS_MAX;
+ rounds = srounds;
+ rounds_custom = true;
+ }
+ }
+
+ salt_len = MIN(strcspn(salt, "$"), SALT_LEN_MAX);
+ key_len = strlen(key);
+
+ if ((PTR_2_INT(key) % ALIGN64) != 0) {
+ tmp = (char *)alloca(key_len + ALIGN64);
+ key = copied_key = memcpy(tmp + ALIGN64 - PTR_2_INT(tmp) % ALIGN64, key, key_len);
+ }
+
+ if (PTR_2_INT(salt) % ALIGN64 != 0) {
+ tmp = (char *)alloca(salt_len + ALIGN64);
+ salt = copied_salt = memcpy(tmp + ALIGN64 - PTR_2_INT(tmp) % ALIGN64, salt, salt_len);
+ }
+
+ EVP_MD_CTX_init(&ctx);
+
+ EVP_MD_CTX_init(&alt_ctx);
+
+ /* Prepare for the real work. */
+ if (!EVP_DigestInit_ex(&ctx, EVP_sha512(), NULL)) {
+ ret = EIO;
+ goto done;
+ }
+
+ /* Add the key string. */
+ EVP_DigestUpdate(&ctx, (const unsigned char *)key, key_len);
+
+ /* The last part is the salt string. This must be at most 16
+ * characters and it ends at the first `$' character (for
+ * compatibility with existing implementations). */
+ EVP_DigestUpdate(&ctx, (const unsigned char *)salt, salt_len);
+
+
+ /* Compute alternate SHA512 sum with input KEY, SALT, and KEY.
+ * The final result will be added to the first context. */
+ if (!EVP_DigestInit_ex(&alt_ctx, EVP_sha512(), NULL)) {
+ ret = EIO;
+ goto done;
+ }
+
+ /* Add key. */
+ EVP_DigestUpdate(&alt_ctx, (const unsigned char *)key, key_len);
+
+ /* Add salt. */
+ EVP_DigestUpdate(&alt_ctx, (const unsigned char *)salt, salt_len);
+
+ /* Add key again. */
+ EVP_DigestUpdate(&alt_ctx, (const unsigned char *)key, key_len);
+
+ /* Now get result of this (64 bytes) and add it to the other context. */
+ EVP_DigestFinal_ex(&alt_ctx, alt_result, &part);
+
+ /* Add for any character in the key one byte of the alternate sum. */
+ for (cnt = key_len; cnt > 64; cnt -= 64) {
+ EVP_DigestUpdate(&ctx, alt_result, 64);
+ }
+ EVP_DigestUpdate(&ctx, alt_result, cnt);
+
+ /* Take the binary representation of the length of the key and for every
+ * 1 add the alternate sum, for every 0 the key. */
+ for (cnt = key_len; cnt > 0; cnt >>= 1) {
+ if ((cnt & 1) != 0) {
+ EVP_DigestUpdate(&ctx, alt_result, 64);
+ } else {
+ EVP_DigestUpdate(&ctx, (const unsigned char *)key, key_len);
+ }
+ }
+
+ /* Create intermediate result. */
+ EVP_DigestFinal_ex(&ctx, alt_result, &part);
+
+ /* Start computation of P byte sequence. */
+ if (!EVP_DigestInit_ex(&alt_ctx, EVP_sha512(), NULL)) {
+ ret = EIO;
+ goto done;
+ }
+
+ /* For every character in the password add the entire password. */
+ for (cnt = 0; cnt < key_len; cnt++) {
+ EVP_DigestUpdate(&alt_ctx, (const unsigned char *)key, key_len);
+ }
+
+ /* Finish the digest. */
+ EVP_DigestFinal_ex(&alt_ctx, temp_result, &part);
+
+ /* Create byte sequence P. */
+ cp = p_bytes = alloca(key_len);
+ for (cnt = key_len; cnt >= 64; cnt -= 64) {
+ cp = mempcpy(cp, temp_result, 64);
+ }
+ memcpy(cp, temp_result, cnt);
+
+ /* Start computation of S byte sequence. */
+ if (!EVP_DigestInit_ex(&alt_ctx, EVP_sha512(), NULL)) {
+ ret = EIO;
+ goto done;
+ }
+
+ /* For every character in the password add the entire salt. */
+ for (cnt = 0; cnt < 16 + alt_result[0]; cnt++) {
+ EVP_DigestUpdate(&alt_ctx, (const unsigned char *)salt, salt_len);
+ }
+
+ /* Finish the digest. */
+ EVP_DigestFinal_ex(&alt_ctx, temp_result, &part);
+
+ /* Create byte sequence S. */
+ cp = s_bytes = alloca(salt_len);
+ for (cnt = salt_len; cnt >= 64; cnt -= 64) {
+ cp = mempcpy(cp, temp_result, 64);
+ }
+ memcpy(cp, temp_result, cnt);
+
+ /* Repeatedly run the collected hash value through SHA512 to burn CPU cycles. */
+ for (cnt = 0; cnt < rounds; cnt++) {
+
+ if (!EVP_DigestInit_ex(&ctx, EVP_sha512(), NULL)) {
+ ret = EIO;
+ goto done;
+ }
+
+ /* Add key or last result. */
+ if ((cnt & 1) != 0) {
+ EVP_DigestUpdate(&ctx, (const unsigned char *)p_bytes, key_len);
+ } else {
+ EVP_DigestUpdate(&ctx, alt_result, 64);
+ }
+
+ /* Add salt for numbers not divisible by 3. */
+ if (cnt % 3 != 0) {
+ EVP_DigestUpdate(&ctx, (const unsigned char *)s_bytes, salt_len);
+ }
+
+ /* Add key for numbers not divisible by 7. */
+ if (cnt % 7 != 0) {
+ EVP_DigestUpdate(&ctx, (const unsigned char *)p_bytes, key_len);
+ }
+
+ /* Add key or last result. */
+ if ((cnt & 1) != 0) {
+ EVP_DigestUpdate(&ctx, alt_result, 64);
+ } else {
+ EVP_DigestUpdate(&ctx, (const unsigned char *)p_bytes, key_len);
+ }
+
+ /* Create intermediate result. */
+ EVP_DigestFinal_ex(&ctx, alt_result, &part);
+ }
+
+ /* Now we can construct the result string.
+ * It consists of three parts. */
+ if (buflen <= SALT_PREF_SIZE) {
+ ret = ERANGE;
+ goto done;
+ }
+
+ cp = __stpncpy(buffer, sha512_salt_prefix, SALT_PREF_SIZE);
+ buflen -= SALT_PREF_SIZE;
+
+ if (rounds_custom) {
+ n = snprintf(cp, buflen, "%s%zu$",
+ sha512_rounds_prefix, rounds);
+ if (n < 0 || n >= buflen) {
+ ret = ERANGE;
+ goto done;
+ }
+ cp += n;
+ buflen -= n;
+ }
+
+ if (buflen <= salt_len + 1) {
+ ret = ERANGE;
+ goto done;
+ }
+ cp = __stpncpy(cp, salt, salt_len);
+ *cp++ = '$';
+ buflen -= salt_len + 1;
+
+ /* fuzzyfill the base 64 string */
+ p1 = 0;
+ p2 = 21;
+ p3 = 42;
+ for (n = 0; n < 21; n++) {
+ b64_from_24bit(&cp, &buflen, 4, alt_result[p1], alt_result[p2], alt_result[p3]);
+ if (buflen == 0) {
+ ret = ERANGE;
+ goto done;
+ }
+ pt = p1;
+ p1 = p2 + 1;
+ p2 = p3 + 1;
+ p3 = pt + 1;
+ }
+ /* 64th and last byte */
+ b64_from_24bit(&cp, &buflen, 2, 0, 0, alt_result[p3]);
+ if (buflen == 0) {
+ ret = ERANGE;
+ goto done;
+ }
+
+ *cp = '\0';
+ ret = EOK;
+
+done:
+ /* Clear the buffer for the intermediate result so that people attaching
+ * to processes or reading core dumps cannot get any information. We do it
+ * in this way to clear correct_words[] inside the SHA512 implementation
+ * as well. */
+ EVP_MD_CTX_cleanup(&ctx);
+ EVP_MD_CTX_cleanup(&alt_ctx);
+ if (p_bytes) memset(p_bytes, '\0', key_len);
+ if (s_bytes) memset(s_bytes, '\0', salt_len);
+ if (copied_key) memset(copied_key, '\0', key_len);
+ if (copied_salt) memset(copied_salt, '\0', salt_len);
+ memset(temp_result, '\0', sizeof(temp_result));
+
+ return ret;
+}
+
+int s3crypt_sha512(TALLOC_CTX *memctx,
+ const char *key, const char *salt, char **_hash)
+{
+ char *hash;
+ int hlen = (sizeof (sha512_salt_prefix) - 1
+ + sizeof (sha512_rounds_prefix) + 9 + 1
+ + strlen (salt) + 1 + 86 + 1);
+ int ret;
+
+ hash = talloc_size(memctx, hlen);
+ if (!hash) return ENOMEM;
+
+ ret = sha512_crypt_r(key, salt, hash, hlen);
+ if (ret) return ret;
+
+ *_hash = hash;
+ return ret;
+}
+
+#define SALT_RAND_LEN 12
+
+int s3crypt_gen_salt(TALLOC_CTX *memctx, char **_salt)
+{
+ uint8_t rb[SALT_RAND_LEN];
+ char *salt, *cp;
+ size_t slen;
+ int ret;
+
+ salt = talloc_size(memctx, SALT_LEN_MAX + 1);
+ if (!salt) {
+ return ENOMEM;
+ }
+
+ ret = RAND_bytes(rb, SALT_RAND_LEN);
+ if (ret == 0) {
+ return EIO;
+ }
+
+ slen = SALT_LEN_MAX;
+ cp = salt;
+ b64_from_24bit(&cp, &slen, 4, rb[0], rb[1], rb[2]);
+ b64_from_24bit(&cp, &slen, 4, rb[3], rb[4], rb[5]);
+ b64_from_24bit(&cp, &slen, 4, rb[6], rb[7], rb[8]);
+ b64_from_24bit(&cp, &slen, 4, rb[9], rb[10], rb[11]);
+ *cp = '\0';
+
+ *_salt = salt;
+
+ return EOK;
+}
+
diff --git a/server/util/sha512crypt.h b/server/util/sha512crypt.h
new file mode 100644
index 0000000..5512c5d
--- /dev/null
+++ b/server/util/sha512crypt.h
@@ -0,0 +1,4 @@
+
+int s3crypt_sha512(TALLOC_CTX *mmectx,
+ const char *key, const char *salt, char **_hash);
+int s3crypt_gen_salt(TALLOC_CTX *memctx, char **_salt);
--
1.7.0.2
++++++ 0002-Improvements-for-LDAP-Password-Policy-support.patch ++++++
>From 536c01cf9a04573c2351542fe00973e1538014a5 Mon Sep 17 00:00:00 2001
From: Ralf Haferkamp <rhafer(a)suse.de>
Date: Fri, 12 Mar 2010 10:54:40 +0100
Subject: [PATCH] Improvements for LDAP Password Policy support
Display warnings about remaining grace logins and password
expiration to the user, when LDAP Password Policies are used.
Improved detection if LDAP Password policies are supported by
LDAP Server.
---
src/providers/ldap/ldap_auth.c | 52 +++++++++++++++++-
src/providers/ldap/sdap.h | 5 ++
src/providers/ldap/sdap_async.h | 6 ++-
src/providers/ldap/sdap_async_connection.c | 53 +++++++++++++++----
src/sss_client/pam_sss.c | 82 ++++++++++++++++++++++++++++
src/sss_client/sss_cli.h | 23 ++++++---
6 files changed, 201 insertions(+), 20 deletions(-)
diff --git a/src/providers/ldap/ldap_auth.c b/src/providers/ldap/ldap_auth.c
index 5228703..8c77e3a 100644
--- a/src/providers/ldap/ldap_auth.c
+++ b/src/providers/ldap/ldap_auth.c
@@ -7,6 +7,7 @@
Sumit Bose <sbose(a)redhat.com>
Copyright (C) 2008 Red Hat
+ Copyright (C) 2010, rhafer(a)suse.de, Novell Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -135,6 +136,39 @@ static errno_t check_pwexpire_shadow(struct spwd *spwd, time_t now,
return EOK;
}
+static errno_t check_pwexpire_ldap(struct pam_data *pd,
+ struct sdap_ppolicy_data *ppolicy,
+ enum sdap_result *result)
+{
+ if (ppolicy->grace > 0 || ppolicy->expire > 0) {
+ uint32_t *data;
+ uint32_t *ptr;
+
+ data = talloc_size(pd, 2* sizeof(uint32_t));
+ if (data == NULL) {
+ DEBUG(1, ("talloc_size failed.\n"));
+ return ENOMEM;
+ }
+
+ ptr = data;
+ if (ppolicy->grace > 0) {
+ *ptr = SSS_PAM_USER_INFO_GRACE_LOGIN;
+ ptr++;
+ *ptr = ppolicy->grace;
+ } else if (ppolicy->expire > 0) {
+ *ptr = SSS_PAM_USER_INFO_EXPIRE_WARN;
+ ptr++;
+ *ptr = ppolicy->expire;
+ }
+
+ pam_add_response(pd, SSS_PAM_USER_INFO, 2* sizeof(uint32_t),
+ (uint8_t*)data);
+ }
+
+ *result = SDAP_AUTH_SUCCESS;
+ return EOK;
+}
+
static errno_t string_to_shadowpw_days(const char *s, long *d)
{
long l;
@@ -569,8 +603,15 @@ static void auth_bind_user_done(struct tevent_req *subreq)
struct auth_state *state = tevent_req_data(req,
struct auth_state);
int ret;
-
- ret = sdap_auth_recv(subreq, &state->result);
+ struct sdap_ppolicy_data *ppolicy;
+
+ ret = sdap_auth_recv(subreq, state, &state->result, &ppolicy);
+ if (ppolicy != NULL) {
+ DEBUG(9,("Found ppolicy data, "
+ "assuming LDAP password policies are active.\n"));
+ state->pw_expire_type = PWEXPIRE_LDAP_PASSWORD_POLICY;
+ state->pw_expire_data = ppolicy;
+ }
talloc_zfree(subreq);
if (ret) {
tevent_req_error(req, ret);
@@ -960,6 +1001,13 @@ static void sdap_pam_auth_done(struct tevent_req *req)
}
break;
case PWEXPIRE_LDAP_PASSWORD_POLICY:
+ ret = check_pwexpire_ldap(state->pd, pw_expire_data, &result);
+ if (ret != EOK) {
+ DEBUG(1, ("check_pwexpire_ldap failed.\n"));
+ state->pd->pam_status = PAM_SYSTEM_ERR;
+ goto done;
+ }
+ break;
case PWEXPIRE_NONE:
break;
default:
diff --git a/src/providers/ldap/sdap.h b/src/providers/ldap/sdap.h
index 007185f..f0e345e 100644
--- a/src/providers/ldap/sdap.h
+++ b/src/providers/ldap/sdap.h
@@ -85,6 +85,11 @@ struct sdap_service {
char *uri;
};
+struct sdap_ppolicy_data {
+ int grace;
+ int expire;
+};
+
#define SYSDB_SHADOWPW_LASTCHANGE "shadowLastChange"
#define SYSDB_SHADOWPW_MIN "shadowMin"
#define SYSDB_SHADOWPW_MAX "shadowMax"
diff --git a/src/providers/ldap/sdap_async.h b/src/providers/ldap/sdap_async.h
index 3c52d23..888df6b 100644
--- a/src/providers/ldap/sdap_async.h
+++ b/src/providers/ldap/sdap_async.h
@@ -76,7 +76,11 @@ struct tevent_req *sdap_auth_send(TALLOC_CTX *memctx,
const char *user_dn,
const char *authtok_type,
struct dp_opt_blob authtok);
-int sdap_auth_recv(struct tevent_req *req, enum sdap_result *result);
+
+int sdap_auth_recv(struct tevent_req *req,
+ TALLOC_CTX *memctx,
+ enum sdap_result *result,
+ struct sdap_ppolicy_data **ppolicy);
struct tevent_req *sdap_get_initgr_send(TALLOC_CTX *memctx,
struct tevent_context *ev,
diff --git a/src/providers/ldap/sdap_async_connection.c b/src/providers/ldap/sdap_async_connection.c
index 586733f..f8c6956 100644
--- a/src/providers/ldap/sdap_async_connection.c
+++ b/src/providers/ldap/sdap_async_connection.c
@@ -4,6 +4,7 @@
Async LDAP Helper routines
Copyright (C) Simo Sorce <ssorce(a)redhat.com> - 2009
+ Copyright (C) 2010, rhafer(a)suse.de, Novell Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -278,6 +279,7 @@ struct simple_bind_state {
struct sdap_op *op;
struct sdap_msg *reply;
+ struct sdap_ppolicy_data *ppolicy;
int result;
};
@@ -401,6 +403,7 @@ static void simple_bind_done(struct sdap_op *op,
if (response_controls == NULL) {
DEBUG(5, ("Server returned no controls.\n"));
+ state->ppolicy = NULL;
} else {
for (c = 0; response_controls[c] != NULL; c++) {
DEBUG(9, ("Server returned control [%s].\n",
@@ -420,12 +423,30 @@ static void simple_bind_done(struct sdap_op *op,
DEBUG(7, ("Password Policy Response: expire [%d] grace [%d] "
"error [%s].\n", pp_expire, pp_grace,
ldap_passwordpolicy_err2txt(pp_error)));
-
- if ((state->result == LDAP_SUCCESS &&
- (pp_error == PP_changeAfterReset || pp_grace > 0)) ||
- (state->result == LDAP_INVALID_CREDENTIALS &&
- pp_error == PP_passwordExpired ) ) {
- DEBUG(4, ("User must set a new password.\n"));
+ state->ppolicy = talloc(state, struct sdap_ppolicy_data);
+ if (state->ppolicy == NULL) {
+ DEBUG(1, ("talloc failed.\n"));
+ ret = ENOMEM;
+ goto done;
+ }
+ state->ppolicy->grace = pp_grace;
+ state->ppolicy->expire = pp_expire;
+ if (state->result == LDAP_SUCCESS) {
+ if (pp_error == PP_changeAfterReset) {
+ DEBUG(4, ("Password was reset. "
+ "User must set a new password.\n"));
+ state->result = LDAP_X_SSSD_PASSWORD_EXPIRED;
+ } else if (pp_grace > 0) {
+ DEBUG(4, ("Password expired. "
+ "[%d] grace logins remaining.\n", pp_grace));
+ } else if (pp_expire > 0) {
+ DEBUG(4, ("Password will expire in [%d] seconds.\n",
+ pp_expire));
+ }
+ } else if (state->result == LDAP_INVALID_CREDENTIALS &&
+ pp_error == PP_passwordExpired) {
+ DEBUG(4,
+ ("Password expired user must set a new password.\n"));
state->result = LDAP_X_SSSD_PASSWORD_EXPIRED;
}
}
@@ -446,7 +467,10 @@ done:
}
}
-static int simple_bind_recv(struct tevent_req *req, int *ldaperr)
+static int simple_bind_recv(struct tevent_req *req,
+ TALLOC_CTX *memctx,
+ int *ldaperr,
+ struct sdap_ppolicy_data **ppolicy)
{
struct simple_bind_state *state = tevent_req_data(req,
struct simple_bind_state);
@@ -455,6 +479,7 @@ static int simple_bind_recv(struct tevent_req *req, int *ldaperr)
TEVENT_REQ_RETURN_ON_ERROR(req);
*ldaperr = state->result;
+ *ppolicy = talloc_steal(memctx, state->ppolicy);
return EOK;
}
@@ -704,6 +729,7 @@ int sdap_kinit_recv(struct tevent_req *req, enum sdap_result *result)
struct sdap_auth_state {
const char *user_dn;
struct berval pw;
+ struct sdap_ppolicy_data *ppolicy;
int result;
bool is_sasl;
@@ -766,8 +792,9 @@ static void sdap_auth_done(struct tevent_req *subreq)
if (state->is_sasl) {
ret = sasl_bind_recv(subreq, &state->result);
+ state->ppolicy = NULL;
} else {
- ret = simple_bind_recv(subreq, &state->result);
+ ret = simple_bind_recv(subreq, state, &state->result, &state->ppolicy);
}
if (ret != EOK) {
tevent_req_error(req, ret);
@@ -777,7 +804,10 @@ static void sdap_auth_done(struct tevent_req *subreq)
tevent_req_done(req);
}
-int sdap_auth_recv(struct tevent_req *req, enum sdap_result *result)
+int sdap_auth_recv(struct tevent_req *req,
+ TALLOC_CTX *memctx,
+ enum sdap_result *result,
+ struct sdap_ppolicy_data **ppolicy)
{
struct sdap_auth_state *state = tevent_req_data(req,
struct sdap_auth_state);
@@ -785,6 +815,9 @@ int sdap_auth_recv(struct tevent_req *req, enum sdap_result *result)
*result = SDAP_ERROR;
TEVENT_REQ_RETURN_ON_ERROR(req);
+ if (ppolicy != NULL) {
+ *ppolicy = talloc_steal(memctx, state->ppolicy);
+ }
switch (state->result) {
case LDAP_SUCCESS:
*result = SDAP_AUTH_SUCCESS;
@@ -1078,7 +1111,7 @@ static void sdap_cli_auth_done(struct tevent_req *subreq)
enum sdap_result result;
int ret;
- ret = sdap_auth_recv(subreq, &result);
+ ret = sdap_auth_recv(subreq, NULL, &result, NULL);
talloc_zfree(subreq);
if (ret) {
tevent_req_error(req, ret);
diff --git a/src/sss_client/pam_sss.c b/src/sss_client/pam_sss.c
index 2ba6f15..07ed4e7 100644
--- a/src/sss_client/pam_sss.c
+++ b/src/sss_client/pam_sss.c
@@ -3,6 +3,7 @@
Sumit Bose <sbose(a)redhat.com>
Copyright (C) 2009 Red Hat
+ Copyright (C) 2010, rhafer(a)suse.de, Novell Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
@@ -436,6 +437,81 @@ static int user_info_offline_auth(pam_handle_t *pamh, size_t buflen,
return PAM_SUCCESS;
}
+static int user_info_grace_login(pam_handle_t *pamh,
+ size_t buflen,
+ uint8_t *buf)
+{
+ int ret;
+ uint32_t grace;
+ char user_msg[256];
+
+ if (buflen != 2* sizeof(uint32_t)) {
+ D(("User info response data has the wrong size"));
+ return PAM_BUF_ERR;
+ }
+ memcpy(&grace, buf + sizeof(uint32_t), sizeof(uint32_t));
+ ret = snprintf(user_msg, sizeof(user_msg),
+ _("Your password has expired. "
+ "You have %d grace login(s) remaining."),
+ grace);
+ if (ret < 0 || ret >= sizeof(user_msg)) {
+ D(("snprintf failed."));
+ return PAM_SYSTEM_ERR;
+ }
+ ret = do_pam_conversation(pamh, PAM_TEXT_INFO, user_msg, NULL, NULL);
+
+ if (ret != PAM_SUCCESS) {
+ D(("do_pam_conversation failed."));
+ return PAM_SYSTEM_ERR;
+ }
+
+ return PAM_SUCCESS;
+}
+
+#define MINSEC 60
+#define HOURSEC (60*MINSEC)
+#define DAYSEC (24*HOURSEC)
+static int user_info_expire_warn(pam_handle_t *pamh,
+ size_t buflen,
+ uint8_t *buf)
+{
+ int ret;
+ uint32_t expire;
+ char user_msg[256];
+ const char* unit="second(s)";
+
+ if (buflen != 2* sizeof(uint32_t)) {
+ D(("User info response data has the wrong size"));
+ return PAM_BUF_ERR;
+ }
+ memcpy(&expire, buf + sizeof(uint32_t), sizeof(uint32_t));
+ if (expire >= DAYSEC) {
+ expire /= DAYSEC;
+ unit = "day(s)";
+ } else if (expire >= HOURSEC) {
+ expire /= HOURSEC;
+ unit = "hour(s)";
+ } else if (expire >= MINSEC) {
+ expire /= MINSEC;
+ unit = "minute(s)";
+ }
+
+ ret = snprintf(user_msg, sizeof(user_msg),
+ _("Your password will expire in %d %s."), expire, unit);
+ if (ret < 0 || ret >= sizeof(user_msg)) {
+ D(("snprintf failed."));
+ return PAM_SYSTEM_ERR;
+ }
+ ret = do_pam_conversation(pamh, PAM_TEXT_INFO, user_msg, NULL, NULL);
+
+ if (ret != PAM_SUCCESS) {
+ D(("do_pam_conversation failed."));
+ return PAM_SYSTEM_ERR;
+ }
+
+ return PAM_SUCCESS;
+}
+
static int user_info_offline_auth_delayed(pam_handle_t *pamh, size_t buflen,
uint8_t *buf)
{
@@ -563,6 +639,12 @@ static int eval_user_info_response(pam_handle_t *pamh, size_t buflen,
case SSS_PAM_USER_INFO_OFFLINE_AUTH:
ret = user_info_offline_auth(pamh, buflen, buf);
break;
+ case SSS_PAM_USER_INFO_GRACE_LOGIN:
+ ret = user_info_grace_login(pamh, buflen, buf);
+ break;
+ case SSS_PAM_USER_INFO_EXPIRE_WARN:
+ ret = user_info_expire_warn(pamh, buflen, buf);
+ break;
case SSS_PAM_USER_INFO_OFFLINE_AUTH_DELAYED:
ret = user_info_offline_auth_delayed(pamh, buflen, buf);
break;
diff --git a/src/sss_client/sss_cli.h b/src/sss_client/sss_cli.h
index 2edd158..f387265 100644
--- a/src/sss_client/sss_cli.h
+++ b/src/sss_client/sss_cli.h
@@ -377,13 +377,22 @@ enum user_info_type {
* possible to change the password while
* the system is offline. This message
* is generated by the PAM responder. */
- SSS_PAM_USER_INFO_CHPASS_ERROR /**< Tell the user that a password change
- * failed and optionally give a reason.
- * @param Size of the message as unsigned
- * 32-bit integer value. A value of 0
- * indicates that no message is following.
- * @param String with the specified
- * length. */
+ SSS_PAM_USER_INFO_CHPASS_ERROR, /**< Tell the user that a password change
+ * failed and optionally give a reason.
+ * @param Size of the message as unsigned
+ * 32-bit integer value. A value of 0
+ * indicates that no message is following.
+ * @param String with the specified
+ * length. */
+ SSS_PAM_USER_INFO_GRACE_LOGIN, /**< Warn the user that the password is
+ * expired and inform about the remaining
+ * number of grace logins.
+ * @param The number of remaining grace
+ * logins as uint32_t */
+ SSS_PAM_USER_INFO_EXPIRE_WARN /**< Warn the user that the password will
+ * expire soon.
+ * @param Number of seconds before the user's
+ * password will expire. */
};
/**
* @}
--
1.7.0.2
++++++ 0003-ldap-provider-ld-flags.patch ++++++
>From 840bb425fe0cb6f4904d5610ffd1fdfd9eed235d Mon Sep 17 00:00:00 2001
From: Ralf Haferkamp <rhafer(a)suse.de>
Date: Wed, 31 Mar 2010 10:40:13 +0200
Subject: [PATCH] ldap provider ld flags
The LDAP provider needs to be linked against libdhash
---
src/Makefile.am | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/src/Makefile.am b/src/Makefile.am
index 6d46cda..6f14eee 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -717,9 +717,11 @@ libsss_ldap_la_SOURCES = \
util/sss_krb5.c
libsss_ldap_la_CFLAGS = \
$(AM_CFLAGS) \
+ $(DHASH_CFLAGS) \
$(LDAP_CFLAGS) \
$(KRB5_CFLAGS)
libsss_ldap_la_LIBADD = \
+ $(DHASH_LIBS) \
$(OPENLDAP_LIBS) \
$(KRB5_LIBS)
libsss_ldap_la_LDFLAGS = \
--
1.7.0.2
++++++ 0004-init-script-dependencies.patch ++++++
>From b9090cb4d12147267a4fb1ad9bb74bb226bcbe34 Mon Sep 17 00:00:00 2001
From: Ralf Haferkamp <rhafer(a)suse.de>
Date: Wed, 31 Mar 2010 12:21:21 +0200
Subject: [PATCH] init script dependencies
---
src/sysv/SUSE/sssd | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/sysv/SUSE/sssd b/src/sysv/SUSE/sssd
index 2f98c21..262ecde 100644
--- a/src/sysv/SUSE/sssd
+++ b/src/sysv/SUSE/sssd
@@ -1,10 +1,10 @@
#!/bin/sh
### BEGIN INIT INFO
# Provides: sssd
-# Required-Start: $remote_fs $time
+# Required-Start: $network $remote_fs $time
# Should-Start: $syslog
# Should-Stop: $syslog
-# Required-Stop: $remote_fs
+# Required-Stop: $network $remote_fs $time
# Default-Start: 3 5
# Default-Stop: 0 1 2 4 6
# Short-Description: System Security Services Daemon
--
1.7.0.2
++++++ baselibs.conf ++++++
sssd
supplements "packageand(sssd:pam-<targettype>)"
supplements "packageand(sssd:glibc-<targettype>)"
-/usr/lib(64)?/*
++++++ sssd-1.0.5.tar.gz -> sssd-1.1.0.tar.gz ++++++
++++ 416537 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 telepathy-gabble for openSUSE:Factory
checked in at Thu Apr 1 17:48:59 CEST 2010.
--------
--- GNOME/telepathy-gabble/telepathy-gabble.changes 2010-03-17 22:18:59.000000000 +0100
+++ /mounts/work_src_done/STABLE/telepathy-gabble/telepathy-gabble.changes 2010-03-27 10:30:11.000000000 +0100
@@ -1,0 +2,12 @@
+Sat Mar 27 10:32:16 CET 2010 - vuntz(a)opensuse.org
+
+- Update to version 0.9.9:
+ + Enhancements:
+ + Update Wocky:
+ - New and exiting Dataforms code!
+ + Various portability improvements
+ + Fixes:
+ + Fix mail notification on GTalk showing at most 30 unread
+ mails
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
telepathy-gabble-0.9.8.tar.bz2
New:
----
telepathy-gabble-0.9.9.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ telepathy-gabble.spec ++++++
--- /var/tmp/diff_new_pack.169jx3/_old 2010-04-01 17:48:53.000000000 +0200
+++ /var/tmp/diff_new_pack.169jx3/_new 2010-04-01 17:48:53.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package telepathy-gabble (Version 0.9.8)
+# spec file for package telepathy-gabble (Version 0.9.9)
#
# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -18,7 +18,7 @@
Name: telepathy-gabble
-Version: 0.9.8
+Version: 0.9.9
Release: 1
# FIXME: switch to libgnutls-devel once we have a recent enough version of gnutls
License: LGPLv2.1+
++++++ telepathy-gabble-0.9.8.tar.bz2 -> telepathy-gabble-0.9.9.tar.bz2 ++++++
++++ 10346 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 telepathy-salut for openSUSE:Factory
checked in at Thu Apr 1 17:48:55 CEST 2010.
--------
--- GNOME/telepathy-salut/telepathy-salut.changes 2009-09-14 10:19:01.000000000 +0200
+++ /mounts/work_src_done/STABLE/telepathy-salut/telepathy-salut.changes 2010-03-26 12:07:45.000000000 +0100
@@ -1,0 +2,11 @@
+Fri Mar 26 12:06:33 CET 2010 - vuntz(a)opensuse.org
+
+- Update to version 0.3.11:
+ + Enhancements:
+ - Implement TpMessageMixin and therefore the
+ Channel.Interface.Messages.
+ + Fixes:
+ - Fix strict aliasing warnings from gcc.
+ - Fix assertion due to g_set_prgname being called twice.
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
telepathy-salut-0.3.10.tar.bz2
New:
----
telepathy-salut-0.3.11.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ telepathy-salut.spec ++++++
--- /var/tmp/diff_new_pack.8Sx7Ai/_old 2010-04-01 17:48:49.000000000 +0200
+++ /var/tmp/diff_new_pack.8Sx7Ai/_new 2010-04-01 17:48:49.000000000 +0200
@@ -1,7 +1,7 @@
#
-# spec file for package telepathy-salut (Version 0.3.10)
+# spec file for package telepathy-salut (Version 0.3.11)
#
-# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,9 +19,9 @@
Name: telepathy-salut
-Version: 0.3.10
+Version: 0.3.11
Release: 1
-License: GPL v2 or later
+License: GPLv2+
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: cyrus-sasl-devel
BuildRequires: dbus-1-glib-devel
@@ -42,14 +42,8 @@
A connection manager for Telepathy that implement peer to peer XMPP
using local-link as done by and compatible with Apple Bonjour(tm) chat.
-
-
-Authors:
---------
- Sjoerd Simons <sjoerd(a)luon.net>
-
%package doc
-License: GPL v2 or later
+License: GPLv2+
Summary: Link-local XMPP connection manager for Telepathy (documentation)
Group: Documentation/Other
Requires: %{name} = %{version}
@@ -60,12 +54,6 @@
This package contain the documentation.
-
-
-Authors:
---------
- Sjoerd Simons <sjoerd(a)luon.net>
-
%prep
%setup -q
++++++ telepathy-salut-0.3.10.tar.bz2 -> telepathy-salut-0.3.11.tar.bz2 ++++++
++++ 15217 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 telepathy-stream-engine for openSUSE:Factory
checked in at Thu Apr 1 17:48:43 CEST 2010.
--------
--- GNOME/telepathy-stream-engine/telepathy-stream-engine.changes 2010-02-10 20:27:20.000000000 +0100
+++ /mounts/work_src_done/STABLE/telepathy-stream-engine/telepathy-stream-engine.changes 2010-03-23 08:56:39.000000000 +0100
@@ -1,0 +2,10 @@
+Mon Mar 22 23:23:02 CET 2010 - dimstar(a)opensuse.org
+
+- Update to version 0.5.15:
+ + Build on amd64
+ + Track video threads like the audio threads
+ + Lower the niceness of the video threads to increase
+ interactivity
+ + Remove audio sinks when the output pads are removed
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
telepathy-stream-engine-0.5.14.tar.bz2
New:
----
telepathy-stream-engine-0.5.15.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ telepathy-stream-engine.spec ++++++
--- /var/tmp/diff_new_pack.B6rbaz/_old 2010-04-01 17:48:34.000000000 +0200
+++ /var/tmp/diff_new_pack.B6rbaz/_new 2010-04-01 17:48:34.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package telepathy-stream-engine (Version 0.5.14)
+# spec file for package telepathy-stream-engine (Version 0.5.15)
#
# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -27,7 +27,7 @@
BuildRequires: hal-devel
BuildRequires: libxslt
BuildRequires: python-xml
-Version: 0.5.14
+Version: 0.5.15
Release: 1
License: LGPLv2.1+
# runtime dependency
++++++ telepathy-stream-engine-0.5.14.tar.bz2 -> telepathy-stream-engine-0.5.15.tar.bz2 ++++++
++++ 2692 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/telepathy-stream-engine-0.5.14/ChangeLog new/telepathy-stream-engine-0.5.15/ChangeLog
--- old/telepathy-stream-engine-0.5.14/ChangeLog 2010-02-05 11:20:55.000000000 +0100
+++ new/telepathy-stream-engine-0.5.15/ChangeLog 2010-03-22 18:50:37.000000000 +0100
@@ -1,3 +1,274 @@
+commit 8f75b3e854e54ea9eb059d8f72b619108a19c66a
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Mon Mar 22 13:19:28 2010 -0400
+
+ version 0.5.15
+
+commit a477919df8410f6ec99f78ea0dc45433cde43ba9
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Wed Feb 24 18:06:30 2010 -0500
+
+ Add property to disable automatic keyframes
+
+ Add a property to VideoControl to disable automatic keyframes.
+ Including an implementation
+
+commit 803947d96edded19141bd88a420acf7e6d8c1618
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Tue Feb 23 22:03:37 2010 -0500
+
+ Set MTU from VideoControl interface
+
+commit 6defe7eedaeb6334b8524b6b16046087d1590928
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Tue Feb 23 21:57:10 2010 -0500
+
+ Add MTU to VideoControl API
+
+commit 78297c2c668bd178232ab2bdbc4d197fa19efb78
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Tue Feb 23 21:55:00 2010 -0500
+
+ Correctly set the bitrate from the interface
+
+commit 567b723518feac7008d11c6843c83d4e1deb2a2d
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Fri Feb 19 16:33:05 2010 -0500
+
+ Connect VideoResolutionChanged signal
+
+commit 05c8978b1a739152c297fc5f9cea6c4f8d4a84eb
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Mon Mar 22 13:28:17 2010 -0400
+
+ Print thread id in a safer way
+
+commit d564e6ecb490191e04948cc4f2c57fe4fa7a5e4e
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Mon Mar 22 13:25:32 2010 -0400
+
+ Include unistd.h
+
+commit 18876f7eec17ecb793f5341d9c85b4c97f868c4d
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Mon Mar 22 13:25:20 2010 -0400
+
+ Put header in alpha order
+
+commit a32e4e2955e9351e74f7fafc5499c09c519a7c14
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Mon Mar 22 13:23:50 2010 -0400
+
+ Put own header first
+
+commit 6308edc819d457d141617c6ff7376bc6206203cd
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Mon Mar 22 13:29:01 2010 -0400
+
+ videosink header requires gst.h
+
+commit 9ba343c16c5e6a422e4a0b9ef9f4eb7048be054b
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Fri Mar 19 21:29:08 2010 -0400
+
+ Handle remove audio source pads
+
+commit 2a35109d71d748c4fc8787349c05cc4716fe72e2
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Thu Mar 18 21:13:12 2010 -0400
+
+ Allow raising the niceness back to 0
+
+commit 64bb61680b01135ea6503d24a04c04ae41818d6a
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Thu Mar 18 20:53:11 2010 -0400
+
+ Also add proxy pad parents because they will get the "linked" signal
+
+commit 95dddfb2a4074578227f91a33ea6342c25740ea1
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Thu Mar 18 20:51:20 2010 -0400
+
+ Don't assume iterate_internal_links will return a valid iterator
+
+ Ghost Pads that are not connected will return NULL
+
+commit a2520f7c96982b5a67a3bf27382ae497f1f52de3
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Thu Mar 18 20:16:45 2010 -0400
+
+ Add funnel once it has a pad
+
+commit 9932a7901488b43d0f7f8bd5b88a173a2284a3b7
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Thu Mar 18 20:36:58 2010 -0300
+
+ Iterate the internal link of the peer when a pad is linked, don't go backwards
+
+commit a731938c888ef02b2c9132553ee3bdcb5f4a2ff9
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Thu Mar 18 20:21:38 2010 -0300
+
+ Don't connect to pad-added on bins
+
+commit 581d8938ba3c69abd0bb95d5b5628abef3071276
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Thu Mar 18 20:07:07 2010 -0300
+
+ Don't iterate on peer if it is already known
+
+commit 9db7f2fe4a70f0b718fadade2c64638443d15df5
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Thu Mar 18 19:57:41 2010 -0300
+
+ Also track new pads dynamically added on known elements
+
+commit 86027689a756c911a6a57a2d9964e3392b4f9336
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Thu Mar 18 18:28:32 2010 -0300
+
+ Don't iterate further on already known pads
+
+commit eea970535a80c6cc91c171872bfb3fc29e5551c6
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Thu Mar 18 18:25:49 2010 -0300
+
+ Document the return values of add_pad_locked and insert_object_locked
+
+commit 764386e43dbef30d558f2e3d00278a497e76b15b
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Thu Mar 18 18:24:25 2010 -0300
+
+ Return if the pad was already added or not
+
+commit 4d9c5e64564ef342ae7bc47f9153e1b6970952b4
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Wed Mar 17 17:02:46 2010 -0300
+
+ Add empty line after declaration
+
+commit e6c6111678a8d8f8a2d8fb4c661caa4382e84b13
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Wed Mar 17 17:02:01 2010 -0300
+
+ Don't re-connect the linked signal on pads that were already added
+
+commit fa59d05525b7f9ac5efe17b4a7fe3621584e5f10
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Wed Mar 17 16:54:10 2010 -0300
+
+ Suffix functions that need the lock to be taken when called
+
+commit f9ecdc7dc586aba885f1c46dd910ef4ec422eeb0
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Fri Mar 5 12:23:55 2010 -0500
+
+ Return error from create_preview_window if the camera couldn't be started
+
+commit 3143a5cd05b001b35cb126638dd769e530f05c82
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Fri Mar 5 12:23:41 2010 -0500
+
+ Don't increase the video use count if its not used
+
+commit 3fc0a6623f8d27179a9d22ab6701ddfaa761a917
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Fri Mar 5 19:52:51 2010 -0500
+
+ Remove old realtime stuff
+
+commit ca5c91b883e1995c0174feb41e6c834eff289ddd
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Fri Mar 5 19:51:52 2010 -0500
+
+ Set RLIMIT_NICE to 15 so we can re-upgrade the process on cleanup
+
+commit e30033afaf0ee69a7d38273ba4afb7215e6e4a24
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Fri Mar 5 19:32:35 2010 -0500
+
+ setpriority needs tid, so keep table of them
+
+commit db54e8920b2f8a626186018af864bae47704edeb
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Fri Mar 5 18:41:09 2010 -0500
+
+ Execute method on entering video thread
+
+commit 109a12756afc3028702ec6815d61f20707d79812
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Fri Mar 5 18:16:29 2010 -0500
+
+ Actually lower the thread priorities
+
+commit b0fd3037b7afab2de2474006a071a823b746df0d
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Fri Mar 5 18:08:23 2010 -0500
+
+ Add video src to list of tracked items
+
+commit 75d2a595c5ca9241a65b91619be4010f55e5be6d
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Fri Mar 5 18:06:28 2010 -0500
+
+ Listen to video sink addition
+
+commit e0309b496f18e9b3ee4a32748fa45534bbff4423
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Fri Mar 5 18:05:42 2010 -0500
+
+ Make functions audio/video agnostic
+
+commit ee50a4462a98b06073f263322db9f815e83d9f4e
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Fri Mar 5 18:02:05 2010 -0500
+
+ Add sink added signal on video stream
+
+commit d2390f4d81d512608d9a0d45f41e85146eb5c1e7
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Tue Mar 2 17:22:55 2010 -0500
+
+ Add video struct
+
+commit 3883aba8637bfc5d10faff83defb35fb2250f110
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Tue Mar 2 15:17:55 2010 -0500
+
+ Add structure to be able to re-use the element/thread matching code for video
+
+commit 94dbfb837d29735bc6b0c7638bfd265ca822516a
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Fri Mar 5 19:33:11 2010 -0500
+
+ proxy pads don't seem to return an iterator
+
+commit 2868b677d66e7993e0453dc16b5d9f6fbebf058b
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Fri Mar 5 19:32:55 2010 -0500
+
+ Follow linked signal in both directions
+
+commit 2a7aa3d325411ececa8fd945c8abc10d3d7534df
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Tue Feb 23 19:11:38 2010 -0500
+
+ Let the ptime go up to 80 ms
+
+commit ece5573c329144a1d087fe8bc4f24435988ebbb6
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Tue Feb 9 17:14:54 2010 +0000
+
+ Build on amd64
+
+ Patch by Nicolas Dufresne
+
+commit 0830238f8eae37d8c92abfebf4cb046e37f9fc88
+Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
+Date: Fri Feb 5 12:25:38 2010 +0200
+
+ version 0.5.14.1
+
commit 1980f387833862f84848c58b8682598270044030
Author: Olivier Crête <olivier.crete(a)collabora.co.uk>
Date: Fri Feb 5 11:46:37 2010 +0200
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/telepathy-stream-engine-0.5.14/NEWS new/telepathy-stream-engine-0.5.15/NEWS
--- old/telepathy-stream-engine-0.5.14/NEWS 2010-02-05 11:20:04.000000000 +0100
+++ new/telepathy-stream-engine-0.5.15/NEWS 2010-03-22 18:29:21.000000000 +0100
@@ -1,4 +1,12 @@
-telepathy-stream-engine 0.5.14 (2009-02-05)
+telepathy-stream-engine 0.5.15 (2010-03-22)
+===========================================
+
+* Build on amd64
+* Track video threads like the audio threads
+* Lower the niceness of the video threads to increase interactivity
+* Remove audio sinks when the output pads are removed
+
+telepathy-stream-engine 0.5.14 (2010-02-05)
===========================================
* Add Video Control API
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/telepathy-stream-engine-0.5.14/api/Video_Control.xml new/telepathy-stream-engine-0.5.15/api/Video_Control.xml
--- old/telepathy-stream-engine-0.5.14/api/Video_Control.xml 2010-02-05 10:48:11.000000000 +0100
+++ new/telepathy-stream-engine-0.5.15/api/Video_Control.xml 2010-03-22 18:50:06.000000000 +0100
@@ -51,5 +51,26 @@
</tp:docstring>
<arg type="u" name="bitrate" />
</signal>
- </interface>
+
+ <property name="MTU" type="u" access="read"
+ tp:name-for-bindings="MTU">
+ <tp:docstring>
+ The Maximum Transmission Unit
+ </tp:docstring>
+ </property>
+
+ <signal name="MTUChanged" tp:name-for-bindings="MTU_Changed">
+ <tp:docstring>
+ The Maximum Transmission Unit has changed
+ </tp:docstring>
+ <arg type="u" name="mtu" />
+ </signal>
+
+ <property name="ManualKeyframes" type="b" access="read"
+ tp:name-for-bindings="Manual_Keyframes">
+ <tp:docstring>
+ Only send keyframes when manually requested
+ </tp:docstring>
+ </property>
+ </interface>
</node>
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/telepathy-stream-engine-0.5.14/configure.ac new/telepathy-stream-engine-0.5.15/configure.ac
--- old/telepathy-stream-engine-0.5.14/configure.ac 2010-02-05 11:20:04.000000000 +0100
+++ new/telepathy-stream-engine-0.5.15/configure.ac 2010-03-22 18:50:18.000000000 +0100
@@ -9,7 +9,7 @@
m4_define([stream_engine_major_version], [0])
m4_define([stream_engine_minor_version], [5])
-m4_define([stream_engine_micro_version], [14])
+m4_define([stream_engine_micro_version], [15])
m4_define([stream_engine_nano_version], [0])
# Some magic
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/telepathy-stream-engine-0.5.14/src/audiostream.c new/telepathy-stream-engine-0.5.15/src/audiostream.c
--- old/telepathy-stream-engine-0.5.14/src/audiostream.c 2009-10-21 15:54:40.000000000 +0200
+++ new/telepathy-stream-engine-0.5.15/src/audiostream.c 2010-03-22 18:29:20.000000000 +0100
@@ -22,13 +22,14 @@
#include "config.h"
#endif
+#include "audiostream.h"
+
#include <string.h>
#include <gst/farsight/fs-conference-iface.h>
#include "tp-stream-engine.h"
-#include "audiostream.h"
#include "tp-stream-engine-signals-marshal.h"
#include "util.h"
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/telepathy-stream-engine-0.5.14/src/stream-engine-main.c new/telepathy-stream-engine-0.5.15/src/stream-engine-main.c
--- old/telepathy-stream-engine-0.5.14/src/stream-engine-main.c 2010-02-05 11:20:04.000000000 +0100
+++ new/telepathy-stream-engine-0.5.15/src/stream-engine-main.c 2010-03-22 18:29:20.000000000 +0100
@@ -20,8 +20,6 @@
#include "config.h"
-#define USE_REALTIME
-#ifdef USE_REALTIME
#define _GNU_SOURCE
#include <sched.h>
#include <sys/mman.h>
@@ -31,7 +29,6 @@
#ifndef RLIMIT_RTTIME
# define RLIMIT_RTTIME 15
#endif
-#endif /* USE_REALTIME */
#include <signal.h>
#include <stdlib.h>
@@ -73,40 +70,6 @@
#define WATCHDOG_BARK 5
#define WATCHDOG_BITE 30
-#ifdef USE_REALTIME_DISABLED
-#define DEF_PRIORITY_POLICY SCHED_RR
-#define PRIORITY_DELTA 1
-
-static void
-set_realtime (int policy) {
- int prio_policy;
- int prio_delta = PRIORITY_DELTA;
- struct sched_param schedp;
-
- /* set scheduling parameters, scheduler either SCHED_RR or SCHED_FIFO */
- switch (policy) {
- case 1:
- prio_policy = SCHED_RR;
- break;
- case 2:
- prio_policy = SCHED_FIFO;
- break;
- default:
- prio_policy = DEF_PRIORITY_POLICY;
- }
- memset(&schedp, 0x00, sizeof(schedp));
- schedp.sched_priority = sched_get_priority_min(prio_policy) + prio_delta;
- /* 0 pid equals to getpid() ie. current process */
- if (sched_setscheduler(0, prio_policy, &schedp) == -1) {
- perror("sched_setscheduler()");
- }
- /* nail everything to RAM, needed for realtime on systems with swap,
- * also avoids extra calls to vm subsystem */
- /*if (mlockall(MCL_CURRENT|MCL_FUTURE) == -1) {
- perror("mlockall()");
- }*/
-}
-#endif /* USE_REALTIME */
static gboolean
kill_stream_engine (gpointer data G_GNUC_UNUSED)
@@ -207,7 +170,6 @@
GOptionContext *optcontext;
GError *error = NULL;
-#ifdef USE_REALTIME
uid_t uid;
struct rlimit rl;
@@ -216,6 +178,11 @@
if (setrlimit(RLIMIT_RTPRIO, &rl) < 0)
g_warning("setrlimit rtprio: %s", strerror (errno));
+ rl.rlim_max = 15;
+ rl.rlim_cur = 15;
+ if (setrlimit(RLIMIT_NICE, &rl) < 0)
+ g_warning("setrlimit rtprio: %s", strerror (errno));
+
/* In nanoseconds */
rl.rlim_max = rl.rlim_cur = 30*1000*1000;
@@ -231,8 +198,6 @@
g_assert (geteuid() == uid);
}
-#endif
-
g_thread_init (NULL);
optcontext = g_option_context_new ("Telepathy Stream Engine");
@@ -259,30 +224,6 @@
signal (SIGUSR1, got_sigusr1);
-#ifdef USE_REALTIME_DISABLED
- {
- int rt_mode;
- char *rt_env;
-
- /* 3.11.2006: This has to be called before gst_init() in order to make
- * thread pool inherit the scheduling policy. However, this breaks gthreads,
- * so disabled for now... -jl */
- /* Here we don't yet have any media threads running, so the to-be-created
- * threads will inherit the scheduling parameters, as glib doesn't know
- * anything about that... */
- rt_env = getenv("STREAM_ENGINE_REALTIME");
- if (rt_env != NULL) {
- if ((rt_mode = atoi(rt_env))) {
- g_debug("realtime scheduling enabled");
- set_realtime(rt_mode);
- } else {
- g_debug("realtime scheduling disabled");
- }
- } else {
- g_debug("not using realtime scheduling, enable through STREAM_ENGINE_REALTIME env");
- }
- }
-#endif /* USE_REALTIME */
{
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/telepathy-stream-engine-0.5.14/src/tp-stream-engine.c new/telepathy-stream-engine-0.5.15/src/tp-stream-engine.c
--- old/telepathy-stream-engine-0.5.14/src/tp-stream-engine.c 2010-02-05 11:20:04.000000000 +0100
+++ new/telepathy-stream-engine-0.5.15/src/tp-stream-engine.c 2010-03-22 18:29:21.000000000 +0100
@@ -22,11 +22,20 @@
#include "config.h"
#endif
+#include "tp-stream-engine.h"
+
+#define _GNU_SOURCE
+
+#include <netinet/ip.h>
+#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <pthread.h>
-#include <netinet/ip.h>
+#include <sys/resource.h>
+#include <sys/syscall.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <unistd.h>
#include <dbus/dbus-glib.h>
#include <dbus/dbus-glib-lowlevel.h>
@@ -38,7 +47,6 @@
#include <telepathy-glib/interfaces.h>
#include <telepathy-glib/gtypes.h>
-#include "tp-stream-engine.h"
#include "tp-stream-engine-signals-marshal.h"
#include <gst/farsight/fs-element-added-notifier.h>
@@ -59,11 +67,11 @@
#define VIDEO_JACK_UDI "/org/freedesktop/Hal/devices/platform_soc_audio_logicaldev_input"
#define VIDEO_JACK_PROPERTY "input.jack.type"
-static void
-_create_pipeline (TpStreamEngine *self);
+static void _create_pipeline (TpStreamEngine *self);
+
+static void setup_realtime_thread (pthread_t thread, pid_t tid);
+static void low_prio_thread (pthread_t thread, pid_t tid);
-static void
-setup_realtime_thread (pthread_t thread);
static void
update_video_src_caps (TpStreamEngine *self, TfStream *forcedstream,
@@ -134,6 +142,14 @@
static guint signals[LAST_SIGNAL] = {0};
+struct ObjectTrackingData {
+ TpStreamEngine *self;
+ GPtrArray *objects;
+
+ void (*setup_thread_prio) (pthread_t thread, pid_t tid);
+
+};
+
/* private structure */
struct _TpStreamEnginePrivate
{
@@ -172,17 +188,19 @@
guint bus_async_source_id;
- GPtrArray *audio_objects;
+ struct ObjectTrackingData audio_object_data;
+ struct ObjectTrackingData video_object_data;
GHashTable *object_threads;
+ GHashTable *object_tids;
DBusGConnection *system_bus_connection;
LibHalContext *libhal_ctx;
gboolean has_tv_out;
- gint camera_height;
- gint camera_width;
+ guint camera_height;
+ guint camera_width;
};
static void
@@ -195,7 +213,7 @@
g_object_set (element, "min-ptime", GST_MSECOND * 20, NULL);
if (g_object_has_property ((GObject *) element, "max-ptime"))
- g_object_set (element, "max-ptime", GST_MSECOND * 50, NULL);
+ g_object_set (element, "max-ptime", GST_MSECOND * 80, NULL);
}
static gboolean
@@ -259,11 +277,20 @@
priv->channels_by_path = g_hash_table_new_full (g_str_hash, g_str_equal,
g_free, NULL);
- priv->audio_objects = g_ptr_array_new ();
priv->object_threads = g_hash_table_new (g_direct_hash, g_direct_equal);
+ priv->object_tids = g_hash_table_new (g_direct_hash, g_direct_equal);
+
+ priv->audio_object_data.self = self;
+ priv->audio_object_data.objects = g_ptr_array_new ();
+ priv->audio_object_data.setup_thread_prio = setup_realtime_thread;
+
+ priv->video_object_data.self = self;
+ priv->video_object_data.objects = g_ptr_array_new ();
+ priv->video_object_data.setup_thread_prio = low_prio_thread;
priv->mutex = g_mutex_new ();
+
priv->notifier = fs_element_added_notifier_new ();
g_signal_connect (priv->notifier, "element-added",
G_CALLBACK (set_element_props), self);
@@ -456,8 +483,10 @@
g_mutex_free (self->priv->mutex);
- g_ptr_array_free (self->priv->audio_objects, TRUE);
+ g_ptr_array_free (self->priv->audio_object_data.objects, TRUE);
+ g_ptr_array_free (self->priv->video_object_data.objects, TRUE);
g_hash_table_destroy (self->priv->object_threads);
+ g_hash_table_destroy (self->priv->object_tids);
G_OBJECT_CLASS (tp_stream_engine_parent_class)->finalize (object);
}
@@ -801,77 +830,84 @@
}
static void
-remove_audio_object (gpointer data, GObject *where_the_obj_was)
+remove_object (gpointer data, GObject *where_the_obj_was)
{
- TpStreamEngine *self = data;
+ struct ObjectTrackingData *otd = data;
- g_mutex_lock (self->priv->mutex);
- g_ptr_array_remove (self->priv->audio_objects, where_the_obj_was);
- g_mutex_unlock (self->priv->mutex);
+ g_mutex_lock (otd->self->priv->mutex);
+ g_ptr_array_remove (otd->objects, where_the_obj_was);
+ g_mutex_unlock (otd->self->priv->mutex);
}
static void
-audio_pad_linked (GstPad *pad, GstPad *peer, TpStreamEngine *self);
+pad_linked (GstPad *pad, GstPad *peer, struct ObjectTrackingData *otd);
static gboolean
-insert_audio_object_locked (TpStreamEngine *self, gpointer object)
+insert_object_locked (struct ObjectTrackingData *otd, gpointer object)
{
guint i;
pthread_t thread;
+ pid_t tid;
- for (i = 0; i < self->priv->audio_objects->len; i++)
- if (g_ptr_array_index (self->priv->audio_objects, i) == object)
+ for (i = 0; i < otd->objects->len; i++)
+ if (g_ptr_array_index (otd->objects, i) == object)
return FALSE;
- g_ptr_array_add (self->priv->audio_objects, object);
- g_object_weak_ref (G_OBJECT (object), remove_audio_object, self);
+ g_ptr_array_add (otd->objects, object);
+ g_object_weak_ref (G_OBJECT (object), remove_object, otd);
- thread = GPOINTER_TO_UINT (g_hash_table_lookup (self->priv->object_threads,
- object));
- if (thread)
- setup_realtime_thread (thread);
+
+ thread = GPOINTER_TO_UINT (
+ g_hash_table_lookup (otd->self->priv->object_threads, object));
+ tid = GPOINTER_TO_UINT (
+ g_hash_table_lookup (otd->self->priv->object_tids, object));
+
+ if (thread && tid)
+ otd->setup_thread_prio (thread, tid);
return TRUE;
}
static void
-add_audio_pad (TpStreamEngine *self, GstPad *pad)
+add_pad (struct ObjectTrackingData *otd, GstPad *pad)
{
GstElement *el;
- insert_audio_object_locked (self, pad);
+ insert_object_locked (otd, pad);
el = gst_pad_get_parent_element (pad);
if (el)
{
- insert_audio_object_locked (self, el);
+ insert_object_locked (otd, el);
gst_object_unref (el);
}
- if (gst_pad_get_direction(pad) == GST_PAD_SINK)
- g_signal_connect (pad, "linked", G_CALLBACK (audio_pad_linked), self);
+ g_signal_connect (pad, "linked", G_CALLBACK (pad_linked), otd);
}
static void
-audio_pad_iter (gpointer data, gpointer user_data)
+pad_iter (gpointer data, gpointer user_data)
{
- TpStreamEngine *self = user_data;
+ struct ObjectTrackingData *otd = user_data;
GstPad *pad = data;
GstPad *peerpad = gst_pad_get_peer (pad);
- add_audio_pad (self, pad);
+ add_pad (otd, pad);
if (peerpad)
{
GstIterator *iter;
- add_audio_pad (self, peerpad);
+ add_pad (otd, peerpad);
iter = gst_pad_iterate_internal_links (peerpad);
- while (gst_iterator_foreach (iter, audio_pad_iter, self) ==
- GST_ITERATOR_RESYNC)
- gst_iterator_resync (iter);
- gst_iterator_free (iter);
+ if (iter)
+ {
+ while (gst_iterator_foreach (iter, pad_iter, otd) ==
+ GST_ITERATOR_RESYNC)
+ gst_iterator_resync (iter);
+ gst_iterator_free (iter);
+ }
gst_object_unref (peerpad);
}
@@ -880,30 +916,30 @@
}
static void
-audio_pad_linked (GstPad *pad, GstPad *peer, TpStreamEngine *self)
+pad_linked (GstPad *pad, GstPad *peer, struct ObjectTrackingData *otd)
{
GstIterator *iter = gst_pad_iterate_internal_links (pad);
- g_mutex_lock (self->priv->mutex);
- add_audio_pad (self, peer);
+ g_mutex_lock (otd->self->priv->mutex);
+ add_pad (otd, peer);
- while (gst_iterator_foreach (iter, audio_pad_iter, self) ==
+ while (gst_iterator_foreach (iter, pad_iter, otd) ==
GST_ITERATOR_RESYNC)
gst_iterator_resync (iter);
gst_iterator_free (iter);
- g_mutex_unlock (self->priv->mutex);
+ g_mutex_unlock (otd->self->priv->mutex);
}
static void
-audio_pad_internal_links_iter (gpointer data, gpointer user_data)
+pad_internal_links_iter (gpointer data, gpointer user_data)
{
- TpStreamEngine *self = user_data;
+ struct ObjectTrackingData *otd = user_data;
GstPad *pad = data;
GstIterator *iter;
iter = gst_pad_iterate_internal_links (pad);
- while (gst_iterator_foreach (iter, audio_pad_iter, self) ==
+ while (gst_iterator_foreach (iter, pad_iter, otd) ==
GST_ITERATOR_RESYNC)
gst_iterator_resync (iter);
gst_iterator_free (iter);
@@ -912,25 +948,25 @@
}
static void
-audio_sink_added_cb (TpStreamEngineAudioStream *audiostream,
- GstElement *sink, TpStreamEngine *self)
+sink_added_cb (gpointer stream,
+ GstElement *sink, struct ObjectTrackingData *otd)
{
GstIterator *iter;
- g_mutex_lock (self->priv->mutex);
+ g_mutex_lock (otd->self->priv->mutex);
iter = gst_element_iterate_sink_pads (sink);
- while (gst_iterator_foreach (iter, audio_pad_iter, self) ==
+ while (gst_iterator_foreach (iter, pad_iter, otd) ==
GST_ITERATOR_RESYNC)
gst_iterator_resync (iter);
gst_iterator_resync (iter);
- while (gst_iterator_foreach (iter, audio_pad_internal_links_iter, self) ==
+ while (gst_iterator_foreach (iter, pad_internal_links_iter, otd) ==
GST_ITERATOR_RESYNC)
gst_iterator_resync (iter);
gst_iterator_free (iter);
- g_mutex_unlock (self->priv->mutex);
+ g_mutex_unlock (otd->self->priv->mutex);
}
static void
@@ -999,12 +1035,13 @@
g_mutex_lock (self->priv->mutex);
iter = gst_element_iterate_src_pads (src);
- while (gst_iterator_foreach (iter, audio_pad_iter, self) ==
- GST_ITERATOR_RESYNC)
+ while (gst_iterator_foreach (iter, pad_iter,
+ &self->priv->audio_object_data) == GST_ITERATOR_RESYNC)
gst_iterator_resync (iter);
gst_iterator_resync (iter);
- while (gst_iterator_foreach (iter, audio_pad_internal_links_iter, self) ==
+ while (gst_iterator_foreach (iter, pad_internal_links_iter,
+ &self->priv->audio_object_data) ==
GST_ITERATOR_RESYNC)
gst_iterator_resync (iter);
gst_iterator_free (iter);
@@ -1013,7 +1050,8 @@
gst_object_unref (src);
g_signal_connect (audiostream, "sink-added",
- G_CALLBACK (audio_sink_added_cb), self);
+ G_CALLBACK (sink_added_cb),
+ &self->priv->audio_object_data);
}
else if (media_type == TP_MEDIA_STREAM_TYPE_VIDEO)
{
@@ -1043,6 +1081,10 @@
videostream);
g_mutex_unlock (self->priv->mutex);
+ g_signal_connect (videostream, "sink-added",
+ G_CALLBACK (sink_added_cb),
+ &self->priv->video_object_data);
+
g_signal_connect (videostream, "receiving",
G_CALLBACK (stream_receiving), self);
g_signal_connect (videostream, "size-changed",
@@ -1347,7 +1389,7 @@
}
static void
-setup_realtime_thread (pthread_t thread)
+setup_realtime_thread (pthread_t thread, pid_t tid)
{
struct sched_param param;
gchar buf[128];
@@ -1361,19 +1403,36 @@
}
static void
+low_prio_thread (pthread_t thread, pid_t tid)
+{
+ if (setpriority (PRIO_PROCESS, tid, 15))
+ g_warning ("Could not lower thread priority to 15: %d %s", tid, strerror (errno));
+}
+
+static void
enter_thread (TpStreamEngine *self, GstObject *src, GstElement *owner)
{
pthread_t thread = pthread_self ();
+ pid_t tid = syscall (__NR_gettid);
guint i;
g_mutex_lock (self->priv->mutex);
g_hash_table_insert (self->priv->object_threads, src,
GINT_TO_POINTER (thread));
+ g_hash_table_insert (self->priv->object_tids, src,
+ GINT_TO_POINTER (tid));
+
+ for (i = 0; i < self->priv->audio_object_data.objects->len; i++)
+ if (g_ptr_array_index (self->priv->audio_object_data.objects, i) == src)
+ {
+ self->priv->audio_object_data.setup_thread_prio (thread, tid);
+ break;
+ }
- for (i = 0; i < self->priv->audio_objects->len; i++)
- if (g_ptr_array_index (self->priv->audio_objects, i) == src)
+ for (i = 0; i < self->priv->video_object_data.objects->len; i++)
+ if (g_ptr_array_index (self->priv->video_object_data.objects, i) == src)
{
- setup_realtime_thread (thread);
+ self->priv->video_object_data.setup_thread_prio (thread, tid);
break;
}
@@ -1384,12 +1443,17 @@
leave_thread (TpStreamEngine *self, GstObject *src, GstElement *owner)
{
pthread_t thread = pthread_self ();
+ pid_t tid = syscall (__NR_gettid);
struct sched_param param;
g_mutex_lock (self->priv->mutex);
g_hash_table_remove (self->priv->object_threads, src);
+ g_hash_table_remove (self->priv->object_tids, src);
g_mutex_unlock (self->priv->mutex);
+ if (setpriority (PRIO_PROCESS, tid, 0))
+ g_warning ("Could not restore thread priority to 0: %lX %s", (unsigned long int) thread, strerror (errno));
+
param.sched_priority = 0;
pthread_setschedparam (thread, SCHED_OTHER, ¶m);
}
@@ -1488,6 +1552,7 @@
GstElement *capsfilter;
const gchar *elem;
gboolean ret;
+ GstIterator *iter;
if ((elem = getenv ("FS_VIDEO_SRC")) || (elem = getenv ("FS_VIDEOSRC")))
{
@@ -1525,6 +1590,18 @@
gst_element_set_locked_state (videosrc, TRUE);
+ iter = gst_element_iterate_src_pads (videosrc);
+ while (gst_iterator_foreach (iter, pad_iter,
+ &self->priv->video_object_data) == GST_ITERATOR_RESYNC)
+ gst_iterator_resync (iter);
+
+ gst_iterator_resync (iter);
+ while (gst_iterator_foreach (iter, pad_internal_links_iter,
+ &self->priv->video_object_data) ==
+ GST_ITERATOR_RESYNC)
+ gst_iterator_resync (iter);
+ gst_iterator_free (iter);
+
tee = gst_element_factory_make ("tee", "videotee");
g_assert (tee);
if (!gst_bin_add (GST_BIN (priv->pipeline), tee))
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/telepathy-stream-engine-0.5.14/src/util.c new/telepathy-stream-engine-0.5.15/src/util.c
--- old/telepathy-stream-engine-0.5.14/src/util.c 2008-08-02 03:31:05.000000000 +0200
+++ new/telepathy-stream-engine-0.5.15/src/util.c 2010-03-22 18:29:20.000000000 +0100
@@ -18,6 +18,10 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
#include "util.h"
#include <glib-object.h>
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/telepathy-stream-engine-0.5.14/src/videosink.c new/telepathy-stream-engine-0.5.15/src/videosink.c
--- old/telepathy-stream-engine-0.5.14/src/videosink.c 2010-02-03 09:17:39.000000000 +0100
+++ new/telepathy-stream-engine-0.5.15/src/videosink.c 2010-03-22 18:29:20.000000000 +0100
@@ -22,6 +22,8 @@
#include "config.h"
#endif
+#include "videosink.h"
+
#include <string.h>
#include <stdlib.h>
@@ -34,7 +36,6 @@
#include <gtk/gtk.h>
#include "tp-stream-engine-signals-marshal.h"
-#include "videosink.h"
#include "util.h"
#define DEFAULT_XV_DEVICE "0"
@@ -145,8 +146,9 @@
}
else
{
- g_debug("%s:%s: Last diff: %lld diffs: %f Instant fps: %f"
- " averaged over 1s: %f\n", GST_DEBUG_PAD_NAME (pad), diff,
+ g_debug("%s:%s: Last diff: %" G_GINT64_FORMAT " diffs: %f"
+ " Instant fps: %f averaged over 1s: %f\n",
+ GST_DEBUG_PAD_NAME (pad), diff,
diffs, (1.0/diffs), self->priv->framerate);
}
}
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/telepathy-stream-engine-0.5.14/src/videosink.h new/telepathy-stream-engine-0.5.15/src/videosink.h
--- old/telepathy-stream-engine-0.5.14/src/videosink.h 2009-01-13 00:08:07.000000000 +0100
+++ new/telepathy-stream-engine-0.5.15/src/videosink.h 2010-03-22 18:29:20.000000000 +0100
@@ -1,7 +1,7 @@
#ifndef __TP_STREAM_ENGINE_VIDEO_SINK_H__
#define __TP_STREAM_ENGINE_VIDEO_SINK_H__
-#include <glib-object.h>
+#include <gst/gst.h>
G_BEGIN_DECLS
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/telepathy-stream-engine-0.5.14/src/videostream.c new/telepathy-stream-engine-0.5.15/src/videostream.c
--- old/telepathy-stream-engine-0.5.14/src/videostream.c 2010-02-05 11:20:04.000000000 +0100
+++ new/telepathy-stream-engine-0.5.15/src/videostream.c 2010-03-22 18:50:06.000000000 +0100
@@ -22,6 +22,8 @@
#include "config.h"
#endif
+#include "videostream.h"
+
#include <string.h>
#include <telepathy-glib/errors.h>
@@ -29,8 +31,8 @@
#include <telepathy-glib/proxy-subclass.h>
#include <gst/interfaces/xoverlay.h>
+#include <gst/farsight/fs-element-added-notifier.h>
-#include "videostream.h"
#include "tp-stream-engine.h"
#include "tp-stream-engine-signals-marshal.h"
#include "util.h"
@@ -60,7 +62,11 @@
GstElement *sink;
- guint bitrate;
+ gboolean manual_keyframes;
+ volatile gint bitrate;
+ volatile gint mtu;
+
+ FsElementAddedNotifier *notifier;
GMutex *mutex;
@@ -77,6 +83,7 @@
{
RECEIVING,
RESOLUTION_CHANGED,
+ SINK_ADDED_SIGNAL,
SIGNAL_COUNT
};
@@ -112,6 +119,11 @@
GValue *value,
GParamSpec *pspec);
+static void _element_added (FsElementAddedNotifier *notifier,
+ GstBin *conference,
+ GstElement *element,
+ TpStreamEngineVideoStream *self);
+
static void
tp_stream_engine_video_stream_init (TpStreamEngineVideoStream *self)
@@ -125,6 +137,11 @@
self->priv = priv;
self->priv->mutex = g_mutex_new ();
+
+ self->priv->notifier = fs_element_added_notifier_new ();
+
+ g_signal_connect (self->priv->notifier, "element-added",
+ G_CALLBACK (_element_added), self);
}
@@ -223,63 +240,111 @@
NULL)));
}
-static void
-iterate_pads_and_set_bitrate (gpointer data, gpointer user_data)
+static gboolean
+is_in_send_codecbin (GstElement *element, GstElement *ultimate_parent,
+ guint session_id)
{
- GstPad *pad = data;
- GstPad *peer = NULL;
- TpStreamEngineVideoStream *self = user_data;
- GstElement *peerparent = NULL;
+ gint tmp_session_id, tmp_codec_id;
+ gchar *name;
+ gboolean valid = FALSE;
+ GstElement *parent;
+ gboolean rv;
- peer = gst_pad_get_peer (pad);
- if (!peer)
- goto out;
+ if (element == ultimate_parent)
+ return FALSE;
- peerparent = gst_pad_get_parent_element (pad);
+ name = gst_element_get_name (element);
+ if (name && sscanf (name, "send_%d_%d", &tmp_session_id, &tmp_codec_id) == 2)
+ valid = TRUE;
+ g_free (name);
- if (!peerparent)
- goto out;
+ if (valid && session_id == tmp_session_id)
+ return TRUE;
- if (g_object_has_property (G_OBJECT (peerparent), "bitrate"))
- {
- DEBUG (self, "Setting bitrate %u on %s",
- self->priv->bitrate, GST_OBJECT_NAME (peerparent));
- g_object_set (peerparent, "bitrate", self->priv->bitrate, NULL);
- }
- else
+ parent = (GstElement*) gst_element_get_parent (element);
+ if (!parent)
+ return FALSE;
+ rv = is_in_send_codecbin (parent, ultimate_parent, session_id);
+
+ gst_object_unref (parent);
+
+ return rv;
+}
+
+static void
+_element_added (FsElementAddedNotifier *notifier,
+ GstBin *bin, GstElement *element, TpStreamEngineVideoStream *self)
+{
+ gint bitrate = g_atomic_int_get (&self->priv->bitrate);
+ gint mtu = g_atomic_int_get (&self->priv->mtu);
+
+ if (G_UNLIKELY (
+ (bitrate && g_object_has_property (G_OBJECT (element), "bitrate")) ||
+ (mtu && g_object_has_property (G_OBJECT (element), "mtu")) ||
+ (self->priv->manual_keyframes &&
+ g_object_has_property (G_OBJECT (element), "keyframe-interval"))))
{
- GstIterator *iter = gst_pad_iterate_internal_links (peer);
+ FsSession *fssession;
+ GstElement *conf;
+ guint id;
+
+ g_object_get (self->priv->stream, "farsight-session", &fssession,
+ "farsight-conference", &conf, NULL);
- while (
- gst_iterator_foreach (iter, iterate_pads_and_set_bitrate, self) ==
- GST_ITERATOR_RESYNC)
- gst_iterator_resync (iter);
+ g_object_get (fssession, "id", &id, NULL);
- gst_iterator_free (iter);
+ if (is_in_send_codecbin (element, GST_ELEMENT (conf), id))
+ {
+ if (bitrate && g_object_has_property (G_OBJECT (element), "bitrate"))
+ {
+ g_object_set (element, "bitrate", bitrate, NULL);
+ DEBUG (self, "Set bitrate %u on encoder", bitrate);
+ }
+ if (mtu && g_object_has_property (G_OBJECT (element), "mtu"))
+ {
+ g_object_set (element, "mtu", mtu, NULL);
+ DEBUG (self, "Set MTU %u on payloader", mtu);
+ }
+ if (self->priv->manual_keyframes &&
+ g_object_has_property (G_OBJECT (element), "keyframe-interval"))
+ {
+ g_object_set (element, "keyframe-interval", 600, NULL);
+ DEBUG (self, "Disabled automatic keyframes");
+ }
+ }
+
+ g_object_unref (fssession);
}
+}
+
+static void
+tp_stream_engine_video_stream_update_element_properties (
+ TpStreamEngineVideoStream *self)
+{
+ GstBin *conf;
- out:
- if (peerparent)
- gst_object_unref (peerparent);
- if (peer)
- gst_object_unref (peer);
- gst_object_unref (pad);
+ g_object_get (self->priv->stream, "farsight-conference", &conf, NULL);
+
+ fs_element_added_notifier_remove (self->priv->notifier, conf);
+
+ if (g_atomic_int_get (&self->priv->bitrate) ||
+ g_atomic_int_get (&self->priv->mtu) ||
+ self->priv->manual_keyframes)
+ fs_element_added_notifier_add (self->priv->notifier, conf);
+
+ gst_object_unref (conf);
}
static void
tp_stream_engine_video_stream_set_bitrate (TpStreamEngineVideoStream *self,
guint bitrate)
{
- if (self->priv->bitrate == bitrate)
+ if (g_atomic_int_get (&self->priv->bitrate) == bitrate)
return;
- self->priv->bitrate = bitrate;
-
- if (bitrate == 0)
- return;
+ g_atomic_int_set (&self->priv->bitrate, bitrate);
- if (self->priv->pad)
- iterate_pads_and_set_bitrate (gst_object_ref (self->priv->pad), self);
+ tp_stream_engine_video_stream_update_element_properties (self);
}
@@ -295,11 +360,43 @@
}
static void
-video_resolution_changed (TpProxy *proxy, guint width, guint height,
- gpointer user_data, GObject *weak_object)
+tp_stream_engine_video_stream_set_mtu (TpStreamEngineVideoStream *self,
+ guint mtu)
+{
+ if (g_atomic_int_get (&self->priv->mtu) == mtu)
+ return;
+
+ g_atomic_int_set (&self->priv->mtu, mtu);
+
+ tp_stream_engine_video_stream_update_element_properties (self);
+}
+
+
+static void
+mtu_changed (TpProxy *proxy, guint mtu, gpointer user_data,
+ GObject *weak_object)
{
TpStreamEngineVideoStream *self = TP_STREAM_ENGINE_VIDEO_STREAM (weak_object);
+ DEBUG (self, "MTUChanged: %u", mtu);
+
+ tp_stream_engine_video_stream_set_mtu (self, mtu);
+}
+
+static void
+tp_stream_engine_video_stream_set_manual_keyframes (
+ TpStreamEngineVideoStream *self)
+{
+ self->priv->manual_keyframes = TRUE;
+
+ tp_stream_engine_video_stream_update_element_properties (self);
+}
+
+
+static void
+video_resolution_changed_real (TpStreamEngineVideoStream *self,
+ guint width, guint height)
+{
DEBUG (self, "ResolutionChanged: %u x %u", width, height);
if (width != self->width || height != self->height)
@@ -309,12 +406,42 @@
g_signal_emit (self, signals[RESOLUTION_CHANGED], 0);
}
}
+
+static void
+video_resolution_changed (TpProxy *proxy, const GValueArray *arg_resolution,
+ gpointer user_data, GObject *weak_object)
+{
+ TpStreamEngineVideoStream *self = TP_STREAM_ENGINE_VIDEO_STREAM (weak_object);
+ GValue *val_width, *val_height;
+
+ if (arg_resolution->n_values != 2)
+ {
+ DEBUG (self,
+ "VideoResolutionChanged argument does not have two members");
+ return;
+ }
+
+ val_width = g_value_array_get_nth (arg_resolution, 0);
+ val_height = g_value_array_get_nth (arg_resolution, 1);
+
+ if (!G_VALUE_HOLDS_UINT (val_width) || !G_VALUE_HOLDS_UINT (val_height))
+ {
+ DEBUG (self, "VideoResolutionChanged arguments are not uints");
+ return;
+ }
+
+ video_resolution_changed_real (self, g_value_get_uint (val_width),
+ g_value_get_uint (val_height));
+
+}
static void
videocontrol_get_all_properties_cb (TpProxy *proxy, GHashTable *out_properties,
const GError *error, gpointer user_data, GObject *weak_object)
{
TpStreamEngineVideoStream *self = TP_STREAM_ENGINE_VIDEO_STREAM (weak_object);
guint32 bitrate;
+ guint32 mtu;
+ gboolean manual_keyframes;
gboolean valid;
GValueArray *array;
@@ -328,6 +455,13 @@
tp_stream_engine_video_stream_set_bitrate (self, bitrate);
}
+ mtu = tp_asv_get_uint32 (out_properties, "MTU", &valid);
+ if (valid)
+ {
+ DEBUG (self, "Got initial mtu: %u", mtu);
+ tp_stream_engine_video_stream_set_mtu (self, mtu);
+ }
+
array = tp_asv_get_boxed (out_properties, "VideoResolution",
STREAM_ENGINE_STRUCT_TYPE_VIDEO_RESOLUTION);
if (array)
@@ -337,8 +471,17 @@
DEBUG (self, "Got initial resolution: %u x %u", width, height);
- video_resolution_changed (proxy, width, height, user_data, weak_object);
+ video_resolution_changed_real (self, width, height);
}
+
+ manual_keyframes = tp_asv_get_boolean (out_properties, "ManualKeyframes", &valid);
+ if (valid)
+ {
+ DEBUG (self, "Keyframes will only come when manually requested");
+ self->priv->manual_keyframes = TRUE;
+ tp_stream_engine_video_stream_update_element_properties (self);
+ }
+
}
@@ -351,6 +494,7 @@
TpStreamEngineVideoStream *self = NULL;
GstPad *sinkpad;
TpProxy *proxy;
+ GError *error = NULL;
obj = G_OBJECT_CLASS (tp_stream_engine_video_stream_parent_class)->constructor (type, n_props, props);
@@ -360,8 +504,14 @@
tp_proxy_add_interface_by_id (proxy,
STREAM_ENGINE_IFACE_QUARK_STREAMHANDLER_INTERFACE_VIDEO_CONTROL);
- stream_engine_cli_streamhandler_interface_video_control_connect_to_request_keyframe (proxy, request_keyframe, NULL, NULL, G_OBJECT (self), NULL);
- stream_engine_cli_streamhandler_interface_video_control_connect_to_bitrate_changed (proxy, bitrate_changed, NULL, NULL, G_OBJECT (self), NULL);
+ stream_engine_cli_streamhandler_interface_video_control_connect_to_request_keyframe (proxy, request_keyframe, NULL, NULL, G_OBJECT (self), &error);
+ g_assert (error == NULL);
+ stream_engine_cli_streamhandler_interface_video_control_connect_to_bitrate_changed (proxy, bitrate_changed, NULL, NULL, G_OBJECT (self), &error);
+ g_assert (error == NULL);
+ stream_engine_cli_streamhandler_interface_video_control_connect_to_mtu_changed (proxy, mtu_changed, NULL, NULL, G_OBJECT (self), &error);
+ g_assert (error == NULL);
+ stream_engine_cli_streamhandler_interface_video_control_connect_to_video_resolution_changed (proxy, video_resolution_changed, NULL, NULL, G_OBJECT (self), &error);
+ g_assert (error == NULL);
tp_cli_dbus_properties_call_get_all (proxy, -1,
STREAM_ENGINE_IFACE_STREAMHANDLER_INTERFACE_VIDEO_CONTROL,
videocontrol_get_all_properties_cb, NULL, NULL, G_OBJECT (self));
@@ -404,6 +554,12 @@
self->priv->src_pad_added_handler_id = 0;
}
+ if (self->priv->notifier)
+ {
+ g_object_unref (self->priv->notifier);
+ self->priv->notifier = NULL;
+ }
+
g_mutex_lock (self->priv->mutex);
if (self->priv->receiving_probe_id)
{
@@ -566,6 +722,14 @@
NULL, NULL,
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
+
+ signals[SINK_ADDED_SIGNAL] = g_signal_new ("sink-added",
+ G_OBJECT_CLASS_TYPE (klass),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ g_cclosure_marshal_VOID__OBJECT,
+ G_TYPE_NONE, 1, G_TYPE_OBJECT);
}
@@ -627,6 +791,7 @@
g_warning ("Could not start sink");
return;
}
+
}
funnel = gst_bin_get_by_name (GST_BIN (self->priv->sink), "funnel");
@@ -640,6 +805,7 @@
goto error;
}
+ g_signal_emit (self, signals[SINK_ADDED_SIGNAL], 0, funnel);
sinkpad = gst_element_get_request_pad (funnel, "sink%d");
if (!sinkpad)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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 tellico for openSUSE:Factory
checked in at Thu Apr 1 17:48:39 CEST 2010.
--------
--- KDE/tellico/tellico.changes 2010-03-08 11:32:15.000000000 +0100
+++ /mounts/work_src_done/STABLE/tellico/tellico.changes 2010-03-31 17:32:06.000000000 +0200
@@ -1,0 +2,27 @@
+Wed Mar 31 15:29:03 UTC 2010 - wstephenson(a)novell.com
+
+- Update to version 2.2
+ * Enabled KOrganizer integration for adding loans to calendar
+ * Enabled KAddressBook integration for adding borrowers from the
+ address book.
+ * Improved performance for modifying many entries at once.
+ * Added data source for Giant Bomb.
+ * Added data source for The Movie DB.
+ * Updated CrossRef data source to allow authentication via email
+ only (bko#224619).
+ * Added option for disabling webcam support.
+
+ Bug fixes:
+ * Fixed some hyphenation issues for 978 ISBN values.
+ * Fixed bug in en_GB translation that affected file selection.
+ * Fixed adding "link-only" files (bko#220645).
+ * Fixed Discogs track download and title search.
+ * Fixed setting correct permissions of backup file (bko#219259).
+ * Fixed formatting of multiple people with auto-formatting
+ (bko#219268).
+ * Fixed updating from Amazon to include book title or album title
+ in search.
+ * Fixed crashing bug for sorting during HTML export.
+ * Fixed multiple selection in entry view (bko#216122).
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
tellico-2.1.1.tar.bz2
New:
----
tellico-2.2.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ tellico.spec ++++++
--- /var/tmp/diff_new_pack.3wrrTT/_old 2010-04-01 17:48:29.000000000 +0200
+++ /var/tmp/diff_new_pack.3wrrTT/_new 2010-04-01 17:48:29.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package tellico (Version 2.1.1)
+# spec file for package tellico (Version 2.2)
#
# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -22,8 +22,8 @@
BuildRequires: cmake fdupes libkde4-devel libkdepimlibs4-devel libpoppler-qt4-devel libqimageblitz-devel
BuildRequires: libexempi-devel libkcddb4-devel libksane-devel libyaz-devel taglib-devel
Summary: A book collection manager
-Version: 2.1.1
-Release: 2
+Version: 2.2
+Release: 1
License: GPLv2+
Group: Productivity/Other
Source: %{name}-%{version}.tar.bz2
++++++ tellico-2.1.1.tar.bz2 -> tellico-2.2.tar.bz2 ++++++
++++ 177549 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 viewvc for openSUSE:Factory
checked in at Thu Apr 1 17:48:24 CEST 2010.
--------
--- viewvc/viewvc.changes 2010-03-11 20:40:20.000000000 +0100
+++ /mounts/work_src_done/STABLE/viewvc/viewvc.changes 2010-04-01 11:32:53.000000000 +0200
@@ -1,0 +2,6 @@
+Tue Mar 30 09:10:12 UTC 2010 - pascal.bleser(a)opensuse.org
+
+- update to 1.1.5 (bnc#592932):
+ * security fix: escape user-provided search_re input to avoid XSS attack
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
viewvc-1.1.4.tar.bz2
New:
----
viewvc-1.1.5.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ viewvc.spec ++++++
--- /var/tmp/diff_new_pack.45a0xT/_old 2010-04-01 17:48:20.000000000 +0200
+++ /var/tmp/diff_new_pack.45a0xT/_new 2010-04-01 17:48:20.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package viewvc (Version 1.1.4)
+# spec file for package viewvc (Version 1.1.5)
#
# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -20,7 +20,7 @@
Name: viewvc
BuildRequires: apache2-devel python-devel
-Version: 1.1.4
+Version: 1.1.5
Release: 1
#
%define apxs /usr/sbin/apxs2
++++++ viewvc-1.1.4.tar.bz2 -> viewvc-1.1.5.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/viewvc-1.1.4/CHANGES new/viewvc-1.1.5/CHANGES
--- old/viewvc-1.1.4/CHANGES 2010-03-10 22:22:31.000000000 +0100
+++ new/viewvc-1.1.5/CHANGES 2010-03-29 17:24:33.000000000 +0200
@@ -1,3 +1,7 @@
+Version 1.1.5 (released 29-Mar-2010)
+
+ * security fix: escape user-provided search_re input to avoid XSS attack
+
Version 1.1.4 (released 10-Mar-2010)
* security fix: escape user-provided query form input to avoid XSS attack
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/viewvc-1.1.4/LICENSE.html new/viewvc-1.1.5/LICENSE.html
--- old/viewvc-1.1.4/LICENSE.html 2009-03-18 17:45:10.000000000 +0100
+++ new/viewvc-1.1.5/LICENSE.html 2010-03-29 17:37:39.000000000 +0200
@@ -15,7 +15,7 @@
<blockquote>
-<p><strong>Copyright © 1999-2009 The ViewCVS Group. All rights
+<p><strong>Copyright © 1999-2010 The ViewCVS Group. All rights
reserved.</strong></p>
<p>By using ViewVC, you agree to the terms and conditions set forth
@@ -60,6 +60,7 @@
<li>April 10, 2007 — copyright years updated</li>
<li>February 22, 2008 — copyright years updated</li>
<li>March 18, 2009 — copyright years updated</li>
+ <li>March 29, 2010 — copyright years updated</li>
</ul>
</body>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/viewvc-1.1.4/lib/blame.py new/viewvc-1.1.5/lib/blame.py
--- old/viewvc-1.1.4/lib/blame.py 2009-03-18 17:45:10.000000000 +0100
+++ new/viewvc-1.1.5/lib/blame.py 2010-03-29 17:32:43.000000000 +0200
@@ -1,7 +1,7 @@
#!/usr/bin/env python
# -*-python-*-
#
-# Copyright (C) 1999-2008 The ViewCVS Group. All Rights Reserved.
+# Copyright (C) 1999-2010 The ViewCVS Group. All Rights Reserved.
# Copyright (C) 2000 Curt Hagenlocher <curt(a)hagenlocher.org>
#
# By using this file, you agree to the terms and conditions set forth in
@@ -32,9 +32,8 @@
import re
import time
import math
-import cgi
import vclib
-
+import sapi
re_includes = re.compile('\\#(\\s*)include(\\s*)"(.*?)"')
@@ -82,7 +81,7 @@
diff_url = None
if item.prev_rev:
diff_url = '%sr1=%s&r2=%s' % (self.diff_url, item.prev_rev, item.rev)
- thisline = link_includes(cgi.escape(item.text), self.repos,
+ thisline = link_includes(sapi.escape(item.text), self.repos,
self.path_parts, self.include_url)
return _item(text=thisline, line_number=item.line_number,
rev=item.rev, prev_rev=item.prev_rev,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/viewvc-1.1.4/lib/idiff.py new/viewvc-1.1.5/lib/idiff.py
--- old/viewvc-1.1.4/lib/idiff.py 2006-03-18 03:07:36.000000000 +0100
+++ new/viewvc-1.1.5/lib/idiff.py 2010-03-29 17:32:43.000000000 +0200
@@ -1,6 +1,6 @@
# -*-python-*-
#
-# Copyright (C) 1999-2006 The ViewCVS Group. All Rights Reserved.
+# Copyright (C) 1999-2010 The ViewCVS Group. All Rights Reserved.
#
# By using this file, you agree to the terms and conditions set forth in
# the LICENSE.html file which can be found at the top level of the ViewVC
@@ -20,7 +20,7 @@
import sys
import re
import ezt
-import cgi
+import sapi
def sidebyside(fromlines, tolines, context):
"""Generate side by side diff"""
@@ -49,18 +49,18 @@
while True:
m = _re_mdiff.search(text, pos)
if not m:
- segments.append(_item(text=cgi.escape(text[pos:]), type=None))
+ segments.append(_item(text=sapi.escape(text[pos:]), type=None))
break
if m.start() > pos:
- segments.append(_item(text=cgi.escape(text[pos:m.start()]), type=None))
+ segments.append(_item(text=sapi.escape(text[pos:m.start()]), type=None))
if m.group(1) == "+":
- segments.append(_item(text=cgi.escape(m.group(2)), type="add"))
+ segments.append(_item(text=sapi.escape(m.group(2)), type="add"))
elif m.group(1) == "-":
- segments.append(_item(text=cgi.escape(m.group(2)), type="remove"))
+ segments.append(_item(text=sapi.escape(m.group(2)), type="remove"))
elif m.group(1) == "^":
- segments.append(_item(text=cgi.escape(m.group(2)), type="change"))
+ segments.append(_item(text=sapi.escape(m.group(2)), type="change"))
pos = m.end()
@@ -166,12 +166,12 @@
for m in _re_differ.finditer(guide, pos):
if m.start() > pos:
- segments.append(_item(text=cgi.escape(line[pos:m.start()]), type=None))
- segments.append(_item(text=cgi.escape(line[m.start():m.end()]),
+ segments.append(_item(text=sapi.escape(line[pos:m.start()]), type=None))
+ segments.append(_item(text=sapi.escape(line[m.start():m.end()]),
type="change"))
pos = m.end()
- segments.append(_item(text=cgi.escape(line[pos:]), type=None))
+ segments.append(_item(text=sapi.escape(line[pos:]), type=None))
return _item(gap=ezt.boolean(gap), type=type, segments=segments,
left_number=left_number, right_number=right_number)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/viewvc-1.1.4/lib/query.py new/viewvc-1.1.5/lib/query.py
--- old/viewvc-1.1.4/lib/query.py 2009-12-03 07:09:25.000000000 +0100
+++ new/viewvc-1.1.5/lib/query.py 2010-03-29 17:32:43.000000000 +0200
@@ -1,7 +1,7 @@
#!/usr/bin/env python
# -*-python-*-
#
-# Copyright (C) 1999-2009 The ViewCVS Group. All Rights Reserved.
+# Copyright (C) 1999-2010 The ViewCVS Group. All Rights Reserved.
#
# By using this file, you agree to the terms and conditions set forth in
# the LICENSE.html file which can be found at the top level of the ViewVC
@@ -439,11 +439,11 @@
'cfg' : cfg,
'address' : cfg.general.address,
'vsn' : viewvc.__version__,
- 'repository' : server.escape(form_data.repository, 1),
- 'branch' : server.escape(form_data.branch, 1),
- 'directory' : server.escape(form_data.directory, 1),
- 'file' : server.escape(form_data.file, 1),
- 'who' : server.escape(form_data.who, 1),
+ 'repository' : server.escape(form_data.repository),
+ 'branch' : server.escape(form_data.branch),
+ 'directory' : server.escape(form_data.directory),
+ 'file' : server.escape(form_data.file),
+ 'who' : server.escape(form_data.who),
'docroot' : cfg.options.docroot is None \
and viewvc_link + '/' + viewvc.docroot_magic_path \
or cfg.options.docroot,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/viewvc-1.1.4/lib/sapi.py new/viewvc-1.1.5/lib/sapi.py
--- old/viewvc-1.1.4/lib/sapi.py 2009-06-16 17:05:56.000000000 +0200
+++ new/viewvc-1.1.5/lib/sapi.py 2010-03-29 17:32:43.000000000 +0200
@@ -1,6 +1,6 @@
# -*-python-*-
#
-# Copyright (C) 1999-2006 The ViewCVS Group. All Rights Reserved.
+# Copyright (C) 1999-2010 The ViewCVS Group. All Rights Reserved.
#
# By using this file, you agree to the terms and conditions set forth in
# the LICENSE.html file which can be found at the top level of the ViewVC
@@ -20,6 +20,7 @@
import os
import sys
import re
+import cgi
# global server object. It will be either a CgiServer or a proxy to
@@ -27,6 +28,18 @@
server = None
+# Simple HTML string escaping. Note that we always escape the
+# double-quote character -- ViewVC shouldn't ever need to preserve
+# that character as-is, and sometimes needs to embed escaped values
+# into HTML attributes.
+def escape(s):
+ s = string.replace(s, '&', '&')
+ s = string.replace(s, '>', '>')
+ s = string.replace(s, '<', '<')
+ s = string.replace(s, '"', """)
+ return s
+
+
class Server:
def __init__(self):
self.pageGlobals = {}
@@ -34,6 +47,9 @@
def self(self):
return self
+ def escape(self, s):
+ return escape(s)
+
def close(self):
pass
@@ -129,9 +145,6 @@
global server
server = self
- global cgi
- import cgi
-
def addheader(self, name, value):
self.headers.append((name, value))
@@ -160,9 +173,6 @@
self.header(status='301 Moved')
sys.stdout.write('This document is located <a href="%s">here</a>.\n' % url)
- def escape(self, s, quote = None):
- return cgi.escape(s, quote)
-
def getenv(self, name, value=None):
ret = os.environ.get(name, value)
if self.iis and name == 'PATH_INFO' and ret:
@@ -219,9 +229,6 @@
def redirect(self, url):
self.response.Redirect(url)
- def escape(self, s, quote = None):
- return self.server.HTMLEncode(str(s))
-
def getenv(self, name, value = None):
ret = self.request.ServerVariables(name)()
if not type(ret) is types.UnicodeType:
@@ -283,9 +290,6 @@
self.request = request
self.headerSent = 0
- global cgi
- import cgi
-
def addheader(self, name, value):
self.request.headers_out.add(name, value)
@@ -308,9 +312,6 @@
self.request.write("You are being redirected to <a href=\"%s\">%s</a>"
% (url, url))
- def escape(self, s, quote = None):
- return cgi.escape(s, quote)
-
def getenv(self, name, value = None):
try:
return self.request.subprocess_env[name]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/viewvc-1.1.4/lib/viewvc.py new/viewvc-1.1.5/lib/viewvc.py
--- old/viewvc-1.1.4/lib/viewvc.py 2010-03-10 22:25:25.000000000 +0100
+++ new/viewvc-1.1.5/lib/viewvc.py 2010-03-29 17:41:46.000000000 +0200
@@ -14,7 +14,7 @@
#
# -----------------------------------------------------------------------
-__version__ = '1.1.4'
+__version__ = '1.1.5'
# this comes from our library; measure the startup time
import debug
@@ -24,7 +24,6 @@
# standard modules that we know are in the path or builtin
import sys
import os
-import cgi
import gzip
import mimetypes
import re
@@ -432,7 +431,8 @@
action = self.server.escape(urllib.quote(url, _URL_SAFE_CHARS))
hidden_values = []
for name, value in params.items():
- hidden_values.append(_item(name=name, value=value))
+ hidden_values.append(_item(name=self.server.escape(name),
+ value=self.server.escape(value)))
return action, hidden_values
def get_link(self, view_func=None, where=None, pathtype=None, params=None):
@@ -1075,9 +1075,6 @@
revision_href=revision_href,
prefer_markup=ezt.boolean(prefer_markup))
-def htmlify(html):
- return html and cgi.escape(html) or html
-
# Matches URLs
_re_rewrite_url = re.compile('((http|https|ftp|file|svn|svn\+ssh)'
@@ -1110,8 +1107,8 @@
"""
s = mobj.group(0)
trunc_s = maxlen and s[:maxlen] or s
- return '<a href="%s">%s</a>' % (cgi.escape(s),
- cgi.escape(trunc_s)), \
+ return '<a href="%s">%s</a>' % (sapi.escape(s),
+ sapi.escape(trunc_s)), \
len(trunc_s)
def format_email(self, mobj, userdata, maxlen=0):
@@ -1162,7 +1159,7 @@
- the number of characters returned.
"""
trunc_s = maxlen and s[:maxlen] or s
- return cgi.escape(trunc_s), len(trunc_s)
+ return sapi.escape(trunc_s), len(trunc_s)
def add_formatter(self, regexp, conv, userdata=None):
"""Register a formatter which finds instances of strings matching
@@ -1467,7 +1464,7 @@
if not chunk:
break
if htmlize:
- chunk = htmlify(chunk)
+ chunk = sapi.escape(chunk)
dst.write(chunk)
class MarkupPipeWrapper:
@@ -1496,7 +1493,7 @@
blame_source = []
if blame_data:
for i in blame_data:
- i.text = cgi.escape(i.text)
+ i.text = sapi.escape(i.text)
i.diff_href = None
if i.prev_rev:
i.diff_href = request.get_url(view_func=view_diff,
@@ -1559,7 +1556,7 @@
if not line:
break
line_no = line_no + 1
- line = cgi.escape(string.expandtabs(line, cfg.options.tabsize))
+ line = sapi.escape(string.expandtabs(line, cfg.options.tabsize))
item = vclib.Annotation(line, line_no, None, None, None, None)
item.diff_href = None
lines.append(item)
@@ -2034,7 +2031,7 @@
'entries' : rows,
'sortby' : sortby,
'sortdir' : sortdir,
- 'search_re' : htmlify(search_re),
+ 'search_re' : request.server.escape(search_re),
'dir_pagestart' : None,
'sortby_file_href' : request.get_url(params={'sortby': 'file',
'sortdir': None},
@@ -2766,7 +2763,7 @@
hr_breakable = self.cfg.options.hr_breakable
# in the code below, "\x01" will be our stand-in for "&". We don't want
- # to insert "&" because it would get escaped by htmlify(). Similarly,
+ # to insert "&" because it would get escaped by sapi.escape(). Similarly,
# we use "\x02" as a stand-in for "<br>"
if hr_breakable > 1 and len(text) > hr_breakable:
@@ -2776,7 +2773,7 @@
text = string.replace(text, ' ', ' \x01nbsp;')
else:
text = string.replace(text, ' ', '\x01nbsp;')
- text = htmlify(text)
+ text = sapi.escape(text)
text = string.replace(text, '\x01', '&')
text = string.replace(text, '\x02',
'<span style="color:red">\</span><br />')
@@ -3157,7 +3154,7 @@
else:
changes = DiffSource(fp, cfg)
else:
- raw_diff_fp = MarkupPipeWrapper(fp, htmlify(headers), None, 1)
+ raw_diff_fp = MarkupPipeWrapper(fp, request.server.escape(headers), None, 1)
no_format_params = request.query_dict.copy()
no_format_params['diff_format'] = None
@@ -3704,7 +3701,7 @@
ret.append('on all branches ')
comment = request.query_dict.get('comment', '')
if comment:
- ret.append('with comment <i>%s</i> ' % htmlify(comment))
+ ret.append('with comment <i>%s</i> ' % request.server.escape(comment))
if who:
ret.append('by <em>%s</em> ' % request.server.escape(who))
date = request.query_dict.get('date', 'hours')
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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 xtables-addons for openSUSE:Factory
checked in at Thu Apr 1 17:48:06 CEST 2010.
--------
--- xtables-addons/xtables-addons.changes 2010-02-25 01:15:34.000000000 +0100
+++ /mounts/work_src_done/STABLE/xtables-addons/xtables-addons.changes 2010-03-20 01:41:28.000000000 +0100
@@ -1,0 +2,6 @@
+Wed Mar 17 22:09:45 UTC 2010 - jengelh(a)medozas.de
+
+- new upstream release 1.24
+ * ipp2p: updated bittorent command recognition
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
xtables-addons-1.23.tar.bz2
New:
----
xtables-addons-1.24.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xtables-addons.spec ++++++
--- /var/tmp/diff_new_pack.FQdmKL/_old 2010-04-01 17:47:57.000000000 +0200
+++ /var/tmp/diff_new_pack.FQdmKL/_new 2010-04-01 17:47:57.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package xtables-addons (Version 1.23)
+# spec file for package xtables-addons (Version 1.24)
#
# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -18,7 +18,7 @@
Name: xtables-addons
-Version: 1.23
+Version: 1.24
Release: 1
Group: Productivity/Networking/Security
Summary: IP Packet Filter Administration Extensions
++++++ xtables-addons-1.23.tar.bz2 -> xtables-addons-1.24.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/configure new/xtables-addons-1.24/configure
--- old/xtables-addons-1.23/configure 2010-02-25 01:02:14.000000000 +0100
+++ new/xtables-addons-1.24/configure 2010-03-17 02:53:17.000000000 +0100
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.63 for xtables-addons 1.23.
+# Generated by GNU Autoconf 2.63 for xtables-addons 1.24.
#
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
@@ -743,8 +743,8 @@
# Identity of this package.
PACKAGE_NAME='xtables-addons'
PACKAGE_TARNAME='xtables-addons'
-PACKAGE_VERSION='1.23'
-PACKAGE_STRING='xtables-addons 1.23'
+PACKAGE_VERSION='1.24'
+PACKAGE_STRING='xtables-addons 1.24'
PACKAGE_BUGREPORT=''
# Factoring default headers for most tests.
@@ -1477,7 +1477,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures xtables-addons 1.23 to adapt to many kinds of systems.
+\`configure' configures xtables-addons 1.24 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1547,7 +1547,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of xtables-addons 1.23:";;
+ short | recursive ) echo "Configuration of xtables-addons 1.24:";;
esac
cat <<\_ACEOF
@@ -1656,7 +1656,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-xtables-addons configure 1.23
+xtables-addons configure 1.24
generated by GNU Autoconf 2.63
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1670,7 +1670,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by xtables-addons $as_me 1.23, which was
+It was created by xtables-addons $as_me 1.24, which was
generated by GNU Autoconf 2.63. Invocation command line was
$ $0 $@
@@ -2522,7 +2522,7 @@
# Define the identity of the package.
PACKAGE='xtables-addons'
- VERSION='1.23'
+ VERSION='1.24'
cat >>confdefs.h <<_ACEOF
@@ -11626,7 +11626,8 @@
regular_CFLAGS="-D_LARGEFILE_SOURCE=1 -D_LARGE_FILES -D_FILE_OFFSET_BITS=64 \
-D_REENTRANT -Wall -Waggregate-return -Wmissing-declarations \
-Wmissing-prototypes -Wredundant-decls -Wshadow -Wstrict-prototypes \
- -Winline -pipe -DXTABLES_LIBDIR=\\\"\${xtlibdir}\\\"";
+ -Winline -pipe -DXTABLES_LIBDIR=\\\"\${xtlibdir}\\\" \
+ -I\${XA_TOPSRCDIR}/include";
#
# check kernel version
@@ -12108,7 +12109,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by xtables-addons $as_me 1.23, which was
+This file was extended by xtables-addons $as_me 1.24, which was
generated by GNU Autoconf 2.63. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -12171,7 +12172,7 @@
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_version="\\
-xtables-addons config.status 1.23
+xtables-addons config.status 1.24
configured by $0, generated by GNU Autoconf 2.63,
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/configure.ac new/xtables-addons-1.24/configure.ac
--- old/xtables-addons-1.23/configure.ac 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/configure.ac 2010-03-17 02:50:23.000000000 +0100
@@ -1,5 +1,5 @@
-AC_INIT([xtables-addons], [1.23])
+AC_INIT([xtables-addons], [1.24])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_MACRO_DIR([m4])
AC_PROG_INSTALL
@@ -34,7 +34,8 @@
regular_CFLAGS="-D_LARGEFILE_SOURCE=1 -D_LARGE_FILES -D_FILE_OFFSET_BITS=64 \
-D_REENTRANT -Wall -Waggregate-return -Wmissing-declarations \
-Wmissing-prototypes -Wredundant-decls -Wshadow -Wstrict-prototypes \
- -Winline -pipe -DXTABLES_LIBDIR=\\\"\${xtlibdir}\\\"";
+ -Winline -pipe -DXTABLES_LIBDIR=\\\"\${xtlibdir}\\\" \
+ -I\${XA_TOPSRCDIR}/include";
#
# check kernel version
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/doc/changelog.txt new/xtables-addons-1.24/doc/changelog.txt
--- old/xtables-addons-1.23/doc/changelog.txt 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/doc/changelog.txt 2010-03-17 02:50:23.000000000 +0100
@@ -3,6 +3,15 @@
====
+Xtables-addons 1.24 (March 17 2010)
+===================================
+- build: fix build of userspace modules against old (pre-2.6.25)
+ headers from linux-glibc-devel (/usr/include/linux)
+- ipp2p: updated bittorent command recognition
+- SYSRQ: let module load when crypto is unavailable
+- SYSRQ: allow processing of UDP-Lite
+
+
Xtables-addons 1.23 (February 24 2010)
======================================
- build: support for Linux 2.6.34
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/ACCOUNT/libxt_ACCOUNT.c new/xtables-addons-1.24/extensions/ACCOUNT/libxt_ACCOUNT.c
--- old/xtables-addons-1.23/extensions/ACCOUNT/libxt_ACCOUNT.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/ACCOUNT/libxt_ACCOUNT.c 2010-03-17 02:50:23.000000000 +0100
@@ -142,7 +142,7 @@
static struct xtables_target account_tg_reg = {
.name = "ACCOUNT",
.revision = 1,
- .family = AF_INET,
+ .family = NFPROTO_IPV4,
.version = XTABLES_VERSION,
.size = XT_ALIGN(sizeof(struct ipt_acc_info)),
.userspacesize = offsetof(struct ipt_acc_info, table_nr),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/ACCOUNT/xt_ACCOUNT.c new/xtables-addons-1.24/extensions/ACCOUNT/xt_ACCOUNT.c
--- old/xtables-addons-1.23/extensions/ACCOUNT/xt_ACCOUNT.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/ACCOUNT/xt_ACCOUNT.c 2010-03-17 02:50:23.000000000 +0100
@@ -1082,7 +1082,7 @@
static struct xt_target xt_acc_reg __read_mostly = {
.name = "ACCOUNT",
.revision = 1,
- .family = AF_INET,
+ .family = NFPROTO_IPV4,
.target = ipt_acc_target,
.targetsize = sizeof(struct ipt_acc_info),
.checkentry = ipt_acc_checkentry,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/compat_xtables.c new/xtables-addons-1.24/extensions/compat_xtables.c
--- old/xtables-addons-1.23/extensions/compat_xtables.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/compat_xtables.c 2010-03-17 02:50:23.000000000 +0100
@@ -509,4 +509,18 @@
EXPORT_SYMBOL_GPL(xtnu_skb_linearize);
#endif
+void *HX_memmem(const void *space, size_t spacesize,
+ const void *point, size_t pointsize)
+{
+ size_t i;
+
+ if (pointsize > spacesize)
+ return NULL;
+ for (i = 0; i <= spacesize - pointsize; ++i)
+ if (memcmp(space + i, point, pointsize) == 0)
+ return (void *)space + i;
+ return NULL;
+}
+EXPORT_SYMBOL_GPL(HX_memmem);
+
MODULE_LICENSE("GPL");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/compat_xtnu.h new/xtables-addons-1.24/extensions/compat_xtnu.h
--- old/xtables-addons-1.23/extensions/compat_xtnu.h 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/compat_xtnu.h 2010-03-17 02:50:23.000000000 +0100
@@ -154,4 +154,6 @@
__be32, __be32, bool);
extern int xtnu_skb_linearize(struct sk_buff *);
+extern void *HX_memmem(const void *, size_t, const void *, size_t);
+
#endif /* _COMPAT_XTNU_H */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/libxt_CHAOS.c new/xtables-addons-1.24/extensions/libxt_CHAOS.c
--- old/xtables-addons-1.23/extensions/libxt_CHAOS.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/libxt_CHAOS.c 2010-03-17 02:50:23.000000000 +0100
@@ -95,7 +95,7 @@
static struct xtables_target chaos_tg_reg = {
.version = XTABLES_VERSION,
.name = "CHAOS",
- .family = AF_INET,
+ .family = NFPROTO_IPV4,
.size = XT_ALIGN(sizeof(struct xt_chaos_tginfo)),
.userspacesize = XT_ALIGN(sizeof(struct xt_chaos_tginfo)),
.help = chaos_tg_help,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/libxt_DELUDE.c new/xtables-addons-1.24/extensions/libxt_DELUDE.c
--- old/xtables-addons-1.23/extensions/libxt_DELUDE.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/libxt_DELUDE.c 2010-03-17 02:50:23.000000000 +0100
@@ -33,9 +33,7 @@
.version = XTABLES_VERSION,
.name = "DELUDE",
.revision = 0,
- .family = AF_INET,
- .size = XT_ALIGN(0),
- .userspacesize = XT_ALIGN(0),
+ .family = NFPROTO_IPV4,
.help = delude_tg_help,
.parse = delude_tg_parse,
.final_check = delude_tg_check,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/libxt_DHCPMAC.c new/xtables-addons-1.24/extensions/libxt_DHCPMAC.c
--- old/xtables-addons-1.23/extensions/libxt_DHCPMAC.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/libxt_DHCPMAC.c 2010-03-17 02:50:23.000000000 +0100
@@ -84,7 +84,7 @@
.version = XTABLES_VERSION,
.name = "DHCPMAC",
.revision = 0,
- .family = PF_INET,
+ .family = NFPROTO_IPV4,
.size = XT_ALIGN(sizeof(struct dhcpmac_info)),
.userspacesize = XT_ALIGN(sizeof(struct dhcpmac_info)),
.help = dhcpmac_tg_help,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/libxt_ECHO.c new/xtables-addons-1.24/extensions/libxt_ECHO.c
--- old/xtables-addons-1.23/extensions/libxt_ECHO.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/libxt_ECHO.c 2010-03-17 02:50:23.000000000 +0100
@@ -29,9 +29,7 @@
static struct xtables_target echo_tg_reg = {
.version = XTABLES_VERSION,
.name = "ECHO",
- .family = AF_UNSPEC,
- .size = XT_ALIGN(0),
- .userspacesize = XT_ALIGN(0),
+ .family = NFPROTO_UNSPEC,
.help = echo_tg_help,
.parse = echo_tg_parse,
.final_check = echo_tg_check,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/libxt_IPMARK.c new/xtables-addons-1.24/extensions/libxt_IPMARK.c
--- old/xtables-addons-1.23/extensions/libxt_IPMARK.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/libxt_IPMARK.c 2010-03-17 02:50:23.000000000 +0100
@@ -151,7 +151,7 @@
static struct xtables_target ipmark_tg_reg = {
.version = XTABLES_VERSION,
.name = "IPMARK",
- .family = PF_UNSPEC,
+ .family = NFPROTO_UNSPEC,
.revision = 1,
.size = XT_ALIGN(sizeof(struct xt_ipmark_tginfo)),
.userspacesize = XT_ALIGN(sizeof(struct xt_ipmark_tginfo)),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/libxt_LOGMARK.c new/xtables-addons-1.24/extensions/libxt_LOGMARK.c
--- old/xtables-addons-1.23/extensions/libxt_LOGMARK.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/libxt_LOGMARK.c 2010-03-17 02:50:23.000000000 +0100
@@ -100,7 +100,7 @@
.version = XTABLES_VERSION,
.name = "LOGMARK",
.revision = 0,
- .family = AF_UNSPEC,
+ .family = NFPROTO_UNSPEC,
.size = XT_ALIGN(sizeof(struct xt_logmark_tginfo)),
.userspacesize = XT_ALIGN(sizeof(struct xt_logmark_tginfo)),
.help = logmark_tg_help,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/libxt_RAWDNAT.c new/xtables-addons-1.24/extensions/libxt_RAWDNAT.c
--- old/xtables-addons-1.23/extensions/libxt_RAWDNAT.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/libxt_RAWDNAT.c 2010-03-17 02:50:23.000000000 +0100
@@ -154,7 +154,7 @@
.version = XTABLES_VERSION,
.name = "RAWDNAT",
.revision = 0,
- .family = PF_INET,
+ .family = NFPROTO_IPV4,
.size = XT_ALIGN(sizeof(struct xt_rawnat_tginfo)),
.userspacesize = XT_ALIGN(sizeof(struct xt_rawnat_tginfo)),
.help = rawdnat_tg_help,
@@ -169,7 +169,7 @@
.version = XTABLES_VERSION,
.name = "RAWDNAT",
.revision = 0,
- .family = PF_INET6,
+ .family = NFPROTO_IPV6,
.size = XT_ALIGN(sizeof(struct xt_rawnat_tginfo)),
.userspacesize = XT_ALIGN(sizeof(struct xt_rawnat_tginfo)),
.help = rawdnat_tg_help,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/libxt_RAWSNAT.c new/xtables-addons-1.24/extensions/libxt_RAWSNAT.c
--- old/xtables-addons-1.23/extensions/libxt_RAWSNAT.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/libxt_RAWSNAT.c 2010-03-17 02:50:23.000000000 +0100
@@ -154,7 +154,7 @@
.version = XTABLES_VERSION,
.name = "RAWSNAT",
.revision = 0,
- .family = PF_INET,
+ .family = NFPROTO_IPV4,
.size = XT_ALIGN(sizeof(struct xt_rawnat_tginfo)),
.userspacesize = XT_ALIGN(sizeof(struct xt_rawnat_tginfo)),
.help = rawsnat_tg_help,
@@ -169,7 +169,7 @@
.version = XTABLES_VERSION,
.name = "RAWSNAT",
.revision = 0,
- .family = PF_INET6,
+ .family = NFPROTO_IPV6,
.size = XT_ALIGN(sizeof(struct xt_rawnat_tginfo)),
.userspacesize = XT_ALIGN(sizeof(struct xt_rawnat_tginfo)),
.help = rawsnat_tg_help,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/libxt_STEAL.c new/xtables-addons-1.24/extensions/libxt_STEAL.c
--- old/xtables-addons-1.23/extensions/libxt_STEAL.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/libxt_STEAL.c 2010-03-17 02:50:23.000000000 +0100
@@ -19,9 +19,7 @@
static struct xtables_target steal_tg_reg = {
.version = XTABLES_VERSION,
.name = "STEAL",
- .family = AF_UNSPEC,
- .size = XT_ALIGN(0),
- .userspacesize = XT_ALIGN(0),
+ .family = NFPROTO_UNSPEC,
.help = steal_tg_help,
.parse = steal_tg_parse,
.final_check = steal_tg_check,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/libxt_SYSRQ.c new/xtables-addons-1.24/extensions/libxt_SYSRQ.c
--- old/xtables-addons-1.23/extensions/libxt_SYSRQ.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/libxt_SYSRQ.c 2010-03-17 02:50:23.000000000 +0100
@@ -25,9 +25,7 @@
.version = XTABLES_VERSION,
.name = "SYSRQ",
.revision = 1,
- .family = PF_UNSPEC,
- .size = XT_ALIGN(0),
- .userspacesize = XT_ALIGN(0),
+ .family = NFPROTO_UNSPEC,
.help = sysrq_tg_help,
.parse = sysrq_tg_parse,
.final_check = sysrq_tg_check,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/libxt_TARPIT.c new/xtables-addons-1.24/extensions/libxt_TARPIT.c
--- old/xtables-addons-1.23/extensions/libxt_TARPIT.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/libxt_TARPIT.c 2010-03-17 02:50:23.000000000 +0100
@@ -24,9 +24,7 @@
static struct xtables_target tarpit_tg_reg = {
.version = XTABLES_VERSION,
.name = "TARPIT",
- .family = AF_INET,
- .size = XT_ALIGN(0),
- .userspacesize = XT_ALIGN(0),
+ .family = NFPROTO_IPV4,
.help = tarpit_tg_help,
.parse = tarpit_tg_parse,
.final_check = tarpit_tg_check,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/libxt_TEE.c new/xtables-addons-1.24/extensions/libxt_TEE.c
--- old/xtables-addons-1.23/extensions/libxt_TEE.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/libxt_TEE.c 2010-03-17 02:50:23.000000000 +0100
@@ -138,7 +138,7 @@
.name = "TEE",
.version = XTABLES_VERSION,
.revision = 0,
- .family = PF_INET,
+ .family = NFPROTO_IPV4,
.size = XT_ALIGN(sizeof(struct xt_tee_tginfo)),
.userspacesize = XT_ALIGN(sizeof(struct xt_tee_tginfo)),
.help = tee_tg_help,
@@ -153,7 +153,7 @@
.name = "TEE",
.version = XTABLES_VERSION,
.revision = 0,
- .family = PF_INET6,
+ .family = NFPROTO_IPV6,
.size = XT_ALIGN(sizeof(struct xt_tee_tginfo)),
.userspacesize = XT_ALIGN(sizeof(struct xt_tee_tginfo)),
.help = tee_tg_help,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/libxt_condition.c new/xtables-addons-1.24/extensions/libxt_condition.c
--- old/xtables-addons-1.23/extensions/libxt_condition.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/libxt_condition.c 2010-03-17 02:50:23.000000000 +0100
@@ -80,7 +80,7 @@
static struct xtables_match condition_mt_reg = {
.name = "condition",
.revision = 1,
- .family = PF_UNSPEC,
+ .family = NFPROTO_UNSPEC,
.version = XTABLES_VERSION,
.size = XT_ALIGN(sizeof(struct xt_condition_mtinfo)),
.userspacesize = XT_ALIGN(sizeof(struct xt_condition_mtinfo)),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/libxt_dhcpmac.c new/xtables-addons-1.24/extensions/libxt_dhcpmac.c
--- old/xtables-addons-1.23/extensions/libxt_dhcpmac.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/libxt_dhcpmac.c 2010-03-17 02:50:23.000000000 +0100
@@ -85,7 +85,7 @@
.version = XTABLES_VERSION,
.name = "dhcpmac",
.revision = 0,
- .family = PF_INET,
+ .family = NFPROTO_IPV4,
.size = XT_ALIGN(sizeof(struct dhcpmac_info)),
.userspacesize = XT_ALIGN(sizeof(struct dhcpmac_info)),
.help = dhcpmac_mt_help,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/libxt_fuzzy.c new/xtables-addons-1.24/extensions/libxt_fuzzy.c
--- old/xtables-addons-1.23/extensions/libxt_fuzzy.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/libxt_fuzzy.c 2010-03-17 02:50:23.000000000 +0100
@@ -103,6 +103,7 @@
.name = "fuzzy",
.revision = 1,
.version = XTABLES_VERSION,
+ .family = NFPROTO_UNSPEC,
.size = XT_ALIGN(sizeof(struct xt_fuzzy_mtinfo)),
.userspacesize = offsetof(struct xt_fuzzy_mtinfo, packets_total),
.help = fuzzy_mt_help,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/libxt_geoip.c new/xtables-addons-1.24/extensions/libxt_geoip.c
--- old/xtables-addons-1.23/extensions/libxt_geoip.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/libxt_geoip.c 2010-03-17 02:50:23.000000000 +0100
@@ -259,7 +259,7 @@
}
static struct xtables_match geoip_match = {
- .family = AF_INET,
+ .family = NFPROTO_IPV4,
.name = "geoip",
.revision = 1,
.version = XTABLES_VERSION,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/libxt_iface.c new/xtables-addons-1.24/extensions/libxt_iface.c
--- old/xtables-addons-1.23/extensions/libxt_iface.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/libxt_iface.c 2010-03-17 02:50:23.000000000 +0100
@@ -200,7 +200,7 @@
.version = XTABLES_VERSION,
.name = "iface",
.revision = 0,
- .family = AF_UNSPEC,
+ .family = NFPROTO_UNSPEC,
.size = XT_ALIGN(sizeof(struct xt_iface_mtinfo)),
.userspacesize = XT_ALIGN(sizeof(struct xt_iface_mtinfo)),
.help = iface_mt_help,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/libxt_ipp2p.c new/xtables-addons-1.24/extensions/libxt_ipp2p.c
--- old/xtables-addons-1.23/extensions/libxt_ipp2p.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/libxt_ipp2p.c 2010-03-17 02:50:23.000000000 +0100
@@ -229,7 +229,7 @@
.version = XTABLES_VERSION,
.name = "ipp2p",
.revision = 1,
- .family = AF_INET,
+ .family = NFPROTO_IPV4,
.size = XT_ALIGN(sizeof(struct ipt_p2p_info)),
.userspacesize = XT_ALIGN(sizeof(struct ipt_p2p_info)),
.help = ipp2p_mt_help,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/libxt_ipv4options.c new/xtables-addons-1.24/extensions/libxt_ipv4options.c
--- old/xtables-addons-1.23/extensions/libxt_ipv4options.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/libxt_ipv4options.c 2010-03-17 02:50:23.000000000 +0100
@@ -161,7 +161,7 @@
.version = XTABLES_VERSION,
.name = "ipv4options",
.revision = 1,
- .family = PF_INET,
+ .family = NFPROTO_IPV4,
.size = XT_ALIGN(sizeof(struct xt_ipv4options_mtinfo1)),
.userspacesize = XT_ALIGN(sizeof(struct xt_ipv4options_mtinfo1)),
.help = ipv4options_mt_help,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/libxt_length2.c new/xtables-addons-1.24/extensions/libxt_length2.c
--- old/xtables-addons-1.23/extensions/libxt_length2.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/libxt_length2.c 2010-03-17 02:50:23.000000000 +0100
@@ -155,7 +155,7 @@
.version = XTABLES_VERSION,
.name = "length2",
.revision = 2,
- .family = PF_UNSPEC,
+ .family = NFPROTO_UNSPEC,
.size = XT_ALIGN(sizeof(struct xt_length_mtinfo2)),
.userspacesize = XT_ALIGN(sizeof(struct xt_length_mtinfo2)),
.init = length_mt_init,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/libxt_lscan.c new/xtables-addons-1.24/extensions/libxt_lscan.c
--- old/xtables-addons-1.23/extensions/libxt_lscan.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/libxt_lscan.c 2010-03-17 02:50:23.000000000 +0100
@@ -105,7 +105,7 @@
.version = XTABLES_VERSION,
.name = "lscan",
.revision = 0,
- .family = AF_INET,
+ .family = NFPROTO_IPV4,
.size = XT_ALIGN(sizeof(struct xt_lscan_mtinfo)),
.userspacesize = XT_ALIGN(sizeof(struct xt_lscan_mtinfo)),
.help = lscan_mt_help,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/libxt_psd.c new/xtables-addons-1.24/extensions/libxt_psd.c
--- old/xtables-addons-1.23/extensions/libxt_psd.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/libxt_psd.c 2010-03-17 02:50:23.000000000 +0100
@@ -139,7 +139,7 @@
.name = "psd",
.version = XTABLES_VERSION,
.revision = 1,
- .family = PF_INET,
+ .family = NFPROTO_IPV4,
.size = XT_ALIGN(sizeof(struct xt_psd_info)),
.userspacesize = XT_ALIGN(sizeof(struct xt_psd_info)),
.help = psd_mt_help,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/libxt_quota2.c new/xtables-addons-1.24/extensions/libxt_quota2.c
--- old/xtables-addons-1.23/extensions/libxt_quota2.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/libxt_quota2.c 2010-03-17 02:50:23.000000000 +0100
@@ -133,7 +133,7 @@
}
static struct xtables_match quota_mt2_reg = {
- .family = AF_UNSPEC,
+ .family = NFPROTO_UNSPEC,
.revision = 3,
.name = "quota2",
.version = XTABLES_VERSION,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/pknock/libxt_pknock.c new/xtables-addons-1.24/extensions/pknock/libxt_pknock.c
--- old/xtables-addons-1.23/extensions/pknock/libxt_pknock.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/pknock/libxt_pknock.c 2010-03-17 02:50:23.000000000 +0100
@@ -326,7 +326,7 @@
.name = "pknock",
.version = XTABLES_VERSION,
.revision = 1,
- .family = AF_INET,
+ .family = NFPROTO_IPV4,
.size = XT_ALIGN(sizeof(struct xt_pknock_mtinfo)),
.userspacesize = XT_ALIGN(sizeof(struct xt_pknock_mtinfo)),
.help = pknock_mt_help,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/xt_DHCPMAC.c new/xtables-addons-1.24/extensions/xt_DHCPMAC.c
--- old/xtables-addons-1.23/extensions/xt_DHCPMAC.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/xt_DHCPMAC.c 2010-03-17 02:50:23.000000000 +0100
@@ -139,7 +139,7 @@
.family = NFPROTO_IPV4,
.proto = IPPROTO_UDP,
.match = dhcpmac_mt,
- .matchsize = XT_ALIGN(sizeof(struct dhcpmac_info)),
+ .matchsize = sizeof(struct dhcpmac_info),
.me = THIS_MODULE,
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/xt_ECHO.c new/xtables-addons-1.24/extensions/xt_ECHO.c
--- old/xtables-addons-1.23/extensions/xt_ECHO.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/xt_ECHO.c 2010-03-17 02:50:23.000000000 +0100
@@ -113,7 +113,6 @@
.proto = IPPROTO_UDP,
.table = "filter",
.target = echo_tg4,
- .targetsize = XT_ALIGN(0),
.me = THIS_MODULE,
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/xt_IPMARK.c new/xtables-addons-1.24/extensions/xt_IPMARK.c
--- old/xtables-addons-1.23/extensions/xt_IPMARK.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/xt_IPMARK.c 2010-03-17 02:50:23.000000000 +0100
@@ -86,7 +86,7 @@
.family = NFPROTO_IPV4,
.table = "mangle",
.target = ipmark_tg4,
- .targetsize = XT_ALIGN(sizeof(struct xt_ipmark_tginfo)),
+ .targetsize = sizeof(struct xt_ipmark_tginfo),
.me = THIS_MODULE,
},
{
@@ -95,7 +95,7 @@
.family = NFPROTO_IPV6,
.table = "mangle",
.target = ipmark_tg6,
- .targetsize = XT_ALIGN(sizeof(struct xt_ipmark_tginfo)),
+ .targetsize = sizeof(struct xt_ipmark_tginfo),
.me = THIS_MODULE,
},
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/xt_SYSRQ.c new/xtables-addons-1.24/extensions/xt_SYSRQ.c
--- old/xtables-addons-1.23/extensions/xt_SYSRQ.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/xt_SYSRQ.c 2010-03-17 02:50:23.000000000 +0100
@@ -1,6 +1,6 @@
/*
* "SYSRQ" target extension for Netfilter
- * Copyright © Jan Engelhardt <jengelh [at] medozas de>, 2008
+ * Copyright © Jan Engelhardt <jengelh [at] medozas de>, 2008 - 2010
*
* Based upon the ipt_SYSRQ idea by Marek Zalem <marek [at] terminus sk>
*
@@ -23,6 +23,10 @@
#include <net/ip.h>
#include "compat_xtables.h"
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19) && \
+ (defined(CONFIG_CRYPTO) || defined(CONFIG_CRYPTO_MODULE))
+# define WITH_CRYPTO 1
+#endif
#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
# define WITH_IPV6 1
#endif
@@ -42,7 +46,7 @@
MODULE_PARM_DESC(seqno, "sequence number for remote sysrq");
MODULE_PARM_DESC(debug, "debugging: 0=off, 1=on");
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19)
+#ifdef WITH_CRYPTO
static struct crypto_hash *sysrq_tfm;
static int sysrq_digest_size;
static unsigned char *sysrq_digest_password;
@@ -204,8 +208,8 @@
return NF_DROP;
iph = ip_hdr(skb);
- if (iph->protocol != IPPROTO_UDP)
- return NF_ACCEPT; /* sink it */
+ if (iph->protocol != IPPROTO_UDP && iph->protocol != IPPROTO_UDPLITE)
+ return NF_DROP;
udph = (const void *)iph + ip_hdrlen(skb);
len = ntohs(udph->len) - sizeof(struct udphdr);
@@ -235,7 +239,7 @@
iph = ipv6_hdr(skb);
if (ipv6_find_hdr(skb, &th_off, IPPROTO_UDP, &frag_off) < 0 ||
frag_off > 0)
- return NF_ACCEPT; /* sink it */
+ return NF_DROP;
udph = (const void *)iph + th_off;
len = ntohs(udph->len) - sizeof(struct udphdr);
@@ -296,10 +300,25 @@
#endif
};
-static int __init sysrq_tg_init(void)
+static void sysrq_crypto_exit(void)
{
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19)
+#ifdef WITH_CRYPTO
+ if (sysrq_tfm)
+ crypto_free_hash(sysrq_tfm);
+ if (sysrq_digest)
+ kfree(sysrq_digest);
+ if (sysrq_hexdigest)
+ kfree(sysrq_hexdigest);
+ if (sysrq_digest_password)
+ kfree(sysrq_digest_password);
+#endif
+}
+
+static int __init sysrq_crypto_init(void)
+{
+#if defined(WITH_CRYPTO)
struct timeval now;
+ int ret;
sysrq_tfm = crypto_alloc_hash(sysrq_hash, 0, CRYPTO_ALG_ASYNC);
if (IS_ERR(sysrq_tfm)) {
@@ -307,10 +326,12 @@
": Error: Could not find or load %s hash\n",
sysrq_hash);
sysrq_tfm = NULL;
+ ret = PTR_ERR(sysrq_tfm);
goto fail;
}
sysrq_digest_size = crypto_hash_digestsize(sysrq_tfm);
sysrq_digest = kmalloc(sysrq_digest_size, GFP_KERNEL);
+ ret = -ENOMEM;
if (sysrq_digest == NULL) {
printk(KERN_WARNING KBUILD_MODNAME
": Cannot allocate digest\n");
@@ -330,33 +351,31 @@
}
do_gettimeofday(&now);
sysrq_seqno = now.tv_sec;
- return xt_register_targets(sysrq_tg_reg, ARRAY_SIZE(sysrq_tg_reg));
+ ret = xt_register_targets(sysrq_tg_reg, ARRAY_SIZE(sysrq_tg_reg));
+ if (ret < 0)
+ goto fail;
+ return ret;
fail:
- if (sysrq_tfm)
- crypto_free_hash(sysrq_tfm);
- if (sysrq_digest)
- kfree(sysrq_digest);
- if (sysrq_hexdigest)
- kfree(sysrq_hexdigest);
- if (sysrq_digest_password)
- kfree(sysrq_digest_password);
+ sysrq_crypto_exit();
+ return ret;
+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 19)
+ printk(KERN_WARNING "xt_SYSRQ does not provide crypto for < 2.6.19\n");
+#endif
return -EINVAL;
-#else
- printk(KERN_WARNING "xt_SYSRQ does not provide crypto for <= 2.6.18\n");
+}
+
+static int __init sysrq_tg_init(void)
+{
+ if (sysrq_crypto_init() < 0)
+ printk(KERN_WARNING "xt_SYSRQ starting without crypto\n");
return xt_register_targets(sysrq_tg_reg, ARRAY_SIZE(sysrq_tg_reg));
-#endif
}
static void __exit sysrq_tg_exit(void)
{
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19)
- crypto_free_hash(sysrq_tfm);
- kfree(sysrq_digest);
- kfree(sysrq_hexdigest);
- kfree(sysrq_digest_password);
-#endif
- return xt_unregister_targets(sysrq_tg_reg, ARRAY_SIZE(sysrq_tg_reg));
+ sysrq_crypto_exit();
+ xt_unregister_targets(sysrq_tg_reg, ARRAY_SIZE(sysrq_tg_reg));
}
module_init(sysrq_tg_init);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/xt_TEE.c new/xtables-addons-1.24/extensions/xt_TEE.c
--- old/xtables-addons-1.23/extensions/xt_TEE.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/xt_TEE.c 2010-03-17 02:50:23.000000000 +0100
@@ -232,6 +232,7 @@
memset(&fl, 0, sizeof(fl));
fl.iif = skb_ifindex(skb);
+ /* No mark in flowi before 2.6.19 */
#if LINUX_VERSION_CODE == KERNEL_VERSION(2, 6, 19)
fl.nl_u.ip6_u.fwmark = skb_nfmark(skb);
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 20)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/xt_condition.c new/xtables-addons-1.24/extensions/xt_condition.c
--- old/xtables-addons-1.23/extensions/xt_condition.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/xt_condition.c 2010-03-17 02:50:23.000000000 +0100
@@ -35,6 +35,7 @@
MODULE_AUTHOR("Stephane Ouellette <ouellettes(a)videotron.ca>");
MODULE_AUTHOR("Massimiliano Hofer <max(a)nucleus.it>");
+MODULE_AUTHOR("Jan Engelhardt <jengelh(a)medozas.de>");
MODULE_DESCRIPTION("Allows rules to match against condition variables");
MODULE_LICENSE("GPL");
module_param(condition_list_perms, uint, S_IRUSR | S_IWUSR);
@@ -55,7 +56,7 @@
/* proc_lock is a user context only semaphore used for write access */
/* to the conditions' list. */
-static struct semaphore proc_lock;
+static struct mutex proc_lock;
static LIST_HEAD(conditions_list);
static struct proc_dir_entry *proc_net_condition;
@@ -69,7 +70,6 @@
buffer[1] = '\n';
if (length >= 2)
*eof = true;
-
return 2;
}
@@ -92,7 +92,6 @@
break;
}
}
-
return length;
}
@@ -124,18 +123,17 @@
info->name);
return false;
}
-
/*
* Let's acquire the lock, check for the condition and add it
* or increase the reference counter.
*/
- if (down_interruptible(&proc_lock))
+ if (mutex_lock_interruptible(&proc_lock) != 0)
return false;
list_for_each_entry(var, &conditions_list, list) {
if (strcmp(info->name, var->status_proc->name) == 0) {
var->refcount++;
- up(&proc_lock);
+ mutex_unlock(&proc_lock);
info->condvar = var;
return true;
}
@@ -143,19 +141,17 @@
/* At this point, we need to allocate a new condition variable. */
var = kmalloc(sizeof(struct condition_variable), GFP_KERNEL);
-
if (var == NULL) {
- up(&proc_lock);
+ mutex_unlock(&proc_lock);
return false;
}
/* Create the condition variable's proc file entry. */
var->status_proc = create_proc_entry(info->name, condition_list_perms,
proc_net_condition);
-
if (var->status_proc == NULL) {
kfree(var);
- up(&proc_lock);
+ mutex_unlock(&proc_lock);
return false;
}
@@ -168,14 +164,10 @@
wmb();
var->status_proc->read_proc = condition_proc_read;
var->status_proc->write_proc = condition_proc_write;
-
list_add_rcu(&var->list, &conditions_list);
-
var->status_proc->uid = condition_uid_perms;
var->status_proc->gid = condition_gid_perms;
-
- up(&proc_lock);
-
+ mutex_unlock(&proc_lock);
info->condvar = var;
return true;
}
@@ -185,11 +177,11 @@
const struct xt_condition_mtinfo *info = par->matchinfo;
struct condition_variable *var = info->condvar;
- down(&proc_lock);
+ mutex_lock(&proc_lock);
if (--var->refcount == 0) {
list_del_rcu(&var->list);
remove_proc_entry(var->status_proc->name, proc_net_condition);
- up(&proc_lock);
+ mutex_unlock(&proc_lock);
/*
* synchronize_rcu() would be good enough, but
* synchronize_net() guarantees that no packet
@@ -200,7 +192,7 @@
kfree(var);
return;
}
- up(&proc_lock);
+ mutex_unlock(&proc_lock);
}
static struct xt_match condition_mt_reg[] __read_mostly = {
@@ -208,7 +200,7 @@
.name = "condition",
.revision = 1,
.family = NFPROTO_IPV4,
- .matchsize = XT_ALIGN(sizeof(struct xt_condition_mtinfo)),
+ .matchsize = sizeof(struct xt_condition_mtinfo),
.match = condition_mt,
.checkentry = condition_mt_check,
.destroy = condition_mt_destroy,
@@ -218,7 +210,7 @@
.name = "condition",
.revision = 1,
.family = NFPROTO_IPV6,
- .matchsize = XT_ALIGN(sizeof(struct xt_condition_mtinfo)),
+ .matchsize = sizeof(struct xt_condition_mtinfo),
.match = condition_mt,
.checkentry = condition_mt_check,
.destroy = condition_mt_destroy,
@@ -232,7 +224,7 @@
{
int ret;
- sema_init(&proc_lock, 1);
+ mutex_init(&proc_lock);
proc_net_condition = proc_mkdir(dir_name, init_net__proc_net);
if (proc_net_condition == NULL)
return -EACCES;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/xt_fuzzy.c new/xtables-addons-1.24/extensions/xt_fuzzy.c
--- old/xtables-addons-1.23/extensions/xt_fuzzy.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/xt_fuzzy.c 2010-03-17 02:50:23.000000000 +0100
@@ -146,7 +146,7 @@
.family = NFPROTO_IPV4,
.match = fuzzy_mt,
.checkentry = fuzzy_mt_check,
- .matchsize = XT_ALIGN(sizeof(struct xt_fuzzy_mtinfo)),
+ .matchsize = sizeof(struct xt_fuzzy_mtinfo),
.me = THIS_MODULE,
},
{
@@ -155,7 +155,7 @@
.family = NFPROTO_IPV6,
.match = fuzzy_mt,
.checkentry = fuzzy_mt_check,
- .matchsize = XT_ALIGN(sizeof(struct xt_fuzzy_mtinfo)),
+ .matchsize = sizeof(struct xt_fuzzy_mtinfo),
.me = THIS_MODULE,
},
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/xt_iface.c new/xtables-addons-1.24/extensions/xt_iface.c
--- old/xtables-addons-1.23/extensions/xt_iface.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/xt_iface.c 2010-03-17 02:50:23.000000000 +0100
@@ -71,7 +71,7 @@
.name = "iface",
.revision = 0,
.family = NFPROTO_IPV4,
- .matchsize = XT_ALIGN(sizeof(struct xt_iface_mtinfo)),
+ .matchsize = sizeof(struct xt_iface_mtinfo),
.match = xt_iface_mt,
.me = THIS_MODULE,
},
@@ -79,7 +79,7 @@
.name = "iface",
.revision = 0,
.family = NFPROTO_IPV6,
- .matchsize = XT_ALIGN(sizeof(struct xt_iface_mtinfo)),
+ .matchsize = sizeof(struct xt_iface_mtinfo),
.match = xt_iface_mt,
.me = THIS_MODULE,
},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/xt_ipp2p.c new/xtables-addons-1.24/extensions/xt_ipp2p.c
--- old/xtables-addons-1.23/extensions/xt_ipp2p.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/xt_ipp2p.c 2010-03-17 02:50:23.000000000 +0100
@@ -505,19 +505,18 @@
if (payload[0] == 0x13)
if (memcmp(payload + 1, "BitTorrent protocol", 19) == 0)
return IPP2P_BIT * 100;
-
/*
- * get tracker commandos, all starts with GET /
- * then it can follow: scrape| announce
- * and then ?hash_info=
+ * Any tracker command starts with GET / then *may be* some file on web server
+ * (e.g. announce.php or dupa.pl or whatever.cgi or NOTHING for tracker on root dir)
+ * but *must have* one (or more) of strings listed below (true for scrape and announce)
*/
if (memcmp(payload, "GET /", 5) == 0) {
- /* message scrape */
- if (memcmp(payload + 5, "scrape?info_hash=", 17) == 0)
+ if (HX_memmem(payload, plen, "info_hash=", 9) != NULL)
return IPP2P_BIT * 100 + 1;
- /* message announce */
- if (memcmp(payload + 5, "announce?info_hash=", 19) == 0)
+ if (HX_memmem(payload, plen, "peer_id=", 8) != NULL)
return IPP2P_BIT * 100 + 2;
+ if (HX_memmem(payload, plen, "passkey=", 8) != NULL)
+ return IPP2P_BIT * 100 + 4;
}
} else {
/* bitcomet encryptes the first packet, so we have to detect another
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/xt_ipv4options.c new/xtables-addons-1.24/extensions/xt_ipv4options.c
--- old/xtables-addons-1.23/extensions/xt_ipv4options.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/xt_ipv4options.c 2010-03-17 02:50:23.000000000 +0100
@@ -50,7 +50,7 @@
.revision = 1,
.family = NFPROTO_IPV4,
.match = ipv4options_mt,
- .matchsize = XT_ALIGN(sizeof(struct xt_ipv4options_mtinfo1)),
+ .matchsize = sizeof(struct xt_ipv4options_mtinfo1),
.me = THIS_MODULE,
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/extensions/xt_psd.c new/xtables-addons-1.24/extensions/xt_psd.c
--- old/xtables-addons-1.23/extensions/xt_psd.c 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/extensions/xt_psd.c 2010-03-17 02:50:23.000000000 +0100
@@ -312,7 +312,7 @@
static struct xt_match xt_psd_reg __read_mostly = {
.name = "psd",
- .family = AF_INET,
+ .family = NFPROTO_IPV4,
.revision = 1,
.match = xt_psd_match,
.matchsize = sizeof(struct xt_psd_info),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/include/linux/netfilter.h new/xtables-addons-1.24/include/linux/netfilter.h
--- old/xtables-addons-1.23/include/linux/netfilter.h 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/include/linux/netfilter.h 2010-03-17 02:50:23.000000000 +0100
@@ -3,6 +3,7 @@
#include <linux/types.h>
+
/* Responses from hook functions. */
#define NF_DROP 0
#define NF_ACCEPT 1
@@ -37,6 +38,16 @@
NF_INET_NUMHOOKS
};
+enum {
+ NFPROTO_UNSPEC = 0,
+ NFPROTO_IPV4 = 2,
+ NFPROTO_ARP = 3,
+ NFPROTO_BRIDGE = 7,
+ NFPROTO_IPV6 = 10,
+ NFPROTO_DECNET = 12,
+ NFPROTO_NUMPROTO,
+};
+
union nf_inet_addr {
__u32 all[4];
__be32 ip;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xtables-addons-1.23/xtables-addons.8.in new/xtables-addons-1.24/xtables-addons.8.in
--- old/xtables-addons-1.23/xtables-addons.8.in 2010-02-24 20:59:38.000000000 +0100
+++ new/xtables-addons-1.24/xtables-addons.8.in 2010-03-17 02:50:23.000000000 +0100
@@ -1,4 +1,4 @@
-.TH xtables-addons 8 "v1.23 (2010-02-24)" "" "v1.23 (2010-02-24)"
+.TH xtables-addons 8 "v1.24 (2010-03-17)" "" "v1.24 (2010-03-17)"
.SH Name
Xtables-addons \(em additional extensions for iptables, ip6tables, etc.
.SH Targets
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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 input-utils for openSUSE:Factory
checked in at Thu Apr 1 17:47:49 CEST 2010.
--------
--- input-utils/input-utils.changes 2009-06-19 11:01:58.000000000 +0200
+++ /mounts/work_src_done/STABLE/input-utils/input-utils.changes 2009-09-29 16:55:41.000000000 +0200
@@ -1,0 +2,5 @@
+Tue Sep 29 16:27:10 CEST 2009 - prusnak(a)suse.cz
+
+- added initscript for inputattach [bnc#456829] [Fate#306376]
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
New:
----
inputattach.init
inputattach.sysconfig
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ input-utils.spec ++++++
--- /var/tmp/diff_new_pack.lCswJF/_old 2010-04-01 17:45:58.000000000 +0200
+++ /var/tmp/diff_new_pack.lCswJF/_new 2010-04-01 17:45:58.000000000 +0200
@@ -1,7 +1,7 @@
#
# spec file for package input-utils (Version 2007.06.22)
#
-# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -20,16 +20,18 @@
Name: input-utils
BuildRequires: SDL-devel linux-kernel-headers
+PreReq: %fillup_prereq
Version: 2007.06.22
-Release: 158
+Release: 159
Provides: joystick
Obsoletes: joystick
-AutoReqProv: on
Group: Hardware/Joystick
-License: GPL v2 or later
+License: GPLv2+
Url: http://linuxconsole.sourceforge.net/input/input.html
Summary: A Set of Utilities for Input Devices
Source: %{name}-%{version}.tar.bz2
+Source1: inputattach.init
+Source2: inputattach.sysconfig
Patch0: %{name}-makefile.patch
Patch1: %{name}-on_exit.patch
Patch2: %{name}-dtor.patch
@@ -63,14 +65,26 @@
make CFLAGS="$RPM_OPT_FLAGS -Wall" PROGRAMS="%{programs}"
%install
-install -m755 -d $RPM_BUILD_ROOT%{_bindir}
-install -m755 -t $RPM_BUILD_ROOT%{_bindir} %{programs}
+install -m 0755 -d $RPM_BUILD_ROOT%{_bindir}
+install -m 0755 -t $RPM_BUILD_ROOT%{_bindir} %{programs}
+# init script
+install -D -m 0755 %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/init.d/inputattach
+mkdir -p $RPM_BUILD_ROOT%{_sbindir}
+ln -sf %{_sysconfdir}/init.d/inputattach $RPM_BUILD_ROOT%{_sbindir}/rcinputattach
+# sysconfig
+install -D -m 700 %{SOURCE2} $RPM_BUILD_ROOT/var/adm/fillup-templates/sysconfig.inputattach-%{name}
%clean
rm -rf $RPM_BUILD_ROOT
+%post
+%{fillup_only -an inputattach}
+
%files
%defattr(-,root,root)
%{_bindir}/*
+%{_sysconfdir}/init.d/inputattach
+%{_sbindir}/rcinputattach
+/var/adm/fillup-templates/sysconfig.inputattach-%{name}
%changelog
++++++ inputattach.init ++++++
#!/bin/sh
#
# /etc/init.d/inputattach
#
# This connects devices on serial ports to
# user-specified kernel drivers.
#
### BEGIN INIT INFO
# Provides: boot.inputattach
# Should-Start: $local_fs boot.loadmodules setserial
# Should-Stop: $null
# Required-Start:
# Required-Stop:
# Default-Start: 1 2 3 5
# Default-Stop: 0 6
# Description: Attaches drivers to serial devices
### END INIT INFO
. /etc/rc.status
. /etc/sysconfig/inputattach
inputattach_bin=/usr/bin/inputattach
rc_reset
case $1 in
start)
echo -n "Starting inputattach for serial drivers:"
if test -n "$INPUTATTACH_DRIVERS" ; then
echo
for pair in $INPUTATTACH_DRIVERS ; do
serial_node="${pair%%:*}"
inputattach_driver="${pair##*:}"
inputattach_params="--${inputattach_driver} ${serial_node}"
startproc ${inputattach_bin} ${inputattach_params}
rc_status -v
done
else
rc_status -u
fi
;;
stop)
echo -n "Stopping inputattach for serial drivers:"
killproc -TERM ${inputattach_bin}
rc_status -v
;;
restart)
$0 stop
$0 start
rc_status
force-reload)
$0 stop
$0 start
rc_status
status)
echo -n "Checking for inputattach:"
checkproc ${inputattach_bin}
rc_status -v
*)
echo "Usage: $0 {start|stop|restart|force-reload|status}"
;;
esac
rc_exit
++++++ inputattach.sysconfig ++++++
## Path: Hardware/Serial
## Description: Serial port driver settings
## Type: string
## Default: ""
#
# Attach a kernel driver to a device on a serial port.
# Use pairs <device>:<driver> separated by space.
# Specify the full path of the serial device node.
# See "inputattach --help" for a list of driver strings.
# Use the full driver name, e.g. "sunkbd" not "skb".
# Example: "/dev/ttyS0:elotouch /dev/ttyS3:sunmouse"
#
INPUTATTACH_DRIVERS=""
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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-gtk for openSUSE:Factory
checked in at Thu Apr 1 17:47:45 CEST 2010.
--------
--- yast2-gtk/yast2-gtk.changes 2010-03-25 19:58:41.000000000 +0100
+++ /mounts/work_src_done/STABLE/yast2-gtk/yast2-gtk.changes 2010-04-01 05:51:07.000000000 +0200
@@ -1,0 +2,7 @@
+Thu Apr 01 04:42:00 WET 2010 - rpmcruz(a)alunos.dcc.fc.up.pt
+
+- 2.21.31
+- sw_single: added history of changes dialog.
+- sw_single: align side-bar count number to the right.
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
yast2-gtk-2.21.30.tar.bz2
New:
----
yast2-gtk-2.21.31.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-gtk.spec ++++++
--- /var/tmp/diff_new_pack.5O16Q9/_old 2010-04-01 17:46:02.000000000 +0200
+++ /var/tmp/diff_new_pack.5O16Q9/_new 2010-04-01 17:46:02.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package yast2-gtk (Version 2.21.30)
+# spec file for package yast2-gtk (Version 2.21.31)
#
# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -18,11 +18,11 @@
Name: yast2-gtk
-Version: 2.21.30
+Version: 2.21.31
Release: 1
BuildRoot: %{_tmppath}/%{name}-%{version}-build
-Source0: yast2-gtk-2.21.30.tar.bz2
+Source0: yast2-gtk-2.21.31.tar.bz2
Url: http://en.opensuse.org/YaST2-GTK
Summary: YaST2 - GTK+ Graphical User Interface
Group: System/YaST
++++++ yast2-gtk-2.21.30.tar.bz2 -> yast2-gtk-2.21.31.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-gtk-2.21.30/ChangeLog new/yast2-gtk-2.21.31/ChangeLog
--- old/yast2-gtk-2.21.30/ChangeLog 2010-03-25 19:55:58.000000000 +0100
+++ new/yast2-gtk-2.21.31/ChangeLog 2010-04-01 05:43:17.000000000 +0200
@@ -1,3 +1,25 @@
+2010-04-01 Ricardo Cruz <rpmcruz(a)alunos.dcc.fc.up.pt>
+
+ * src/pkg/ygtkpkghistorydialog.cc: added some markup
+ to the text as requested by Atri.
+
+ * src/pkg/ygtkpkgfilterview.cc: aligned number count
+ to the right.
+
+ * src/pkg/YGPackageSelector.cc: aligned tool-box to
+ the right, and re-positioned it, as requested by Atri.
+
+ * src/pkg/ygtkpkghistorydialog.cc: set dialog non-modal.
+
+ * src/pkg/ygtkpkgdetailview.cc: added line to changelog
+ indicating it only applies to the installed version.
+
+2010-03-31 Ricardo Cruz <rpmcruz(a)alunos.dcc.fc.up.pt>
+
+ * src/ygtkpkghistorydialog.h/cc: fate#305859 and
+ as requested by Atri: added Extras > Show History
+ of Changes menu item.
+
2010-03-25 Ricardo Cruz <rpmcruz(a)alunos.dcc.fc.up.pt>
* src/pkg/ygtkpkglistview.cc: allocate sufficient memory
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-gtk-2.21.30/Makefile.cvs new/yast2-gtk-2.21.31/Makefile.cvs
--- old/yast2-gtk-2.21.30/Makefile.cvs 2010-03-25 19:55:58.000000000 +0100
+++ new/yast2-gtk-2.21.31/Makefile.cvs 2010-04-01 05:43:17.000000000 +0200
@@ -7,7 +7,7 @@
PREFIX = /usr
configure:
- mkdir build ;\
+ mkdir -p build ;\
cd build ;\
cmake -DCMAKE_INSTALL_PREFIX=$(PREFIX) -DLIB=$(LIB) .. && make
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-gtk-2.21.30/VERSION new/yast2-gtk-2.21.31/VERSION
--- old/yast2-gtk-2.21.30/VERSION 2010-03-25 19:55:58.000000000 +0100
+++ new/yast2-gtk-2.21.31/VERSION 2010-04-01 05:43:17.000000000 +0200
@@ -1 +1 @@
-2.21.30
+2.21.31
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-gtk-2.21.30/VERSION.cmake new/yast2-gtk-2.21.31/VERSION.cmake
--- old/yast2-gtk-2.21.30/VERSION.cmake 2010-03-25 19:55:58.000000000 +0100
+++ new/yast2-gtk-2.21.31/VERSION.cmake 2010-04-01 05:43:17.000000000 +0200
@@ -1,3 +1,3 @@
SET(VERSION_MAJOR "2")
SET(VERSION_MINOR "21")
-SET(VERSION_PATCH "30")
+SET(VERSION_PATCH "31")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-gtk-2.21.30/package/yast2-gtk.changes new/yast2-gtk-2.21.31/package/yast2-gtk.changes
--- old/yast2-gtk-2.21.30/package/yast2-gtk.changes 2010-03-25 19:55:58.000000000 +0100
+++ new/yast2-gtk-2.21.31/package/yast2-gtk.changes 2010-04-01 05:43:17.000000000 +0200
@@ -1,4 +1,11 @@
-------------------------------------------------------------------
+Thu Apr 01 04:42:00 WET 2010 - rpmcruz(a)alunos.dcc.fc.up.pt
+
+- 2.21.31
+- sw_single: added history of changes dialog.
+- sw_single: align side-bar count number to the right.
+
+-------------------------------------------------------------------
Thu Mar 25 18:54:00 WET 2010 - rpmcruz(a)alunos.dcc.fc.up.pt
- 2.21.30
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-gtk-2.21.30/package/yast2-gtk.spec new/yast2-gtk-2.21.31/package/yast2-gtk.spec
--- old/yast2-gtk-2.21.30/package/yast2-gtk.spec 2010-03-25 19:55:58.000000000 +0100
+++ new/yast2-gtk-2.21.31/package/yast2-gtk.spec 2010-04-01 05:43:17.000000000 +0200
@@ -1,16 +1,16 @@
#
-# spec file for package yast2-gtk (Version 2.21.29)
+# spec file for package yast2-gtk (Version 2.21.30)
#
# norootforbuild;,
Name: yast2-gtk
-Version: 2.21.29
+Version: 2.21.30
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
-Source0: yast2-gtk-2.21.29.tar.bz2
+Source0: yast2-gtk-2.21.30.tar.bz2
Url: http://en.opensuse.org/YaST2-GTK
Summary: YaST2 - GTK+ Graphical User Interface
Group: System/YaST
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-gtk-2.21.30/src/pkg/CMakeLists.txt new/yast2-gtk-2.21.31/src/pkg/CMakeLists.txt
--- old/yast2-gtk-2.21.30/src/pkg/CMakeLists.txt 2010-03-25 19:55:58.000000000 +0100
+++ new/yast2-gtk-2.21.31/src/pkg/CMakeLists.txt 2010-04-01 05:43:17.000000000 +0200
@@ -4,6 +4,7 @@
YGPackageSelector.cc
YGPackageSelectorPluginImpl.cc
ygtkpkgdetailview.cc
+ ygtkpkghistorydialog.cc
ygtkpkglistview.cc
ygtkpkgfilterview.cc
ygtkpkglanguageview.cc
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-gtk-2.21.30/src/pkg/YGPackageSelector.cc new/yast2-gtk-2.21.31/src/pkg/YGPackageSelector.cc
--- old/yast2-gtk-2.21.30/src/pkg/YGPackageSelector.cc 2010-03-25 19:55:58.000000000 +0100
+++ new/yast2-gtk-2.21.31/src/pkg/YGPackageSelector.cc 2010-04-01 05:43:17.000000000 +0200
@@ -123,19 +123,20 @@
GtkWidget *text = gtk_event_box_new();
gtk_container_add (GTK_CONTAINER (text), m_overview);
+ GtkWidget *list_vbox = gtk_vbox_new (FALSE, 4);
+ gtk_box_pack_start (GTK_BOX (list_vbox), m_list->getWidget(), TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (list_vbox), m_toolbox, FALSE, TRUE, 0);
+
GtkWidget *vpaned = gtk_vpaned_new();
- gtk_paned_pack1 (GTK_PANED (vpaned), m_list->getWidget(), TRUE, FALSE);
+ gtk_paned_pack1 (GTK_PANED (vpaned), list_vbox, TRUE, FALSE);
gtk_paned_pack2 (GTK_PANED (vpaned), text, FALSE, TRUE);
g_signal_connect_after (G_OBJECT (vpaned), "size-allocate",
G_CALLBACK (vpaned_allocate_cb), this);
- GtkWidget *vbox, *_vbox = gtk_vbox_new (FALSE, 0);
+ GtkWidget *_vbox = gtk_vbox_new (FALSE, 0);
gtk_box_pack_start (GTK_BOX (_vbox), hbox, FALSE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (_vbox), vpaned, TRUE, TRUE, 0);
- vbox = gtk_vbox_new (FALSE, 8);
- gtk_box_pack_start (GTK_BOX (vbox), _vbox, TRUE, TRUE, 0);
- gtk_box_pack_start (GTK_BOX (vbox), m_toolbox, FALSE, TRUE, 0);
- return vbox;
+ return _vbox;
}
GtkWidget *createSidebar()
@@ -477,7 +478,7 @@
g_list_free (children);
if (toolbox) {
- gtk_box_pack_start (GTK_BOX (m_toolbox), toolbox, FALSE, TRUE, 0);
+ gtk_box_pack_end (GTK_BOX (m_toolbox), toolbox, FALSE, TRUE, 0);
gtk_widget_show (m_toolbox);
}
else
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-gtk-2.21.30/src/pkg/ygtkpkgdetailview.cc new/yast2-gtk-2.21.31/src/pkg/ygtkpkgdetailview.cc
--- old/yast2-gtk-2.21.30/src/pkg/ygtkpkgdetailview.cc 2010-03-25 19:55:58.000000000 +0100
+++ new/yast2-gtk-2.21.31/src/pkg/ygtkpkgdetailview.cc 2010-04-01 05:43:17.000000000 +0200
@@ -958,6 +958,8 @@
static std::string changelog (Ypp::Selectable &sel)
{
std::string text;
+ text.reserve (32768);
+ text = _("<p>Changelog applies only to the installed version.</p>");
ZyppResObject zobj = sel.installed().zyppObj();
ZyppPackage zpkg = castZyppPackage (zobj);
if (zpkg) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-gtk-2.21.30/src/pkg/ygtkpkgfilterview.cc new/yast2-gtk-2.21.31/src/pkg/ygtkpkgfilterview.cc
--- old/yast2-gtk-2.21.30/src/pkg/ygtkpkgfilterview.cc 2010-03-25 19:55:58.000000000 +0100
+++ new/yast2-gtk-2.21.31/src/pkg/ygtkpkgfilterview.cc 2010-04-01 05:43:17.000000000 +0200
@@ -67,7 +67,7 @@
gchar *text;
UpdateData *data = (UpdateData *) _data;
gpointer mdata;
- gtk_tree_model_get (model, iter, YGtkPkgFilterModel::TEXT_ORI_COLUMN, &text,
+ gtk_tree_model_get (model, iter, YGtkPkgFilterModel::TEXT_COLUMN, &text,
YGtkPkgFilterModel::DATA_COLUMN, &mdata, -1);
bool separator = !(*text);
@@ -120,7 +120,7 @@
GtkTreeIter iter;
gtk_list_store_append (store, &iter);
gtk_list_store_set (store, &iter, ICON_COLUMN, pixbuf, TEXT_COLUMN, text,
- TEXT_ORI_COLUMN, text, ENABLED_COLUMN, enabled, VISIBLE_COLUMN, TRUE,
+ COUNT_NUMBER_COLUMN, "", ENABLED_COLUMN, enabled, VISIBLE_COLUMN, TRUE,
DATA_COLUMN, data, -1);
if (pixbuf) g_object_unref (pixbuf);
@@ -135,14 +135,10 @@
GtkTreeIter iter;
gtk_tree_model_iter_nth_child (impl->model, &iter, NULL, row);
- gchar *ori_text;
- gtk_tree_model_get (impl->model, &iter, TEXT_ORI_COLUMN, &ori_text, -1);
-
- gchar *text = g_strdup_printf ("%s <small>(%d)</small>", ori_text, count);
- gtk_list_store_set (store, &iter, TEXT_COLUMN, text,
+ gchar *str = g_strdup_printf ("%d", count);
+ gtk_list_store_set (store, &iter, COUNT_NUMBER_COLUMN, str,
VISIBLE_COLUMN, !hide_if_zero || count > 0, -1);
- g_free (ori_text);
- g_free (text);
+ g_free (str);
}
// Status
@@ -595,8 +591,16 @@
column = gtk_tree_view_column_new_with_attributes (
NULL, renderer, "markup", YGtkPkgFilterModel::TEXT_COLUMN,
"sensitive", YGtkPkgFilterModel::ENABLED_COLUMN, NULL);
- g_object_set (G_OBJECT (renderer), "ellipsize",
- updates ? PANGO_ELLIPSIZE_MIDDLE : PANGO_ELLIPSIZE_END, NULL);
+ g_object_set (G_OBJECT (renderer), "ellipsize", PANGO_ELLIPSIZE_END, NULL);
+ gtk_tree_view_column_set_expand (column, TRUE);
+ gtk_tree_view_append_column (view, column);
+
+ renderer = gtk_cell_renderer_text_new();
+ column = gtk_tree_view_column_new_with_attributes (
+ NULL, renderer, "text", YGtkPkgFilterModel::COUNT_NUMBER_COLUMN,
+ "sensitive", YGtkPkgFilterModel::ENABLED_COLUMN, NULL);
+ g_object_set (G_OBJECT (renderer), "xalign", 1.0, "scale", PANGO_SCALE_SMALL,
+ "foreground", "#8c8c8c", NULL);
gtk_tree_view_append_column (view, column);
GtkTreeSelection *selection = gtk_tree_view_get_selection (view);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-gtk-2.21.30/src/pkg/ygtkpkgfilterview.h new/yast2-gtk-2.21.31/src/pkg/ygtkpkgfilterview.h
--- old/yast2-gtk-2.21.30/src/pkg/ygtkpkgfilterview.h 2010-03-25 19:55:58.000000000 +0100
+++ new/yast2-gtk-2.21.31/src/pkg/ygtkpkgfilterview.h 2010-04-01 05:43:17.000000000 +0200
@@ -20,7 +20,7 @@
struct YGtkPkgFilterModel // abstract
{
- enum Column { ICON_COLUMN, TEXT_COLUMN, TEXT_ORI_COLUMN,
+ enum Column { ICON_COLUMN, TEXT_COLUMN, COUNT_NUMBER_COLUMN,
VISIBLE_COLUMN, ENABLED_COLUMN, DATA_COLUMN, TOTAL_COLUMNS };
YGtkPkgFilterModel();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-gtk-2.21.30/src/pkg/ygtkpkghistorydialog.cc new/yast2-gtk-2.21.31/src/pkg/ygtkpkghistorydialog.cc
--- old/yast2-gtk-2.21.30/src/pkg/ygtkpkghistorydialog.cc 1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-gtk-2.21.31/src/pkg/ygtkpkghistorydialog.cc 2010-04-01 05:43:17.000000000 +0200
@@ -0,0 +1,233 @@
+/********************************************************************
+ * YaST2-GTK - http://en.opensuse.org/YaST2-GTK *
+ ********************************************************************/
+/* Textdomain "yast2-gtk" */
+/* YGtkPkgMenuBar, menu bar */
+// check the header file for information about this widget
+
+#include "YGi18n.h"
+#include "config.h"
+#include "YGDialog.h"
+#include "ygtkpkghistorydialog.h"
+#include <gtk/gtk.h>
+#include "ygtktextview.h"
+
+#include <zypp/parser/HistoryLogReader.h>
+#define FILENAME "/var/log/zypp/history"
+
+static void selection_changed_cb (GtkTreeSelection *selection, GtkTextView *text)
+{
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ if (gtk_tree_selection_get_selected (selection, &model, &iter)) {
+ char *date;
+ gtk_tree_model_get (model, &iter, 0, &date, -1);
+
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer (text);
+ GtkTextMark *mark = gtk_text_buffer_get_mark (buffer, date);
+ gtk_text_view_scroll_to_mark (text, mark, 0, TRUE, 0, 0);
+ g_free (date);
+ }
+}
+
+struct Handler
+{
+ Handler (GtkListStore *store, GtkTextBuffer *buffer)
+ : store (store), buffer (buffer)
+ {
+ bold_tag = gtk_text_buffer_create_tag (buffer, "bold",
+ "weight", PANGO_WEIGHT_BOLD, "foreground", "#5c5c5c",
+ "scale", PANGO_SCALE_LARGE, "pixels-below-lines", 6,
+ "pixels-above-lines", 6, NULL);
+ }
+
+ bool operator() (const zypp::HistoryItem::Ptr &item)
+ {
+ std::string _date (item->date.form ("%d %B %Y"));
+ bool new_date = date != _date;
+
+ GtkTextIter text_iter;
+ gtk_text_buffer_get_end_iter (buffer, &text_iter);
+
+ if (new_date) {
+ date = _date;
+ GtkTreeIter list_iter;
+ gtk_list_store_append (store, &list_iter);
+ gtk_list_store_set (store, &list_iter,
+ 0, date.c_str(), -1);
+
+ gtk_text_buffer_create_mark (buffer, date.c_str(), &text_iter, TRUE);
+ gtk_text_buffer_insert_with_tags (buffer, &text_iter,
+ (date + "\n").c_str(), -1, bold_tag, NULL);
+ }
+
+ std::string line;
+ line.reserve (1024);
+ line = "\t";
+ switch (item->action.toEnum()) {
+ case zypp::HistoryActionID::NONE_e:
+ break;
+ case zypp::HistoryActionID::INSTALL_e: {
+ zypp::HistoryItemInstall *_item =
+ static_cast <zypp::HistoryItemInstall *> (item.get());
+ line += _("install"); line += " ";
+ line += _item->name + " ";
+ line += _item->edition.version();
+ break;
+ }
+ case zypp::HistoryActionID::REMOVE_e: {
+ zypp::HistoryItemRemove *_item =
+ static_cast <zypp::HistoryItemRemove *> (item.get());
+ line += _("remove"); line += " ";
+ line += _item->name + " ";
+ line += _item->edition.version();
+ break;
+ }
+ case zypp::HistoryActionID::REPO_ADD_e: {
+ zypp::HistoryItemRepoAdd *_item =
+ static_cast <zypp::HistoryItemRepoAdd *> (item.get());
+ line += _("add repository"); line += " ";
+ line += _item->alias;
+ break;
+ }
+ case zypp::HistoryActionID::REPO_REMOVE_e: {
+ zypp::HistoryItemRepoRemove *_item =
+ static_cast <zypp::HistoryItemRepoRemove *> (item.get());
+ line += _("remove repository"); line += " ";
+ line += _item->alias;
+ break;
+ }
+ case zypp::HistoryActionID::REPO_CHANGE_ALIAS_e: {
+ zypp::HistoryItemRepoAliasChange *_item =
+ static_cast <zypp::HistoryItemRepoAliasChange *> (item.get());
+ gchar *str = g_strdup_printf ("change repository %s alias: %s",
+ _item->oldalias.c_str(), _item->newalias.c_str());
+ line += str;
+ g_free (str);
+ break;
+ }
+ case zypp::HistoryActionID::REPO_CHANGE_URL_e: {
+ zypp::HistoryItemRepoUrlChange *_item =
+ static_cast <zypp::HistoryItemRepoUrlChange *> (item.get());
+ gchar *str = g_strdup_printf ("change repository %s url: %s",
+ _item->alias.c_str(), _item->newurl.asString().c_str());
+ line += str;
+ g_free (str);
+ break;
+ }
+ }
+ line += "\n";
+ gtk_text_buffer_insert (buffer, &text_iter, line.c_str(), -1);
+ return true;
+ }
+
+ GtkListStore *store;
+ GtkTextBuffer *buffer;
+ std::string date;
+ GtkTextTag *bold_tag;
+};
+
+static void write_file (const char *filename, const char *text)
+{
+ FILE *file = fopen (filename, "w");
+ fwrite (text, strlen (text), sizeof (char), file);
+ fclose (file);
+}
+
+static void response_cb (GtkDialog *dialog, gint response, GtkTextBuffer *buffer)
+{
+ if (response == 1) {
+ GtkWidget *_dialog = gtk_file_chooser_dialog_new ("", GTK_WINDOW (dialog),
+ GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_OPEN, GTK_RESPONSE_OK,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, NULL);
+ gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (_dialog), TRUE);
+ gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (_dialog), TRUE);
+ if (gtk_dialog_run (GTK_DIALOG (_dialog)) == GTK_RESPONSE_OK) {
+ gchar *filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (_dialog));
+ GtkTextIter start, end;
+ gtk_text_buffer_get_bounds (buffer, &start, &end);
+ gchar *text = gtk_text_buffer_get_text (buffer, &start, &end, FALSE);
+ write_file (filename, text);
+ g_free (text);
+ g_free (filename);
+ }
+ gtk_widget_destroy (_dialog);
+ }
+ else
+ gtk_widget_destroy (GTK_WIDGET (dialog));
+}
+
+YGtkPkgHistoryDialog::YGtkPkgHistoryDialog()
+{
+ GtkWidget *text = ygtk_text_view_new (FALSE);
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text));
+ GtkWidget *text_scroll = gtk_scrolled_window_new (NULL, NULL);
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (text_scroll),
+ GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+ gtk_scrolled_window_set_shadow_type (
+ GTK_SCROLLED_WINDOW (text_scroll), GTK_SHADOW_IN);
+ gtk_container_add (GTK_CONTAINER (text_scroll), text);
+
+ GtkListStore *store = gtk_list_store_new (1, G_TYPE_STRING);
+ GtkWidget *date_view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store));
+ g_object_unref (G_OBJECT (store));
+ gtk_tree_view_set_search_column (GTK_TREE_VIEW (date_view), 0);
+ gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (date_view), FALSE);
+
+ GtkCellRenderer *renderer = gtk_cell_renderer_text_new();
+ GtkTreeViewColumn *column = gtk_tree_view_column_new_with_attributes (
+ NULL, renderer, "text", 0, NULL);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (date_view), column);
+
+ //gtk_tree_view_column_set_sort_column_id (column, 1);
+ gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_FIXED);
+ gtk_tree_view_set_fixed_height_mode (GTK_TREE_VIEW (date_view), TRUE);
+
+ GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (date_view));
+ g_signal_connect (G_OBJECT (selection), "changed",
+ G_CALLBACK (selection_changed_cb), text);
+
+ GtkWidget *date_scroll = gtk_scrolled_window_new (NULL, NULL);
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (date_scroll),
+ GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+ gtk_scrolled_window_set_shadow_type (
+ GTK_SCROLLED_WINDOW (date_scroll), GTK_SHADOW_IN);
+ gtk_container_add (GTK_CONTAINER (date_scroll), date_view);
+
+ GtkWidget *dialog = gtk_message_dialog_new (YGDialog::currentWindow(),
+ GtkDialogFlags (0), GTK_MESSAGE_OTHER, GTK_BUTTONS_NONE, _("History of Changes"));
+// gtk_dialog_add_button (GTK_DIALOG (dialog), _("Save to file"), 1);
+ gtk_dialog_add_button (GTK_DIALOG (dialog), GTK_STOCK_CLOSE, GTK_RESPONSE_DELETE_EVENT);
+ gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), FILENAME);
+ gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_CLOSE);
+ gtk_window_set_resizable (GTK_WINDOW (dialog), TRUE);
+ gtk_window_set_default_size (GTK_WINDOW (dialog), 600, 500);
+ g_signal_connect (G_OBJECT (dialog), "response",
+ G_CALLBACK (response_cb), buffer);
+
+ GtkWidget *hpaned = gtk_hpaned_new();
+ gtk_paned_pack1 (GTK_PANED (hpaned), date_scroll, FALSE, FALSE);
+ gtk_paned_pack2 (GTK_PANED (hpaned), text_scroll, TRUE, FALSE);
+ gtk_paned_set_position (GTK_PANED (hpaned), 180);
+ gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), hpaned);
+
+ Handler handler (store, buffer);
+ zypp::parser::HistoryLogReader parser (FILENAME, boost::ref (handler));
+ try {
+ parser.readAll();
+ }
+ catch (const zypp::Exception &ex) {
+ yuiWarning () << "Error: Could not load log file" << FILENAME << ": "
+ << ex.asUserHistory() << std::endl;
+ }
+
+ gtk_widget_show_all (dialog);
+ m_dialog = dialog;
+}
+
+YGtkPkgHistoryDialog::~YGtkPkgHistoryDialog()
+{} //gtk_widget_destroy (m_dialog); }
+
+void YGtkPkgHistoryDialog::popup()
+{ gtk_widget_show (m_dialog); }
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-gtk-2.21.30/src/pkg/ygtkpkghistorydialog.h new/yast2-gtk-2.21.31/src/pkg/ygtkpkghistorydialog.h
--- old/yast2-gtk-2.21.30/src/pkg/ygtkpkghistorydialog.h 1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-gtk-2.21.31/src/pkg/ygtkpkghistorydialog.h 2010-04-01 05:43:17.000000000 +0200
@@ -0,0 +1,26 @@
+/********************************************************************
+ * YaST2-GTK - http://en.opensuse.org/YaST2-GTK *
+ ********************************************************************/
+
+/* Show /var/log/zypp/history.
+ Uses zypp::parser::HistoryLogReader.
+*/
+
+#ifndef YGTK_PKG_HISTORY_DIALOG_H
+#define YGTK_PKG_HISTORY_DIALOG_H
+
+#include <gtk/gtkwidget.h>
+
+struct YGtkPkgHistoryDialog
+{
+ YGtkPkgHistoryDialog();
+ ~YGtkPkgHistoryDialog();
+
+ void popup();
+
+private:
+ GtkWidget *m_dialog;
+};
+
+#endif
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-gtk-2.21.30/src/pkg/ygtkpkgmenubar.cc new/yast2-gtk-2.21.31/src/pkg/ygtkpkgmenubar.cc
--- old/yast2-gtk-2.21.30/src/pkg/ygtkpkgmenubar.cc 2010-03-25 19:55:58.000000000 +0100
+++ new/yast2-gtk-2.21.31/src/pkg/ygtkpkgmenubar.cc 2010-04-01 05:43:17.000000000 +0200
@@ -524,6 +524,15 @@
static void show_pkg_changes_cb()
{ YGPackageSelector::get()->popupChanges(); }
+
+#include "ygtkpkghistorydialog.h"
+
+static void show_log_changes_cb()
+{
+ YGtkPkgHistoryDialog dialog;
+ dialog.popup();
+}
+
static void reset_ignored_dependency_conflicts_cb()
{ zypp::getZYpp()->resolver()->undo(); }
@@ -589,6 +598,8 @@
G_CALLBACK (show_products_cb), this);
append_menu_item (submenu, _("Show Package Changes"), NULL,
G_CALLBACK (show_pkg_changes_cb), this);
+ append_menu_item (submenu, _("Show History of Changes"), NULL,
+ G_CALLBACK (show_log_changes_cb), this);
append_menu_item (submenu, NULL, NULL, NULL, NULL);
append_menu_item (submenu, _("Install All Matching -devel Packages"), NULL,
G_CALLBACK (install_all_devel_pkgs_cb), this);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-gtk-2.21.30/src/pkg/ygtkpkgproductdialog.cc new/yast2-gtk-2.21.31/src/pkg/ygtkpkgproductdialog.cc
--- old/yast2-gtk-2.21.30/src/pkg/ygtkpkgproductdialog.cc 2010-03-25 19:55:58.000000000 +0100
+++ new/yast2-gtk-2.21.31/src/pkg/ygtkpkgproductdialog.cc 2010-04-01 05:43:17.000000000 +0200
@@ -153,7 +153,7 @@
gtk_container_add (GTK_CONTAINER (scroll), view);
GtkWidget *dialog = gtk_message_dialog_new (YGDialog::currentWindow(),
- GtkDialogFlags (0), GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, _("Product Listing"));
+ GtkDialogFlags (0), GTK_MESSAGE_OTHER, GTK_BUTTONS_CLOSE, _("Product Listing"));
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_CLOSE);
gtk_window_set_resizable (GTK_WINDOW (dialog), TRUE);
gtk_window_set_default_size (GTK_WINDOW (dialog), 600, 500);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-gtk-2.21.30/src/pkg/ygtkpkgstatusbar.cc new/yast2-gtk-2.21.31/src/pkg/ygtkpkgstatusbar.cc
--- old/yast2-gtk-2.21.30/src/pkg/ygtkpkgstatusbar.cc 2010-03-25 19:55:58.000000000 +0100
+++ new/yast2-gtk-2.21.31/src/pkg/ygtkpkgstatusbar.cc 2010-04-01 05:43:17.000000000 +0200
@@ -86,7 +86,7 @@
const char *action = getStatusAction (sel);
gchar *str;
if (sel->toModifyAuto())
- str = g_strdup_printf (_("<b>%s</b> %d predefined packages"), action, auto_count);
+ str = g_strdup_printf (_("<b>%s</b> %d preselected packages"), action, auto_count);
else {
const char *format;
if (auto_count > 1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-gtk-2.21.30/src/ygtkrichtext.c new/yast2-gtk-2.21.31/src/ygtkrichtext.c
--- old/yast2-gtk-2.21.30/src/ygtkrichtext.c 2010-03-25 19:55:58.000000000 +0100
+++ new/yast2-gtk-2.21.31/src/ygtkrichtext.c 2010-04-01 05:43:17.000000000 +0200
@@ -117,10 +117,6 @@
// Create a few tags like 'h3', 'b', 'i'. others need to be created as we parse
GtkTextBuffer *buffer = gtk_text_view_get_buffer (tview);
- PangoFontDescription *font_desc = widget->style->font_desc;
- int size = pango_font_description_get_size (font_desc);
- if (pango_font_description_get_size_is_absolute (font_desc))
- size /= PANGO_SCALE;
gboolean reverse = gtk_widget_get_default_direction() == GTK_TEXT_DIR_RTL;
const char *left_margin = reverse ? "right-margin" : "left-margin";
@@ -128,24 +124,22 @@
gtk_text_buffer_create_tag (buffer, "body", NULL);
gtk_text_buffer_create_tag (buffer, "h1", "weight", PANGO_WEIGHT_HEAVY,
- "size", (int)(size * PANGO_SCALE_XX_LARGE), "pixels-below-lines", 16,
+ "scale", PANGO_SCALE_XX_LARGE, "pixels-below-lines", 16,
"foreground", "#5c5c5c", NULL);
gtk_text_buffer_create_tag (buffer, "h2", "weight", PANGO_WEIGHT_ULTRABOLD,
- "size", (int)(size * PANGO_SCALE_X_LARGE), "pixels-below-lines", 15,
+ "scale", PANGO_SCALE_X_LARGE, "pixels-below-lines", 15,
"foreground", "#5c5c5c", NULL);
gtk_text_buffer_create_tag (buffer, "h3", "weight", PANGO_WEIGHT_BOLD,
- "size", (int)(size * PANGO_SCALE_LARGE), "pixels-below-lines", 14,
+ "scale", PANGO_SCALE_LARGE, "pixels-below-lines", 14,
"foreground", "#5c5c5c", NULL);
gtk_text_buffer_create_tag (buffer, "h4", "weight", PANGO_WEIGHT_SEMIBOLD,
- "size", (int)(size * PANGO_SCALE_LARGE), "pixels-below-lines", 13,
+ "scale", PANGO_SCALE_LARGE, "pixels-below-lines", 13,
"foreground", "#5c5c5c", NULL);
gtk_text_buffer_create_tag (buffer, "h5",
- "size", (int)(size * PANGO_SCALE_LARGE), "foreground", "#5c5c5c", NULL);
+ "scale", PANGO_SCALE_LARGE, "foreground", "#5c5c5c", NULL);
gtk_text_buffer_create_tag (buffer, "p", "pixels-below-lines", 12, NULL);
- gtk_text_buffer_create_tag (buffer, "big",
- "size", (int)(size * PANGO_SCALE_LARGE), NULL);
- gtk_text_buffer_create_tag (buffer, "small",
- "size", (int)(size * PANGO_SCALE_SMALL), NULL);
+ gtk_text_buffer_create_tag (buffer, "big", "scale", PANGO_SCALE_LARGE, NULL);
+ gtk_text_buffer_create_tag (buffer, "small", "scale", PANGO_SCALE_SMALL, NULL);
gtk_text_buffer_create_tag (buffer, "tt", "family", "monospace", NULL);
gtk_text_buffer_create_tag (buffer, "pre", "family", "monospace",
"paragraph-background", "#f0f0f0", left_margin, 16, right_margin, 20, NULL);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-gtk-2.21.30/y2signal.log new/yast2-gtk-2.21.31/y2signal.log
--- old/yast2-gtk-2.21.30/y2signal.log 2010-03-25 19:55:58.000000000 +0100
+++ new/yast2-gtk-2.21.31/y2signal.log 2010-04-01 05:43:17.000000000 +0200
@@ -689,3 +689,435 @@
/usr/lib/liby2.so.2(main+0xff2)[0xb7606332]
/lib/libc.so.6(__libc_start_main+0xfe)[0xb713aace]
/usr/lib/YaST2/bin/y2base[0x8048551]
+=== 2010-03-31 02:36:02 +0100 ===
+YaST got signal 2 at YCP file PackagesUI.ycp:280
+Liberating suppressed debugging messages:
+End of suppressed debugging messages
+Backtrace: (use c++filt to demangle)
+/usr/lib/liby2.so.2(_Z20signal_log_backtracev+0x41)[0xb7570f31]
+/usr/lib/liby2.so.2(_Z14signal_handleri+0x181)[0xb75718e1]
+[0xffffe400]
+[0xffffe422]
+/lib/libpthread.so.0(read+0x4b)[0xb7485cfb]
+/usr/lib/libyui.so.3(_ZN3YUI15waitForUIThreadEv+0x37)[0xb683d667]
+/usr/lib/YaST2/plugin/libpy2UI.so.2(_ZN11YUIFunction12evaluateCallEv+0xba)[0xb68e1fca]
+/usr/lib/libycp.so.3(_ZN10YEFunction8evaluateEb+0x392)[0xb75f6242]
+/usr/lib/libycp.so.3(_ZN11YEPropagate8evaluateEb+0x67)[0xb75e67c7]
+/usr/lib/libycp.so.3(_ZN8YSAssign8evaluateEb+0x48)[0xb7602d98]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb7625994]
+/usr/lib/libycp.so.3(_ZN13Y2YCPFunction12evaluateCallEv+0x33d)[0xb75f152d]
+/usr/lib/libycp.so.3(_ZN10YEFunction8evaluateEb+0x392)[0xb75f6242]
+/usr/lib/libycp.so.3(_ZN8YSAssign8evaluateEb+0x48)[0xb7602d98]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb7625994]
+/usr/lib/libycp.so.3(_ZN7YSBlock8evaluateEb+0x24)[0xb76027b4]
+/usr/lib/libycp.so.3(_ZN4YSIf8evaluateEb+0x28e)[0xb761145e]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb7625994]
+/usr/lib/libycp.so.3(_ZN7YSBlock8evaluateEb+0x24)[0xb76027b4]
+/usr/lib/libycp.so.3(_ZN4YSIf8evaluateEb+0x28e)[0xb761145e]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb7625994]
+/usr/lib/libycp.so.3(_ZN4YSDo8evaluateEb+0xbd)[0xb7613b0d]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb7625994]
+/usr/lib/libycp.so.3(_ZN13Y2YCPFunction12evaluateCallEv+0x33d)[0xb75f152d]
+/usr/lib/libycp.so.3(_ZN10YEFunction8evaluateEb+0x392)[0xb75f6242]
+/usr/lib/libycp.so.3(_ZN8YSReturn8evaluateEb+0x58)[0xb7604c28]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb7625994]
+/usr/lib/libycp.so.3(_ZN7YSBlock8evaluateEb+0x24)[0xb76027b4]
+/usr/lib/libycp.so.3(_ZN4YSIf8evaluateEb+0x28e)[0xb761145e]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb7625994]
+/usr/lib/libycp.so.3(_ZNK10YCPCodeRep8evaluateEb+0x10d)[0xb75d83dd]
+/usr/lib/YaST2/plugin/libpy2wfm.so.2(_ZN14Y2WFMComponent12doActualWorkERK7YCPListP11Y2Component+0x80c)[0xb76fe09c]
+/usr/lib/liby2.so.2(main+0xff2)[0xb7573332]
+/lib/libc.so.6(__libc_start_main+0xfe)[0xb70a7ace]
+/usr/lib/YaST2/bin/y2base[0x8048551]
+=== 2010-03-31 02:40:01 +0100 ===
+YaST got signal 2 at YCP file PackagesUI.ycp:280
+Liberating suppressed debugging messages:
+End of suppressed debugging messages
+Backtrace: (use c++filt to demangle)
+/usr/lib/liby2.so.2(_Z20signal_log_backtracev+0x41)[0xb7696f31]
+/usr/lib/liby2.so.2(_Z14signal_handleri+0x181)[0xb76978e1]
+[0xffffe400]
+[0xffffe422]
+/lib/libpthread.so.0(read+0x4b)[0xb75abcfb]
+/usr/lib/libyui.so.3(_ZN3YUI15waitForUIThreadEv+0x37)[0xb6963667]
+/usr/lib/YaST2/plugin/libpy2UI.so.2(_ZN11YUIFunction12evaluateCallEv+0xba)[0xb6a07fca]
+/usr/lib/libycp.so.3(_ZN10YEFunction8evaluateEb+0x392)[0xb771c242]
+/usr/lib/libycp.so.3(_ZN11YEPropagate8evaluateEb+0x67)[0xb770c7c7]
+/usr/lib/libycp.so.3(_ZN8YSAssign8evaluateEb+0x48)[0xb7728d98]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb774b994]
+/usr/lib/libycp.so.3(_ZN13Y2YCPFunction12evaluateCallEv+0x33d)[0xb771752d]
+/usr/lib/libycp.so.3(_ZN10YEFunction8evaluateEb+0x392)[0xb771c242]
+/usr/lib/libycp.so.3(_ZN8YSAssign8evaluateEb+0x48)[0xb7728d98]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb774b994]
+/usr/lib/libycp.so.3(_ZN7YSBlock8evaluateEb+0x24)[0xb77287b4]
+/usr/lib/libycp.so.3(_ZN4YSIf8evaluateEb+0x28e)[0xb773745e]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb774b994]
+/usr/lib/libycp.so.3(_ZN7YSBlock8evaluateEb+0x24)[0xb77287b4]
+/usr/lib/libycp.so.3(_ZN4YSIf8evaluateEb+0x28e)[0xb773745e]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb774b994]
+/usr/lib/libycp.so.3(_ZN4YSDo8evaluateEb+0xbd)[0xb7739b0d]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb774b994]
+/usr/lib/libycp.so.3(_ZN13Y2YCPFunction12evaluateCallEv+0x33d)[0xb771752d]
+/usr/lib/libycp.so.3(_ZN10YEFunction8evaluateEb+0x392)[0xb771c242]
+/usr/lib/libycp.so.3(_ZN8YSReturn8evaluateEb+0x58)[0xb772ac28]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb774b994]
+/usr/lib/libycp.so.3(_ZN7YSBlock8evaluateEb+0x24)[0xb77287b4]
+/usr/lib/libycp.so.3(_ZN4YSIf8evaluateEb+0x28e)[0xb773745e]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb774b994]
+/usr/lib/libycp.so.3(_ZNK10YCPCodeRep8evaluateEb+0x10d)[0xb76fe3dd]
+/usr/lib/YaST2/plugin/libpy2wfm.so.2(_ZN14Y2WFMComponent12doActualWorkERK7YCPListP11Y2Component+0x80c)[0xb782409c]
+/usr/lib/liby2.so.2(main+0xff2)[0xb7699332]
+/lib/libc.so.6(__libc_start_main+0xfe)[0xb71cdace]
+/usr/lib/YaST2/bin/y2base[0x8048551]
+=== 2010-03-31 02:40:33 +0100 ===
+YaST got signal 11 at YCP file PackagesUI.ycp:280
+Liberating suppressed debugging messages:
+End of suppressed debugging messages
+Backtrace: (use c++filt to demangle)
+/usr/lib/liby2.so.2(_Z20signal_log_backtracev+0x41)[0xb75cef31]
+/usr/lib/liby2.so.2(_Z14signal_handleri+0x181)[0xb75cf8e1]
+[0xffffe400]
+/lib/libc.so.6(strlen+0xb)[0xb716497b]
+/usr/lib/libglib-2.0.so.0(g_strdup+0x30)[0xb59707a0]
+/usr/lib/libgobject-2.0.so.0[0xb59032b0]
+/usr/lib/libgtk-x11-2.0.so.0[0xb554dc7d]
+/usr/lib/libgtk-x11-2.0.so.0(gtk_list_store_set_valist+0xd1)[0xb554e0b1]
+/usr/lib/libgtk-x11-2.0.so.0(gtk_list_store_set+0x1f)[0xb554e12f]
+/usr/lib/YaST2/plugin/libpy2gtk_pkg.so.2(_ZN7HandlerclERKN5boost10shared_ptrIN4zypp11HistoryItemEEE+0xe6)[0xb0990ed2]
+/usr/lib/YaST2/plugin/libpy2gtk_pkg.so.2(_ZN5boost6detail8function21function_ref_invoker1I7HandlerbRKNS_10shared_ptrIN4zypp11HistoryItemEEEE6invokeERNS1_15function_bufferES9_+0x2c)[0xb09916be]
+/usr/lib/libzypp.so.619(_ZNK5boost9function1IbRKNS_10shared_ptrIN4zypp11HistoryItemEEEEclES6_+0x39)[0xb6226149]
+/usr/lib/libzypp.so.619(_ZN4zypp6parser16HistoryLogReader4Impl9parseLineERKSsj+0x2a7)[0xb6224617]
+/usr/lib/libzypp.so.619(_ZN4zypp6parser16HistoryLogReader4Impl7readAllERKN5boost8functionIFbRKNS_12ProgressDataEEEE+0x220)[0xb6225b90]
+/usr/lib/libzypp.so.619(_ZN4zypp6parser16HistoryLogReader7readAllERKN5boost8functionIFbRKNS_12ProgressDataEEEE+0x25)[0xb6225ce5]
+/usr/lib/YaST2/plugin/libpy2gtk_pkg.so.2(_ZN20YGtkPkgHistoryDialogC1Ev+0x5a2)[0xb099090e]
+/usr/lib/YaST2/plugin/libpy2gtk_pkg.so.2[0xb09a2210]
+/usr/lib/libgobject-2.0.so.0(g_cclosure_marshal_VOID__VOID+0x8c)[0xb58e9e7c]
+/usr/lib/libgobject-2.0.so.0(g_closure_invoke+0x1e2)[0xb58dc192]
+/usr/lib/libgobject-2.0.so.0[0xb58f1d16]
+/usr/lib/libgobject-2.0.so.0(g_signal_emit_valist+0x736)[0xb58f30e6]
+/usr/lib/libgobject-2.0.so.0(g_signal_emit+0x27)[0xb58f3567]
+/usr/lib/libgtk-x11-2.0.so.0(gtk_widget_activate+0x95)[0xb5679015]
+/usr/lib/libgtk-x11-2.0.so.0(gtk_menu_shell_activate_item+0x120)[0xb5564cc0]
+/usr/lib/libgtk-x11-2.0.so.0[0xb55666af]
+/usr/lib/libgtk-x11-2.0.so.0[0xb555c394]
+/usr/lib/libgtk-x11-2.0.so.0[0xb5555ba4]
+/usr/lib/libgobject-2.0.so.0[0xb58da70e]
+/usr/lib/libgobject-2.0.so.0(g_closure_invoke+0x1e2)[0xb58dc192]
+/usr/lib/libgobject-2.0.so.0[0xb58f1aab]
+/usr/lib/libgobject-2.0.so.0(g_signal_emit_valist+0x5e0)[0xb58f2f90]
+/usr/lib/libgobject-2.0.so.0(g_signal_emit+0x27)[0xb58f3567]
+/usr/lib/libgtk-x11-2.0.so.0[0xb567244e]
+/usr/lib/libgtk-x11-2.0.so.0(gtk_propagate_event+0xd0)[0xb554e350]
+/usr/lib/libgtk-x11-2.0.so.0(gtk_main_do_event+0x219)[0xb554f5d9]
+/usr/lib/libgdk-x11-2.0.so.0[0xb588499a]
+/usr/lib/libglib-2.0.so.0(g_main_context_dispatch+0x212)[0xb594f4c2]
+/usr/lib/libglib-2.0.so.0[0xb5952d98]
+/usr/lib/libglib-2.0.so.0(g_main_context_iteration+0x6e)[0xb5952ebe]
+/usr/lib/YaST2/plugin/libpy2gtk.so.2(_ZN4YGUI9waitInputEmb+0x9b)[0xb5a59251]
+/usr/lib/YaST2/plugin/libpy2gtk.so.2(_ZN8YGDialog20waitForEventInternalEi+0x2f)[0xb5a3bc31]
+/usr/lib/libyui.so.3(_ZN7YDialog12waitForEventEi+0x74)[0xb68ce304]
+/usr/lib/YaST2/plugin/libpy2gtk.so.2(_ZN4YGUI15runPkgSelectionEP7YWidget+0x72)[0xb5a5951c]
+/usr/lib/YaST2/plugin/libpy2UI.so.2(_ZN6YCP_UI15RunPkgSelectionERK8YCPValue+0x1bf)[0xb694733f]
+/usr/lib/YaST2/plugin/libpy2UI.so.2(_ZN12YUINamespace15RunPkgSelectionERK8YCPValue+0x3a)[0xb692acca]
+/usr/lib/YaST2/plugin/libpy2UI.so.2(_ZN11YUIFunction16evaluateCall_intEv+0x3548)[0xb693af08]
+/usr/lib/YaST2/plugin/libpy2UI.so.2(_ZN16YCPBuiltinCaller4callEv+0x35)[0xb694e585]
+/usr/lib/libyui.so.3(_ZN3YUI16uiThreadMainLoopEv+0x75)[0xb689b4a5]
+/usr/lib/libyui.so.3(_Z15start_ui_threadPv+0x1f)[0xb689b61f]
+/lib/libpthread.so.0[0xb74dc6e5]
+/lib/libpthread.so.0[0xb74dc600]
+=== 2010-03-31 02:41:21 +0100 ===
+YaST got signal 11 at YCP file PackagesUI.ycp:280
+Liberating suppressed debugging messages:
+End of suppressed debugging messages
+Backtrace: (use c++filt to demangle)
+/usr/lib/liby2.so.2(_Z20signal_log_backtracev+0x41)[0xb76def31]
+/usr/lib/liby2.so.2(_Z14signal_handleri+0x181)[0xb76df8e1]
+[0xffffe400]
+/lib/libc.so.6(strlen+0xb)[0xb727497b]
+/usr/lib/libglib-2.0.so.0(g_strdup+0x30)[0xb5a807a0]
+/usr/lib/libgobject-2.0.so.0[0xb5a132b0]
+/usr/lib/libgtk-x11-2.0.so.0[0xb565dc7d]
+/usr/lib/libgtk-x11-2.0.so.0(gtk_list_store_set_valist+0xd1)[0xb565e0b1]
+/usr/lib/libgtk-x11-2.0.so.0(gtk_list_store_set+0x1f)[0xb565e12f]
+/usr/lib/YaST2/plugin/libpy2gtk_pkg.so.2(_ZN7HandlerclERKN5boost10shared_ptrIN4zypp11HistoryItemEEE+0xd2)[0xb09fbeb4]
+/usr/lib/YaST2/plugin/libpy2gtk_pkg.so.2(_ZN5boost6detail8function21function_ref_invoker1I7HandlerbRKNS_10shared_ptrIN4zypp11HistoryItemEEEE6invokeERNS1_15function_bufferES9_+0x2c)[0xb09fc6a0]
+/usr/lib/libzypp.so.619(_ZNK5boost9function1IbRKNS_10shared_ptrIN4zypp11HistoryItemEEEEclES6_+0x39)[0xb6336149]
+/usr/lib/libzypp.so.619(_ZN4zypp6parser16HistoryLogReader4Impl9parseLineERKSsj+0x2a7)[0xb6334617]
+/usr/lib/libzypp.so.619(_ZN4zypp6parser16HistoryLogReader4Impl7readAllERKN5boost8functionIFbRKNS_12ProgressDataEEEE+0x220)[0xb6335b90]
+/usr/lib/libzypp.so.619(_ZN4zypp6parser16HistoryLogReader7readAllERKN5boost8functionIFbRKNS_12ProgressDataEEEE+0x25)[0xb6335ce5]
+/usr/lib/YaST2/plugin/libpy2gtk_pkg.so.2(_ZN20YGtkPkgHistoryDialogC1Ev+0x5a2)[0xb09fb90e]
+/usr/lib/YaST2/plugin/libpy2gtk_pkg.so.2[0xb0a0d1f4]
+/usr/lib/libgobject-2.0.so.0(g_cclosure_marshal_VOID__VOID+0x8c)[0xb59f9e7c]
+/usr/lib/libgobject-2.0.so.0(g_closure_invoke+0x1e2)[0xb59ec192]
+/usr/lib/libgobject-2.0.so.0[0xb5a01d16]
+/usr/lib/libgobject-2.0.so.0(g_signal_emit_valist+0x736)[0xb5a030e6]
+/usr/lib/libgobject-2.0.so.0(g_signal_emit+0x27)[0xb5a03567]
+/usr/lib/libgtk-x11-2.0.so.0(gtk_widget_activate+0x95)[0xb5789015]
+/usr/lib/libgtk-x11-2.0.so.0(gtk_menu_shell_activate_item+0x120)[0xb5674cc0]
+/usr/lib/libgtk-x11-2.0.so.0[0xb56766af]
+/usr/lib/libgtk-x11-2.0.so.0[0xb566c394]
+/usr/lib/libgtk-x11-2.0.so.0[0xb5665ba4]
+/usr/lib/libgobject-2.0.so.0[0xb59ea70e]
+/usr/lib/libgobject-2.0.so.0(g_closure_invoke+0x1e2)[0xb59ec192]
+/usr/lib/libgobject-2.0.so.0[0xb5a01aab]
+/usr/lib/libgobject-2.0.so.0(g_signal_emit_valist+0x5e0)[0xb5a02f90]
+/usr/lib/libgobject-2.0.so.0(g_signal_emit+0x27)[0xb5a03567]
+/usr/lib/libgtk-x11-2.0.so.0[0xb578244e]
+/usr/lib/libgtk-x11-2.0.so.0(gtk_propagate_event+0xd0)[0xb565e350]
+/usr/lib/libgtk-x11-2.0.so.0(gtk_main_do_event+0x219)[0xb565f5d9]
+/usr/lib/libgdk-x11-2.0.so.0[0xb599499a]
+/usr/lib/libglib-2.0.so.0(g_main_context_dispatch+0x212)[0xb5a5f4c2]
+/usr/lib/libglib-2.0.so.0[0xb5a62d98]
+/usr/lib/libglib-2.0.so.0(g_main_context_iteration+0x6e)[0xb5a62ebe]
+/usr/lib/YaST2/plugin/libpy2gtk.so.2(_ZN4YGUI9waitInputEmb+0x9b)[0xb5b69251]
+/usr/lib/YaST2/plugin/libpy2gtk.so.2(_ZN8YGDialog20waitForEventInternalEi+0x2f)[0xb5b4bc31]
+/usr/lib/libyui.so.3(_ZN7YDialog12waitForEventEi+0x74)[0xb69de304]
+/usr/lib/YaST2/plugin/libpy2gtk.so.2(_ZN4YGUI15runPkgSelectionEP7YWidget+0x72)[0xb5b6951c]
+/usr/lib/YaST2/plugin/libpy2UI.so.2(_ZN6YCP_UI15RunPkgSelectionERK8YCPValue+0x1bf)[0xb6a5733f]
+/usr/lib/YaST2/plugin/libpy2UI.so.2(_ZN12YUINamespace15RunPkgSelectionERK8YCPValue+0x3a)[0xb6a3acca]
+/usr/lib/YaST2/plugin/libpy2UI.so.2(_ZN11YUIFunction16evaluateCall_intEv+0x3548)[0xb6a4af08]
+/usr/lib/YaST2/plugin/libpy2UI.so.2(_ZN16YCPBuiltinCaller4callEv+0x35)[0xb6a5e585]
+/usr/lib/libyui.so.3(_ZN3YUI16uiThreadMainLoopEv+0x75)[0xb69ab4a5]
+/usr/lib/libyui.so.3(_Z15start_ui_threadPv+0x1f)[0xb69ab61f]
+/lib/libpthread.so.0[0xb75ec6e5]
+/lib/libpthread.so.0[0xb75ec600]
+=== 2010-04-01 00:16:34 +0100 ===
+YaST got signal 2 at YCP file PackagesUI.ycp:280
+Liberating suppressed debugging messages:
+End of suppressed debugging messages
+Backtrace: (use c++filt to demangle)
+/usr/lib/liby2.so.2(_Z20signal_log_backtracev+0x41)[0xb7733f31]
+/usr/lib/liby2.so.2(_Z14signal_handleri+0x181)[0xb77348e1]
+[0xffffe400]
+[0xffffe422]
+/lib/libpthread.so.0(read+0x4b)[0xb7648cfb]
+/usr/lib/libyui.so.3(_ZN3YUI15waitForUIThreadEv+0x37)[0xb6a00667]
+/usr/lib/YaST2/plugin/libpy2UI.so.2(_ZN11YUIFunction12evaluateCallEv+0xba)[0xb6aa4fca]
+/usr/lib/libycp.so.3(_ZN10YEFunction8evaluateEb+0x392)[0xb77b9242]
+/usr/lib/libycp.so.3(_ZN11YEPropagate8evaluateEb+0x67)[0xb77a97c7]
+/usr/lib/libycp.so.3(_ZN8YSAssign8evaluateEb+0x48)[0xb77c5d98]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb77e8994]
+/usr/lib/libycp.so.3(_ZN13Y2YCPFunction12evaluateCallEv+0x33d)[0xb77b452d]
+/usr/lib/libycp.so.3(_ZN10YEFunction8evaluateEb+0x392)[0xb77b9242]
+/usr/lib/libycp.so.3(_ZN8YSAssign8evaluateEb+0x48)[0xb77c5d98]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb77e8994]
+/usr/lib/libycp.so.3(_ZN7YSBlock8evaluateEb+0x24)[0xb77c57b4]
+/usr/lib/libycp.so.3(_ZN4YSIf8evaluateEb+0x28e)[0xb77d445e]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb77e8994]
+/usr/lib/libycp.so.3(_ZN7YSBlock8evaluateEb+0x24)[0xb77c57b4]
+/usr/lib/libycp.so.3(_ZN4YSIf8evaluateEb+0x28e)[0xb77d445e]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb77e8994]
+/usr/lib/libycp.so.3(_ZN4YSDo8evaluateEb+0xbd)[0xb77d6b0d]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb77e8994]
+/usr/lib/libycp.so.3(_ZN13Y2YCPFunction12evaluateCallEv+0x33d)[0xb77b452d]
+/usr/lib/libycp.so.3(_ZN10YEFunction8evaluateEb+0x392)[0xb77b9242]
+/usr/lib/libycp.so.3(_ZN8YSReturn8evaluateEb+0x58)[0xb77c7c28]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb77e8994]
+/usr/lib/libycp.so.3(_ZN7YSBlock8evaluateEb+0x24)[0xb77c57b4]
+/usr/lib/libycp.so.3(_ZN4YSIf8evaluateEb+0x28e)[0xb77d445e]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb77e8994]
+/usr/lib/libycp.so.3(_ZNK10YCPCodeRep8evaluateEb+0x10d)[0xb779b3dd]
+/usr/lib/YaST2/plugin/libpy2wfm.so.2(_ZN14Y2WFMComponent12doActualWorkERK7YCPListP11Y2Component+0x80c)[0xb78c109c]
+/usr/lib/liby2.so.2(main+0xff2)[0xb7736332]
+/lib/libc.so.6(__libc_start_main+0xfe)[0xb726aace]
+/usr/lib/YaST2/bin/y2base[0x8048551]
+=== 2010-04-01 03:42:05 +0100 ===
+YaST got signal 2 at YCP file PackagesUI.ycp:280
+Liberating suppressed debugging messages:
+End of suppressed debugging messages
+Backtrace: (use c++filt to demangle)
+/usr/lib/liby2.so.2(_Z20signal_log_backtracev+0x41)[0xb7550f31]
+/usr/lib/liby2.so.2(_Z14signal_handleri+0x181)[0xb75518e1]
+[0xffffe400]
+[0xffffe422]
+/lib/libpthread.so.0(read+0x4b)[0xb7465cfb]
+/usr/lib/libyui.so.3(_ZN3YUI15waitForUIThreadEv+0x37)[0xb681d667]
+/usr/lib/YaST2/plugin/libpy2UI.so.2(_ZN11YUIFunction12evaluateCallEv+0xba)[0xb68c1fca]
+/usr/lib/libycp.so.3(_ZN10YEFunction8evaluateEb+0x392)[0xb75d6242]
+/usr/lib/libycp.so.3(_ZN11YEPropagate8evaluateEb+0x67)[0xb75c67c7]
+/usr/lib/libycp.so.3(_ZN8YSAssign8evaluateEb+0x48)[0xb75e2d98]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb7605994]
+/usr/lib/libycp.so.3(_ZN13Y2YCPFunction12evaluateCallEv+0x33d)[0xb75d152d]
+/usr/lib/libycp.so.3(_ZN10YEFunction8evaluateEb+0x392)[0xb75d6242]
+/usr/lib/libycp.so.3(_ZN8YSAssign8evaluateEb+0x48)[0xb75e2d98]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb7605994]
+/usr/lib/libycp.so.3(_ZN7YSBlock8evaluateEb+0x24)[0xb75e27b4]
+/usr/lib/libycp.so.3(_ZN4YSIf8evaluateEb+0x28e)[0xb75f145e]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb7605994]
+/usr/lib/libycp.so.3(_ZN7YSBlock8evaluateEb+0x24)[0xb75e27b4]
+/usr/lib/libycp.so.3(_ZN4YSIf8evaluateEb+0x28e)[0xb75f145e]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb7605994]
+/usr/lib/libycp.so.3(_ZN4YSDo8evaluateEb+0xbd)[0xb75f3b0d]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb7605994]
+/usr/lib/libycp.so.3(_ZN13Y2YCPFunction12evaluateCallEv+0x33d)[0xb75d152d]
+/usr/lib/libycp.so.3(_ZN10YEFunction8evaluateEb+0x392)[0xb75d6242]
+/usr/lib/libycp.so.3(_ZN8YSReturn8evaluateEb+0x58)[0xb75e4c28]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb7605994]
+/usr/lib/libycp.so.3(_ZN7YSBlock8evaluateEb+0x24)[0xb75e27b4]
+/usr/lib/libycp.so.3(_ZN4YSIf8evaluateEb+0x28e)[0xb75f145e]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb7605994]
+/usr/lib/libycp.so.3(_ZNK10YCPCodeRep8evaluateEb+0x10d)[0xb75b83dd]
+/usr/lib/YaST2/plugin/libpy2wfm.so.2(_ZN14Y2WFMComponent12doActualWorkERK7YCPListP11Y2Component+0x80c)[0xb76de09c]
+/usr/lib/liby2.so.2(main+0xff2)[0xb7553332]
+/lib/libc.so.6(__libc_start_main+0xfe)[0xb7087ace]
+/usr/lib/YaST2/bin/y2base[0x8048551]
+=== 2010-04-01 03:44:21 +0100 ===
+YaST got signal 2 at YCP file PackagesUI.ycp:280
+Liberating suppressed debugging messages:
+End of suppressed debugging messages
+Backtrace: (use c++filt to demangle)
+/usr/lib/liby2.so.2(_Z20signal_log_backtracev+0x41)[0xb75dcf31]
+/usr/lib/liby2.so.2(_Z14signal_handleri+0x181)[0xb75dd8e1]
+[0xffffe400]
+[0xffffe422]
+/lib/libpthread.so.0(read+0x4b)[0xb74f1cfb]
+/usr/lib/libyui.so.3(_ZN3YUI15waitForUIThreadEv+0x37)[0xb68a9667]
+/usr/lib/YaST2/plugin/libpy2UI.so.2(_ZN11YUIFunction12evaluateCallEv+0xba)[0xb694dfca]
+/usr/lib/libycp.so.3(_ZN10YEFunction8evaluateEb+0x392)[0xb7662242]
+/usr/lib/libycp.so.3(_ZN11YEPropagate8evaluateEb+0x67)[0xb76527c7]
+/usr/lib/libycp.so.3(_ZN8YSAssign8evaluateEb+0x48)[0xb766ed98]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb7691994]
+/usr/lib/libycp.so.3(_ZN13Y2YCPFunction12evaluateCallEv+0x33d)[0xb765d52d]
+/usr/lib/libycp.so.3(_ZN10YEFunction8evaluateEb+0x392)[0xb7662242]
+/usr/lib/libycp.so.3(_ZN8YSAssign8evaluateEb+0x48)[0xb766ed98]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb7691994]
+/usr/lib/libycp.so.3(_ZN7YSBlock8evaluateEb+0x24)[0xb766e7b4]
+/usr/lib/libycp.so.3(_ZN4YSIf8evaluateEb+0x28e)[0xb767d45e]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb7691994]
+/usr/lib/libycp.so.3(_ZN7YSBlock8evaluateEb+0x24)[0xb766e7b4]
+/usr/lib/libycp.so.3(_ZN4YSIf8evaluateEb+0x28e)[0xb767d45e]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb7691994]
+/usr/lib/libycp.so.3(_ZN4YSDo8evaluateEb+0xbd)[0xb767fb0d]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb7691994]
+/usr/lib/libycp.so.3(_ZN13Y2YCPFunction12evaluateCallEv+0x33d)[0xb765d52d]
+/usr/lib/libycp.so.3(_ZN10YEFunction8evaluateEb+0x392)[0xb7662242]
+/usr/lib/libycp.so.3(_ZN8YSReturn8evaluateEb+0x58)[0xb7670c28]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb7691994]
+/usr/lib/libycp.so.3(_ZN7YSBlock8evaluateEb+0x24)[0xb766e7b4]
+/usr/lib/libycp.so.3(_ZN4YSIf8evaluateEb+0x28e)[0xb767d45e]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb7691994]
+/usr/lib/libycp.so.3(_ZNK10YCPCodeRep8evaluateEb+0x10d)[0xb76443dd]
+/usr/lib/YaST2/plugin/libpy2wfm.so.2(_ZN14Y2WFMComponent12doActualWorkERK7YCPListP11Y2Component+0x80c)[0xb776a09c]
+/usr/lib/liby2.so.2(main+0xff2)[0xb75df332]
+/lib/libc.so.6(__libc_start_main+0xfe)[0xb7113ace]
+/usr/lib/YaST2/bin/y2base[0x8048551]
+=== 2010-04-01 03:46:46 +0100 ===
+YaST got signal 2 at YCP file PackagesUI.ycp:280
+Liberating suppressed debugging messages:
+End of suppressed debugging messages
+Backtrace: (use c++filt to demangle)
+/usr/lib/liby2.so.2(_Z20signal_log_backtracev+0x41)[0xb761df31]
+/usr/lib/liby2.so.2(_Z14signal_handleri+0x181)[0xb761e8e1]
+[0xffffe400]
+[0xffffe422]
+/lib/libpthread.so.0(read+0x4b)[0xb7532cfb]
+/usr/lib/libyui.so.3(_ZN3YUI15waitForUIThreadEv+0x37)[0xb68ea667]
+/usr/lib/YaST2/plugin/libpy2UI.so.2(_ZN11YUIFunction12evaluateCallEv+0xba)[0xb698efca]
+/usr/lib/libycp.so.3(_ZN10YEFunction8evaluateEb+0x392)[0xb76a3242]
+/usr/lib/libycp.so.3(_ZN11YEPropagate8evaluateEb+0x67)[0xb76937c7]
+/usr/lib/libycp.so.3(_ZN8YSAssign8evaluateEb+0x48)[0xb76afd98]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb76d2994]
+/usr/lib/libycp.so.3(_ZN13Y2YCPFunction12evaluateCallEv+0x33d)[0xb769e52d]
+/usr/lib/libycp.so.3(_ZN10YEFunction8evaluateEb+0x392)[0xb76a3242]
+/usr/lib/libycp.so.3(_ZN8YSAssign8evaluateEb+0x48)[0xb76afd98]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb76d2994]
+/usr/lib/libycp.so.3(_ZN7YSBlock8evaluateEb+0x24)[0xb76af7b4]
+/usr/lib/libycp.so.3(_ZN4YSIf8evaluateEb+0x28e)[0xb76be45e]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb76d2994]
+/usr/lib/libycp.so.3(_ZN7YSBlock8evaluateEb+0x24)[0xb76af7b4]
+/usr/lib/libycp.so.3(_ZN4YSIf8evaluateEb+0x28e)[0xb76be45e]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb76d2994]
+/usr/lib/libycp.so.3(_ZN4YSDo8evaluateEb+0xbd)[0xb76c0b0d]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb76d2994]
+/usr/lib/libycp.so.3(_ZN13Y2YCPFunction12evaluateCallEv+0x33d)[0xb769e52d]
+/usr/lib/libycp.so.3(_ZN10YEFunction8evaluateEb+0x392)[0xb76a3242]
+/usr/lib/libycp.so.3(_ZN8YSReturn8evaluateEb+0x58)[0xb76b1c28]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb76d2994]
+/usr/lib/libycp.so.3(_ZN7YSBlock8evaluateEb+0x24)[0xb76af7b4]
+/usr/lib/libycp.so.3(_ZN4YSIf8evaluateEb+0x28e)[0xb76be45e]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb76d2994]
+/usr/lib/libycp.so.3(_ZNK10YCPCodeRep8evaluateEb+0x10d)[0xb76853dd]
+/usr/lib/YaST2/plugin/libpy2wfm.so.2(_ZN14Y2WFMComponent12doActualWorkERK7YCPListP11Y2Component+0x80c)[0xb77ab09c]
+/usr/lib/liby2.so.2(main+0xff2)[0xb7620332]
+/lib/libc.so.6(__libc_start_main+0xfe)[0xb7154ace]
+/usr/lib/YaST2/bin/y2base[0x8048551]
+=== 2010-04-01 04:09:26 +0100 ===
+YaST got signal 2 at YCP file PackagesUI.ycp:280
+Liberating suppressed debugging messages:
+End of suppressed debugging messages
+Backtrace: (use c++filt to demangle)
+/usr/lib/liby2.so.2(_Z20signal_log_backtracev+0x41)[0xb765cf31]
+/usr/lib/liby2.so.2(_Z14signal_handleri+0x181)[0xb765d8e1]
+[0xffffe400]
+[0xffffe422]
+/lib/libpthread.so.0(read+0x4b)[0xb7571cfb]
+/usr/lib/libyui.so.3(_ZN3YUI15waitForUIThreadEv+0x37)[0xb6929667]
+/usr/lib/YaST2/plugin/libpy2UI.so.2(_ZN11YUIFunction12evaluateCallEv+0xba)[0xb69cdfca]
+/usr/lib/libycp.so.3(_ZN10YEFunction8evaluateEb+0x392)[0xb76e2242]
+/usr/lib/libycp.so.3(_ZN11YEPropagate8evaluateEb+0x67)[0xb76d27c7]
+/usr/lib/libycp.so.3(_ZN8YSAssign8evaluateEb+0x48)[0xb76eed98]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb7711994]
+/usr/lib/libycp.so.3(_ZN13Y2YCPFunction12evaluateCallEv+0x33d)[0xb76dd52d]
+/usr/lib/libycp.so.3(_ZN10YEFunction8evaluateEb+0x392)[0xb76e2242]
+/usr/lib/libycp.so.3(_ZN8YSAssign8evaluateEb+0x48)[0xb76eed98]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb7711994]
+/usr/lib/libycp.so.3(_ZN7YSBlock8evaluateEb+0x24)[0xb76ee7b4]
+/usr/lib/libycp.so.3(_ZN4YSIf8evaluateEb+0x28e)[0xb76fd45e]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb7711994]
+/usr/lib/libycp.so.3(_ZN7YSBlock8evaluateEb+0x24)[0xb76ee7b4]
+/usr/lib/libycp.so.3(_ZN4YSIf8evaluateEb+0x28e)[0xb76fd45e]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb7711994]
+/usr/lib/libycp.so.3(_ZN4YSDo8evaluateEb+0xbd)[0xb76ffb0d]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb7711994]
+/usr/lib/libycp.so.3(_ZN13Y2YCPFunction12evaluateCallEv+0x33d)[0xb76dd52d]
+/usr/lib/libycp.so.3(_ZN10YEFunction8evaluateEb+0x392)[0xb76e2242]
+/usr/lib/libycp.so.3(_ZN8YSReturn8evaluateEb+0x58)[0xb76f0c28]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb7711994]
+/usr/lib/libycp.so.3(_ZN7YSBlock8evaluateEb+0x24)[0xb76ee7b4]
+/usr/lib/libycp.so.3(_ZN4YSIf8evaluateEb+0x28e)[0xb76fd45e]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb7711994]
+/usr/lib/libycp.so.3(_ZNK10YCPCodeRep8evaluateEb+0x10d)[0xb76c43dd]
+/usr/lib/YaST2/plugin/libpy2wfm.so.2(_ZN14Y2WFMComponent12doActualWorkERK7YCPListP11Y2Component+0x80c)[0xb77ea09c]
+/usr/lib/liby2.so.2(main+0xff2)[0xb765f332]
+/lib/libc.so.6(__libc_start_main+0xfe)[0xb7193ace]
+/usr/lib/YaST2/bin/y2base[0x8048551]
+=== 2010-04-01 04:10:53 +0100 ===
+YaST got signal 2 at YCP file PackagesUI.ycp:280
+Liberating suppressed debugging messages:
+End of suppressed debugging messages
+Backtrace: (use c++filt to demangle)
+/usr/lib/liby2.so.2(_Z20signal_log_backtracev+0x41)[0xb7689f31]
+/usr/lib/liby2.so.2(_Z14signal_handleri+0x181)[0xb768a8e1]
+[0xffffe400]
+[0xffffe422]
+/lib/libpthread.so.0(read+0x4b)[0xb759ecfb]
+/usr/lib/libyui.so.3(_ZN3YUI15waitForUIThreadEv+0x37)[0xb6956667]
+/usr/lib/YaST2/plugin/libpy2UI.so.2(_ZN11YUIFunction12evaluateCallEv+0xba)[0xb69fafca]
+/usr/lib/libycp.so.3(_ZN10YEFunction8evaluateEb+0x392)[0xb770f242]
+/usr/lib/libycp.so.3(_ZN11YEPropagate8evaluateEb+0x67)[0xb76ff7c7]
+/usr/lib/libycp.so.3(_ZN8YSAssign8evaluateEb+0x48)[0xb771bd98]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb773e994]
+/usr/lib/libycp.so.3(_ZN13Y2YCPFunction12evaluateCallEv+0x33d)[0xb770a52d]
+/usr/lib/libycp.so.3(_ZN10YEFunction8evaluateEb+0x392)[0xb770f242]
+/usr/lib/libycp.so.3(_ZN8YSAssign8evaluateEb+0x48)[0xb771bd98]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb773e994]
+/usr/lib/libycp.so.3(_ZN7YSBlock8evaluateEb+0x24)[0xb771b7b4]
+/usr/lib/libycp.so.3(_ZN4YSIf8evaluateEb+0x28e)[0xb772a45e]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb773e994]
+/usr/lib/libycp.so.3(_ZN7YSBlock8evaluateEb+0x24)[0xb771b7b4]
+/usr/lib/libycp.so.3(_ZN4YSIf8evaluateEb+0x28e)[0xb772a45e]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb773e994]
+/usr/lib/libycp.so.3(_ZN4YSDo8evaluateEb+0xbd)[0xb772cb0d]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb773e994]
+/usr/lib/libycp.so.3(_ZN13Y2YCPFunction12evaluateCallEv+0x33d)[0xb770a52d]
+/usr/lib/libycp.so.3(_ZN10YEFunction8evaluateEb+0x392)[0xb770f242]
+/usr/lib/libycp.so.3(_ZN8YSReturn8evaluateEb+0x58)[0xb771dc28]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb773e994]
+/usr/lib/libycp.so.3(_ZN7YSBlock8evaluateEb+0x24)[0xb771b7b4]
+/usr/lib/libycp.so.3(_ZN4YSIf8evaluateEb+0x28e)[0xb772a45e]
+/usr/lib/libycp.so.3(_ZN6YBlock8evaluateEb+0x1b4)[0xb773e994]
+/usr/lib/libycp.so.3(_ZNK10YCPCodeRep8evaluateEb+0x10d)[0xb76f13dd]
+/usr/lib/YaST2/plugin/libpy2wfm.so.2(_ZN14Y2WFMComponent12doActualWorkERK7YCPListP11Y2Component+0x80c)[0xb781709c]
+/usr/lib/liby2.so.2(main+0xff2)[0xb768c332]
+/lib/libc.so.6(__libc_start_main+0xfe)[0xb71c0ace]
+/usr/lib/YaST2/bin/y2base[0x8048551]
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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 kdevplatform for openSUSE:Factory
checked in at Thu Apr 1 17:45:49 CEST 2010.
--------
--- KDE/kdevplatform/kdevplatform.changes 2010-02-12 22:14:24.000000000 +0100
+++ /mounts/work_src_done/STABLE/kdevplatform/kdevplatform.changes 2010-03-09 10:44:05.000000000 +0100
@@ -1,0 +2,5 @@
+Tue Mar 9 09:43:48 UTC 2010 - wstephenson(a)suse.de
+
+- update to 0.9.99
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
kdevplatform-0.9.98.tar.bz2
plugins-fix.diff
New:
----
kdevplatform-0.9.99.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kdevplatform.spec ++++++
--- /var/tmp/diff_new_pack.3kSiE7/_old 2010-04-01 17:45:43.000000000 +0200
+++ /var/tmp/diff_new_pack.3kSiE7/_new 2010-04-01 17:45:43.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package kdevplatform (Version 0.9.98)
+# spec file for package kdevplatform (Version 0.9.99)
#
# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -24,10 +24,9 @@
Group: Development/Tools/IDE
Summary: Base Package for Integrated Development Environments
Url: http://www.kdevelop.org
-Version: 0.9.98
+Version: 0.9.99
Release: 1
Source0: kdevplatform-%version.tar.bz2
-Patch1: plugins-fix.diff
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%kde4_runtime_requires
Requires: libkdevplatform0 = %{version}
@@ -48,14 +47,13 @@
Jonas Nordin <jonas.nordin(a)syncom.se>
Pascal Krahmer <pascal(a)beast.de>
Bernd Gehrmann <bernd(a)physik.hu-berlin.de>
- J�rgen Olsson <jorgen(a)cenacle.net>
+ J�rgen Olsson <jorgen(a)cenacle.net>
Stefan Bartel <bartel(a)rz.uni-potsdam.de>
Walter Tasin <tasin(a)e-technik.fh-muenchen.de>
John Birch <jbb(a)ihug.co.nz>
%prep
%setup -q
-%patch1 -p0
%build
%cmake_kde4 -d build
@@ -93,7 +91,7 @@
Jonas Nordin <jonas.nordin(a)syncom.se>
Pascal Krahmer <pascal(a)beast.de>
Bernd Gehrmann <bernd(a)physik.hu-berlin.de>
- J�rgen Olsson <jorgen(a)cenacle.net>
+ J�rgen Olsson <jorgen(a)cenacle.net>
Stefan Bartel <bartel(a)rz.uni-potsdam.de>
Walter Tasin <tasin(a)e-technik.fh-muenchen.de>
John Birch <jbb(a)ihug.co.nz>
@@ -133,7 +131,7 @@
Jonas Nordin <jonas.nordin(a)syncom.se>
Pascal Krahmer <pascal(a)beast.de>
Bernd Gehrmann <bernd(a)physik.hu-berlin.de>
- J�rgen Olsson <jorgen(a)cenacle.net>
+ J�rgen Olsson <jorgen(a)cenacle.net>
Stefan Bartel <bartel(a)rz.uni-potsdam.de>
Walter Tasin <tasin(a)e-technik.fh-muenchen.de>
John Birch <jbb(a)ihug.co.nz>
++++++ kdevplatform-0.9.98.tar.bz2 -> kdevplatform-0.9.99.tar.bz2 ++++++
++++ 17001 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