mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-11-09 13:12:37 -05:00
add itoa(), replace snprintf("%d") calls
we can save some space and still end up with a 20% faster function Change-Id: Ia58900122944b8527ef01a673afe18ea794acb41
This commit is contained in:
parent
9e61d53c7c
commit
f55fe21f66
9 changed files with 98 additions and 41 deletions
45
firmware/common/itoa.c
Normal file
45
firmware/common/itoa.c
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
#include <stddef.h>
|
||||
#include "string.h"
|
||||
#include "strmemccpy.h"
|
||||
/* Copyright (C) 1989, 1990, 1991, 1992 Free Software Foundation, Inc.
|
||||
Written by James Clark (jjc@jclark.com)
|
||||
|
||||
This file was part of groff.
|
||||
|
||||
groff is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free
|
||||
Software Foundation; either version 2, or (at your option) any later
|
||||
version.
|
||||
|
||||
groff is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with groff; see the file COPYING. If not, write to the Free Software
|
||||
Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
#define INT_DIGITS 19 /* enough for 64 bit integer */
|
||||
|
||||
char *itoa(char *buf, size_t bufsz, long int i)
|
||||
{
|
||||
/* Room for INT_DIGITS digits, - and '\0' */
|
||||
static char intbuf[INT_DIGITS + 2];
|
||||
char *p = intbuf + INT_DIGITS + 1; /* points to terminating '\0' */
|
||||
if (i >= 0) {
|
||||
do {
|
||||
*--p = '0' + (i % 10);
|
||||
i /= 10;
|
||||
} while (i != 0);
|
||||
}
|
||||
else { /* i < 0 */
|
||||
do {
|
||||
*--p = '0' - (i % 10);
|
||||
i /= 10;
|
||||
} while (i != 0);
|
||||
*--p = '-';
|
||||
}
|
||||
strmemccpy(buf, p, bufsz);
|
||||
return buf;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue