diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8bfdd5b --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/Locale-Maketext-1.23.tar.gz diff --git a/.perl-Locale-Maketext.metadata b/.perl-Locale-Maketext.metadata new file mode 100644 index 0000000..f4c422f --- /dev/null +++ b/.perl-Locale-Maketext.metadata @@ -0,0 +1 @@ +a6e109a016e8afd0770dfe68e7318ad86016ff95 SOURCES/Locale-Maketext-1.23.tar.gz diff --git a/SOURCES/Locale-Maketext-1.23-Commit-1735f6f53ca19f99c6e9e39496c486af323ba6a8-star.patch b/SOURCES/Locale-Maketext-1.23-Commit-1735f6f53ca19f99c6e9e39496c486af323ba6a8-star.patch new file mode 100644 index 0000000..6adc181 --- /dev/null +++ b/SOURCES/Locale-Maketext-1.23-Commit-1735f6f53ca19f99c6e9e39496c486af323ba6a8-star.patch @@ -0,0 +1,95 @@ +From b130af4d27aa7d29f2af2b61296abc1bb6ae6d66 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=3D=3FUTF-8=3Fq=3FPetr=3D20P=3DC3=3DADsa=3DC5=3D99=3F=3D?= + +Date: Fri, 8 Nov 2013 02:17:08 +0100 +Subject: [PATCH] Commit 1735f6f53ca19f99c6e9e39496c486af323ba6a8 started to + escape all back-slashes which breaks case when lexicon translations contain + substition and literals with eval-non-safe characters. E.g. these + translations: +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +"[_1]foo\\n\n" => "[_1]bar\\n\n", +'[_1]foo\n' => '[_1]aěa\n', + +got doubled back-slashes on the maketext() output. + +This patch de-escapes escaped backslashes if the literal is compiled as +function argument. + +Fixes RT #120457. + +Signed-off-by: Petr Písař +--- + MANIFEST | 1 + + lib/Locale/Maketext.pm | 1 + + t/91_backslash.t | 33 +++++++++++++++++++++++++++++++++ + 3 files changed, 35 insertions(+) + create mode 100644 t/91_backslash.t + +diff --git a/MANIFEST b/MANIFEST +index 32c65ba..b409558 100644 +--- a/MANIFEST ++++ b/MANIFEST +@@ -23,5 +23,6 @@ t/50_super.t + t/60_super.t + t/70_fail_auto.t + t/90_utf8.t ++t/91_backslash.t See if Locale::Maketext works + t/pod.t + META.json Module JSON meta-data (added by MakeMaker) +diff --git a/lib/Locale/Maketext.pm b/lib/Locale/Maketext.pm +index 63e5fba..26efc94 100644 +--- a/lib/Locale/Maketext.pm ++++ b/lib/Locale/Maketext.pm +@@ -570,6 +570,7 @@ sub _compile { + $c[-1] = ''; # reuse this slot + } + else { ++ $c[-1] =~ s/\\\\/\\/g; + push @code, ' $c[' . $#c . "],\n"; + push @c, ''; # new chunk + } +diff --git a/t/91_backslash.t b/t/91_backslash.t +new file mode 100644 +index 0000000..f96edd1 +--- /dev/null ++++ b/t/91_backslash.t +@@ -0,0 +1,33 @@ ++#!/usr/bin/perl -Tw ++ ++use strict; ++use Test::More tests => 6; ++ ++BEGIN { ++ use_ok( 'Locale::Maketext' ); ++} ++ ++use utf8; ++ ++{ ++ package My::Localize; ++ our @ISA = ('Locale::Maketext'); ++} ++{ ++ package My::Localize::cs_cz; ++ our @ISA = ('My::Localize'); ++ our %Lexicon = ( ++ '[_1]foo1\n' => '[_1]bar\n', ++ '[_1]foo2\n' => '[_1]běr\n', ++ 'foo2\n' => 'aěa\n', ++ "[_1]foo\\n\n" => "[_1]bar\\n\n", ++ ); ++ keys %Lexicon; # dodges the 'used only once' warning ++} ++ ++my $lh = My::Localize->get_handle('cs_cz'); ++isa_ok( $lh, 'My::Localize::cs_cz' ); ++is( $lh->maketext('[_1]foo1\n', 'arg'), 'argbar\n', 'Safe parameterized' ); ++is( $lh->maketext('[_1]foo2\n', 'arg'), 'argběr\n', 'Unicode parameterized' ); ++is( $lh->maketext('foo2\n'), 'aěa\n', 'Unicode literal' ); ++is( $lh->maketext("[_1]foo\\n\n", 'arg'), "argbar\\n\n", 'new line parameterized' ); +-- +1.8.3.1 + diff --git a/SPECS/perl-Locale-Maketext.spec b/SPECS/perl-Locale-Maketext.spec new file mode 100644 index 0000000..219ac62 --- /dev/null +++ b/SPECS/perl-Locale-Maketext.spec @@ -0,0 +1,76 @@ +Name: perl-Locale-Maketext +Version: 1.23 +Release: 3%{?dist} +Summary: Framework for localization +License: GPL+ or Artistic +Group: Development/Libraries +URL: http://search.cpan.org/dist/Locale-Maketext/ +Source0: http://www.cpan.org/authors/id/T/TO/TODDR/Locale-Maketext-%{version}.tar.gz +# Fix escaping backslashes, bug #1026761, RT#120457 +Patch0: Locale-Maketext-1.23-Commit-1735f6f53ca19f99c6e9e39496c486af323ba6a8-star.patch +BuildArch: noarch +BuildRequires: perl +BuildRequires: perl(ExtUtils::MakeMaker) +BuildRequires: perl(strict) +# Run-time: +BuildRequires: perl(Carp) +BuildRequires: perl(I18N::LangTags) >= 0.31 +BuildRequires: perl(I18N::LangTags::Detect) +BuildRequires: perl(integer) +# utf8 is optional +BuildRequires: perl(vars) +BuildRequires: perl(warnings) +# Tests: +BuildRequires: perl(base) +BuildRequires: perl(Scalar::Util) +BuildRequires: perl(Test::More) +BuildRequires: perl(utf8) +# Optional tests: +%if !%{defined perl_bootstrap} +BuildRequires: perl(Test::Pod) >= 1.14 +%endif +Requires: perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version)) +Requires: perl(I18N::LangTags) >= 0.31 + +# Filter under-specified dependencies +%global __requires_exclude %{?__requires_exclude:%__requires_exclude|}^perl\\(I18N::LangTags\\)$ + +%description +It is a common feature of applications (whether run directly, or via the Web) +for them to be "localized" -- i.e., for them to present an English interface +to an English-speaker, a German interface to a German-speaker, and so on for +all languages it's programmed with. Locale::Maketext is a framework for +software localization; it provides you with the tools for organizing and +accessing the bits of text and text-processing code that you need for +producing localized applications. + +%prep +%setup -q -n Locale-Maketext-%{version} +%patch0 -p1 + +%build +perl Makefile.PL INSTALLDIRS=vendor +make %{?_smp_mflags} + +%install +make pure_install DESTDIR=$RPM_BUILD_ROOT +find $RPM_BUILD_ROOT -type f -name .packlist -exec rm -f {} \; +%{_fixperms} $RPM_BUILD_ROOT/* + +%check +make test + +%files +%doc ChangeLog README +%{perl_vendorlib}/* +%{_mandir}/man3/* + +%changelog +* Fri Dec 27 2013 Daniel Mach - 1.23-3 +- Mass rebuild 2013-12-27 + +* Mon Nov 11 2013 Petr Pisar - 1.23-2 +- Fix escaping backslashes (bug #1026761) + +* Fri Apr 05 2013 Petr Pisar 1.23-1 +- Specfile autogenerated by cpanspec 1.78.