Skip site navigation (1)Skip section navigation (2)
Date:      16 Jun 2001 07:50:48 +0200
From:      Assar Westerlund <assar@freebsd.org>
To:        freebsd-audit@freebsd.org
Subject:   *printf simplifications?
Message-ID:  <5lelslx9af.fsf@assaris.sics.se>

next in thread | raw e-mail | index | archive | help

--=-=-=

Any reason not to commit this?

/assar

--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=libcd

Index: asprintf.c
===================================================================
RCS file: /home/ncvs/src/lib/libc/stdio/asprintf.c,v
retrieving revision 1.7
diff -u -w -r1.7 asprintf.c
--- asprintf.c	2001/02/11 22:06:39	1.7
+++ asprintf.c	2001/06/16 05:45:30
@@ -54,30 +54,13 @@
 {
 	int ret;
 	va_list ap;
-	FILE f;
 
 #if __STDC__
 	va_start(ap, fmt);
 #else
 	va_start(ap);
 #endif
-	f._file = -1;
-	f._flags = __SWR | __SSTR | __SALC;
-	f._bf._base = f._p = (unsigned char *)malloc(128);
-	if (f._bf._base == NULL) {
-		*str = NULL;
-		errno = ENOMEM;
-		return (-1);
-	}
-	f._bf._size = f._w = 127;		/* Leave room for the NULL */
-	ret = __vfprintf(&f, fmt, ap);		/* Use unlocked __vfprintf */
-	*f._p = '\0';
+	ret = vasprintf(str, fmt, ap);
 	va_end(ap);
-	f._bf._base = reallocf(f._bf._base, f._bf._size + 1);
-	if (f._bf._base == NULL) {
-		errno = ENOMEM;
-		ret = -1;
-	}
-	*str = (char *)f._bf._base;
 	return (ret);
 }
Index: snprintf.c
===================================================================
RCS file: /home/ncvs/src/lib/libc/stdio/snprintf.c,v
retrieving revision 1.14
diff -u -w -r1.14 snprintf.c
--- snprintf.c	2001/06/16 05:37:57	1.14
+++ snprintf.c	2001/06/16 05:45:30
@@ -64,30 +64,15 @@
 	va_dcl
 #endif
 {
-	size_t on;
-	int ret;
 	va_list ap;
-	FILE f;
+	int ret;
 
-	on = n;
-	if (n != 0)
-		n--;
-	if (n > INT_MAX)
-		n = INT_MAX;
 #if __STDC__
 	va_start(ap, fmt);
 #else
 	va_start(ap);
 #endif
-	f._file = -1;
-	f._flags = __SWR | __SSTR;
-	f._bf._base = f._p = (unsigned char *)str;
-	f._bf._size = f._w = n;
-	ret = __vfprintf(&f, fmt, ap);
-	if (on > 0)
-		*f._p = '\0';
+	ret = vsnprintf(str, n, fmt, ap);
 	va_end(ap);
-	if (str == NULL)
-		free(f._bf._base);
 	return (ret);
 }
Index: sprintf.c
===================================================================
RCS file: /home/ncvs/src/lib/libc/stdio/sprintf.c,v
retrieving revision 1.8
diff -u -w -r1.8 sprintf.c
--- sprintf.c	2001/06/16 05:37:57	1.8
+++ sprintf.c	2001/06/16 05:45:30
@@ -63,21 +63,13 @@
 {
 	int ret;
 	va_list ap;
-	FILE f;
 
-	f._file = -1;
-	f._flags = __SWR | __SSTR;
-	f._bf._base = f._p = (unsigned char *)str;
-	f._bf._size = f._w = INT_MAX;
 #if __STDC__
 	va_start(ap, fmt);
 #else
 	va_start(ap);
 #endif
-	ret = __vfprintf(&f, fmt, ap);
+	ret = vsprintf(str, fmt, ap);
 	va_end(ap);
-	*f._p = 0;
-	if (str == NULL)
-		free(f._bf._base);
 	return (ret);
 }
Index: vsprintf.c
===================================================================
RCS file: /home/ncvs/src/lib/libc/stdio/vsprintf.c,v
retrieving revision 1.8
diff -u -w -r1.8 vsprintf.c
--- vsprintf.c	2001/06/16 05:37:57	1.8
+++ vsprintf.c	2001/06/16 05:45:30
@@ -52,16 +52,5 @@
 	const char *fmt;
 	_BSD_VA_LIST_ ap;
 {
-	int ret;
-	FILE f;
-
-	f._file = -1;
-	f._flags = __SWR | __SSTR;
-	f._bf._base = f._p = (unsigned char *)str;
-	f._bf._size = f._w = INT_MAX;
-	ret = __vfprintf(&f, fmt, ap);
-	*f._p = 0;
-	if (str == NULL)
-		free(f._bf._base);
-	return (ret);
+	return (vsnprintf(str, INT_MAX, fmt, ap));
 }

--=-=-=--

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-audit" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5lelslx9af.fsf>