r4431 - in trunk/varnish-cache: include lib/libvarnish
phk at projects.linpro.no
phk at projects.linpro.no
Wed Jan 6 21:45:13 CET 2010
Author: phk
Date: 2010-01-06 21:45:12 +0100 (Wed, 06 Jan 2010)
New Revision: 4431
Modified:
trunk/varnish-cache/include/vct.h
trunk/varnish-cache/lib/libvarnish/vct.c
Log:
Add ability to tell if a char is valid "XML Name" or "XML Name Start".
Modified: trunk/varnish-cache/include/vct.h
===================================================================
--- trunk/varnish-cache/include/vct.h 2010-01-06 18:50:18 UTC (rev 4430)
+++ trunk/varnish-cache/include/vct.h 2010-01-06 20:45:12 UTC (rev 4431)
@@ -31,16 +31,18 @@
/* from libvarnish/vct.c */
-#define VCT_SP (1<<0)
-#define VCT_CRLF (1<<1)
-#define VCT_LWS (VCT_CRLF | VCT_SP)
-#define VCT_CTL (1<<2)
-#define VCT_ALPHA (1<<3)
-#define VCT_SEPARATOR (1<<4)
-#define VCT_DIGIT (1<<5)
-#define VCT_HEX (1<<6)
+#define VCT_SP (1<<0)
+#define VCT_CRLF (1<<1)
+#define VCT_LWS (VCT_CRLF | VCT_SP)
+#define VCT_CTL (1<<2)
+#define VCT_ALPHA (1<<3)
+#define VCT_SEPARATOR (1<<4)
+#define VCT_DIGIT (1<<5)
+#define VCT_HEX (1<<6)
+#define VCT_XMLNAMESTART (1<<7)
+#define VCT_XMLNAME (1<<8)
-extern const unsigned char vct_typtab[256];
+extern const uint16_t vct_typtab[256];
static inline int
vct_is(unsigned char x, unsigned char y)
@@ -56,6 +58,8 @@
#define vct_isalpha(x) vct_is(x, VCT_ALPHA)
#define vct_issep(x) vct_is(x, VCT_SEPARATOR)
#define vct_issepctl(x) vct_is(x, VCT_SEPARATOR | VCT_CTL)
+#define vct_isxmlnamestart(x) vct_is(x, VCT_XMLNAMES)
+#define vct_isxmlname(x) vct_is(x, VCT_XMLNAMESTART | VCT_XMLNM)
/* NB: VCT always operate in ASCII, don't replace 0x0d with \r etc. */
#define vct_skipcrlf(p) (p[0] == 0x0d && p[1] == 0x0a ? 2 : 1)
Modified: trunk/varnish-cache/lib/libvarnish/vct.c
===================================================================
--- trunk/varnish-cache/lib/libvarnish/vct.c 2010-01-06 18:50:18 UTC (rev 4430)
+++ trunk/varnish-cache/lib/libvarnish/vct.c 2010-01-06 20:45:12 UTC (rev 4431)
@@ -33,6 +33,7 @@
#include "svnid.h"
SVNID("$Id$")
+#include <stdint.h>
#include <vct.h>
/* NB: VCT always operate in ASCII, don't replace 0x0d with \r etc. */
@@ -40,7 +41,7 @@
#define VCT_UPALPHA VCT_ALPHA
#define VCT_LOALPHA VCT_ALPHA
-unsigned const char vct_typtab[256] = {
+const uint16_t vct_typtab[256] = {
[0x00] = VCT_CTL,
[0x01] = VCT_CTL,
[0x02] = VCT_CTL,
@@ -78,80 +79,146 @@
[0x28] = VCT_SEPARATOR,
[0x29] = VCT_SEPARATOR,
[0x2c] = VCT_SEPARATOR,
+ [0x2d] = VCT_XMLNAME,
+ [0x2e] = VCT_XMLNAME,
[0x2f] = VCT_SEPARATOR,
- [0x30] = VCT_DIGIT | VCT_HEX,
- [0x31] = VCT_DIGIT | VCT_HEX,
- [0x32] = VCT_DIGIT | VCT_HEX,
- [0x33] = VCT_DIGIT | VCT_HEX,
- [0x34] = VCT_DIGIT | VCT_HEX,
- [0x35] = VCT_DIGIT | VCT_HEX,
- [0x36] = VCT_DIGIT | VCT_HEX,
- [0x37] = VCT_DIGIT | VCT_HEX,
- [0x38] = VCT_DIGIT | VCT_HEX,
- [0x39] = VCT_DIGIT | VCT_HEX,
- [0x3a] = VCT_SEPARATOR,
+ [0x30] = VCT_DIGIT | VCT_HEX | VCT_XMLNAME,
+ [0x31] = VCT_DIGIT | VCT_HEX | VCT_XMLNAME,
+ [0x32] = VCT_DIGIT | VCT_HEX | VCT_XMLNAME,
+ [0x33] = VCT_DIGIT | VCT_HEX | VCT_XMLNAME,
+ [0x34] = VCT_DIGIT | VCT_HEX | VCT_XMLNAME,
+ [0x35] = VCT_DIGIT | VCT_HEX | VCT_XMLNAME,
+ [0x36] = VCT_DIGIT | VCT_HEX | VCT_XMLNAME,
+ [0x37] = VCT_DIGIT | VCT_HEX | VCT_XMLNAME,
+ [0x38] = VCT_DIGIT | VCT_HEX | VCT_XMLNAME,
+ [0x39] = VCT_DIGIT | VCT_HEX | VCT_XMLNAME,
+ [0x3a] = VCT_SEPARATOR | VCT_XMLNAMESTART,
[0x3b] = VCT_SEPARATOR,
[0x3c] = VCT_SEPARATOR,
[0x3d] = VCT_SEPARATOR,
[0x3e] = VCT_SEPARATOR,
[0x3f] = VCT_SEPARATOR,
[0x40] = VCT_SEPARATOR,
- [0x41] = VCT_UPALPHA | VCT_HEX,
- [0x42] = VCT_UPALPHA | VCT_HEX,
- [0x43] = VCT_UPALPHA | VCT_HEX,
- [0x44] = VCT_UPALPHA | VCT_HEX,
- [0x45] = VCT_UPALPHA | VCT_HEX,
- [0x46] = VCT_UPALPHA | VCT_HEX,
- [0x47] = VCT_UPALPHA,
- [0x48] = VCT_UPALPHA,
- [0x49] = VCT_UPALPHA,
- [0x4a] = VCT_UPALPHA,
- [0x4b] = VCT_UPALPHA,
- [0x4c] = VCT_UPALPHA,
- [0x4d] = VCT_UPALPHA,
- [0x4e] = VCT_UPALPHA,
- [0x4f] = VCT_UPALPHA,
- [0x50] = VCT_UPALPHA,
- [0x51] = VCT_UPALPHA,
- [0x52] = VCT_UPALPHA,
- [0x53] = VCT_UPALPHA,
- [0x54] = VCT_UPALPHA,
- [0x55] = VCT_UPALPHA,
- [0x56] = VCT_UPALPHA,
- [0x57] = VCT_UPALPHA,
- [0x58] = VCT_UPALPHA,
- [0x59] = VCT_UPALPHA,
- [0x5a] = VCT_UPALPHA,
+ [0x41] = VCT_UPALPHA | VCT_HEX | VCT_XMLNAMESTART,
+ [0x42] = VCT_UPALPHA | VCT_HEX | VCT_XMLNAMESTART,
+ [0x43] = VCT_UPALPHA | VCT_HEX | VCT_XMLNAMESTART,
+ [0x44] = VCT_UPALPHA | VCT_HEX | VCT_XMLNAMESTART,
+ [0x45] = VCT_UPALPHA | VCT_HEX | VCT_XMLNAMESTART,
+ [0x46] = VCT_UPALPHA | VCT_HEX | VCT_XMLNAMESTART,
+ [0x47] = VCT_UPALPHA | VCT_XMLNAMESTART,
+ [0x48] = VCT_UPALPHA | VCT_XMLNAMESTART,
+ [0x49] = VCT_UPALPHA | VCT_XMLNAMESTART,
+ [0x4a] = VCT_UPALPHA | VCT_XMLNAMESTART,
+ [0x4b] = VCT_UPALPHA | VCT_XMLNAMESTART,
+ [0x4c] = VCT_UPALPHA | VCT_XMLNAMESTART,
+ [0x4d] = VCT_UPALPHA | VCT_XMLNAMESTART,
+ [0x4e] = VCT_UPALPHA | VCT_XMLNAMESTART,
+ [0x4f] = VCT_UPALPHA | VCT_XMLNAMESTART,
+ [0x50] = VCT_UPALPHA | VCT_XMLNAMESTART,
+ [0x51] = VCT_UPALPHA | VCT_XMLNAMESTART,
+ [0x52] = VCT_UPALPHA | VCT_XMLNAMESTART,
+ [0x53] = VCT_UPALPHA | VCT_XMLNAMESTART,
+ [0x54] = VCT_UPALPHA | VCT_XMLNAMESTART,
+ [0x55] = VCT_UPALPHA | VCT_XMLNAMESTART,
+ [0x56] = VCT_UPALPHA | VCT_XMLNAMESTART,
+ [0x57] = VCT_UPALPHA | VCT_XMLNAMESTART,
+ [0x58] = VCT_UPALPHA | VCT_XMLNAMESTART,
+ [0x59] = VCT_UPALPHA | VCT_XMLNAMESTART,
+ [0x5a] = VCT_UPALPHA | VCT_XMLNAMESTART,
[0x5b] = VCT_SEPARATOR,
[0x5c] = VCT_SEPARATOR,
[0x5d] = VCT_SEPARATOR,
- [0x61] = VCT_LOALPHA | VCT_HEX,
- [0x62] = VCT_LOALPHA | VCT_HEX,
- [0x63] = VCT_LOALPHA | VCT_HEX,
- [0x64] = VCT_LOALPHA | VCT_HEX,
- [0x65] = VCT_LOALPHA | VCT_HEX,
- [0x66] = VCT_LOALPHA | VCT_HEX,
- [0x67] = VCT_LOALPHA,
- [0x68] = VCT_LOALPHA,
- [0x69] = VCT_LOALPHA,
- [0x6a] = VCT_LOALPHA,
- [0x6b] = VCT_LOALPHA,
- [0x6c] = VCT_LOALPHA,
- [0x6d] = VCT_LOALPHA,
- [0x6e] = VCT_LOALPHA,
- [0x6f] = VCT_LOALPHA,
- [0x70] = VCT_LOALPHA,
- [0x71] = VCT_LOALPHA,
- [0x72] = VCT_LOALPHA,
- [0x73] = VCT_LOALPHA,
- [0x74] = VCT_LOALPHA,
- [0x75] = VCT_LOALPHA,
- [0x76] = VCT_LOALPHA,
- [0x77] = VCT_LOALPHA,
- [0x78] = VCT_LOALPHA,
- [0x79] = VCT_LOALPHA,
- [0x7a] = VCT_LOALPHA,
+ [0x5f] = VCT_XMLNAMESTART,
+ [0x61] = VCT_LOALPHA | VCT_HEX | VCT_XMLNAMESTART,
+ [0x62] = VCT_LOALPHA | VCT_HEX | VCT_XMLNAMESTART,
+ [0x63] = VCT_LOALPHA | VCT_HEX | VCT_XMLNAMESTART,
+ [0x64] = VCT_LOALPHA | VCT_HEX | VCT_XMLNAMESTART,
+ [0x65] = VCT_LOALPHA | VCT_HEX | VCT_XMLNAMESTART,
+ [0x66] = VCT_LOALPHA | VCT_HEX | VCT_XMLNAMESTART,
+ [0x67] = VCT_LOALPHA | VCT_XMLNAMESTART,
+ [0x68] = VCT_LOALPHA | VCT_XMLNAMESTART,
+ [0x69] = VCT_LOALPHA | VCT_XMLNAMESTART,
+ [0x6a] = VCT_LOALPHA | VCT_XMLNAMESTART,
+ [0x6b] = VCT_LOALPHA | VCT_XMLNAMESTART,
+ [0x6c] = VCT_LOALPHA | VCT_XMLNAMESTART,
+ [0x6d] = VCT_LOALPHA | VCT_XMLNAMESTART,
+ [0x6e] = VCT_LOALPHA | VCT_XMLNAMESTART,
+ [0x6f] = VCT_LOALPHA | VCT_XMLNAMESTART,
+ [0x70] = VCT_LOALPHA | VCT_XMLNAMESTART,
+ [0x71] = VCT_LOALPHA | VCT_XMLNAMESTART,
+ [0x72] = VCT_LOALPHA | VCT_XMLNAMESTART,
+ [0x73] = VCT_LOALPHA | VCT_XMLNAMESTART,
+ [0x74] = VCT_LOALPHA | VCT_XMLNAMESTART,
+ [0x75] = VCT_LOALPHA | VCT_XMLNAMESTART,
+ [0x76] = VCT_LOALPHA | VCT_XMLNAMESTART,
+ [0x77] = VCT_LOALPHA | VCT_XMLNAMESTART,
+ [0x78] = VCT_LOALPHA | VCT_XMLNAMESTART,
+ [0x79] = VCT_LOALPHA | VCT_XMLNAMESTART,
+ [0x7a] = VCT_LOALPHA | VCT_XMLNAMESTART,
[0x7b] = VCT_SEPARATOR,
[0x7d] = VCT_SEPARATOR,
[0x7f] = VCT_CTL,
+ [0xb7] = VCT_XMLNAME,
+ [0xc0] = VCT_XMLNAMESTART,
+ [0xc1] = VCT_XMLNAMESTART,
+ [0xc2] = VCT_XMLNAMESTART,
+ [0xc3] = VCT_XMLNAMESTART,
+ [0xc4] = VCT_XMLNAMESTART,
+ [0xc5] = VCT_XMLNAMESTART,
+ [0xc6] = VCT_XMLNAMESTART,
+ [0xc7] = VCT_XMLNAMESTART,
+ [0xc8] = VCT_XMLNAMESTART,
+ [0xc9] = VCT_XMLNAMESTART,
+ [0xca] = VCT_XMLNAMESTART,
+ [0xcb] = VCT_XMLNAMESTART,
+ [0xcc] = VCT_XMLNAMESTART,
+ [0xcd] = VCT_XMLNAMESTART,
+ [0xce] = VCT_XMLNAMESTART,
+ [0xcf] = VCT_XMLNAMESTART,
+ [0xd0] = VCT_XMLNAMESTART,
+ [0xd1] = VCT_XMLNAMESTART,
+ [0xd2] = VCT_XMLNAMESTART,
+ [0xd3] = VCT_XMLNAMESTART,
+ [0xd4] = VCT_XMLNAMESTART,
+ [0xd5] = VCT_XMLNAMESTART,
+ [0xd6] = VCT_XMLNAMESTART,
+ [0xd8] = VCT_XMLNAMESTART,
+ [0xd9] = VCT_XMLNAMESTART,
+ [0xda] = VCT_XMLNAMESTART,
+ [0xdb] = VCT_XMLNAMESTART,
+ [0xdc] = VCT_XMLNAMESTART,
+ [0xdd] = VCT_XMLNAMESTART,
+ [0xde] = VCT_XMLNAMESTART,
+ [0xdf] = VCT_XMLNAMESTART,
+ [0xe0] = VCT_XMLNAMESTART,
+ [0xe1] = VCT_XMLNAMESTART,
+ [0xe2] = VCT_XMLNAMESTART,
+ [0xe3] = VCT_XMLNAMESTART,
+ [0xe4] = VCT_XMLNAMESTART,
+ [0xe5] = VCT_XMLNAMESTART,
+ [0xe6] = VCT_XMLNAMESTART,
+ [0xe7] = VCT_XMLNAMESTART,
+ [0xe8] = VCT_XMLNAMESTART,
+ [0xe9] = VCT_XMLNAMESTART,
+ [0xea] = VCT_XMLNAMESTART,
+ [0xeb] = VCT_XMLNAMESTART,
+ [0xec] = VCT_XMLNAMESTART,
+ [0xed] = VCT_XMLNAMESTART,
+ [0xee] = VCT_XMLNAMESTART,
+ [0xef] = VCT_XMLNAMESTART,
+ [0xf0] = VCT_XMLNAMESTART,
+ [0xf1] = VCT_XMLNAMESTART,
+ [0xf2] = VCT_XMLNAMESTART,
+ [0xf3] = VCT_XMLNAMESTART,
+ [0xf4] = VCT_XMLNAMESTART,
+ [0xf5] = VCT_XMLNAMESTART,
+ [0xf6] = VCT_XMLNAMESTART,
+ [0xf8] = VCT_XMLNAMESTART,
+ [0xf9] = VCT_XMLNAMESTART,
+ [0xfa] = VCT_XMLNAMESTART,
+ [0xfb] = VCT_XMLNAMESTART,
+ [0xfc] = VCT_XMLNAMESTART,
+ [0xfd] = VCT_XMLNAMESTART,
+ [0xfe] = VCT_XMLNAMESTART,
+ [0xff] = VCT_XMLNAMESTART,
};
More information about the varnish-commit
mailing list