version 1.12, 2010/05/12 17:08:03 |
version 1.14, 2010/05/15 06:48:13 |
|
|
mandoc_eos(const char *p, size_t sz) |
mandoc_eos(const char *p, size_t sz) |
{ |
{ |
|
|
assert(sz); |
if (0 == sz) |
|
return(0); |
|
|
switch (p[(int)sz - 1]) { |
/* |
case ('.'): |
* End-of-sentence recognition must include situations where |
/* Escaped periods. */ |
* some symbols, such as `)', allow prior EOS punctuation to |
if (sz > 1 && '\\' == p[(int)sz - 2]) |
* propogate outward. |
|
*/ |
|
|
|
for ( ; sz; sz--) { |
|
switch (p[(int)sz - 1]) { |
|
case ('\"'): |
|
/* FALLTHROUGH */ |
|
case ('\''): |
|
/* FALLTHROUGH */ |
|
case (')'): |
|
break; |
|
case ('.'): |
|
/* Escaped periods. */ |
|
if (sz > 1 && '\\' == p[(int)sz - 2]) |
|
return(0); |
|
/* FALLTHROUGH */ |
|
case ('!'): |
|
/* FALLTHROUGH */ |
|
case ('?'): |
|
return(1); |
|
default: |
return(0); |
return(0); |
/* FALLTHROUGH */ |
} |
case ('!'): |
|
/* FALLTHROUGH */ |
|
case ('?'): |
|
break; |
|
default: |
|
return(0); |
|
} |
} |
|
|
return(1); |
return(0); |
} |
} |