aplat

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

commit fc484dbd9ae92525bd8907f7a908ae7dffc1f607
parent 4de5b23fc2d16e7b91fdf8386f84b7f5d98cb79e
Auteur: Selve <selve@asteride.xyz>
Date:   Sat, 18 Nov 2023 17:25:17 -0500

réorganisation des fichiers

Il y a moins de fichiers .h.

Diffstat:
MMakefile | 4++--
Maplat.c | 30++++++++++++++++++++++++++----
Detq.c | 49-------------------------------------------------
Detq.h | 12------------
Mtampon.c | 20++++++++++++++++++++
Mtampon.h | 4++++
Dtxt.c | 21---------------------
Dtxt.h | 8--------
8 files changed, 52 insertions(+), 96 deletions(-)

diff --git a/Makefile b/Makefile @@ -8,8 +8,8 @@ PREFIX = "/usr/local/bin" all: aplat -aplat: aplat.o tampon.o etq.o txt.o - ${CC} ${COPT} -o "$@" aplat.o tampon.o etq.o txt.o +aplat: aplat.o tampon.o + ${CC} ${COPT} -o "$@" aplat.o tampon.o install: aplat install -m 755 aplat ${PREFIX}/aplat diff --git a/aplat.c b/aplat.c @@ -3,8 +3,6 @@ #include <stdlib.h> #include "tampon.h" -#include "etq.h" -#include "txt.h" #define TLL_ETQ 4096 /* taille initiale du tampon à étiquettes */ #define TLL_TXT 4096 /* taille initiale du tampon à texte */ @@ -218,19 +216,43 @@ prch_jeton(FILE *f, struct tampon *tp, int tp_type) int afficher_ligne(struct tampon *etq, struct tampon *txt, int *draps) { + char *c; + assert(etq != NULL); assert(txt != NULL); assert(draps != NULL); + assert(etq->tp != NULL); + assert(txt->tp != NULL); + assert(etq->pc != NULL); + assert(txt->pc != NULL); + + /* étiquettes */ + for (c = etq->tp; c < etq->pc; c++) { + if (*c == '\\') + /* les autres /\\./ doivent être préservés */ + if (*++c != ':') + putc('\\', stdout); + if (putc(*c, stdout) < 0) + return -1; + } + putc(':', stdout); - tp_txt_aff(etq); putc('\t', stdout); + + /* drapeaux */ if (*draps & DRAP_PARG) putc('(', stdout); if (*draps & DRAP_PARD) putc(')', stdout); *draps = 0; + putc('\t', stdout); - tp_txt_aff(txt); + + /* contenu */ + for (c = txt->tp; c < txt->pc; c++) + if (putc(*c, stdout) < 0) + return -1; + tp_eff(txt); putc('\n', stdout); return 0; diff --git a/etq.c b/etq.c @@ -1,49 +0,0 @@ -#include <assert.h> -#include <stdio.h> - -#include "etq.h" -#include "tampon.h" - -/* afficher le contenu d'un tampon etq en sortie standard */ -int -tp_etq_aff(struct tampon *tp) -{ - char *c; - - assert(tp != NULL); - assert(tp->tp != NULL); - assert(tp->pc != NULL); - assert(tp->pc - tp->tp > 0); - assert(*tp->tp == ':'); - - for (c = tp->tp; c < tp->pc; c++) { - if (*c == '\\') - /* les autres /\\./ doivent être préservés */ - if (*++c != ':') - putc('\\', stdout); - if (putc(*c, stdout) < 0) - return -1; - } - putc(':', stdout); - return 0; -} - -/* supprimer le domaine cadet */ -int -tp_etq_rec(struct tampon *tp) -{ - assert(tp != NULL); - assert(tp->tp != NULL); - assert(tp->pc != NULL); - assert(tp->pc - tp->tp > 1); - assert(*tp->tp == ':'); - - --tp->pc; - while (*--tp->pc != ':') - ; - if (tp->pc - tp->tp != 0 && *(tp->pc-1) == '\\') { - --tp->pc; - return ETQ_SEP_FICT; - } - return ETQ_SEP_REEL; -} diff --git a/etq.h b/etq.h @@ -1,12 +0,0 @@ -#ifndef ETQ_H -#define ETQ_H - -#include "tampon.h" - -#define ETQ_SEP_REEL 0 /* séparateur réel */ -#define ETQ_SEP_FICT 1 /* séparateur fictif (échappé) */ - -int tp_etq_aff(struct tampon *); -int tp_etq_rec(struct tampon *); - -#endif diff --git a/tampon.c b/tampon.c @@ -62,3 +62,23 @@ tp_eff(struct tampon *tp) tp->pc = tp->tp; } + +/* supprimer le domaine cadet */ +int +tp_etq_rec(struct tampon *tp) +{ + assert(tp != NULL); + assert(tp->tp != NULL); + assert(tp->pc != NULL); + assert(tp->pc - tp->tp > 1); + assert(*tp->tp == ':'); + + --tp->pc; + while (*--tp->pc != ':') + ; + if (tp->pc - tp->tp != 0 && *(tp->pc-1) == '\\') { + --tp->pc; + return ETQ_SEP_FICT; + } + return ETQ_SEP_REEL; +} diff --git a/tampon.h b/tampon.h @@ -3,6 +3,9 @@ #define TP_FACT_AGR 2 /* facteur d'agrandissement d'un tampon */ +#define ETQ_SEP_REEL 0 /* séparateur réel */ +#define ETQ_SEP_FICT 1 /* séparateur fictif (échappé) */ + struct tampon { char *tp; /* le tampon lui-même */ char *pc; /* ptr vers la prochaine cellule libre */ @@ -13,5 +16,6 @@ int tp_init(struct tampon *, size_t taille); int tp_ecr(char c, struct tampon *); int tp_plein(char c,struct tampon *); void tp_eff(struct tampon *); +int tp_etq_rec(struct tampon *); #endif diff --git a/txt.c b/txt.c @@ -1,21 +0,0 @@ -#include <assert.h> -#include <stdio.h> - -#include "tampon.h" -#include "txt.h" - -/* afficher le contenu d'un tampon txt en sortie standard */ -int -tp_txt_aff(struct tampon *tp) -{ - char *c; - - assert(tp != NULL); - assert(tp->tp != NULL); - assert(tp->pc != NULL); - - for (c = tp->tp; c < tp->pc; c++) - if (putc(*c, stdout) < 0) - return -1; - return 0; -} diff --git a/txt.h b/txt.h @@ -1,8 +0,0 @@ -#ifndef TXT_H -#define TXT_H - -#include "tampon.h" - -int tp_txt_aff(struct tampon *); - -#endif