aplat

Documents structurés pour Unix
git clone git://git.asteride.xyz/~ldp/aplat.git
Journaux | Fichiers | Références | LISEZ-MOI | LICENCE

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:
Maplat.c | 4+++-
Mtampon.c | 13+++++++++++++
Mtampon.h | 1+
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