<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>16879</bug_id>
          
          <creation_ts>2008-08-25 10:23:58 +0400</creation_ts>
          <short_desc>Вызывает gtbl до groff</short_desc>
          <delta_ts>2009-04-24 10:16:21 +0400</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>man</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Slava Semushin">php-coder</reporter>
          <assigned_to name="Alexey Gladkov">legion</assigned_to>
          <cc>ldv</cc>
    
    <cc>voins</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>76205</commentid>
    <comment_count>0</comment_count>
    <who name="Slava Semushin">php-coder</who>
    <bug_when>2008-08-25 10:23:58 +0400</bug_when>
    <thetext>groff-base-1.19.3-alt1.20080814

У меня не получилось заставить nroff нормально отображать маны в однобайтовых кодировках при юникодной локали.

Вот test case:

[c0der@xxx ~]$ (echo &quot;.\\\&quot; -*- coding: utf-8 -*-&quot;; zcat /usr/share/man/ru/man1/test.1.gz | iconv -f koi8-r -t utf8) &gt;test-utf.1
[c0der@xxx ~]$ head  test-utf.1
.\&quot; -*- coding: utf-8 -*-
.\&quot; DO NOT MODIFY THIS FILE!  It was generated by help2man 1.35.
.TH TEST &quot;1&quot; &quot;Май 2006&quot; &quot;test 5.97&quot; &quot;Команды пользователя&quot;
.SH ИМЯ
test \- проверяет типы файлов и сравнивает значения
.SH ОБЗОР
.B test
\fIВЫРАЖЕНИЕ\fR
.br
.B test
[c0der@xxx ~]$ gzip test-utf.1
[c0der@xxx ~]$ sudo mv -vf test-utf.1.gz /usr/share/man/ru/man1
`test-utf.1.gz&apos; -&gt; `/usr/share/man/ru/man1/test-utf.1.gz&apos;
removed `test-utf.1.gz&apos;

Далее man test-utf и я не вижу русского, вижу лишь кракозябры.

man-1.6f-alt2, nroff запускается с опциями -Dkoi8-r -Tutf8 -mandoc

Также не работает указание и других кодировок (вроде koi8-r/cp1251, кстати CP1251 и KOI8-U, похоже вообще не распознаются? Я вижу, что они закомментированы в файле groff/src/preproc/preconv/preconv.cpp, также распознаётся только строка UTF-8, но не UTF8, возможно, лучше распознавать и то и другое).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76229</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2008-08-25 14:43:30 +0400</bug_when>
    <thetext>$ locale 
LANG=ru_RU.UTF-8
LC_CTYPE=&quot;ru_RU.UTF-8&quot;
LC_NUMERIC=&quot;ru_RU.UTF-8&quot;
LC_TIME=&quot;ru_RU.UTF-8&quot;
LC_COLLATE=&quot;ru_RU.UTF-8&quot;
LC_MONETARY=&quot;ru_RU.UTF-8&quot;
LC_MESSAGES=&quot;ru_RU.UTF-8&quot;
LC_PAPER=&quot;ru_RU.UTF-8&quot;
LC_NAME=&quot;ru_RU.UTF-8&quot;
LC_ADDRESS=&quot;ru_RU.UTF-8&quot;
LC_TELEPHONE=&quot;ru_RU.UTF-8&quot;
LC_MEASUREMENT=&quot;ru_RU.UTF-8&quot;
LC_IDENTIFICATION=&quot;ru_RU.UTF-8&quot;
LC_ALL=

$ bzcat /usr/share/man/ru/man1/gpg.1.bz2 &gt; /tmp/gpg.1

$ head -3 /tmp/gpg.1 
.\&quot; -*- mode: troff; coding: koi8-r -*-
.TH &quot;gpg&quot; &quot;1&quot; 
.SH &quot;NAME&quot;

$ groff -Dkoi8-r -Tutf8 -mandoc /tmp/gpg.1 |head -6
gpg(1)                                                                  gpg(1)



NAME
       gpg — инструмент для шифрования и цифровой подписи

$ groff -k -Tutf8 -mandoc /tmp/gpg.1 |head -6
gpg(1)                                                                  gpg(1)



NAME
       gpg — инструмент для шифрования и цифровой подписи

$ iconv -fkoi8-r -tutf8 &lt; gpg.1  &gt; gpg-utf.1

$ head -3 /tmp/gpg-utf.1 
.\&quot; -*- mode: troff; coding: utf-8 -*-
.TH &quot;gpg&quot; &quot;1&quot; 
.SH &quot;NAME&quot;

$ groff -Dkoi8-r -Tutf8 -mandoc gpg-utf.1 |head -6
gpg(1)                                                                  gpg(1)



NAME
       gpg — инструмент для шифрования и цифровой подписи
---

У меня всё видно. Можно точный testcase приаттачить к баге ?
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76232</commentid>
    <comment_count>2</comment_count>
    <who name="Slava Semushin">php-coder</who>
    <bug_when>2008-08-25 14:56:22 +0400</bug_when>
    <thetext>Действительно портит всё не nroff, а gtbl:

$ cat man1/gpg-utf.1 | nroff -Dkoi8-r -Tutf8 -mandoc

Так видно.

$ cat man1/gpg-utf.1 | gtbl | nroff -Dkoi8-r -Tutf8 -mandoc

Так уже всё в кракозябрах возвращается. А man именно вот так запускает.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76238</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2008-08-25 15:08:54 +0400</bug_when>
    <thetext>(In reply to comment #2)
&gt; Действительно портит всё не nroff, а gtbl:
&gt; 
&gt; $ cat man1/gpg-utf.1 | nroff -Dkoi8-r -Tutf8 -mandoc
&gt; 
&gt; Так видно.
&gt; 
&gt; $ cat man1/gpg-utf.1 | gtbl | nroff -Dkoi8-r -Tutf8 -mandoc
&gt; 
&gt; Так уже всё в кракозябрах возвращается. А man именно вот так запускает.

А зачем он groff так запускает?

$ groff -h |grep tbl
-t	preprocess with tbl

Этот ключ nroff транслирует groff:

$ cat /tmp/gpg-utf.1 |tbl | groff -Dkoi8-r -Tutf8 -mandoc |head -6
gpg(1)                                                                  gpg(1)



NAME
       gpg    —    п╦п╫я│я┌я─я┐п╪п╣п╫я┌    п╢п╩я▐    я┬п╦я└я─п╬п╡п╟п╫п╦я▐   п╦

Действительно крокозяблы, но:

$ cat /tmp/gpg-utf.1 | groff -t -Dkoi8-r -Tutf8 -mandoc |head -6
gpg(1)                                                                  gpg(1)



NAME
       gpg — инструмент для шифрования и цифровой подписи

Всё нормально. Оно понятно почему ... groff -k -t запускает tbl после preconv.

Это бага в man.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76241</commentid>
    <comment_count>4</comment_count>
    <who name="Slava Semushin">php-coder</who>
    <bug_when>2008-08-25 15:26:38 +0400</bug_when>
    <thetext>Да, точно. Спасибо, за помощь.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76359</commentid>
    <comment_count>5</comment_count>
    <who name="Slava Semushin">php-coder</who>
    <bug_when>2008-08-27 14:22:08 +0400</bug_when>
    <thetext>Но и это ещё не всё. man добавляет в заголовок файла некоторые команды для отображения, например:

.ll 12.3i
.nr LL 12.3i
.pl 1100i

В итоге магическая строка с кодировкой сдвигается на 3 строчки и preconv не может распознать кодировку.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76362</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2008-08-27 14:46:22 +0400</bug_when>
    <thetext>(In reply to comment #5)
&gt; В итоге магическая строка с кодировкой сдвигается на 3 строчки и preconv не
&gt; может распознать кодировку.

Просто теперь нужно добавлить несколько сложнее, чем просто дописывать в поток перед распакованной man-страницей.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76428</commentid>
    <comment_count>7</comment_count>
    <who name="Slava Semushin">php-coder</who>
    <bug_when>2008-08-28 11:50:57 +0400</bug_when>
    <thetext>(In reply to comment #6)
&gt; Просто теперь нужно добавлить несколько сложнее, чем просто дописывать в
&gt; поток перед распакованной man-страницей.

Да уж. Собственно, разобрался вроде. Теперь awk-ом это всё делается.

Вечерком ещё дома проверю на однобайтовой кодировке и выложу новую сборку на people/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76592</commentid>
    <comment_count>8</comment_count>
    <who name="Slava Semushin">php-coder</who>
    <bug_when>2008-08-29 21:30:55 +0400</bug_when>
    <thetext>(In reply to comment #7)
&gt; Вечерком ещё дома проверю на однобайтовой кодировке и выложу новую сборку
&gt; на people/
 
ftp://ftp.altlinux.org/pub/people/php-coder/man/man-1.6f-alt3.i586.rpm

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76664</commentid>
    <comment_count>9</comment_count>
    <who name="Slava Semushin">php-coder</who>
    <bug_when>2008-08-30 15:25:48 +0400</bug_when>
    <thetext>Reassign to new maintainer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90017</commentid>
    <comment_count>10</comment_count>
    <who name="Slava Semushin">php-coder</who>
    <bug_when>2009-04-24 10:16:21 +0400</bug_when>
    <thetext>Fixed in 1.6f-alt10</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>