-/*
- * Copyright (C) 2004-2010 Andre Noll <maan@tuebingen.mpg.de>
- *
- * Licensed under the GPL v2. For licencing details see COPYING.
- */
+/* SPDX-License-Identifier: GPL-2.0 */
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
n = vsnprintf(msg, size, fmt, ap);
va_end(ap);
/* If that worked, return the string. */
- if (n > -1 && n < size)
- break;
+ if (n < size)
+ return msg;
/* Else try again with more space. */
- if (n > -1) /* glibc 2.1 */
- size = n + 1; /* precisely what is needed */
- else /* glibc 2.0 */
- size *= 2; /* twice the old size */
+ size = n + 1; /* precisely what is needed */
msg = dss_realloc(msg, size);
}
- return msg;
}
/**
*
* \param args The string to be split.
* \param argv_ptr Pointer to the list of substrings.
- * \param delim Delimiter.
*
- * This function modifies \a args by replacing each occurrence of \a delim by
- * zero. A \p NULL-terminated array of pointers to char* is allocated dynamically
- * and these pointers are initialized to point to the broken-up substrings
- * within \a args. A pointer to this array is returned via \a argv_ptr.
+ * This function modifies the string given by the first argument by replacing
+ * all occurrences of space and '\t' characters by '\0'. A NULL-terminated
+ * array of pointers to char * is allocated dynamically, and these pointers are
+ * initialized to point to the broken-up substrings. A pointer to this array
+ * is returned via the last argument.
*
- * \return The number of substrings found in \a args.
+ * \return The number of substrings found.
*/
-unsigned split_args(char *args, char *** const argv_ptr, const char *delim)
+unsigned split_args(char *args, char *** const argv_ptr)
{
char *p;
char **argv;
size_t n = 0, i, j;
+ const char delim[] = " \t";
p = args + strspn(args, delim);
for (;;) {