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

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

    <bug>
          <bug_id>30763</bug_id>
          
          <creation_ts>2015-02-19 17:59:24 +0300</creation_ts>
          <short_desc>Поддержка нескольких типов комментариев</short_desc>
          <delta_ts>2015-02-20 01:05:17 +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>libshell</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrey Cherepanov">cas</reporter>
          <assigned_to name="Alexey Gladkov">legion</assigned_to>
          <cc>glebfm</cc>
    
    <cc>legion</cc>
    
    <cc>rider</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>150380</commentid>
    <comment_count>0</comment_count>
    <who name="Andrey Cherepanov">cas</who>
    <bug_when>2015-02-19 17:59:24 +0300</bug_when>
    <thetext>В /etc/samba/smb.conf используется два типа комментариев: начинающихся с # и с ;

[root@host-15 backend3]# . libshell
[root@host-15 backend3]# echo &apos;;   logon path = \\%L\Profiles\%u&apos; &gt; smb.ini
[root@host-15 backend3]# vim /bin/shell-ini-config 
[root@host-15 backend3]# export shell_ini_config_prefix=&apos;&apos;
[root@host-15 backend3]# export shell_ini_config_comment=&apos;#;&apos;
[root@host-15 backend3]# export shell_ini_config_comment=&apos;(#|;)&apos;
[root@host-15 backend3]# ini_config_set smb.ini global param val
[root@host-15 backend3]# cat smb.ini
;   logon path = \\%L\Profiles\%u \\%L\Profiles\%u\\%L\Profiles\%u
[global]
param = val</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150390</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2015-02-19 20:20:01 +0300</bug_when>
    <thetext>Андрей, а ты можешь словами описать чего хочется ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150391</commentid>
    <comment_count>2</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2015-02-19 20:22:33 +0300</bug_when>
    <thetext>Лёш, ну как мне понятно - хочет видимо как-то указывать что комментарии могут быть разные и точка с запятой, и шарп и два слэша.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150392</commentid>
    <comment_count>3</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2015-02-19 20:24:02 +0300</bug_when>
    <thetext>Но из примера скрипта я тоже нихрена не въехал ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150393</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2015-02-19 20:48:16 +0300</bug_when>
    <thetext>(В ответ на комментарий №3)
&gt; Но из примера скрипта я тоже нихрена не въехал ;)

Вот-вот :)

Просто как правило в конфигах только один тип комментариев.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150394</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2015-02-19 21:09:39 +0300</bug_when>
    <thetext>(В ответ на комментарий №2)
&gt; Лёш, ну как мне понятно - хочет видимо как-то указывать что комментарии могут
&gt; быть разные и точка с запятой, и шарп и два слэша.

К сожалению так сделать нельзя т.к. в ini_config_comment непонятно что использовать в качестве комментария. Библиотека не рассчитывает на то что в shell_ini_config_comment будет находиться не признак комментария (один символ или последовательность).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150397</commentid>
    <comment_count>6</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2015-02-19 22:22:00 +0300</bug_when>
    <thetext>Мне встречались конфиги в которых сразу два типа комментария.

А какие сложности использовать условия (перечисление) при выборе комментариев ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150398</commentid>
    <comment_count>7</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2015-02-19 22:23:20 +0300</bug_when>
    <thetext>А, вопрос что с записью. Да, тут либо выбрать первый символ, либо отдельную настройку для записи комментариев.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150399</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2015-02-19 22:33:07 +0300</bug_when>
    <thetext>(В ответ на комментарий №7)
&gt; А, вопрос что с записью. Да, тут либо выбрать первый символ, либо отдельную
&gt; настройку для записи комментариев.

На чтение всё более-менее понятно. Вопрос как вычленить символы (их может быть несколько) из списка. Сейчас последовательность в shell_ini_config_comment это признак комментария. Чтобы и сколько бы там ни было.

Идея с паттерном на чтение в одной переменной и символом комментария на запись в другой мне не нравится.

Если хочется иметь список, то по хорошему нужно делать отдельную переменную и в ней отдельно описывать, чтобы потом можно было выбрать. А это уже несколько другая задача по сложности.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150400</commentid>
    <comment_count>9</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2015-02-19 22:34:57 +0300</bug_when>
    <thetext>Ну, если считать что паттерн разделяется &apos;|&apos; то вычленить из этой последовательности первый вполне реально.

А какие ещё варианты паттернов используются для поиска комментариев ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150401</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2015-02-19 22:59:38 +0300</bug_when>
    <thetext>(В ответ на комментарий №9)
&gt; Ну, если считать что паттерн разделяется &apos;|&apos; то вычленить из этой
&gt; последовательности первый вполне реально.

&quot;#|\||\\|\;;&quot;

Какие символы перечислены ? :)
Разбор такой строки сложнее чем кажется.

&gt; А какие ещё варианты паттернов используются для поиска комментариев ?

Не понял вопроса.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150402</commentid>
    <comment_count>11</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2015-02-19 23:35:03 +0300</bug_when>
    <thetext>Перечислено:
#
\

\\
\;;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150403</commentid>
    <comment_count>12</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2015-02-19 23:37:09 +0300</bug_when>
    <thetext>Хотя, ты прав.
Но в переменную попадёт всё равно:
#|||\|;;
Т.е. - в твоём случае экранирование уберётcя на этапе присвоения и разбирать тебе придётся уже &quot;очищенную переменную&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150406</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2015-02-20 01:05:17 +0300</bug_when>
    <thetext>Для протокола: &quot;#|\||\\|\;;&quot; это &quot;#&quot; или &quot;|&quot; или &quot;\&quot; или &quot;;;&quot;. Разделителем является &quot;|&quot; экранирование как в шелле.

&gt; Т.е. - в твоём случае экранирование уберётcя на этапе присвоения и разбирать
&gt; тебе придётся уже &quot;очищенную переменную&quot;

Можно присвоить это с экранированием. Разобрать эту строчку тоже можно (я не говорил, что этого сделать нельзя). Вот только код для этого будет примерно с половину всего shell-ini-config.

Я исхожу из того сколько сколько усилий нужно потратить ради достижения цели и в данном конкретном случае гораздо проще привести разные типы комментариев к одному.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>