commit c6d0cbdb52580af8f44f2e6a02e1aafc4cf0235b
parent 9906eea6ed58d80778218292f5b466da110686ff
Auteur: Loïc Daignault-Pichette <loic@asteride.xyz>
Date: Sat, 8 Jun 2024 14:40:20 -0400
changement de la séquence d'échappement pour « \ »
Diffstat:
3 files changed, 57 insertions(+), 84 deletions(-)
diff --git a/aplat.c b/aplat.c
@@ -291,8 +291,6 @@ echapper(FILE *f, struct tampon *tp)
cr_definir(1);
cr_definir(2);
cr_definir(3);
- cr_definir(4);
- cr_definir(5);
}
assert(0);
@@ -315,30 +313,28 @@ echapper(FILE *f, struct tampon *tp)
c = '=';
}
ungetc(c, f);
- break;
+ cr_sortir(0, 0);
case '\t':
- cr_entrer(2);
- if (tp_ecr(tp, '\\') < 0)
- cr_sortir(2, 1);
- cr_entrer(3);
- if (tp_ecr(tp, 't') < 0)
- cr_sortir(3, 1);
+ c = 't';
break;
case EOF:
cr_sortir(0, EOF);
case ':':
c = 'd';
- /* CASCADE */
+ break;
case '\\':
- cr_entrer(4);
- if (tp_ecr(tp, '\\') < 0)
- cr_sortir(4, 1);
- /* CASCADE */
+ c = 'e';
+ break;
default:
- cr_entrer(5);
- if (tp_ecr(tp, c) < 0)
- cr_sortir(5, 1);
+ goto cseulement;
}
+ cr_entrer(2);
+ if (tp_ecr(tp, '\\') < 0)
+ cr_sortir(2, 1);
+cseulement:
+ cr_entrer(3);
+ if (tp_ecr(tp, c) < 0)
+ cr_sortir(3, 1);
cr_sortir(0, 0);
}
@@ -357,11 +353,6 @@ echapper_guillemets(FILE *f, struct tampon *tp)
cr_definir(1);
cr_definir(2);
cr_definir(3);
- cr_definir(4);
- cr_definir(5);
- cr_definir(6);
- cr_definir(7);
- cr_definir(8);
}
assert(0);
@@ -387,23 +378,12 @@ echapper_guillemets(FILE *f, struct tampon *tp)
c = '=';
}
ungetc(c, f);
- cr_entrer(2);
- if (tp_ecr(tp, '\\') < 0)
- cr_sortir(2, 1);
- cr_entrer(3);
- if (tp_ecr(tp, 'n') < 0)
- cr_sortir(3, 1);
- continue;
+ c = 'n';
+ break;
case '\t':
- cr_entrer(4);
- if (tp_ecr(tp, '\\') < 0)
- cr_sortir(4, 1);
- cr_entrer(5);
- if (tp_ecr(tp, 't') < 0)
- cr_sortir(5, 1);
- continue;
+ c = 't';
+ break;
case '\\':
- cr_entrer(6);
switch (echapper(f, tp)) {
case EOF:
cr_sortir(0, EOF);
@@ -416,16 +396,18 @@ echapper_guillemets(FILE *f, struct tampon *tp)
case EOF:
cr_sortir(0, EOF);
case ':':
- cr_entrer(7);
- if (tp_ecr(tp, '\\') < 0)
- cr_sortir(7, 1);
c = 'd';
- /* CASCADE */
+ break;
default:
- cr_entrer(8);
- if (tp_ecr(tp, c) < 0)
- cr_sortir(8, 1);
+ goto cseulement;
}
+ cr_entrer(2);
+ if (tp_ecr(tp, '\\') < 0)
+ cr_sortir(2, 1);
+cseulement:
+ cr_entrer(3);
+ if (tp_ecr(tp, c) < 0)
+ cr_sortir(3, 1);
}
assert(0);
}
@@ -444,10 +426,6 @@ echapper_bloc(FILE *f, struct tampon *tp)
cr_definir(0);
cr_definir(1);
cr_definir(2);
- cr_definir(3);
- cr_definir(4);
- cr_definir(5);
- cr_definir(6);
}
assert(0);
@@ -476,34 +454,27 @@ echapper_bloc(FILE *f, struct tampon *tp)
pf = 0;
continue;
}
- cr_entrer(1);
- if (tp_ecr(tp, '\\') < 0)
- cr_sortir(1, 1);
- cr_entrer(2);
- if (tp_ecr(tp, 'n') < 0)
- cr_sortir(2, 1);
- continue;
+ c = 'n';
+ break;
case '\t':
- cr_entrer(3);
- if (tp_ecr(tp, '\\') < 0)
- cr_sortir(3, 1);
- cr_entrer(4);
- if (tp_ecr(tp, 't') < 0)
- cr_sortir(4, 1);
- continue;
+ c = 't';
+ break;
case ':':
c = 'd';
- /* CASCADE */
+ break;
case '\\':
- cr_entrer(5);
- if (tp_ecr(tp, '\\') < 0)
- cr_sortir(5, 1);
- /* CASCADE */
+ c = 'e';
+ break;
default:
- cr_entrer(6);
- if (tp_ecr(tp, c) < 0)
- cr_sortir(6, 1);
+ goto cseulement;
}
+ cr_entrer(1);
+ if (tp_ecr(tp, '\\') < 0)
+ cr_sortir(1, 1);
+cseulement:
+ cr_entrer(2);
+ if (tp_ecr(tp, c) < 0)
+ cr_sortir(2, 1);
} while ((c = getc(f)) != EOF);
cr_sortir(0, EOF);
}
diff --git a/changements.txt b/changements.txt
@@ -13,6 +13,8 @@ Version 2.0 (???)
de 256 octets pour celui du contenu.
* plat(5): Ajout de la séquence d'échappement « /d », qui signifie « : ». Les
deux-points sont donc maintenant échappables.
+* plat(5): Substitution de « \\ » par « \e » comme séquence d'échappement de
+ « \ ».
* aplat(1): La nouvelle option -V affiche la version du programme.
* aplat(1): La nouvelle optoin -h affiche le synopsis du programme.
* aplat(1): Le raccourcis syntaxique utilisant les deux-points n'existe plus.
diff --git a/man/fr/plat.5 b/man/fr/plat.5
@@ -1,4 +1,4 @@
-.Dd 6 avril 2024
+.Dd 7 juin 2024
.Dt PLAT 5
.Os
.Sh NOM
@@ -10,17 +10,19 @@ est un format de document organisé en lignes et en champs qui permet la
représentation de structures hiérarchiques.
Les utilitaires de traitement de texte conçus pour bien fonctionner dans un
environnement Unix sont donc,
-avec un peu d'aide,
+avec un peu d’aide,
tout à fait capables de le manipuler.
.Pp
Le format se présente comme une suite de lignes, chacune séparée en trois
champs\~: celui des
-.Em drapeaux
+.Em drapeaux ,
celui de l’\c
.Em étiquette ,
et celui du
.Em contenu .
-Les champs sont séparés par des caractères de tabulation
+Les champs sont séparés
+entre eux
+par des caractères de tabulation
.Pq Sq \et .
.Pp
Un
@@ -55,15 +57,13 @@ indique que la ligne est la dernière à être incluse dans un domaine donné.
Une
.Em étiquette
nomme un domaine.
-L'étiquette de chaque domaine n'est affichée qu'une seule fois,
-à l'ouverture du domaine.
+L’étiquette de chaque domaine n’est affichée qu’une seule fois,
+à l’ouverture du domaine.
Autrement dit,
-si le champ de l'étiquette n'est pas vide,
-le champ des drapeaux contient au moins
+si le champ de l’étiquette n’est pas vide,
+celui des drapeaux contient au moins
.Sq \( ,
et vice-versa.
-Ce champ ne peut pas contenir de deux-point
-.Pq Sq ":" .
.Pp
Les champs
.Em contenu
@@ -82,8 +82,8 @@ et
.Sq \et ,
respectivement.
Le caractère d’échappement lui-même peut être échappé par
-.Sq \e\e .
-Il est interdit d'échapper tout autre caractère.
+.Sq \ee .
+Il est interdit d’échapper tout autre caractère.
.Sh EXEMPLES
L’exemple suivant
(où un signe de dollar a été ajouté
@@ -111,10 +111,10 @@ suivant\~:
.Pp
Le format
.Nm
-a changé avec la version 2.0 de l'utilitaire
+a changé avec la version 2.0 de l’utilitaire
.Xr aplat 1 .
Avant cette publication,
-le champ des drapeaux suivait celui de l'étiquette,
+le champ des drapeaux suivait celui de l’étiquette,
et ce dernier contenait toute la hiérarchie des étiquettes,
du domaine racine au domaine cadet.
.Sh AUTEURS