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

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

    <bug>
          <bug_id>10447</bug_id>
          
          <creation_ts>2006-12-18 17:24:25 +0300</creation_ts>
          <short_desc>smbclient неправильно работает в однобайтовых локалях c русским W2k</short_desc>
          <delta_ts>2018-09-03 15:41:29 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>samba</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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="Alexey V. Novikov">shader</reporter>
          <assigned_to name="Evgeny Sinelnikov">sin</assigned_to>
          <cc>mike</cc>
    
    <cc>sin</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>43450</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey V. Novikov">shader</who>
    <bug_when>2006-12-18 17:24:26 +0300</bug_when>
    <thetext>[novikov@novikov novikov]$ LC_ALL=C smbclient -gNL somehost -A ~/.netrc 
Domain=[SOMEHOST] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager]
IPC|IPC$|Disk|D$|Disk|print$|Disk|C|
Disk|D|
Printer|hpLaserJ|hp LaserJet 1300 PCL 6
Disk|ADMIN$|Disk|N$|
Domain=[SOMEHOST] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager]
Disk|C$|

[novikov@novikov novikov]$ LC_ALL=ru_RU.CP1251 smbclient -gNL somehost -A ~/.netrc 
Domain=[SOMEHOST] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager]
IPC|IPC$|Disk|D$|Disk|print$|Disk|C|
Disk|D|
Printer|hpLaserJ|hp LaserJet 1300 PCL 6
Disk|ADMIN$|Disk|N$|
Domain=[SOMEHOST] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager]
Disk|C$|

[novikov@novikov novikov]$ LC_ALL=ru_RU.UTF-8 smbclient -gNL somehost -A ~/.netrc 
Domain=[SOMEHOST] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager]
IPC|IPC$|&amp;#244;&amp;#241;&amp;#225;&amp;#189;&amp;#209;&amp;#161;&amp;#161;&amp;#217;&amp;#174; IPC
Disk|D$|&amp;#230;&amp;#212;&amp;#225;&amp;#161;&amp;#241;&amp;#225;&amp;#211;&amp;#212;&amp;#161;&amp;#217;&amp;#174; &amp;#171;&amp;#237;&amp;#218;&amp;#191;&amp;#174; &amp;#211;&amp;#209;&amp;#223;&amp;#210;&amp;#211;&amp;#223;
Disk|print$|&amp;#228;&amp;#211;&amp;#225;&amp;#174;&amp;#243;&amp;#209;&amp;#211;&amp;#217; &amp;#187;&amp;#211;&amp;#191;&amp;#161;&amp;#212;&amp;#209;&amp;#211;&amp;#171;&amp;#243;
Disk|C|
Disk|D|
Printer|hpLaserJ|hp LaserJet 1300 PCL 6
Disk|ADMIN$|&amp;#244;&amp;#241;&amp;#225;&amp;#189;&amp;#209;&amp;#161;&amp;#161;&amp;#217;&amp;#174; Admin
Disk|N$|
Disk|C$|&amp;#230;&amp;#212;&amp;#225;&amp;#161;&amp;#241;&amp;#225;&amp;#211;&amp;#212;&amp;#161;&amp;#217;&amp;#174; &amp;#171;&amp;#237;&amp;#218;&amp;#191;&amp;#174; &amp;#211;&amp;#209;&amp;#223;&amp;#210;&amp;#211;&amp;#223;
Domain=[SOMEHOST] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43481</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey V. Novikov">shader</who>
    <bug_when>2006-12-19 09:32:51 +0300</bug_when>
    <thetext>(In reply to comment #0)
Прошу прощения, был не настроен /etc/samba/smb.conf, однако даже с настроенным
неправильное поведение в локали POSIX сохраняется

[novikov@novikov novikov]$ LC_ALL=C smbclient -gNL somehost -A ~/.netrc 2&gt;/dev/null
IPC|IPC$|Disk|D$|Disk|print$|Disk|C|
Disk|D|
Printer|hpLaserJ|hp LaserJet 1300 PCL 6
Disk|ADMIN$|Disk|N$|
Disk|C$|

В остальных локалях вроде работает. Из-за такого поведения не работает auto.smb
из пакета autofs, приходится для smbclient&apos;а указывать локаль отличную от POSIX</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43482</commentid>
    <comment_count>2</comment_count>
    <who name="Alexander Bokovoy">ab</who>
    <bug_when>2006-12-19 10:51:21 +0300</bug_when>
    <thetext>Работа в локали POSIX полностью соответствует логике локали -- в ней возможно
только ASCII. Однако, почему-то &quot;проглатывается&quot; заключительный \n в некоторых
строках...

Соответствующий код выглядит так:
        /* FIXME: If the remote machine returns non-ascii characters           
                                          
           in any of these fields, they can corrupt the output.  We            
                                          
           should remove them. */                                              
                                          
        if (!grepable) {                                                       
                                          
                d_printf(&quot;\t%-15s %-10.10s%s\n&quot;,                               
                                          
                        name,typestr,comment);                                 
                                          
        } else {                                                               
                                          
                d_printf (&quot;%s|%s|%s\n&quot;,typestr,name,comment);                  
                                          
        }                                                                      
                                          

Предполагается, что поступающие на вход d_printf() строки переданы в unix
charset и она транслирует их в display charset и выводит на экран. Собственно
так и происходит, поскольку в browse_fn() (где этот код присутствует) данные
попадают в unix charset, будучи преобразованными туда из UCS2.

Комментарий, на мой взгляд, относится только к первой части -- !greppable; там
вполне очевидно, что вывод испортится, поскольку он форматируется побайтно
пробелами, а на самом деле при юникоде там совсем не восьмибитные буквы. Однако
к greppable это не относится. В этом случае d_printf() должен сформировать
нормальную строку (в utf-8, насколько я полагаю -- unix charset по умолчанию) и
попытаться ее вывести. А чему все же равны настройки *charset в smb.conf?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43490</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey V. Novikov">shader</who>
    <bug_when>2006-12-19 13:18:10 +0300</bug_when>
    <thetext>(In reply to comment #2)
Сейчас в /etc/samba/smb.conf
dos charset = CP866
unix charset = UTF8
display charset = LOCALE

[novikov@novikov etc]$ rpm -qf /usr/bin/smbclient 
samba-client-3.0.14a-alt2

Локаль - UTF-8

Кстати, пока не забыл
[novikov@novikov etc]$ man smbclient | grep &apos;^.*-g&apos;
[novikov@novikov etc]$
в смысле опция -g в мане отсутствует

А так все равно
LC_ALL=C smbclient -gNL monakhov -A ~/.netrc &gt;~/aaa
в файле имеем
IPC|IPC$|Disk|D$|Disk|print$|Disk|C|
Disk|D|
Printer|hpLaserJ|hp LaserJet 1300 PCL 6
Disk|ADMIN$|Disk|N$|
Disk|C$|
причем последняя строка без \n</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63507</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2008-02-15 19:58:20 +0300</bug_when>
    <thetext>moved to sisyphus; please check with 3.0.28+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63951</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey V. Novikov">shader</who>
    <bug_when>2008-02-18 09:36:19 +0300</bug_when>
    <thetext>(In reply to comment #4)
&gt; moved to sisyphus; please check with 3.0.28+

Система - branch 4.0
$ rpm -q samba-client
samba-client-3.0.28-alt1

LC_ALL=C smbclient -gNL &lt;win2k_ru_host&gt; -A /etc/netrc

display charset = LOCALE - не работает
display charset = UTF8 - работает</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71962</commentid>
    <comment_count>6</comment_count>
    <who name="Mikhail Gusarov">dottedmag</who>
    <bug_when>2008-06-13 13:00:39 +0400</bug_when>
    <thetext></thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117475</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2011-01-22 17:17:11 +0300</bug_when>
    <thetext>Просьба по возможности проверить с 3.5+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117574</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey V. Novikov">shader</who>
    <bug_when>2011-01-24 08:32:48 +0300</bug_when>
    <thetext>(В ответ на комментарий №7)
&gt; Просьба по возможности проверить с 3.5+.

$ LC_ALL=C smbclient -gNL host -U user 2&gt;/dev/null |hexdump -C
00000000  41 6e 6f 6e 79 6d 6f 75  73 20 6c 6f 67 69 6e 20  |Anonymous login |
00000010  73 75 63 63 65 73 73 66  75 6c 0a 49 50 43 7c 49  |successful.IPC|I|
00000020  50 43 24 7c 44 69 73 6b  7c 70 72 69 6e 74 24 7c  |PC$|Disk|print$||
00000030  44 69 73 6b 7c 43 7c 0a  50 72 69 6e 74 65 72 7c  |Disk|C|.Printer||
00000040  48 50 4c 61 73 65 72 4a  7c 48 50 20 4c 61 73 65  |HPLaserJ|HP Lase|
00000050  72 4a 65 74 20 31 30 31  38 0a 44 69 73 6b 7c 41  |rJet 1018.Disk|A|
00000060  44 4d 49 4e 24 7c 44 69  73 6b 7c 43 24 7c 41 6e  |DMIN$|Disk|C$|An|
00000070  6f 6e 79 6d 6f 75 73 20  6c 6f 67 69 6e 20 73 75  |onymous login su|
00000080  63 63 65 73 73 66 75 6c  0a                       |ccessful.|
00000089

Hint: например, между Disk|ADMIN$ и Disk|C$ не перевод строки, а &quot;|&quot;
$ rpmquery samba-client
samba-client-3.5.6-alt1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117575</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey V. Novikov">shader</who>
    <bug_when>2011-01-24 08:34:57 +0300</bug_when>
    <thetext>(В ответ на комментарий №7)
&gt; Просьба по возможности проверить с 3.5+.

А вот с UTF-8 (она же локаль)

$ LC_ALL=ru_RU.UTF-8 smbclient -gNL host -U user 2&gt;/dev/null |hexdump -C
00000000  41 6e 6f 6e 79 6d 6f 75  73 20 6c 6f 67 69 6e 20  |Anonymous login |
00000010  73 75 63 63 65 73 73 66  75 6c 0a 49 50 43 7c 49  |successful.IPC|I|
00000020  50 43 24 7c d0 a3 d0 b4  d0 b0 d0 bb d0 b5 d0 bd  |PC$|............|
00000030  d0 bd d1 8b d0 b9 20 49  50 43 0a 44 69 73 6b 7c  |...... IPC.Disk||
00000040  70 72 69 6e 74 24 7c d0  94 d1 80 d0 b0 d0 b9 d0  |print$|.........|
00000050  b2 d0 b5 d1 80 d1 8b 20  d0 bf d1 80 d0 b8 d0 bd  |....... ........|
00000060  d1 82 d0 b5 d1 80 d0 be  d0 b2 0a 44 69 73 6b 7c  |...........Disk||
00000070  43 7c 0a 50 72 69 6e 74  65 72 7c 48 50 4c 61 73  |C|.Printer|HPLas|
00000080  65 72 4a 7c 48 50 20 4c  61 73 65 72 4a 65 74 20  |erJ|HP LaserJet |
00000090  31 30 31 38 0a 44 69 73  6b 7c 41 44 4d 49 4e 24  |1018.Disk|ADMIN$|
000000a0  7c d0 a3 d0 b4 d0 b0 d0  bb d0 b5 d0 bd d0 bd d1  ||...............|
000000b0  8b d0 b9 20 41 64 6d 69  6e 0a 44 69 73 6b 7c 43  |... Admin.Disk|C|
000000c0  24 7c d0 a1 d1 82 d0 b0  d0 bd d0 b4 d0 b0 d1 80  |$|..............|
000000d0  d1 82 d0 bd d1 8b d0 b9  20 d0 be d0 b1 d1 89 d0  |........ .......|
000000e0  b8 d0 b9 20 d1 80 d0 b5  d1 81 d1 83 d1 80 d1 81  |... ............|
000000f0  0a 41 6e 6f 6e 79 6d 6f  75 73 20 6c 6f 67 69 6e  |.Anonymous login|
00000100  20 73 75 63 63 65 73 73  66 75 6c 0a              | successful.|
0000010c</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173850</commentid>
    <comment_count>10</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2018-09-03 15:41:29 +0300</bug_when>
    <thetext>Ещё актуально?</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>