Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
varnishevent3
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
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
varnishevent3
Commits
4e00e65c
Commit
4e00e65c
authored
May 17, 2011
by
Poul-Henning Kamp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Merge closer to FreeBSD's present sbuf version
parent
3e98f982
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
29 additions
and
12 deletions
+29
-12
vsb.h
include/vsb.h
+2
-2
vsb.c
lib/libvarnish/vsb.c
+27
-10
No files found.
include/vsb.h
View file @
4e00e65c
...
...
@@ -25,7 +25,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD: head/sys/sys/
sbuf.h 212425 2010-09-10 16:42:16Z mdf
$
* $FreeBSD: head/sys/sys/
vsb.h 221993 2011-05-16 16:18:40Z phk
$
*/
#ifndef VSB_H_INCLUDED
...
...
@@ -76,7 +76,7 @@ int vsb_printf(struct vsb *, const char *, ...)
int
vsb_vprintf
(
struct
vsb
*
,
const
char
*
,
va_list
)
__printflike
(
2
,
0
);
#endif
int
vsb_putc
(
struct
vsb
*
,
char
);
int
vsb_putc
(
struct
vsb
*
,
int
);
int
vsb_trim
(
struct
vsb
*
);
int
vsb_error
(
const
struct
vsb
*
);
int
vsb_finish
(
struct
vsb
*
);
...
...
lib/libvarnish/vsb.c
View file @
4e00e65c
...
...
@@ -24,7 +24,7 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
__FBSDID("$FreeBSD: head/sys/kern/subr_vsb.c 2
12750 2010-09-16 16:13:12Z mdf $
__FBSDID("$FreeBSD: head/sys/kern/subr_vsb.c 2
22004 2011-05-17 06:36:32Z phk $")
*/
#include "config.h"
...
...
@@ -62,6 +62,7 @@ __FBSDID("$FreeBSD: head/sys/kern/subr_vsb.c 212750 2010-09-16 16:13:12Z mdf $
#define VSB_CLEARFLAG(s, f) do { (s)->s_flags &= ~(f); } while (0)
#define VSB_MINEXTENDSIZE 16
/* Should be power of 2. */
#ifdef PAGE_SIZE
#define VSB_MAXEXTENDSIZE PAGE_SIZE
#define VSB_MAXEXTENDINCR PAGE_SIZE
...
...
@@ -108,6 +109,12 @@ _assert_vsb_state(const char *fun, struct vsb *s, int state)
#define assert_vsb_state(s, i) do { } while (0)
#endif
#ifdef CTASSERT
CTASSERT
(
powerof2
(
VSB_MAXEXTENDSIZE
));
CTASSERT
(
powerof2
(
VSB_MAXEXTENDINCR
));
#endif
static
int
vsb_extendsize
(
int
size
)
{
...
...
@@ -124,7 +131,6 @@ vsb_extendsize(int size)
return
(
newsize
);
}
/*
* Extend an vsb.
*/
...
...
@@ -164,8 +170,6 @@ vsb_newbuf(struct vsb *s, char *buf, int length, int flags)
s
->
s_magic
=
VSB_MAGIC
;
if
(
buf
!=
NULL
)
{
KASSERT
(
length
>
0
,
(
"zero or negative length (%d)"
,
length
));
s
->
s_size
=
length
;
s
->
s_buf
=
buf
;
return
(
s
);
...
...
@@ -182,6 +186,8 @@ vsb_newbuf(struct vsb *s, char *buf, int length, int flags)
/*
* Initialize an vsb.
* If buf is non-NULL, it points to a static or already-allocated string
* big enough to hold at least length characters.
*/
struct
vsb
*
vsb_new
(
struct
vsb
*
s
,
char
*
buf
,
int
length
,
int
flags
)
...
...
@@ -234,9 +240,10 @@ vsb_setpos(struct vsb *s, ssize_t pos)
assert_vsb_state
(
s
,
0
);
KASSERT
(
pos
>=
0
,
(
"attempt to seek to a negative position (%
d)"
,
pos
));
(
"attempt to seek to a negative position (%
jd)"
,
(
intmax_t
)
pos
));
KASSERT
(
pos
<
s
->
s_size
,
(
"attempt to seek past end of vsb (%d >= %d)"
,
pos
,
s
->
s_size
));
(
"attempt to seek past end of vsb (%jd >= %jd)"
,
(
intmax_t
)
pos
,
(
intmax_t
)
->
s_size
));
if
(
pos
<
0
||
pos
>
s
->
s_len
)
return
(
-
1
);
...
...
@@ -250,7 +257,7 @@ vsb_setpos(struct vsb *s, ssize_t pos)
* buffer and marking overflow.
*/
static
void
vsb_put_byte
(
struct
vsb
*
s
,
char
c
)
vsb_put_byte
(
struct
vsb
*
s
,
int
c
)
{
assert_vsb_integrity
(
s
);
...
...
@@ -264,10 +271,9 @@ vsb_put_byte(struct vsb *s, char c)
if
(
s
->
s_error
!=
0
)
return
;
}
s
->
s_buf
[
s
->
s_len
++
]
=
c
;
s
->
s_buf
[
s
->
s_len
++
]
=
(
char
)
c
;
}
/*
* Append a byte string to an vsb.
*/
...
...
@@ -357,6 +363,17 @@ vsb_vprintf(struct vsb *s, const char *fmt, va_list ap)
if
(
s
->
s_error
!=
0
)
return
(
-
1
);
/*
* For the moment, there is no way to get vsnprintf(3) to hand
* back a character at a time, to push everything into
* vsb_putc_func() as was done for the kernel.
*
* In userspace, while drains are useful, there's generally
* not a problem attempting to malloc(3) on out of space. So
* expand a userland vsb if there is not enough room for the
* data produced by vsb_[v]printf(3).
*/
do
{
va_copy
(
ap_copy
,
ap
);
len
=
vsnprintf
(
&
s
->
s_buf
[
s
->
s_len
],
VSB_FREESPACE
(
s
)
+
1
,
...
...
@@ -407,7 +424,7 @@ vsb_printf(struct vsb *s, const char *fmt, ...)
* Append a character to an vsb.
*/
int
vsb_putc
(
struct
vsb
*
s
,
char
c
)
vsb_putc
(
struct
vsb
*
s
,
int
c
)
{
vsb_put_byte
(
s
,
c
);
...
...
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