#! /usr/local/bin/gforth
256 Constant max-line
Create chaine max-line allot
variable n1 0 ( longueur de la chaine lue dans le fichier )
variable n2 0 ( longueur de la chaine ajoutée )
variable n3 0 ( longueur résultante )
( ouverture des fichiers cible et source )
s" entete.txt" r/o open-file throw Value fd-in
s" scripting5.html" w/o create-file throw Value fd-out
( écriture et fermeture )
: ecri-dans ( écrit dans le fichier cible ) fd-out write-file throw ;
: ferm-dans ( ferme le fichier cible ) fd-out close-file throw ;
: ferm-source ( ferme le fichier source ) fd-in close-file throw ;
: concat_br ( concaténation )
s" <br />" dup n2 !
chaine n1 @ + swap cmove
n2 @ n1 @ + n3 !
12 n3 @ chaine + c! ;
: vide-entete ( transfert en-tete vers vers cible )
begin
chaine max-line fd-in read-line throw
while
chaine swap ecri-dans
repeat ;
: vide-fichier ( effectue le transfert source vers cible )
begin
chaine max-line fd-in read-line throw
swap dup n1 ! swap
while
concat_br
chaine n3 @ ecri-dans
repeat ;
( écrit l'en-tête dans le fichier cible puis ferme le fichier d'en-tête )
vide-entete
ferm-source
( ouvre le texte de l'article et le recopie modifié fans le fichier cible )
s" page5.txt" r/o open-file throw Value fd-in
vide-fichier
s" </p></body></html>" ecri-dans
( fermeture des deux fichiers )
ferm-source
ferm-dans
bye