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.


Maldito índice do Claws-mail!

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 &lt;ctrl&gt;&lt;sfht&gt;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.

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


Veja a relação completa dos artigos de Fernando M. Roxo da Motta