Hello community,
here is the log from the commit of package yast2-ncurses for openSUSE:Factory checked in at 2012-02-15 16:18:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-ncurses (Old)
and /work/SRC/openSUSE:Factory/.yast2-ncurses.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-ncurses", Maintainer is "gs@suse.com"
Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-ncurses/yast2-ncurses.changes 2012-01-19 09:45:09.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.yast2-ncurses.new/yast2-ncurses.changes 2012-02-15 16:19:36.000000000 +0100
@@ -1,0 +2,7 @@
+Mon Feb 13 13:09:45 CET 2012 - gs@suse.de
+
+- NCRichText: interpret html tags inside <pre> </pre>
+ (bnc #724119, bnc #737752)
+- V 2.22.1
+
+-------------------------------------------------------------------
Old:
----
yast2-ncurses-2.22.0.tar.bz2
New:
----
yast2-ncurses-2.22.1.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-ncurses.spec ++++++
--- /var/tmp/diff_new_pack.5Ha20n/_old 2012-02-15 16:19:37.000000000 +0100
+++ /var/tmp/diff_new_pack.5Ha20n/_new 2012-02-15 16:19:37.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package yast2-ncurses
#
-# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2012 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
@@ -18,17 +18,16 @@
Name: yast2-ncurses
-Version: 2.22.0
+Version: 2.22.1
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Source0: yast2-ncurses-%{version}.tar.bz2
-
Group: System/YaST
License: GPL-2.0
-BuildRequires: doxygen dejagnu gcc-c++ yast2-devtools libtool
-BuildRequires: libxcrypt-devel blocxx-devel ncurses-devel
+BuildRequires: dejagnu doxygen gcc-c++ libtool yast2-devtools
+BuildRequires: blocxx-devel libxcrypt-devel ncurses-devel
Summary: YaST2 - Character Based User Interface
Provides: yast2_ui
@@ -36,6 +35,7 @@
BuildRequires: yast2-libyui-devel >= 2.21.1
Requires: yast2-libyui >= 2.21.1
Recommends: yast2-ncurses-pkg
+
%description
This package contains the character based (ncurses) user interface
component for YaST2.
++++++ yast2-ncurses-2.22.0.tar.bz2 -> yast2-ncurses-2.22.1.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-ncurses-2.22.0/VERSION new/yast2-ncurses-2.22.1/VERSION
--- old/yast2-ncurses-2.22.0/VERSION 2011-12-21 12:24:37.000000000 +0100
+++ new/yast2-ncurses-2.22.1/VERSION 2012-02-09 12:40:41.000000000 +0100
@@ -1 +1 @@
-2.22.0
+2.22.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-ncurses-2.22.0/configure new/yast2-ncurses-2.22.1/configure
--- old/yast2-ncurses-2.22.0/configure 2012-01-17 12:16:08.000000000 +0100
+++ new/yast2-ncurses-2.22.1/configure 2012-02-13 13:16:02.000000000 +0100
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for yast2-ncurses 2.22.0.
+# Generated by GNU Autoconf 2.68 for yast2-ncurses 2.22.1.
#
# Report bugs to http://bugs.opensuse.org/.
#
@@ -709,8 +709,8 @@
# Identity of this package.
PACKAGE_NAME='yast2-ncurses'
PACKAGE_TARNAME='yast2-ncurses'
-PACKAGE_VERSION='2.22.0'
-PACKAGE_STRING='yast2-ncurses 2.22.0'
+PACKAGE_VERSION='2.22.1'
+PACKAGE_STRING='yast2-ncurses 2.22.1'
PACKAGE_BUGREPORT='http://bugs.opensuse.org/'
PACKAGE_URL=''
@@ -1488,7 +1488,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 yast2-ncurses 2.22.0 to adapt to many kinds of systems.
+\`configure' configures yast2-ncurses 2.22.1 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1559,7 +1559,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of yast2-ncurses 2.22.0:";;
+ short | recursive ) echo "Configuration of yast2-ncurses 2.22.1:";;
esac
cat <<\_ACEOF
@@ -1673,7 +1673,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-yast2-ncurses configure 2.22.0
+yast2-ncurses configure 2.22.1
generated by GNU Autoconf 2.68
Copyright (C) 2010 Free Software Foundation, Inc.
@@ -2308,7 +2308,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by yast2-ncurses $as_me 2.22.0, which was
+It was created by yast2-ncurses $as_me 2.22.1, which was
generated by GNU Autoconf 2.68. Invocation command line was
$ $0 $@
@@ -3238,7 +3238,7 @@
# Define the identity of the package.
PACKAGE='yast2-ncurses'
- VERSION='2.22.0'
+ VERSION='2.22.1'
cat >>confdefs.h <<_ACEOF
@@ -3360,7 +3360,7 @@
-VERSION="2.22.0"
+VERSION="2.22.1"
RPMNAME="yast2-ncurses"
MAINTAINER="Gabriele Mohr "
@@ -16101,7 +16101,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by yast2-ncurses $as_me 2.22.0, which was
+This file was extended by yast2-ncurses $as_me 2.22.1, which was
generated by GNU Autoconf 2.68. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -16167,7 +16167,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-yast2-ncurses config.status 2.22.0
+yast2-ncurses config.status 2.22.1
configured by $0, generated by GNU Autoconf 2.68,
with options \\"\$ac_cs_config\\"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-ncurses-2.22.0/configure.in new/yast2-ncurses-2.22.1/configure.in
--- old/yast2-ncurses-2.22.0/configure.in 2012-01-17 12:15:59.000000000 +0100
+++ new/yast2-ncurses-2.22.1/configure.in 2012-02-13 13:15:53.000000000 +0100
@@ -3,7 +3,7 @@
dnl -- This file is generated by y2autoconf 2.21.2 - DO NOT EDIT! --
dnl (edit configure.in.in instead)
-AC_INIT(yast2-ncurses, 2.22.0, http://bugs.opensuse.org/, yast2-ncurses)
+AC_INIT(yast2-ncurses, 2.22.1, http://bugs.opensuse.org/, yast2-ncurses)
dnl Check for presence of file 'RPMNAME'
AC_CONFIG_SRCDIR([RPMNAME])
@@ -18,7 +18,7 @@
AM_INIT_AUTOMAKE(tar-ustar -Wno-portability)
dnl Important YaST2 variables
-VERSION="2.22.0"
+VERSION="2.22.1"
RPMNAME="yast2-ncurses"
MAINTAINER="Gabriele Mohr "
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-ncurses-2.22.0/src/NCAskForFile.cc new/yast2-ncurses-2.22.1/src/NCAskForFile.cc
--- old/yast2-ncurses-2.22.0/src/NCAskForFile.cc 2011-12-21 13:18:49.000000000 +0100
+++ new/yast2-ncurses-2.22.1/src/NCAskForFile.cc 2012-02-09 14:09:13.000000000 +0100
@@ -238,6 +238,10 @@
dirName->addItem( dirList->getCurrentDir(),
true ); // selected
+ if ( iniFileName == "" )
+ // show the currently selected file
+ fileName->setValue( fileList->getCurrentFile() );
+
// event loop
do
{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-ncurses-2.22.0/src/NCFileSelection.cc new/yast2-ncurses-2.22.1/src/NCFileSelection.cc
--- old/yast2-ncurses-2.22.0/src/NCFileSelection.cc 2011-12-21 13:20:13.000000000 +0100
+++ new/yast2-ncurses-2.22.1/src/NCFileSelection.cc 2012-02-09 14:30:33.000000000 +0100
@@ -409,6 +409,7 @@
const string & filter,
const string & iniDir )
: NCFileSelection( parent, tableHeader, type, iniDir )
+ , currentFile("")
{
//fillHeader();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-ncurses-2.22.0/src/NCRichText.cc new/yast2-ncurses-2.22.1/src/NCRichText.cc
--- old/yast2-ncurses-2.22.0/src/NCRichText.cc 2011-12-21 13:22:55.000000000 +0100
+++ new/yast2-ncurses-2.22.1/src/NCRichText.cc 2012-02-13 11:10:38.000000000 +0100
@@ -45,6 +45,7 @@
#include "stringutil.h"
#include "stdutil.h"
#include <sstream>
+#include
#include "YMenuItem.h"
#include "YApplication.h"
@@ -344,36 +345,23 @@
}
}
-
-void NCRichText::PadPlainTXT( const wchar_t * osch, const unsigned olen )
+void NCRichText::PadPreTXT( const wchar_t * osch, const unsigned olen )
{
wstring wtxt( osch, olen );
+
// resolve the entities even in PRE (#71718)
wtxt = filterEntities( wtxt );
-
+
NCstring nctxt( wtxt );
NCtext ftext( nctxt );
- if ( ftext.Columns() > textwidth )
- textwidth = ftext.Columns();
-
- AdjustPad( wsze( cl + ftext.Lines(), textwidth ) );
-
// insert the text
const wchar_t * sch = wtxt.data();
while ( *sch )
{
- if ( *sch != L'\r' ) // skip carriage return
- {
- myPad()->addwstr( sch, 1 ); // add one wide chararacter
- cc += wcwidth( *sch );
+ myPad()->addwstr( sch, 1 ); // add one wide chararacter
- if ( *sch == L'\n' )
- {
- PadNL(); // add a new line
- }
- }
++sch;
}
}
@@ -420,21 +408,87 @@
while ( *wch && WDtoken.find( *wch ) == wstring::npos );
}
+static wstring PREtoken( L"<\n\v\r" ); // line manipulations + TokenStart '<'
+
inline void SkipPreTXT( const wchar_t *& wch )
{
+ do
+ {
+ ++wch;
+ }
+ while ( *wch && PREtoken.find( *wch ) == wstring::npos );
+}
+
+
+//
+// Calculate longest line of text in <pre> </pre> tags
+// and adjust the pad accordingly
+//
+void NCRichText::AdjustPrePad( const wchar_t *osch )
+{
+ const wchar_t * wch = osch;
wstring wstr( wch, 6 );
+ size_t llen = 0; // longest line
+ size_t tmp_len = 0; // width of current line
+
+ list<NCstring>::const_iterator line; // iterator for list <NCstring> mtext
+ std::wstring::const_iterator wstr_it; // iterator for wstring
+
do
{
- ++wch;
+ ++wch;
wstr.assign( wch, 6 );
}
while ( *wch && wstr != L"</pre>" );
-}
+ wstring wtxt( osch, wch - osch );
+
+ // resolve the entities to get correct length for calculation of longest line
+ wtxt = filterEntities( wtxt );
+
+ // replace <br> by \n to get appropriate lines in NCtext
+ boost::replace_all( wtxt, L"<br>", L"\n" );
+
+ yuiDebug() << "Text: " << wtxt << " initial length: " << wch - osch << endl;
+
+ NCstring nctxt( wtxt );
+ NCtext ftext( nctxt );
+
+ // iterate through NCtext
+ for ( line = ftext.Text().begin(); line != ftext.Text().end(); ++line )
+ {
+ tmp_len = 0;
+ for ( wstr_it = ( *line ).str().begin(); wstr_it != ( *line ).str().end() ; ++wstr_it )
+ {
+ // skip html tags
+ if ( *wstr_it == '<' )
+ {
+ wstr_it = find(wstr_it, (*line).str().end(), L'>');
+ }
+ else if ( *wstr_it == '\t' )
+ {
+ tmp_len += myPad()->tabsize();
+ }
+ else
+ {
+ tmp_len += wcwidth( *wstr_it );
+ }
+ }
+ if ( tmp_len > llen )
+ llen = tmp_len;
+ }
+
+ if ( llen > textwidth )
+ {
+ textwidth = llen;
+ AdjustPad( wsze( cl + ftext.Lines(), llen ) ); // adjust pad to longest line
+ }
+
+}
void NCRichText::DrawHTMLPad()
{
@@ -470,12 +524,19 @@
}
else
{
- if ( *wch != L'\r' ) // skip carriage return
+ switch ( *wch )
{
- myPad()->addwstr( wch, 1 ); // add the wide chararacter
- cc += wcwidth( *wch );
- if ( *wch == '\n' )
- PadNL();
+ case L' ': // add white space
+ case L'\t':
+ myPad()->addwstr( wch, 1 );
+ break;
+
+ case L'\n':
+ PadNL(); // add new line
+ break;
+
+ default:
+ yuiDebug() << "Ignoring " << *wch << endl;
}
++wch;
}
@@ -483,16 +544,14 @@
break;
case L'<':
- if ( !preTag )
- {
- swch = wch;
- SkipToken( wch );
+ swch = wch;
+ SkipToken( wch );
+
+ if ( PadTOKEN( swch, wch ) )
+ break; // strip token
+ else
+ wch = swch; // reset and fall through
- if ( PadTOKEN( swch, wch ) )
- break; // strip token
- else
- wch = swch; // reset and fall through
- }
default:
swch = wch;
@@ -504,9 +563,7 @@
else
{
SkipPreTXT( wch );
- PadPlainTXT( swch, wch - swch );
- preTag = false;
- PadNL(); // add new line after pre is closed
+ PadPreTXT( swch, wch - swch );
}
break;
@@ -515,6 +572,7 @@
PadBOL();
AdjustPad( wsze( cl, textwidth ) );
+
yuiDebug() << "Anchors: " << anchors.size() << endl;
for ( unsigned i = 0; i < anchors.size(); ++i )
@@ -597,7 +655,8 @@
/**
* Get the number of columns needed to print a 'wstring'. Only printable characters
- * are taken into account because others would return -1 (e.g. '\n').
+ * are taken into account because otherwise 'wcwidth' would return -1 (e.g. for '\n').
+ * Tabs are calculated with tabsize().
* Attention: only use textWidth() to calculate space, not for iterating through a text
* or to get the length of a text (real text length includes new lines).
*/
@@ -610,7 +669,13 @@
{
// check whether char is printable
if ( iswprint( *wstr_it ) )
- len += wcwidth( *wstr_it );
+ {
+ len += wcwidth( *wstr_it );
+ }
+ else if ( *wstr_it == '\t' )
+ {
+ len += myPad()->tabsize();
+ }
}
return len;
@@ -981,11 +1046,13 @@
if ( !endtag )
{
- preTag = true; // display plain text
+ preTag = true; // display text preserving newlines and spaces
+ AdjustPrePad( ech );
}
else
{
preTag = false;
+ PadNL(); // add new line (text may continue after </pre>)
}
break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-ncurses-2.22.0/src/NCRichText.h new/yast2-ncurses-2.22.1/src/NCRichText.h
--- old/yast2-ncurses-2.22.0/src/NCRichText.h 2011-12-21 13:38:10.000000000 +0100
+++ new/yast2-ncurses-2.22.1/src/NCRichText.h 2012-02-07 10:33:44.000000000 +0100
@@ -91,8 +91,7 @@
unsigned cindent;
bool atbol;
- bool preTag; // default is false; set true
- // if <pre> tag is found
+ bool preTag; // <pre> tag
unsigned Tattr;
@@ -212,7 +211,8 @@
void PadBOL();
void PadWS( const bool tab = false );
void PadTXT( const wchar_t * sch, const unsigned len );
- void PadPlainTXT( const wchar_t * sch, const unsigned len );
+ void PadPreTXT( const wchar_t * sch, const unsigned len );
+ void AdjustPrePad( const wchar_t * sch );
bool PadTOKEN( const wchar_t * sch, const wchar_t *& ech );
protected:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-ncurses-2.22.0/src/NCtext.cc new/yast2-ncurses-2.22.1/src/NCtext.cc
--- old/yast2-ncurses-2.22.0/src/NCtext.cc 2011-12-21 13:23:56.000000000 +0100
+++ new/yast2-ncurses-2.22.1/src/NCtext.cc 2012-02-13 13:52:41.000000000 +0100
@@ -46,6 +46,7 @@
#include // wcwidth
#include
+#include
const NCstring NCtext::emptyStr;
@@ -81,7 +82,7 @@
if ( ntext.str().empty() )
return;
- const wstring & text( ntext.str() );
+ wstring text( ntext.str() );
wstring::size_type spos = 0;
@@ -89,6 +90,9 @@
bool sawnl = false; // saw new line
+ // handle DOS text
+ boost::erase_all( text, L"\r" );
+
while (( cpos = text.find( L'\n', spos ) ) != wstring::npos )
{
if ( sawnl )
@@ -119,8 +123,11 @@
if ( ntext.str().empty() )
return;
- const wstring & text( ntext.str() );
+ wstring text( ntext.str() );
+ // handle DOS text
+ boost::erase_all( text, L"\r" );
+
wstring::size_type spos = 0;
wstring::size_type cpos = wstring::npos;
@@ -194,7 +201,10 @@
for ( wstr_it = ( *line ).str().begin(); wstr_it != ( *line ).str().end() ; ++wstr_it )
{
- tmp_len += wcwidth( *wstr_it );
+ if ( iswprint( *wstr_it ) )
+ tmp_len += wcwidth( *wstr_it );
+ else if ( *wstr_it == L'\t' )
+ tmp_len += NCurses::tabsize();
}
if ( tmp_len > llen )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-ncurses-2.22.0/src/NCurses.h new/yast2-ncurses-2.22.1/src/NCurses.h
--- old/yast2-ncurses-2.22.0/src/NCurses.h 2011-12-21 13:41:15.000000000 +0100
+++ new/yast2-ncurses-2.22.1/src/NCurses.h 2012-02-08 13:31:06.000000000 +0100
@@ -207,6 +207,8 @@
static int lines() { return ::LINES; }
+ static int tabsize() { return ::TABSIZE; }
+
void run();
public:
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org