patch pro zoneminder


Eu uso o ZoneMinder aqui em casa, que é um software para CFTV (Circuito Fechado de Televisão). Tempos atrás eu bloguei falando do zoneminder. Hoje, quando atualizei para versão 1.24.1-1 notei a seguinte mensagem:

Warning: Cannot modify header information - headers already sent by
(output started at /usr/share/zoneminder/lang/pt_br.php:751) in
/usr/share/zoneminder/includes/functions.php on line 97

Na hora eu já imaginei o que era. Abri o arquivo “/usr/share/zoneminder/lang/pt_br.php” e lá estava, uma linha em branco aṕos a tag ?>, que é a tag que fecha comandos PHP. Olhei os outros arquivos de línguas e alguns deles também possuíam a linha em branco. Então, lá vou eu fazer um patch pra corrigir esse erro. Pensei um pouco, fiz alguns testes e não consegui. Como sou preguiçoso fui logo perguntar pra alguns amigos que também não puderam me dar uma solução na hora. Daí, evitei a fadiga e encontrei o comando abaixo:

sed '${/^$/d}' arquivo

Esse comando só removia uma única linha, eu tinha casos mais de uma linha… Procurei mais e achei um exemplo bem legal:

sed -e :a -e '/^\n*$/{$d;N;ba' -e '}' arquivo

Com esse comando, era só eu fazer um loop nos arquivos de línguas, gerar um novo arquivo com as modificações, executar o diff para comparar as mudanças e salvar num arquivo para enviar pros mantenedores do zoneminder. Acabei escrevendo o script abaixo:

#!/bin/bash

files=$( find . -name "*.php" )

# remove as linhas em branco do final do arquivo e cria um arquivo temporário
for file in $files; do
sed -e :a -e '/^\n*$/{$d;N;ba' -e '}' $file > "$file.new"
done

# faz a comparação entre o arquivo antigo e novo e salva
for file in $files; do
diff -burN $file "$file.new" >> patch.metal
done

# remove os arquivos temporários
find . -name "*.new" | xargs rm

Aṕos executar o script acima, abri o arquivo gerado, o “patch.metal” e fui conferir. Aparentemente tudo certo, agora vou abrir o bug e torcer pra ele não ficar mais de um ano pra ser fechado.

UPDATE:

Bug reportado, #531910, agora vamo ver…

Previous

mantendo seus pacotes Debian da unstable e da experimental atualizados

Next

lujorge.com.br

1 Comment

Deixe um Comentário

O seu endereço de email não será publicado Campos obrigatórios são marcados *

Powered by WordPress & Theme by Anders Norén