[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: ddts-script_0.4.14.deb



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 `me@my.isp.org' 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 to: