Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| SHA1 Hash: | 717cd2782c41addd04e1b37107d0505645562dfa |
|---|---|
| Date: | 2012-08-10 12:59:56 |
| User: | drh |
| Comment: | Allow the style= attribute in wiki markup. |
Tags And Properties
- branch=trunk inherited from [bf1c21ba16]
- sym-trunk inherited from [bf1c21ba16]
Changes
Changes to src/wikiformat.c
52 #define ATTR_HSPACE 15 52 #define ATTR_HSPACE 15 53 #define ATTR_ID 16 53 #define ATTR_ID 16 54 #define ATTR_NAME 17 54 #define ATTR_NAME 17 55 #define ATTR_ROWSPAN 18 55 #define ATTR_ROWSPAN 18 56 #define ATTR_SIZE 19 56 #define ATTR_SIZE 19 57 #define ATTR_SRC 20 57 #define ATTR_SRC 20 58 #define ATTR_START 21 58 #define ATTR_START 21 > 59 #define ATTR_STYLE 22 59 #define ATTR_TARGET 22 | 60 #define ATTR_TARGET 23 60 #define ATTR_TYPE 23 | 61 #define ATTR_TYPE 24 61 #define ATTR_VALIGN 24 | 62 #define ATTR_VALIGN 25 62 #define ATTR_VALUE 25 | 63 #define ATTR_VALUE 26 63 #define ATTR_VSPACE 26 | 64 #define ATTR_VSPACE 27 64 #define ATTR_WIDTH 27 | 65 #define ATTR_WIDTH 28 65 #define AMSK_ALIGN 0x0000001 | 66 #define AMSK_ALIGN 0x00000001 66 #define AMSK_ALT 0x0000002 | 67 #define AMSK_ALT 0x00000002 67 #define AMSK_BGCOLOR 0x0000004 | 68 #define AMSK_BGCOLOR 0x00000004 68 #define AMSK_BORDER 0x0000008 | 69 #define AMSK_BORDER 0x00000008 69 #define AMSK_CELLPADDING 0x0000010 | 70 #define AMSK_CELLPADDING 0x00000010 70 #define AMSK_CELLSPACING 0x0000020 | 71 #define AMSK_CELLSPACING 0x00000020 > 72 #define AMSK_CLASS 0x00000040 71 #define AMSK_CLEAR 0x0000040 | 73 #define AMSK_CLEAR 0x00000080 72 #define AMSK_COLOR 0x0000080 | 74 #define AMSK_COLOR 0x00000100 73 #define AMSK_COLSPAN 0x0000100 | 75 #define AMSK_COLSPAN 0x00000200 74 #define AMSK_COMPACT 0x0000200 | 76 #define AMSK_COMPACT 0x00000400 75 #define AMSK_FACE 0x0000400 | 77 #define AMSK_FACE 0x00000800 76 #define AMSK_HEIGHT 0x0000800 | 78 #define AMSK_HEIGHT 0x00001000 77 #define AMSK_HREF 0x0001000 | 79 #define AMSK_HREF 0x00002000 78 #define AMSK_HSPACE 0x0002000 | 80 #define AMSK_HSPACE 0x00004000 79 #define AMSK_ID 0x0004000 | 81 #define AMSK_ID 0x00008000 80 #define AMSK_NAME 0x0008000 | 82 #define AMSK_NAME 0x00010000 81 #define AMSK_ROWSPAN 0x0010000 | 83 #define AMSK_ROWSPAN 0x00020000 82 #define AMSK_SIZE 0x0020000 | 84 #define AMSK_SIZE 0x00040000 83 #define AMSK_SRC 0x0040000 | 85 #define AMSK_SRC 0x00080000 84 #define AMSK_START 0x0080000 | 86 #define AMSK_START 0x00100000 > 87 #define AMSK_STYLE 0x00200000 > 88 #define AMSK_TARGET 0x00400000 85 #define AMSK_TYPE 0x0100000 | 89 #define AMSK_TYPE 0x00800000 86 #define AMSK_VALIGN 0x0200000 | 90 #define AMSK_VALIGN 0x01000000 87 #define AMSK_VALUE 0x0400000 | 91 #define AMSK_VALUE 0x02000000 88 #define AMSK_VSPACE 0x0800000 | 92 #define AMSK_VSPACE 0x04000000 89 #define AMSK_WIDTH 0x1000000 | 93 #define AMSK_WIDTH 0x08000000 90 #define AMSK_CLASS 0x2000000 < 91 #define AMSK_TARGET 0x4000000 < 92 94 93 static const struct AllowedAttribute { 95 static const struct AllowedAttribute { 94 const char *zName; 96 const char *zName; 95 unsigned int iMask; 97 unsigned int iMask; 96 } aAttribute[] = { 98 } aAttribute[] = { 97 { 0, 0 }, 99 { 0, 0 }, 98 { "align", AMSK_ALIGN, }, 100 { "align", AMSK_ALIGN, }, ................................................................................................................................................................................ 112 { "hspace", AMSK_HSPACE, }, 114 { "hspace", AMSK_HSPACE, }, 113 { "id", AMSK_ID, }, 115 { "id", AMSK_ID, }, 114 { "name", AMSK_NAME, }, 116 { "name", AMSK_NAME, }, 115 { "rowspan", AMSK_ROWSPAN, }, 117 { "rowspan", AMSK_ROWSPAN, }, 116 { "size", AMSK_SIZE, }, 118 { "size", AMSK_SIZE, }, 117 { "src", AMSK_SRC, }, 119 { "src", AMSK_SRC, }, 118 { "start", AMSK_START, }, 120 { "start", AMSK_START, }, > 121 { "style", AMSK_STYLE, }, 119 { "target", AMSK_TARGET, }, 122 { "target", AMSK_TARGET, }, 120 { "type", AMSK_TYPE, }, 123 { "type", AMSK_TYPE, }, 121 { "valign", AMSK_VALIGN, }, 124 { "valign", AMSK_VALIGN, }, 122 { "value", AMSK_VALUE, }, 125 { "value", AMSK_VALUE, }, 123 { "vspace", AMSK_VSPACE, }, 126 { "vspace", AMSK_VSPACE, }, 124 { "width", AMSK_WIDTH, }, 127 { "width", AMSK_WIDTH, }, 125 }; 128 }; ................................................................................................................................................................................ 239 const char *zName; /* Name of the markup */ 242 const char *zName; /* Name of the markup */ 240 char iCode; /* The MARKUP_* code */ 243 char iCode; /* The MARKUP_* code */ 241 short int iType; /* The MUTYPE_* code */ 244 short int iType; /* The MUTYPE_* code */ 242 int allowedAttr; /* Allowed attributes on this markup */ 245 int allowedAttr; /* Allowed attributes on this markup */ 243 } aMarkup[] = { 246 } aMarkup[] = { 244 { 0, MARKUP_INVALID, 0, 0 }, 247 { 0, MARKUP_INVALID, 0, 0 }, 245 { "a", MARKUP_A, MUTYPE_HYPERLINK, 248 { "a", MARKUP_A, MUTYPE_HYPERLINK, 246 AMSK_HREF|AMSK_NAME|AMSK_CLASS|AMSK_TARGET }, | 249 AMSK_HREF|AMSK_NAME|AMSK_CLASS|AMSK_TARGET|AMSK_STYLE }, 247 { "address", MARKUP_ADDRESS, MUTYPE_BLOCK, 0 }, | 250 { "address", MARKUP_ADDRESS, MUTYPE_BLOCK, AMSK_STYLE }, 248 { "b", MARKUP_B, MUTYPE_FONT, 0 }, | 251 { "b", MARKUP_B, MUTYPE_FONT, AMSK_STYLE }, 249 { "big", MARKUP_BIG, MUTYPE_FONT, 0 }, | 252 { "big", MARKUP_BIG, MUTYPE_FONT, AMSK_STYLE }, 250 { "blockquote", MARKUP_BLOCKQUOTE, MUTYPE_BLOCK, 0 }, | 253 { "blockquote", MARKUP_BLOCKQUOTE, MUTYPE_BLOCK, AMSK_STYLE }, 251 { "br", MARKUP_BR, MUTYPE_SINGLE, AMSK_CLEAR }, | 254 { "br", MARKUP_BR, MUTYPE_SINGLE, AMSK_CLEAR }, 252 { "center", MARKUP_CENTER, MUTYPE_BLOCK, 0 }, | 255 { "center", MARKUP_CENTER, MUTYPE_BLOCK, AMSK_STYLE }, 253 { "cite", MARKUP_CITE, MUTYPE_FONT, 0 }, | 256 { "cite", MARKUP_CITE, MUTYPE_FONT, AMSK_STYLE }, 254 { "code", MARKUP_CODE, MUTYPE_FONT, 0 }, | 257 { "code", MARKUP_CODE, MUTYPE_FONT, AMSK_STYLE }, 255 { "col", MARKUP_COL, MUTYPE_SINGLE, 258 { "col", MARKUP_COL, MUTYPE_SINGLE, 256 AMSK_ALIGN|AMSK_CLASS|AMSK_COLSPAN|AMSK_WIDTH }, | 259 AMSK_ALIGN|AMSK_CLASS|AMSK_COLSPAN|AMSK_WIDTH|AMSK_STYLE }, 257 { "colgroup", MARKUP_COLGROUP, MUTYPE_BLOCK, 260 { "colgroup", MARKUP_COLGROUP, MUTYPE_BLOCK, 258 AMSK_ALIGN|AMSK_CLASS|AMSK_COLSPAN|AMSK_WIDTH}, | 261 AMSK_ALIGN|AMSK_CLASS|AMSK_COLSPAN|AMSK_WIDTH|AMSK_STYLE}, 259 { "dd", MARKUP_DD, MUTYPE_LI, 0 }, | 262 { "dd", MARKUP_DD, MUTYPE_LI, AMSK_STYLE }, 260 { "dfn", MARKUP_DFN, MUTYPE_FONT, 0 }, | 263 { "dfn", MARKUP_DFN, MUTYPE_FONT, AMSK_STYLE }, 261 { "div", MARKUP_DIV, MUTYPE_BLOCK, AMSK_ID|AMSK_CLAS | 264 { "div", MARKUP_DIV, MUTYPE_BLOCK, > 265 AMSK_ID|AMSK_CLASS|AMSK_STYLE }, 262 { "dl", MARKUP_DL, MUTYPE_LIST, AMSK_COMPACT }, | 266 { "dl", MARKUP_DL, MUTYPE_LIST, > 267 AMSK_COMPACT|AMSK_STYLE }, 263 { "dt", MARKUP_DT, MUTYPE_LI, 0 }, | 268 { "dt", MARKUP_DT, MUTYPE_LI, AMSK_STYLE }, 264 { "em", MARKUP_EM, MUTYPE_FONT, 0 }, | 269 { "em", MARKUP_EM, MUTYPE_FONT, AMSK_STYLE }, 265 { "font", MARKUP_FONT, MUTYPE_FONT, 270 { "font", MARKUP_FONT, MUTYPE_FONT, 266 AMSK_COLOR|AMSK_FACE|AMSK_SIZE }, | 271 AMSK_COLOR|AMSK_FACE|AMSK_SIZE|AMSK_STYLE }, 267 { "h1", MARKUP_H1, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_C | 272 { "h1", MARKUP_H1, MUTYPE_BLOCK, > 273 AMSK_ALIGN|AMSK_CLASS|AMSK_STYLE }, 268 { "h2", MARKUP_H2, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_C | 274 { "h2", MARKUP_H2, MUTYPE_BLOCK, > 275 AMSK_ALIGN|AMSK_CLASS|AMSK_STYLE }, 269 { "h3", MARKUP_H3, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_C | 276 { "h3", MARKUP_H3, MUTYPE_BLOCK, > 277 AMSK_ALIGN|AMSK_CLASS|AMSK_STYLE }, 270 { "h4", MARKUP_H4, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_C | 278 { "h4", MARKUP_H4, MUTYPE_BLOCK, > 279 AMSK_ALIGN|AMSK_CLASS|AMSK_STYLE }, 271 { "h5", MARKUP_H5, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_C | 280 { "h5", MARKUP_H5, MUTYPE_BLOCK, > 281 AMSK_ALIGN|AMSK_CLASS|AMSK_STYLE }, 272 { "h6", MARKUP_H6, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_C | 282 { "h6", MARKUP_H6, MUTYPE_BLOCK, > 283 AMSK_ALIGN|AMSK_CLASS|AMSK_STYLE }, 273 { "hr", MARKUP_HR, MUTYPE_SINGLE, 284 { "hr", MARKUP_HR, MUTYPE_SINGLE, 274 AMSK_ALIGN|AMSK_COLOR|AMSK_SIZE|AMSK_WIDTH|AMSK_CLASS }, | 285 AMSK_ALIGN|AMSK_COLOR|AMSK_SIZE|AMSK_WIDTH| > 286 AMSK_STYLE|AMSK_CLASS }, 275 { "i", MARKUP_I, MUTYPE_FONT, 0 }, | 287 { "i", MARKUP_I, MUTYPE_FONT, AMSK_STYLE }, 276 { "img", MARKUP_IMG, MUTYPE_SINGLE, 288 { "img", MARKUP_IMG, MUTYPE_SINGLE, 277 AMSK_ALIGN|AMSK_ALT|AMSK_BORDER|AMSK_HEIGHT| 289 AMSK_ALIGN|AMSK_ALT|AMSK_BORDER|AMSK_HEIGHT| 278 AMSK_HSPACE|AMSK_SRC|AMSK_VSPACE|AMSK_WIDTH }, | 290 AMSK_HSPACE|AMSK_SRC|AMSK_VSPACE|AMSK_WIDTH|AMSK_STYLE }, 279 { "kbd", MARKUP_KBD, MUTYPE_FONT, 0 }, | 291 { "kbd", MARKUP_KBD, MUTYPE_FONT, AMSK_STYLE }, 280 { "li", MARKUP_LI, MUTYPE_LI, 292 { "li", MARKUP_LI, MUTYPE_LI, 281 AMSK_TYPE|AMSK_VALUE }, | 293 AMSK_TYPE|AMSK_VALUE|AMSK_STYLE }, 282 { "nobr", MARKUP_NOBR, MUTYPE_FONT, 0 }, 294 { "nobr", MARKUP_NOBR, MUTYPE_FONT, 0 }, 283 { "nowiki", MARKUP_NOWIKI, MUTYPE_SPECIAL, 0 }, 295 { "nowiki", MARKUP_NOWIKI, MUTYPE_SPECIAL, 0 }, 284 { "ol", MARKUP_OL, MUTYPE_LIST, 296 { "ol", MARKUP_OL, MUTYPE_LIST, 285 AMSK_START|AMSK_TYPE|AMSK_COMPACT }, | 297 AMSK_START|AMSK_TYPE|AMSK_COMPACT|AMSK_STYLE }, 286 { "p", MARKUP_P, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_C | 298 { "p", MARKUP_P, MUTYPE_BLOCK, > 299 AMSK_ALIGN|AMSK_CLASS|AMSK_STYLE }, 287 { "pre", MARKUP_PRE, MUTYPE_BLOCK, 0 }, | 300 { "pre", MARKUP_PRE, MUTYPE_BLOCK, AMSK_STYLE }, 288 { "s", MARKUP_S, MUTYPE_FONT, 0 }, | 301 { "s", MARKUP_S, MUTYPE_FONT, AMSK_STYLE }, 289 { "samp", MARKUP_SAMP, MUTYPE_FONT, 0 }, | 302 { "samp", MARKUP_SAMP, MUTYPE_FONT, AMSK_STYLE }, 290 { "small", MARKUP_SMALL, MUTYPE_FONT, 0 }, | 303 { "small", MARKUP_SMALL, MUTYPE_FONT, AMSK_STYLE }, 291 { "span", MARKUP_SPAN, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_C | 304 { "span", MARKUP_SPAN, MUTYPE_BLOCK, > 305 AMSK_ALIGN|AMSK_CLASS|AMSK_STYLE }, 292 { "strike", MARKUP_STRIKE, MUTYPE_FONT, 0 }, | 306 { "strike", MARKUP_STRIKE, MUTYPE_FONT, AMSK_STYLE }, 293 { "strong", MARKUP_STRONG, MUTYPE_FONT, 0 }, | 307 { "strong", MARKUP_STRONG, MUTYPE_FONT, AMSK_STYLE }, 294 { "sub", MARKUP_SUB, MUTYPE_FONT, 0 }, | 308 { "sub", MARKUP_SUB, MUTYPE_FONT, AMSK_STYLE }, 295 { "sup", MARKUP_SUP, MUTYPE_FONT, 0 }, | 309 { "sup", MARKUP_SUP, MUTYPE_FONT, AMSK_STYLE }, 296 { "table", MARKUP_TABLE, MUTYPE_TABLE, 310 { "table", MARKUP_TABLE, MUTYPE_TABLE, 297 AMSK_ALIGN|AMSK_BGCOLOR|AMSK_BORDER|AMSK_CELLPADDING| 311 AMSK_ALIGN|AMSK_BGCOLOR|AMSK_BORDER|AMSK_CELLPADDING| 298 AMSK_CELLSPACING|AMSK_HSPACE|AMSK_VSPACE|AMSK_CLASS }, | 312 AMSK_CELLSPACING|AMSK_HSPACE|AMSK_VSPACE|AMSK_CLASS| > 313 AMSK_STYLE }, 299 { "tbody", MARKUP_TBODY, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_C | 314 { "tbody", MARKUP_TBODY, MUTYPE_BLOCK, > 315 AMSK_ALIGN|AMSK_CLASS|AMSK_STYLE }, 300 { "td", MARKUP_TD, MUTYPE_TD, 316 { "td", MARKUP_TD, MUTYPE_TD, 301 AMSK_ALIGN|AMSK_BGCOLOR|AMSK_COLSPAN| 317 AMSK_ALIGN|AMSK_BGCOLOR|AMSK_COLSPAN| 302 AMSK_ROWSPAN|AMSK_VALIGN|AMSK_CLASS }, | 318 AMSK_ROWSPAN|AMSK_VALIGN|AMSK_CLASS|AMSK_STYLE }, 303 { "tfoot", MARKUP_TFOOT, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_C | 319 { "tfoot", MARKUP_TFOOT, MUTYPE_BLOCK, > 320 AMSK_ALIGN|AMSK_CLASS|AMSK_STYLE }, 304 { "th", MARKUP_TH, MUTYPE_TD, 321 { "th", MARKUP_TH, MUTYPE_TD, 305 AMSK_ALIGN|AMSK_BGCOLOR|AMSK_COLSPAN| 322 AMSK_ALIGN|AMSK_BGCOLOR|AMSK_COLSPAN| 306 AMSK_ROWSPAN|AMSK_VALIGN|AMSK_CLASS }, | 323 AMSK_ROWSPAN|AMSK_VALIGN|AMSK_CLASS|AMSK_STYLE }, 307 { "thead", MARKUP_THEAD, MUTYPE_BLOCK, AMSK_ALIGN|AMSK_C | 324 { "thead", MARKUP_THEAD, MUTYPE_BLOCK, > 325 AMSK_ALIGN|AMSK_CLASS|AMSK_STYLE }, 308 { "tr", MARKUP_TR, MUTYPE_TR, 326 { "tr", MARKUP_TR, MUTYPE_TR, 309 AMSK_ALIGN|AMSK_BGCOLOR|AMSK_VALIGN|AMSK_CLASS }, | 327 AMSK_ALIGN|AMSK_BGCOLOR|AMSK_VALIGN|AMSK_CLASS|AMSK_STYLE }, 310 { "tt", MARKUP_TT, MUTYPE_FONT, 0 }, | 328 { "tt", MARKUP_TT, MUTYPE_FONT, AMSK_STYLE }, 311 { "u", MARKUP_U, MUTYPE_FONT, 0 }, | 329 { "u", MARKUP_U, MUTYPE_FONT, AMSK_STYLE }, 312 { "ul", MARKUP_UL, MUTYPE_LIST, 330 { "ul", MARKUP_UL, MUTYPE_LIST, 313 AMSK_TYPE|AMSK_COMPACT }, | 331 AMSK_TYPE|AMSK_COMPACT|AMSK_STYLE }, 314 { "var", MARKUP_VAR, MUTYPE_FONT, 0 }, | 332 { "var", MARKUP_VAR, MUTYPE_FONT, AMSK_STYLE }, 315 { "verbatim", MARKUP_VERBATIM, MUTYPE_SPECIAL, AMSK_ID|AMSK_TYPE | 333 { "verbatim", MARKUP_VERBATIM, MUTYPE_SPECIAL, > 334 AMSK_ID|AMSK_TYPE }, 316 }; 335 }; 317 336 318 void show_allowed_wiki_markup( void ){ 337 void show_allowed_wiki_markup( void ){ 319 int i; /* loop over allowedAttr */ 338 int i; /* loop over allowedAttr */ 320 339 321 for( i=1 ; i<=sizeof(aMarkup)/sizeof(aMarkup[0]) - 1 ; i++ ){ 340 for( i=1 ; i<=sizeof(aMarkup)/sizeof(aMarkup[0]) - 1 ; i++ ){ 322 @ <%s(aMarkup[i].zName)> 341 @ <%s(aMarkup[i].zName)>