Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
libvmod-blobcode
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
uplex-varnish
libvmod-blobcode
Commits
1f7aa1db
Commit
1f7aa1db
authored
Jan 30, 2016
by
Geoff Simmons
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
tweak hex_decode()
parent
48de3054
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
11 additions
and
31 deletions
+11
-31
hex.c
src/hex.c
+11
-26
vmod_blobcode.h
src/vmod_blobcode.h
+0
-5
No files found.
src/hex.c
View file @
1f7aa1db
...
...
@@ -94,23 +94,6 @@ hex2byte(const unsigned char hi, const unsigned char lo)
return
(
nibble
[
hi
-
'0'
]
<<
4
)
|
nibble
[
lo
-
'0'
];
}
static
inline
void
decode_str
(
const
char
*
restrict
const
p
,
char
*
restrict
*
restrict
dest
,
unsigned
char
*
restrict
extranib
)
{
const
unsigned
char
*
s
=
(
unsigned
char
*
)
p
;
char
*
d
=
*
dest
;
if
(
*
extranib
)
*
d
++
=
hex2byte
(
*
extranib
,
*
s
++
);
while
(
*
s
&&
*
(
s
+
1
))
{
*
d
++
=
hex2byte
(
*
s
,
*
(
s
+
1
));
s
+=
2
;
}
*
extranib
=
*
s
;
*
dest
+=
d
-
*
dest
;
}
ssize_t
hex_encode
(
const
enum
encoding
enc
,
char
*
restrict
const
buf
,
const
size_t
maxlen
,
const
char
*
restrict
const
in
,
...
...
@@ -141,7 +124,6 @@ ssize_t
hex_decode
(
const
enum
encoding
dec
,
char
*
restrict
const
buf
,
const
size_t
maxlen
,
const
char
*
restrict
const
p
,
va_list
ap
)
{
const
char
*
next
;
char
*
dest
=
buf
;
unsigned
char
extranib
=
0
;
ssize_t
len
;
...
...
@@ -165,14 +147,17 @@ hex_decode(const enum encoding dec, char *restrict const buf,
if
(
len
&
1
)
extranib
=
'0'
;
SKIP_EMPTY
(
next
,
ap
);
assert
(
next
!=
vrt_magic_string_end
||
(
p
!=
NULL
&&
*
p
!=
'\0'
));
if
(
p
!=
NULL
&&
*
p
!=
'\0'
)
decode_str
(
p
,
&
dest
,
&
extranib
);
while
(
next
!=
vrt_magic_string_end
)
{
decode_str
(
next
,
&
dest
,
&
extranib
);
SKIP_EMPTY
(
next
,
ap
);
for
(
const
char
*
s
=
p
;
s
!=
vrt_magic_string_end
;
s
=
va_arg
(
ap
,
const
char
*
))
{
if
(
s
==
NULL
||
*
s
==
'\0'
)
continue
;
if
(
extranib
)
*
dest
++
=
hex2byte
(
extranib
,
*
s
++
);
while
(
*
s
&&
*
(
s
+
1
))
{
*
dest
++
=
hex2byte
(
*
s
,
*
(
s
+
1
));
s
+=
2
;
}
extranib
=
*
s
;
}
assert
(
dest
<=
buf
+
maxlen
);
return
dest
-
buf
;
...
...
src/vmod_blobcode.h
View file @
1f7aa1db
...
...
@@ -31,11 +31,6 @@
#include "parse_encoding.h"
#define SKIP_EMPTY(next, ap) \
do { \
next = va_arg((ap), const char *); \
} while ((next) == NULL || *(next) == '\0')
/*
* SAFE LENGTH ESTIMATES
*/
...
...
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