osd-contiki/cpu/stm32w108/e_stdio/src/_SP_puts.c
2011-03-22 19:35:49 +01:00

44 lines
825 B
C

#include <stdio.h>
void __io_putchar ( char );
void _SMALL_PRINTF_puts(const char *ptr, int len, FILE *fp)
{
if ( fp && ( fp->_file == -1 ) /* No file => sprintf */
&& (fp->_flags & (__SWR | __SSTR) ) )
{
char *str = fp->_p;
for ( ; len ; len-- )
{
*str ++ = *ptr++;
}
fp->_p = str;
}
else /* file => printf */
{
for ( ; len ; len-- )
__io_putchar ( *ptr++ );
}
}
int puts(const char *str)
{
#if 1 //VC090825: cleaner and faster version
int len = 0;
while ( str && (*str) )
{
__io_putchar ( *(str++) );
len++;
}
#else //VC090825: cleaner, lighter and faster version
int len = strlen ( str );
_SMALL_PRINTF_puts(str, len, 0) ;
#endif //VC090825: cleaner, lighter and faster version
__io_putchar ( '\n' );
return len;
}