De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Fernando M. Roxo da Motta
Data de Publicação: 29 de junho de 2012
Por tal ou qual motivo eu vivo tendo problema com o índice do livro de endereço do Claws-mail. A solução, para mim, sempre foi recuperar de backup, mas eu achava que devia haver uma solução melhor. Além do mais se você criou um novo livro de endereços o backup pode não ter a informação.
Tá, você vai dizer que tem uma penca de textos na internet dizendo:
Basta copiar o "addrbook-index.xml.bak" com o nome de "addrbook-index.xml" que o problema está resolvido.
É, tem razão, mas se você entrar no Claws-mail e receber a janelinha :
Erro no Livro de Endereços Não foi possível ler o índice dos endereços
E tentar ter acesso ao livro de endereços o ".bak" também é destruído. :(
Se quiser diga que eu sou chato, admito que o seja, mas por isto mesmo quero ver se consigo fazer algo mais rápido que resolva isto.
Examinando o arquivo índice ele tem umas três linhas, que chamarei de cabeçalho, seguida de linhas com a seguinte estrutura :
<book name="Endereços comuns" file="addrbook-000001.xml" />
No fim existe um "rabo" com umas outras tantas linhas do XML.
Será que o nome fantasia ("Endereços comuns" no exemplo) está também no arquivo de endereços "addrbook-000001.xml" ? A estrutura deste arquivo é similar a qualquer XML de boa origem :
<?xml version="1.0" encoding="UTF-8" ?> <address-book name="Endereços comuns" > <person uid="301623914" first-name="" last-name="" nick-name="" cn="José das Couves" > <address-list> <address uid="301623915" alias="" email="zedascouves@servemail.com.br" remarks="" /> </address-list> <attribute-list> </attribute-list> </person>
Esta estrutura "<person>" se repete "ad nauseam" e no final tem o usual fechamento do XML. Claro que o que me interessa aqui é a linha :
<address-book name="Endereços comuns" >
Se eu percorrer os arquivos com este tipo de linha eu posso reconstruir as linhas do livro de índice. Para isto escrevi o seguinte script :
#!/bin/sh # name : claws-addrbook-rec.sh # author : Fernando M. Roxo da Motta <roxo@roxo.org> # descrição : Recupera o índice do livro de endereços do Claws-mail. # changelog : # 26/06/2012 - primeira versão #set -xv OUTFIL="addrbook--index-rebuild.xml" WRKDIR="$HOME/.claws-mail/addrbook" ZEN=`which zenity` if [ ! -z "$ZEN" -a ! -d $WRKDIR ]; then $ZEN --error --text="Diretório de trabalho \"$WRKDIR\" não encontrado!" exit 2 fi cd $WRKDIR echo '<?xml version="1.0" encoding="UTF-8" ?>' > $OUTFIL echo '<addressbook>' >> $OUTFIL echo ' <book_list>' >> $OUTFIL for f in *.xml; do Lin=`grep '<address-book' $f` if [ $? -eq 0 ]; then set $Lin Linha=" `echo $Lin|sed -e 's/address-book \(.*\) >/book \1/'` file=\"$f\" />" echo "$Linha" >> $OUTFIL fi done echo ' </book_list>' >> $OUTFIL echo ' <vcard_list>' >> $OUTFIL echo ' </vcard_list>' >> $OUTFIL echo ' <jpilot_list>' >> $OUTFIL echo ' </jpilot_list>' >> $OUTFIL echo ' <ldap_list>' >> $OUTFIL echo ' </ldap_list>' >> $OUTFIL echo '</addressbook>' >> $OUTFIL if [ ! -z "$ZEN" ]; then $ZEN --question --text "Novo índice gerado\n\nSobrepõe o arquivo atual ?" if [ $? -eq 0 ]; then mv addrbook--index.xml addrbook--index.xml.$$ mv addrbook--index-rebuild.xml addrbook--index.xml if [ $? -eq 0 ]; then $ZEN --info --text "Sucesso !\n\nTente <ctrl><sfht>A para verificar." else $ZEN --error --text="Falhou !\n\nNão consegui renomear o arquivo de saída ! :(" fi fi fi
Este script reconstrói o arquivo de índice e se aprovado pelo usuário ele superpõe o arquivo de índice danificado. Para que ele funcione bem é interessante ter o Zenity instalado.
Para não ter que sair do Claws-mail para executar o script eu criei uma ação (Configuração/Ações...) que simplesmente executa o script. Após a execução não precisa nem sair do programa, é só usar o livro de endereços normalmente.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários