version 1.157, 2010/07/02 10:50:50 |
version 1.162, 2010/07/17 12:01:43 |
|
|
/* $Id$ */ |
/* $Id$ */ |
/* |
/* |
* Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv> |
|
* Copyright (c) 2010 Ingo Schwarze <schwarze@openbsd.org> |
* |
* |
* Permission to use, copy, modify, and distribute this software for any |
* Permission to use, copy, modify, and distribute this software for any |
* purpose with or without fee is hereby granted, provided that the above |
* purpose with or without fee is hereby granted, provided that the above |
Line 364 spec(struct termp *p, const char *word, size_t len) |
|
Line 365 spec(struct termp *p, const char *word, size_t len) |
|
const char *rhs; |
const char *rhs; |
size_t sz; |
size_t sz; |
|
|
rhs = chars_a2ascii(p->symtab, word, len, &sz); |
rhs = chars_spec2str(p->symtab, word, len, &sz); |
if (rhs) |
if (rhs) |
encode(p, rhs, sz); |
encode(p, rhs, sz); |
} |
} |
Line 376 res(struct termp *p, const char *word, size_t len) |
|
Line 377 res(struct termp *p, const char *word, size_t len) |
|
const char *rhs; |
const char *rhs; |
size_t sz; |
size_t sz; |
|
|
rhs = chars_a2res(p->symtab, word, len, &sz); |
rhs = chars_res2str(p->symtab, word, len, &sz); |
if (rhs) |
if (rhs) |
encode(p, rhs, sz); |
encode(p, rhs, sz); |
} |
} |
Line 502 term_word(struct termp *p, const char *word) |
|
Line 503 term_word(struct termp *p, const char *word) |
|
|
|
p->flags &= ~TERMP_SENTENCE; |
p->flags &= ~TERMP_SENTENCE; |
|
|
/* FIXME: use strcspn. */ |
|
|
|
while (*word) { |
while (*word) { |
if ('\\' != *word) { |
if ((ssz = strcspn(word, "\\")) > 0) |
encode(p, word, 1); |
encode(p, word, ssz); |
word++; |
|
|
word += ssz; |
|
if ('\\' != *word) |
continue; |
continue; |
} |
|
|
|
seq = ++word; |
seq = ++word; |
sz = a2roffdeco(&deco, &seq, &ssz); |
sz = a2roffdeco(&deco, &seq, &ssz); |
Line 546 term_word(struct termp *p, const char *word) |
|
Line 546 term_word(struct termp *p, const char *word) |
|
* Note that we don't process the pipe: the parser sees it as |
* Note that we don't process the pipe: the parser sees it as |
* punctuation, but we don't in terms of typography. |
* punctuation, but we don't in terms of typography. |
*/ |
*/ |
if (sv[0] && 0 == sv[1]) |
if (sv[0] && '\0' == sv[1]) |
switch (sv[0]) { |
switch (sv[0]) { |
case('('): |
case('('): |
/* FALLTHROUGH */ |
/* FALLTHROUGH */ |