Changeset 19
- Timestamp:
- 08/26/08 13:35:18 (5 months ago)
- Files:
-
- trunk/pgiac/pgiac (modified) (16 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/pgiac/pgiac
r18 r19 21 21 getopts("f:"); 22 22 23 # La valeur ci-dessous d épend du système, elle doit être calculée24 # pour chaque syst ème (programme fionread extérieur).25 our $FIONREAD = 0x00541b; # Valeur par d éfaut (linux)23 # La valeur ci-dessous dépend du systÚme, elle doit être déterminée 24 # pour chaque systÚme... 25 our $FIONREAD = 0x00541b; # Valeur par défaut (linux) 26 26 27 27 our $EXECUTABLE = "giac --texmacs"; … … 34 34 35 35 36 my $VERSION = "0.1.8"; # Mardi 26 ao ût 200836 my $VERSION = "0.1.8"; # Mardi 26 août 2008 37 37 38 38 my $OUT = ""; # Contenu en sortie. 39 39 my $NBFIG = 1; # Compteur de figures. 40 40 my $COMPTEUR = 0; # Compteur de commandes. 41 my $NBCMD = 0; # Nombre de commandes successives trait ées.41 my $NBCMD = 0; # Nombre de commandes successives traitées. 42 42 43 43 my $FFIG = "pdf"; # Format des figures. … … 45 45 46 46 47 my $STRING = "verbatim"; # Sortie des cha înes de caractères47 my $STRING = "verbatim"; # Sortie des chaînes de caractÚres 48 48 my $COMMANDE = "verb"; # Affichage des commandes. 49 49 50 # --- Caract ères utilisés dans le balisage de la sortie de giac avec50 # --- CaractÚres utilisés dans le balisage de la sortie de giac avec 51 51 # l'option --texmacs. 52 52 my $chr2 = chr(2); … … 62 62 my $BLOC = ""; 63 63 64 # Commande pour d éterminer la BoundingBox d'un fichier EPS via GS.64 # Commande pour déterminer la BoundingBox d'un fichier EPS via GS. 65 65 my $GSBBOX = "gs -q -sDEVICE=bbox -sPAPERSIZE=a4 -dNOPAUSE -dNOSAFER"; 66 66 … … 82 82 my $PIDF = fork(); 83 83 84 # === Proc édure principale =============================================84 # === Procédure principale ============================================= 85 85 unless ($PIDF) { 86 86 sleep 0.5; … … 98 98 fcntl(INF,F_GETFL,$attributs); 99 99 $attributs |= O_NONBLOCK; 100 fcntl(INF,F_SETFL,$attributs) or die "Probl ème: $!\n";100 fcntl(INF,F_SETFL,$attributs) or die "ProblÚme: $!\n"; 101 101 &Init; 102 102 while (<INGIAC>) { … … 133 133 134 134 # === GetTaille ======================================================== 135 # Cette proc édure scrute le descripteur INF en lecture jusqu'àce qu'il136 # contienne des donn ées, la taille de ces données est alors retournée.135 # Cette procédure scrute le descripteur INF en lecture jusqu'à ce qu'il 136 # contienne des données, la taille de ces données est alors retournée. 137 137 sub GetTaille { 138 138 my $taille = 0; … … 141 141 $taille = pack("L",0); 142 142 ioctl(INF,$FIONREAD,$taille) 143 or die "Probl ème (ioctl dans GetTaille) : $!\n";143 or die "ProblÚme (ioctl dans GetTaille) : $!\n"; 144 144 $taille = unpack("L",$taille); 145 145 } … … 148 148 149 149 # === GetTampon ======================================================== 150 # R écupérer les données dans le descripteur de sortie de giac.150 # Récupérer les données dans le descripteur de sortie de giac. 151 151 sub GetTampon { 152 152 my $tampon = my $tmp = ""; … … 163 163 164 164 # === Init ============================================================= 165 # Cette proc édure vide le descripteur INF des données transmises au tout166 # d ébut de la séquence.165 # Cette procédure vide le descripteur INF des données transmises au tout 166 # début de la séquence. 167 167 sub Init { 168 168 my $t = &GetTampon(); 169 169 } 170 170 171 # === Ex écution ========================================================171 # === Exécution ======================================================== 172 172 sub Executer { 173 173 my ($t,$a) = @_; … … 189 189 190 190 # === GetOutGiac ======================================================= 191 # Cette proc édure analyse ce qui est récupérédans le descripteur de192 # sortie de giac. Au d ébut, les procédures d'appui.191 # Cette procédure analyse ce qui est récupéré dans le descripteur de 192 # sortie de giac. Au début, les procédures d'appui. 193 193 194 194 ## Option $COMMANDE = listing : Guillaume Connan - 9 juin 2008 … … 251 251 252 252 sub GetOutGiac { 253 # $c est le texte de la commande, $r est la r éponse fournie par giac.253 # $c est le texte de la commande, $r est la réponse fournie par giac. 254 254 my ($c,$r) = @_; 255 # Incr émentation du compteur des commandes.255 # Incrémentation du compteur des commandes. 256 256 $COMPTEUR++; 257 257 print LOG "Commande $COMPTEUR\n"; 258 # Segmentation de la r éponse (un peu simpliste pour l'instant, cela ne259 # tient pas compte des embo îtements...)258 # Segmentation de la réponse (un peu simpliste pour l'instant, cela ne 259 # tient pas compte des emboîtements...) 260 260 my @champs = split /$chr2/, $r; shift @champs; 261 261 my %reponse = (); … … 271 271 # Nettoyage 272 272 $v =~ s/$chr5//g; $v =~ s/^\s*|\s*$//g; 273 # Affectation - La succession ds verbatim reste à règler,274 # éventuellement...273 # Affectation - La succession ds verbatim reste à rÚgler, 274 # éventuellement... 275 275 $reponse{$n} = $v; 276 276 print LOG "$n:\n$v\n"; … … 294 294 $OUT .= &outCommande($c); 295 295 $COMPTEUR++; 296 # Nettoyage de la r éponse. Pour l'instant, suppression des deux297 # premi ère lignes (verbatim) et de la dernière (prompt).296 # Nettoyage de la réponse. Pour l'instant, suppression des deux 297 # premiÚre lignes (verbatim) et de la derniÚre (prompt). 298 298 my @l = split(/\n/,$r); pop @l; shift @l; shift @l; 299 # Suppression d'une s équence chr2verbatim: observée en tête de300 # troisi ème ligne, curieux :)299 # Suppression d'une séquence chr2verbatim: observée en tête de 300 # troisiÚme ligne, curieux :) 301 301 $l[0] =~ s/^${chr2}verbatim://; 302 # Cr éation du fichier MetaPost.302 # Création du fichier MetaPost. 303 303 open(MP,">giac-temp.mp"); print MP join("\n",@l); close MP; 304 304 # Compilation... 305 305 qx{mpost giac-temp.mp}; 306 # Inscription de la r éponse dans la sortie.306 # Inscription de la réponse dans la sortie. 307 307 if (-f "giac-temp.1") { 308 308 # Transformation au format PDF … … 316 316 $OUT .= &outGraphics($v); 317 317 } else { 318 $OUT .= &outVerbatim("Erreur, l'image n'est pas trouv ée !");318 $OUT .= &outVerbatim("Erreur, l'image n'est pas trouvée !"); 319 319 } 320 320 } … … 335 335 unlink "pgiac-$f.ps" if -f "pgiac-$f.ps"; 336 336 } 337 # === Lire des param ètres ==============================================337 # === Lire des paramÚtres ============================================== 338 338 sub LireParametres { 339 339 my $l = shift;
