Commit 56d68a3c authored by Willy Tarreau's avatar Willy Tarreau Committed by Paul E. McKenney
Browse files

tools/nolibc/stdlib: move ltoa() to stdlib.h



This function is not standard and performs the opposite of atol(). Let's
move it with atol(). It's been split between a reentrant function and one
using a static buffer.

There's no more definition in nolibc.h anymore now.

Signed-off-by: default avatarWilly Tarreau <w@1wt.eu>
Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
parent eba6d00d
Loading
Loading
Loading
Loading
+0 −22
Original line number Diff line number Diff line
@@ -94,26 +94,4 @@
/* Used by programs to avoid std includes */
#define NOLIBC

static __attribute__((unused))
const char *ltoa(long in)
{
	/* large enough for -9223372036854775808 */
	static char buffer[21];
	char       *pos = buffer + sizeof(buffer) - 1;
	int         neg = in < 0;
	unsigned long n = neg ? -in : in;

	*pos-- = '\0';
	do {
		*pos-- = '0' + n % 10;
		n /= 10;
		if (pos < buffer)
			return pos + 1;
	} while (n);

	if (neg)
		*pos-- = '-';
	return pos + 1;
}

#endif /* _NOLIBC_H */
+32 −0
Original line number Diff line number Diff line
@@ -45,6 +45,38 @@ int atoi(const char *s)
	return atol(s);
}

/* performs the opposite of atol() using a user-fed buffer. The buffer must be
 * at least 21 bytes long (large enough for "-9223372036854775808").
 */
static __attribute__((unused))
const char *ltoa_r(long in, char *buffer)
{
	char       *pos = buffer + 21 - 1;
	int         neg = in < 0;
	unsigned long n = neg ? -in : in;

	*pos-- = '\0';
	do {
		*pos-- = '0' + n % 10;
		n /= 10;
		if (pos < buffer)
			return pos + 1;
	} while (n);

	if (neg)
		*pos-- = '-';
	return pos + 1;
}

/* performs the opposite of atol() using a statically allocated buffer */
static __attribute__((unused))
const char *ltoa(long in)
{
	/* large enough for -9223372036854775808 */
	static char buffer[21];
	return ltoa_r(in, buffer);
}

static __attribute__((unused))
int msleep(unsigned int msecs)
{