summaryrefslogtreecommitdiffstats
path: root/text-utils/display.c
diff options
context:
space:
mode:
Diffstat (limited to 'text-utils/display.c')
-rw-r--r--text-utils/display.c35
1 files changed, 22 insertions, 13 deletions
diff --git a/text-utils/display.c b/text-utils/display.c
index 475ec000d..0782c9c12 100644
--- a/text-utils/display.c
+++ b/text-utils/display.c
@@ -189,33 +189,42 @@ void display(void)
while ((bp = get()) != NULL) {
fs = &fshead; savebp = bp; saveaddress = address;
+
list_for_each(p, fs) {
fss = list_entry(p, FS, fslist);
+
list_for_each(q, &fss->fulist) {
fu = list_entry(q, FU, fulist);
+
if (fu->flags&F_IGNORE)
break;
+
cnt = fu->reps;
+
while (cnt) {
list_for_each(r, &fu->prlist) {
pr = list_entry(r, PR, prlist);
- if (eaddress && address >= eaddress &&
- !(pr->flags&(F_TEXT|F_BPAD)))
- bpad(pr);
- if (cnt == 1 && pr->nospace) {
- savech = *pr->nospace;
- *pr->nospace = '\0';
- }
- print(pr, bp);
- if (cnt == 1 && pr->nospace)
- *pr->nospace = savech;
- address += pr->bcnt;
- bp += pr->bcnt;
+
+ if (eaddress && address >= eaddress
+ && !(pr->flags&(F_TEXT|F_BPAD)))
+ bpad(pr);
+
+ if (cnt == 1 && pr->nospace) {
+ savech = *pr->nospace;
+ *pr->nospace = '\0';
+ print(pr, bp);
+ *pr->nospace = savech;
+ } else
+ print(pr, bp);
+
+ address += pr->bcnt;
+ bp += pr->bcnt;
}
--cnt;
}
}
- bp = savebp; address = saveaddress;
+ bp = savebp;
+ address = saveaddress;
}
}
if (endfu) {