commit 216a561b75dbf8302ec4abfa4389333e07375454
parent 09498a4eebf300139bcba34442434bf90fc3d764
Auteur: Selve <selve@asteride.xyz>
Date: Tue, 21 Nov 2023 16:29:50 -0500
effacement des derniers caractères d'un bloc
Un bloc ignore maintenant les caractères se trouvant entre le séparateur (""")
et la dernière nouvelle ligne (\n).
Diffstat:
3 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/aplat.c b/aplat.c
@@ -334,8 +334,10 @@ bloc(FILE *f, struct tampon *tp)
for (npar = 1; (c = getc(f)) == '"'; npar++)
;
ungetc(c, f);
- if (npar > NGUI || (npar == NGUI && c != '!'))
+ if (npar > NGUI || (npar == NGUI && c != '!')) {
+ tp_bloc_rec(tp);
return c;
+ }
while (npar-- > 0)
tp_ecr('"', tp);
continue;
diff --git a/tampon.c b/tampon.c
@@ -65,6 +65,19 @@ tp_eff(struct tampon *tp)
tp->pc = tp->tp;
}
+void
+tp_bloc_rec(struct tampon *tp)
+{
+ assert(tp != NULL);
+ assert(tp->tp != NULL);
+ assert(tp->pc != NULL);
+
+ while (tp->pc > tp->tp) {
+ if (*--tp->pc == 'n' && *--tp->pc == '\\')
+ break;
+ }
+}
+
/* supprimer le domaine cadet */
int
tp_etq_rec(struct tampon *tp)
diff --git a/tampon.h b/tampon.h
@@ -15,6 +15,7 @@ struct tampon {
int tp_init(struct tampon *, size_t taille);
int tp_ecr(char c, struct tampon *);
void tp_eff(struct tampon *);
+void tp_bloc_rec(struct tampon *);
int tp_etq_rec(struct tampon *);
#endif