Bug 15955

Summary: strange re processing
Product: Sisyphus Reporter: inger <inger>
Component: gettext-toolsAssignee: placeholder <placeholder>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P2 CC: glebfm, ldv, placeholder
Version: unstable   
Hardware: all   
OS: Linux   

Description inger@altlinux.org 2008-06-09 12:35:13 MSD
$ msggrep -K -E -e "^Sign" --no-wrap ru.po
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-04-22 14:41+0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#: стандартный ввод:27 ввод:25
msgid "Sign"
msgstr "Подпись"

#: ui/pkg/sources/index.scm:205 стандартный ввод:3 ввод:13
msgid "Signature:"
msgstr "Подпись:"

#: backend3/pkg-sources:156
msgid "Signature"
msgstr "Подпись"
$ msggrep -K -E -e "^Sign$" --no-wrap ru.po
$ 

Мало того что выводят заголовок, который никто не просил (""), так ещё и
регулярные выражения не корректно обрабатываются. Достаточно добавить привязку к
концу строки, так сразу всё перестаёт работать. При этом привязка к началу
строки работает без проблем.
Comment 1 Dmitry V. Levin 2010-06-04 01:08:40 MSD
Судя по коду gettext-tools/src/msggrep.c, привязка к концу строки в регвыражении в принципе не поддерживается. Кроме того, gettext использует какой-то древний libgrep, который иногда падает в корку:
$ msggrep -K -e '^.*$' ru.po 
Ошибка сегментирования
Comment 2 Dmitry V. Levin 2010-06-05 04:20:46 MSD
Если в результате работы msggrep что-нибудь нашлось, то заголовок выводится всегда.  Таков принцип работы msggrep, которая должна на выходе давать валидный PO-файл.

Привязка к концу строки и ключный libgrep исправлены в 0.18.1-alt1.