From owner-freebsd-bugs@FreeBSD.ORG Sun Dec 18 13:50:04 2005 Return-Path: X-Original-To: freebsd-bugs@hub.freebsd.org Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 2A2C016A41F for ; Sun, 18 Dec 2005 13:50:04 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 7647643D55 for ; Sun, 18 Dec 2005 13:50:03 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.4/8.13.4) with ESMTP id jBIDo3WK035520 for ; Sun, 18 Dec 2005 13:50:03 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.4/8.13.4/Submit) id jBIDo3cs035519; Sun, 18 Dec 2005 13:50:03 GMT (envelope-from gnats) Resent-Date: Sun, 18 Dec 2005 13:50:03 GMT Resent-Message-Id: <200512181350.jBIDo3cs035519@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, "Wojciech A. Koszek" Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 8CBCB16A41F for ; Sun, 18 Dec 2005 13:46:54 +0000 (GMT) (envelope-from dunstan@freebsd.czest.pl) Received: from freebsd.czest.pl (freebsd.czest.pl [80.48.250.4]) by mx1.FreeBSD.org (Postfix) with ESMTP id B2ECD43D5C for ; Sun, 18 Dec 2005 13:46:53 +0000 (GMT) (envelope-from dunstan@freebsd.czest.pl) Received: from freebsd.czest.pl (freebsd.czest.pl [80.48.250.4]) by freebsd.czest.pl (8.12.10/8.12.9) with ESMTP id jBIDnOPx080320 for ; Sun, 18 Dec 2005 13:49:25 GMT (envelope-from dunstan@freebsd.czest.pl) Received: (from dunstan@localhost) by freebsd.czest.pl (8.13.4/8.12.9/Submit) id jBIDnMq2080319; Sun, 18 Dec 2005 13:49:22 GMT (envelope-from dunstan) Message-Id: <200512181349.jBIDnMq2080319@freebsd.czest.pl> Date: Sun, 18 Dec 2005 13:49:22 GMT From: "Wojciech A. Koszek" To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 Cc: Subject: kern/90602: [PATCH] New function: sbuf_size(), which returns size of sbuf X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: "Wojciech A. Koszek" List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 18 Dec 2005 13:50:04 -0000 >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 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: