File cvs-useless-asnprintf.diff of Package cvs
Index: m4/gnulib-comp.m4
===================================================================
--- m4/gnulib-comp.m4.orig
+++ m4/gnulib-comp.m4
@@ -102,7 +102,6 @@ AC_DEFUN([gl_INIT],
gl_FUNC_TZSET_CLOBBER
gl_UNISTD_SAFER
gl_FUNC_GLIBC_UNLOCKED_IO
- gl_FUNC_VASNPRINTF
gl_FUNC_VASPRINTF
gl_XALLOC
gl_XGETCWD
Index: src/error.c
===================================================================
--- src/error.c.orig
+++ src/error.c
@@ -111,28 +111,17 @@ error (int status, int errnum, const cha
int save_errno = errno;
/* Various buffers we attempt to use to generate the error message. */
- char statbuf[256];
char *buf;
size_t length;
- char statbuf2[384];
char *buf2;
- char statcmdbuf[32];
- char *cmdbuf;
- char *emptybuf = "";
-
static const char *last_message = NULL;
static int last_status;
static int last_errnum;
-
- /* Initialize these to avoid a lot of special case error handling. */
- buf = statbuf;
- buf2 = statbuf2;
- cmdbuf = emptybuf;
+ char *cmdbuf = 0;
/* Expand the message the user passed us. */
- length = sizeof (statbuf);
va_start (args, message);
- buf = vasnprintf (statbuf, &length, message, args);
+ length = vasprintf (&buf, message, args);
va_end (args);
if (!buf) goto memerror;
@@ -145,21 +134,19 @@ error (int status, int errnum, const cha
*/
if (cvs_cmd_name)
{
- length = sizeof (statcmdbuf);
- cmdbuf = asnprintf (statcmdbuf, &length, " %s%s%s",
- status ? "[" : "",
- cvs_cmd_name,
- status ? " aborted]" : "");
+ length = asprintf (&cmdbuf, " %s%s%s",
+ status ? "[" : "",
+ cvs_cmd_name,
+ status ? " aborted]" : "");
/* Else cmdbuf still = emptybuf. */
if (!cmdbuf) goto memerror;
}
/* Else cmdbuf still = emptybuf. */
/* Now put it all together. */
- length = sizeof (statbuf2);
- buf2 = asnprintf (statbuf2, &length, "%s%s: %s%s%s\n",
- program_name, cmdbuf, buf,
- errnum ? ": " : "", errnum ? strerror (errnum) : "");
+ length = asprintf (&buf2, "%s%s: %s%s%s\n",
+ program_name, cmdbuf ? cmdbuf : "", buf,
+ errnum ? ": " : "", errnum ? strerror (errnum) : "");
if (!buf2) goto memerror;
/* Send the final message to the client or log it.
@@ -183,9 +170,9 @@ error (int status, int errnum, const cha
exit (EXIT_FAILURE);
/* Free anything we may have allocated. */
- if (buf != statbuf) free (buf);
- if (buf2 != statbuf2) free (buf2);
- if (cmdbuf != statcmdbuf && cmdbuf != emptybuf) free (cmdbuf);
+ free (buf);
+ free (buf2);
+ free (cmdbuf);
/* Restore errno per our charter. */
errno = save_errno;
Index: src/subr.c
===================================================================
--- src/subr.c.orig
+++ src/subr.c
@@ -1819,8 +1819,8 @@ Xasnprintf (char *resultbuf, size_t *len
char *result;
va_start (args, format);
- result = vasnprintf (resultbuf, lengthp, format, args);
- if (result == NULL)
+ *lengthp = vasprintf (&result, format, args);
+ if (*lengthp < 0)
error (1, errno, "Failed to write to string.");
va_end (args);