Date: Sun, 18 Dec 2005 13:49:22 GMT From: "Wojciech A. Koszek" <dunstan@freebsd.czest.pl> To: FreeBSD-gnats-submit@FreeBSD.org Subject: kern/90602: [PATCH] New function: sbuf_size(), which returns size of sbuf Message-ID: <200512181349.jBIDnMq2080319@freebsd.czest.pl> Resent-Message-ID: <200512181350.jBIDo3cs035519@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 90602 >Category: kern >Synopsis: [PATCH] New function: sbuf_size(), which returns size of sbuf >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Sun Dec 18 13:50:02 GMT 2005 >Closed-Date: >Last-Modified: >Originator: Wojciech A. Koszek >Release: FreeBSD 7.0-CURRENT i386 >Organization: >Environment: System: FreeBSD laptop.freebsd.czest.pl 7.0-CURRENT FreeBSD 7.0-CURRENT #2: Sun Dec 18 01:31:49 CET 2005 dunstan@laptop.freebsd.czest.pl:/usr/obj/usr/src/sys/LAPTOP i386 >Description: It's hard to determine buffer size allocated for sbuf. I'd find it really useful and will be happy to see it commited. >How-To-Repeat: >Fix: I have implemented sbuf_size() to fill this gap and updated manual page (with minor style(9) tweak): http://freebsd.czest.pl/dunstan/FreeBSD/sbuf_size.0.patch Comments are welcome! --- sbuf_size.0.patch begins here --- (c) 2005 <Wojciech A. Koszek dunstan^freebsd.czest.pl> Patch against FreeBSD 7.0-CURRENT, kern.osreldate: 700008. diff -upr /usr/src/share/man/man9/sbuf.9 src/share/man/man9/sbuf.9 --- /usr/src/share/man/man9/sbuf.9 Fri Jul 9 13:44:49 2004 +++ src/share/man/man9/sbuf.9 Sun Dec 18 14:12:41 2005 @@ -46,6 +46,7 @@ .Nm sbuf_finish , .Nm sbuf_data , .Nm sbuf_len , +.Nm sbuf_size , .Nm sbuf_done , .Nm sbuf_delete .Nd safe string formatting @@ -87,6 +88,8 @@ .Ft int .Fn sbuf_len "struct sbuf *s" .Ft int +.Fn sbuf_size "struct sbuf *s" +.Ft int .Fn sbuf_done "struct sbuf *s" .Ft void .Fn sbuf_delete "struct sbuf *s" @@ -291,6 +294,9 @@ functions return the actual string and i .Fn sbuf_data only works on a finished .Fa sbuf . +.Fn sbuf_size +returns size of data buffer allocated for +.Fa sbuf . .Fn sbuf_done returns non-zero if the sbuf is finished. .Sh NOTES @@ -337,6 +343,9 @@ and return .Dv NULL and \-1, respectively, if the buffer overflowed. +.Pp +.Fn sbuf_size +returns size of allocated buffer. .Sh SEE ALSO .Xr printf 3 , .Xr strcat 3 , diff -upr /usr/src/sys/kern/subr_sbuf.c src/sys/kern/subr_sbuf.c --- /usr/src/sys/kern/subr_sbuf.c Thu Feb 10 13:02:37 2005 +++ src/sys/kern/subr_sbuf.c Sun Dec 18 14:14:57 2005 @@ -547,6 +547,18 @@ sbuf_len(struct sbuf *s) } /* + * Return the size of data buffer. + */ +int +sbuf_size(struct sbuf *s) +{ + assert_sbuf_integrity(s); + + return s->s_size; +} + + +/* * Clear an sbuf, free its buffer if necessary. */ void @@ -572,5 +584,5 @@ int sbuf_done(struct sbuf *s) { - return(SBUF_ISFINISHED(s)); + return (SBUF_ISFINISHED(s)); } diff -upr /usr/src/sys/sys/sbuf.h src/sys/sys/sbuf.h --- /usr/src/sys/sys/sbuf.h Fri Jul 9 13:35:30 2004 +++ src/sys/sys/sbuf.h Sat Dec 17 00:50:40 2005 @@ -70,6 +70,7 @@ int sbuf_overflowed(struct sbuf *); void sbuf_finish(struct sbuf *); char *sbuf_data(struct sbuf *); int sbuf_len(struct sbuf *); +int sbuf_size(struct sbuf *); int sbuf_done(struct sbuf *); void sbuf_delete(struct sbuf *); --- sbuf_size.0.patch ends here --- >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200512181349.jBIDnMq2080319>