From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on sa.int.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.2.5 Message-ID: <512F469E.9070102@altlinux.ru> Date: Thu, 28 Feb 2013 15:59:26 +0400 From: Alexey Gladkov User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130117 Thunderbird/17.0.2 MIME-Version: 1.0 To: sisyphus@lists.altlinux.org References: <1388768.vWpN7ZqqRi@epiphanov.bkpi82.nikiet.ru> <512F030C.8010103@altlinux.ru> <1374390.7FYEg3PTU2@epiphanov.bkpi82.nikiet.ru> <512F3088.8050809@altlinux.ru> <20130228102904.GF22041@osdn.org.ua> <512F3C6E.3020702@altlinux.ru> <512F3D38.8060702@etersoft.ru> <512F3FDA.3010703@altlinux.ru> <512F4102.1000505@etersoft.ru> In-Reply-To: <512F4102.1000505@etersoft.ru> X-Enigmail-Version: 1.5a1pre Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: Re: [sisyphus] =?utf-8?b?0JLQvtC/0YDQvtGBINC/0L4gb3MtcmVsZWFzZQ==?= X-BeenThere: sisyphus@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Sisyphus discussions List-Id: ALT Linux Sisyphus discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 Feb 2013 11:59:36 -0000 Archived-At: List-Archive: List-Post: 28.02.2013 15:35, Pavel Vainerman wrote: >> У паранои должны быть пределы иначе можно перестать доверять выводу >> системных утилит и содержимому конфигов. > согласен.. при условии (того, что вы написали ниже). Я продемонстрирую почему я так толсто троллингово возмущаюсь: $ dd if=/dev/urandom of=/tmp/badfile count=1 bs=512 $ cat /tmp/test.sh #!/bin/sh -efu . /tmp/badfile || echo "BAD FILE" echo "END" $ /tmp/test.sh /tmp/badfile: line 1: unexpected EOF while looking for matching ``' $ echo "Foo bar baz" > /tmp/badfile $ LANG=C /tmp/test.sh /tmp/badfile: line 1: Foo: command not found Шеллы могут быть любыми, но результат будет один: синтаксическая ошибка. Таким образом нарушается базовое условие формата этого конфига и обработать такой сорс можно только через subshell: $ cat /tmp/test.sh #!/bin/sh -efu ( . /tmp/badfile ) || echo "BAD FILE" echo "END" $ /tmp/test.sh /tmp/zzz: line 1: Foo: command not found BAD FILE END Но в этом случае переменные из этого конфига не забрать простым способом и это всё равно, что выуживать их sed'ом по одной. Как раз этого хотели избежать создатели формата этого файла. А учитывая, что формат допускает вот такие конструкции: Example: NAME=Fedora or NAME="Debian GNU/Linux". получение значений sed'ом делается ещё более весёлой задачей. > если из этого сообщения будет понятно что битый файл os-release > (ну или что где то в нём ошибка).. Как я показал выше показать что именно файл битый можно, но выглядеть эта проверка будет очень забавно. Безусловно я добавлю её раз возник прецедент с записью туда мусора. -- Rgrds, legion