=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/mandoc/out.c,v retrieving revision 1.7 retrieving revision 1.8 diff -c -r1.7 -r1.8 *** src/usr.bin/mandoc/out.c 2010/08/18 02:38:40 1.7 --- src/usr.bin/mandoc/out.c 2010/09/13 22:04:01 1.8 *************** *** 1,4 **** ! /* $Id: out.c,v 1.7 2010/08/18 02:38:40 schwarze Exp $ */ /* * Copyright (c) 2009, 2010 Kristaps Dzonsons * --- 1,4 ---- ! /* $Id: out.c,v 1.8 2010/09/13 22:04:01 schwarze Exp $ */ /* * Copyright (c) 2009, 2010 Kristaps Dzonsons * *************** *** 168,173 **** --- 168,174 ---- int i, j, lim; char term, c; const char *wp; + enum roffdeco dd; *d = DECO_NONE; lim = i = 0; *************** *** 215,220 **** --- 216,223 ---- break; } break; + case ('k'): + /* FALLTHROUGH */ case ('M'): /* FALLTHROUGH */ case ('m'): *************** *** 271,277 **** return(i); i++; } ! break; case ('['): *d = DECO_SPECIAL; --- 274,300 ---- return(i); i++; } ! ! /* Handle embedded numerical subexp or escape. */ ! ! if ('(' == wp[i]) { ! while (wp[i] && ')' != wp[i]) ! if ('\\' == wp[i++]) { ! /* Handle embedded escape. */ ! *word = &wp[i]; ! i += a2roffdeco(&dd, word, sz); ! } ! ! if (')' == wp[i++]) ! break; ! ! *d = DECO_NONE; ! return(i - 1); ! } else if ('\\' == wp[i]) { ! *word = &wp[++i]; ! i += a2roffdeco(&dd, word, sz); ! } ! break; case ('['): *d = DECO_SPECIAL; *************** *** 280,285 **** --- 303,324 ---- case ('c'): *d = DECO_NOSPACE; return(i); + case ('z'): + *d = DECO_NONE; + if ('\\' == wp[i]) { + *word = &wp[++i]; + return(i + a2roffdeco(&dd, word, sz)); + } else + lim = 1; + break; + case ('o'): + /* FALLTHROUGH */ + case ('w'): + if ('\'' == wp[i++]) { + term = '\''; + break; + } + /* FALLTHROUGH */ default: *d = DECO_SSPECIAL; i--;