On Sat, Feb 09, 2002 at 11:43:40PM +0100, Nicolas Bertolissio wrote:
> Bonjour,
> 
> Journal des modification :
> ddts-script (0.4.14) unstable; urgency=low
> 
>   * fix typo for ppart match due to ddts fix
>   * turn `until' loop into `while'
>   * prevent from using [EMAIL PROTECTED]' sample address
>     thanks to Martin Quinson for reporting these bugs
> 
> Je ne comprends pas pourquoi la deuxième modification est nécessaire, il
> me semble que ça fait la même chose, si quelqu'un peut m'expliquer...

Le while sort dès que <> rend un truc non defini. On peut le rééecrire en 
while (defined($_ = <>))
Ca s'arrete donc immédiatement si le résultat n'est pas défini.

La version en until s'arrete quand $_ concorde avec la chaine vide. Bon,
#UNDEF concorde avec cette chaine, mais c'est tout de meme mal de manipuler
#UNDEF. La preuve, on prend un warning dans les dents.


En fait, j'ai beaucoup de problemes avec le script. Il n'arrive pas à
décoder les morceaux en base64 correctement. Les symptomes, c'est qu'il
prétend qu'il n'y a rien dans le base64, et ne dit rien de plus, meme en
débug 9. Meme en ajoutant un print "Seen $_" brutal la ou la copie se fait
(autour de la ligne 891, qui est celle sur laquelle porte mon patch
précédent), on a rien. Visiblement, l'analyse du base64 s'arrete avant meme
d'avoir commencé. J'ai remplacé le corps de la boucle "Read the mail text"
par ca:
# Read the mail text
while (<>) {
        $filename = $1 if (/filename="([^"]*)"/);
        if (/Content-Transfer-Encoding: base64/) {
            $base64   = 1;
            next; # skip the first empty line
        }

        if (/$boundary/) {
                undef $filename;
                undef $base64;
                next;
        }

        next unless (defined $base64);
        next unless (defined $filename);
        next if ($filename =~ /^close-bug/);                    # skip bug 
closure
        
        next if /^$/;
        $filename =~ s/^new(\..*)?/new/;                        # new\..* 
contains descriptions to translate
        open  FILE, ">$temp_dir/ddts-$filename-$$"      || die "Can't create 
temp file `ddts-$filename-$$': $!";
        print FILE "begin-base64 400 $temp_dir/ddts-$filename-$$\n";
        while (<>) {
          last if /^$/;
          print FILE $_;
        }
        print FILE "====";
        close FILE                                      || die "Can't write 
temp file `ddts-$filename-$$': $!";

        &parse_uuencoded("$temp_dir/ddts-$filename-$$", $report_id);
        unlink "$temp_dir/ddts-$filename-$$"            || die "Can't remove 
temp file `ddts-$filename-$$': $!";
}

Ce qui change, c'est que maintenant, j'arrive à commencer à lire le bout en
base64, et j'ai bien les fichiers à faire sur mon disque. Mais par contre,
c'est la derniere chose que fait le script. Apres avoir parsé le boulot à
faire, il échoue avec un "ERROR unknown line" tout à fait compréhensible,
puisque la ligne donnée comme inconnue n'est pas faite de caractères
affichables. Alors c'est pas tres grave, puisque je recois le boulot a
faire, mais j'ai pas les bugs attachés (dans le cas d'une traduction à
reprendre de quelqu'un d'autre).

Et pis, j'ai l'impression que j'ai tout cassé dans ton beau script, Nico.

D'ou ma question, est ce que quelqu'un arrive à demander une traduction au
serveur, et à la parser avec le script en ce moment ? 


Merci, Mt.


Reply via email to