version 1.6, 2010/06/10 23:56:33 |
version 1.8, 2010/06/11 15:26:39 |
Line 58 static void ps_begin(struct termp *); |
|
Line 58 static void ps_begin(struct termp *); |
|
static void ps_end(struct termp *); |
static void ps_end(struct termp *); |
static void ps_advance(struct termp *, size_t); |
static void ps_advance(struct termp *, size_t); |
static void ps_endline(struct termp *); |
static void ps_endline(struct termp *); |
|
static void ps_pletter(struct termp *, char); |
static void ps_printf(struct termp *, const char *, ...); |
static void ps_printf(struct termp *, const char *, ...); |
static void ps_putchar(struct termp *, char); |
static void ps_putchar(struct termp *, char); |
|
|
Line 161 ps_end(struct termp *p) |
|
Line 162 ps_end(struct termp *p) |
|
* well as just one. |
* well as just one. |
*/ |
*/ |
|
|
|
assert(0 == p->engine.ps.psstate); |
|
assert('\0' == p->engine.ps.last); |
assert(p->engine.ps.psmarg && p->engine.ps.psmarg[0]); |
assert(p->engine.ps.psmarg && p->engine.ps.psmarg[0]); |
printf("%s", p->engine.ps.psmarg); |
printf("%s", p->engine.ps.psmarg); |
printf("showpage\n"); |
printf("showpage\n"); |
Line 226 ps_begin(struct termp *p) |
|
Line 229 ps_begin(struct termp *p) |
|
|
|
|
|
static void |
static void |
ps_letter(struct termp *p, char c) |
ps_pletter(struct termp *p, char c) |
{ |
{ |
|
|
if ( ! (PS_INLINE & p->engine.ps.psstate)) { |
if ( ! (PS_INLINE & p->engine.ps.psstate)) { |
Line 266 ps_letter(struct termp *p, char c) |
|
Line 269 ps_letter(struct termp *p, char c) |
|
|
|
|
|
static void |
static void |
|
ps_letter(struct termp *p, char c) |
|
{ |
|
char cc; |
|
|
|
if ('\0' == p->engine.ps.last) { |
|
assert(8 != c); |
|
p->engine.ps.last = c; |
|
return; |
|
} else if (8 == p->engine.ps.last) { |
|
assert(8 != c); |
|
p->engine.ps.last = c; |
|
return; |
|
} else if (8 == c) { |
|
assert(8 != p->engine.ps.last); |
|
p->engine.ps.last = c; |
|
return; |
|
} else { |
|
cc = p->engine.ps.last; |
|
p->engine.ps.last = c; |
|
c = cc; |
|
} |
|
|
|
return(ps_pletter(p, c)); |
|
} |
|
|
|
|
|
static void |
ps_advance(struct termp *p, size_t len) |
ps_advance(struct termp *p, size_t len) |
{ |
{ |
size_t i; |
size_t i; |
|
|
|
if ('\0' != p->engine.ps.last) { |
|
ps_pletter(p, p->engine.ps.last); |
|
p->engine.ps.last = '\0'; |
|
} |
|
|
if (PS_INLINE & p->engine.ps.psstate) { |
if (PS_INLINE & p->engine.ps.psstate) { |
|
assert(8 != p->engine.ps.last); |
|
if (p->engine.ps.last) |
|
ps_letter(p, p->engine.ps.last); |
|
p->engine.ps.last = '\0'; |
for (i = 0; i < len; i++) |
for (i = 0; i < len; i++) |
ps_letter(p, ' '); |
ps_letter(p, ' '); |
return; |
return; |
} |
} |
|
|
|
assert('\0' == p->engine.ps.last); |
p->engine.ps.pscol += len ? len * PS_CHAR_WIDTH : 0; |
p->engine.ps.pscol += len ? len * PS_CHAR_WIDTH : 0; |
} |
} |
|
|
|
|
ps_endline(struct termp *p) |
ps_endline(struct termp *p) |
{ |
{ |
|
|
|
if ('\0' != p->engine.ps.last) { |
|
ps_pletter(p, p->engine.ps.last); |
|
p->engine.ps.last = '\0'; |
|
} |
|
|
if (PS_INLINE & p->engine.ps.psstate) { |
if (PS_INLINE & p->engine.ps.psstate) { |
|
assert(8 != p->engine.ps.last); |
|
if (p->engine.ps.last) |
|
ps_letter(p, p->engine.ps.last); |
|
p->engine.ps.last = '\0'; |
ps_printf(p, ") show\n"); |
ps_printf(p, ") show\n"); |
p->engine.ps.psstate &= ~PS_INLINE; |
p->engine.ps.psstate &= ~PS_INLINE; |
} |
} else |
|
assert('\0' == p->engine.ps.last); |
|
|
if (PS_MARGINS & p->engine.ps.psstate) |
if (PS_MARGINS & p->engine.ps.psstate) |
return; |
return; |