Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
varnish-cache
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
varnishcache
varnish-cache
Commits
7d09e0b2
Commit
7d09e0b2
authored
Aug 28, 2021
by
Poul-Henning Kamp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add `vct_case[len]cmp()` as prep-work for #3650
parent
1fa2d228
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
123 additions
and
1 deletion
+123
-1
vct.h
include/vct.h
+41
-0
Makefile.am
lib/libvarnish/Makefile.am
+5
-1
vct.c
lib/libvarnish/vct.c
+77
-0
No files found.
include/vct.h
View file @
7d09e0b2
...
@@ -54,6 +54,7 @@
...
@@ -54,6 +54,7 @@
#define VCT_LOWER (1<<14)
#define VCT_LOWER (1<<14)
extern
const
uint16_t
vct_typtab
[
256
];
extern
const
uint16_t
vct_typtab
[
256
];
extern
const
uint8_t
vct_lowertab
[
256
];
const
char
*
VCT_invalid_name
(
const
char
*
b
,
const
char
*
e
);
const
char
*
VCT_invalid_name
(
const
char
*
b
,
const
char
*
e
);
...
@@ -106,3 +107,43 @@ vct_skipcrlf(char* p, const char* end)
...
@@ -106,3 +107,43 @@ vct_skipcrlf(char* p, const char* end)
{
{
return
(
p
+
vct_iscrlf
(
p
,
end
));
return
(
p
+
vct_iscrlf
(
p
,
end
));
}
}
static
inline
int
vct_casecmp
(
const
void
*
a
,
const
void
*
b
)
{
const
uint8_t
*
aa
=
a
;
const
uint8_t
*
bb
=
b
;
while
(
*
aa
&&
vct_lowertab
[
*
aa
]
==
vct_lowertab
[
*
bb
])
{
aa
++
;
bb
++
;
}
if
(
!*
aa
&&
!*
bb
)
return
(
0
);
if
(
!*
aa
)
return
(
-
1
);
if
(
!*
bb
)
return
(
1
);
return
((
int
)
vct_lowertab
[
*
aa
]
-
(
int
)
vct_lowertab
[
*
bb
]);
}
static
inline
int
vct_caselencmp
(
const
void
*
a
,
const
void
*
b
,
ssize_t
sz
)
{
const
uint8_t
*
aa
=
a
;
const
uint8_t
*
bb
=
b
;
assert
(
sz
>=
0
);
while
(
sz
>
0
&&
*
aa
&&
vct_lowertab
[
*
aa
]
==
vct_lowertab
[
*
bb
])
{
aa
++
;
bb
++
;
sz
--
;
}
if
(
!
sz
||
(
!*
aa
&&
!*
bb
))
return
(
0
);
if
(
!*
aa
)
return
(
-
1
);
if
(
!*
bb
)
return
(
1
);
return
((
int
)
vct_lowertab
[
*
aa
]
-
(
int
)
vct_lowertab
[
*
bb
]);
}
lib/libvarnish/Makefile.am
View file @
7d09e0b2
...
@@ -46,7 +46,7 @@ libvarnish_la_SOURCES = \
...
@@ -46,7 +46,7 @@ libvarnish_la_SOURCES = \
libvarnish_la_LIBADD
=
@PCRE2_LIBS@
libvarnish_la_LIBADD
=
@PCRE2_LIBS@
TESTS
=
vav_test v
jsn_test vnum_c_test vbh
_test vsb_test
TESTS
=
vav_test v
bh_test vct_test vjsn_test vnum_c
_test vsb_test
noinst_PROGRAMS
=
${
TESTS
}
noinst_PROGRAMS
=
${
TESTS
}
...
@@ -58,6 +58,10 @@ vbh_test_SOURCES = vbh.c
...
@@ -58,6 +58,10 @@ vbh_test_SOURCES = vbh.c
vbh_test_CFLAGS
=
$(AM_CFLAGS)
-DTEST_DRIVER
vbh_test_CFLAGS
=
$(AM_CFLAGS)
-DTEST_DRIVER
vbh_test_LDADD
=
$(AM_LDFLAGS)
libvarnish.la
vbh_test_LDADD
=
$(AM_LDFLAGS)
libvarnish.la
vct_test_SOURCES
=
vct.c
vct_test_CFLAGS
=
$(AM_CFLAGS)
-DTEST_DRIVER
vct_test_LDADD
=
$(AM_LDFLAGS)
libvarnish.la
vnum_c_test_SOURCES
=
vnum.c
vnum_c_test_SOURCES
=
vnum.c
vnum_c_test_CFLAGS
=
$(AM_CFLAGS)
-DNUM_C_TEST
vnum_c_test_CFLAGS
=
$(AM_CFLAGS)
-DNUM_C_TEST
vnum_c_test_LDADD
=
$(AM_LDFLAGS)
libvarnish.la
${
LIBM
}
vnum_c_test_LDADD
=
$(AM_LDFLAGS)
libvarnish.la
${
LIBM
}
...
...
lib/libvarnish/vct.c
View file @
7d09e0b2
...
@@ -240,6 +240,41 @@ const uint16_t vct_typtab[256] = {
...
@@ -240,6 +240,41 @@ const uint16_t vct_typtab[256] = {
[
0xff
]
=
VCT_XMLNAMESTART
,
[
0xff
]
=
VCT_XMLNAMESTART
,
};
};
const
uint8_t
vct_lowertab
[
256
]
=
{
0x00
,
0x01
,
0x02
,
0x03
,
0x04
,
0x05
,
0x06
,
0x07
,
// 0x00
0x08
,
0x09
,
0x0a
,
0x0b
,
0x0c
,
0x0d
,
0x0e
,
0x0f
,
// 0x08
0x10
,
0x11
,
0x12
,
0x13
,
0x14
,
0x15
,
0x16
,
0x17
,
// 0x10
0x18
,
0x19
,
0x1a
,
0x1b
,
0x1c
,
0x1d
,
0x1e
,
0x1f
,
// 0x18
0x20
,
0x21
,
0x22
,
0x23
,
0x24
,
0x25
,
0x26
,
0x27
,
// 0x20
0x28
,
0x29
,
0x2a
,
0x2b
,
0x2c
,
0x2d
,
0x2e
,
0x2f
,
// 0x28
0x30
,
0x31
,
0x32
,
0x33
,
0x34
,
0x35
,
0x36
,
0x37
,
// 0x30
0x38
,
0x39
,
0x3a
,
0x3b
,
0x3c
,
0x3d
,
0x3e
,
0x3f
,
// 0x38
0x40
,
0x61
,
0x62
,
0x63
,
0x64
,
0x65
,
0x66
,
0x67
,
// 0x40
0x68
,
0x69
,
0x6a
,
0x6b
,
0x6c
,
0x6d
,
0x6e
,
0x6f
,
// 0x48
0x70
,
0x71
,
0x72
,
0x73
,
0x74
,
0x75
,
0x76
,
0x77
,
// 0x50
0x78
,
0x79
,
0x7a
,
0x5b
,
0x5c
,
0x5d
,
0x5e
,
0x5f
,
// 0x58
0x60
,
0x61
,
0x62
,
0x63
,
0x64
,
0x65
,
0x66
,
0x67
,
// 0x60
0x68
,
0x69
,
0x6a
,
0x6b
,
0x6c
,
0x6d
,
0x6e
,
0x6f
,
// 0x68
0x70
,
0x71
,
0x72
,
0x73
,
0x74
,
0x75
,
0x76
,
0x77
,
// 0x70
0x78
,
0x79
,
0x7a
,
0x7b
,
0x7c
,
0x7d
,
0x7e
,
0x7f
,
// 0x78
0x80
,
0x81
,
0x82
,
0x83
,
0x84
,
0x85
,
0x86
,
0x87
,
// 0x80
0x88
,
0x89
,
0x8a
,
0x8b
,
0x8c
,
0x8d
,
0x8e
,
0x8f
,
// 0x88
0x90
,
0x91
,
0x92
,
0x93
,
0x94
,
0x95
,
0x96
,
0x97
,
// 0x90
0x98
,
0x99
,
0x9a
,
0x9b
,
0x9c
,
0x9d
,
0x9e
,
0x9f
,
// 0x98
0xa0
,
0xa1
,
0xa2
,
0xa3
,
0xa4
,
0xa5
,
0xa6
,
0xa7
,
// 0xa0
0xa8
,
0xa9
,
0xaa
,
0xab
,
0xac
,
0xad
,
0xae
,
0xaf
,
// 0xa8
0xb0
,
0xb1
,
0xb2
,
0xb3
,
0xb4
,
0xb5
,
0xb6
,
0xb7
,
// 0xb0
0xb8
,
0xb9
,
0xba
,
0xbb
,
0xbc
,
0xbd
,
0xbe
,
0xbf
,
// 0xb8
0xc0
,
0xc1
,
0xc2
,
0xc3
,
0xc4
,
0xc5
,
0xc6
,
0xc7
,
// 0xc0
0xc8
,
0xc9
,
0xca
,
0xcb
,
0xcc
,
0xcd
,
0xce
,
0xcf
,
// 0xc8
0xd0
,
0xd1
,
0xd2
,
0xd3
,
0xd4
,
0xd5
,
0xd6
,
0xd7
,
// 0xd0
0xd8
,
0xd9
,
0xda
,
0xdb
,
0xdc
,
0xdd
,
0xde
,
0xdf
,
// 0xd8
0xe0
,
0xe1
,
0xe2
,
0xe3
,
0xe4
,
0xe5
,
0xe6
,
0xe7
,
// 0xe0
0xe8
,
0xe9
,
0xea
,
0xeb
,
0xec
,
0xed
,
0xee
,
0xef
,
// 0xe8
0xf0
,
0xf1
,
0xf2
,
0xf3
,
0xf4
,
0xf5
,
0xf6
,
0xf7
,
// 0xf0
0xf8
,
0xf9
,
0xfa
,
0xfb
,
0xfc
,
0xfd
,
0xfe
,
0xff
,
// 0xf8
};
const
char
*
const
char
*
VCT_invalid_name
(
const
char
*
b
,
const
char
*
e
)
VCT_invalid_name
(
const
char
*
b
,
const
char
*
e
)
{
{
...
@@ -258,3 +293,45 @@ VCT_invalid_name(const char *b, const char *e)
...
@@ -258,3 +293,45 @@ VCT_invalid_name(const char *b, const char *e)
return
(
NULL
);
return
(
NULL
);
}
}
#ifdef TEST_DRIVER
#include <ctype.h>
#include <locale.h>
int
main
(
int
argc
,
char
**
argv
)
{
int
i
;
(
void
)
argc
;
(
void
)
argv
;
AN
(
setlocale
(
LC_ALL
,
"C"
));
for
(
i
=
0x20
;
i
<
0x7f
;
i
++
)
assert
(
vct_lowertab
[
i
]
==
tolower
(
i
));
assert
(
vct_casecmp
(
"AZaz"
,
"azAZ"
)
==
0
);
assert
(
vct_casecmp
(
"AZaz"
,
"azAY"
)
>
0
);
assert
(
vct_casecmp
(
"AZay"
,
"azAZ"
)
<
0
);
assert
(
vct_casecmp
(
"AZaz_"
,
"azAZ"
)
>
0
);
assert
(
vct_casecmp
(
"AZaz"
,
"azAZ_"
)
<
0
);
assert
(
vct_casecmp
(
""
,
""
)
==
0
);
assert
(
vct_caselencmp
(
"AZaz_"
,
"azAZ"
,
4
)
==
0
);
assert
(
vct_caselencmp
(
"AZaz"
,
"azAZ_"
,
4
)
==
0
);
assert
(
vct_caselencmp
(
"AZaz1"
,
"azAZ1"
,
4
)
==
0
);
assert
(
vct_caselencmp
(
"AZaz1"
,
"azAY1"
,
4
)
>
0
);
assert
(
vct_caselencmp
(
"AZay1"
,
"azAZ1"
,
4
)
<
0
);
assert
(
vct_caselencmp
(
"AZaz"
,
"azAZ"
,
5
)
==
0
);
assert
(
vct_caselencmp
(
"AZaz "
,
"azAY"
,
5
)
>
0
);
assert
(
vct_caselencmp
(
"AZay "
,
"azAZ"
,
5
)
<
0
);
assert
(
vct_caselencmp
(
"A"
,
"B"
,
0
)
==
0
);
return
(
0
);
}
#endif
/* TEST_DRIVER */
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment