version 1.35, 2009/03/08 13:52:29 |
version 1.37, 2009/03/09 13:17:49 |
|
|
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR |
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR |
* PERFORMANCE OF THIS SOFTWARE. |
* PERFORMANCE OF THIS SOFTWARE. |
*/ |
*/ |
|
#include <sys/types.h> |
|
|
#include <assert.h> |
#include <assert.h> |
#include <ctype.h> |
#include <ctype.h> |
#include <err.h> |
#include <err.h> |
|
|
#include <stdio.h> |
#include <stdio.h> |
#include <stdlib.h> |
#include <stdlib.h> |
#include <string.h> |
#include <string.h> |
#ifndef __OpenBSD__ |
|
#include <time.h> |
|
#endif |
|
|
|
#include "mmain.h" |
#include "mmain.h" |
#include "term.h" |
#include "term.h" |
Line 681 pescape(struct termp *p, const char *word, size_t *i, |
|
Line 680 pescape(struct termp *p, const char *word, size_t *i, |
|
{ |
{ |
size_t j; |
size_t j; |
|
|
(*i)++; |
if (++(*i) >= len) { |
assert(*i < len); |
warnx("ignoring bad escape sequence"); |
|
return; |
|
} |
|
|
if ('(' == word[*i]) { |
if ('(' == word[*i]) { |
(*i)++; |
(*i)++; |
assert(*i + 1 < len); |
if (*i + 1 >= len) { |
|
warnx("ignoring bad escape sequence"); |
|
return; |
|
} |
nescape(p, &word[*i], 2); |
nescape(p, &word[*i], 2); |
(*i)++; |
(*i)++; |
return; |
return; |
|
|
} else if ('*' == word[*i]) { |
} else if ('*' == word[*i]) { |
/* XXX - deprecated! */ |
|
(*i)++; |
(*i)++; |
assert(*i < len); |
if (*i >= len) { |
|
warnx("ignoring bad escape sequence"); |
|
return; |
|
} |
switch (word[*i]) { |
switch (word[*i]) { |
case ('('): |
case ('('): |
(*i)++; |
(*i)++; |
assert(*i + 1 < len); |
if (*i + 1 >= len) { |
|
warnx("ignoring bad escape sequence"); |
|
return; |
|
} |
nescape(p, &word[*i], 2); |
nescape(p, &word[*i], 2); |
(*i)++; |
(*i)++; |
return; |
return; |
Line 718 pescape(struct termp *p, const char *word, size_t *i, |
|
Line 727 pescape(struct termp *p, const char *word, size_t *i, |
|
for (j = 0; word[*i] && ']' != word[*i]; (*i)++, j++) |
for (j = 0; word[*i] && ']' != word[*i]; (*i)++, j++) |
/* Loop... */ ; |
/* Loop... */ ; |
|
|
assert(word[*i]); |
if (0 == word[*i]) { |
|
warnx("ignoring bad escape sequence"); |
|
return; |
|
} |
nescape(p, &word[*i - j], j); |
nescape(p, &word[*i - j], j); |
} |
} |
|
|