35 lines
579 B
C
35 lines
579 B
C
|
#include <stdio.h>
|
||
|
#include <string.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)
|
||
|
{
|
||
|
int len = strlen ( str );
|
||
|
_SMALL_PRINTF_puts(str, len, 0) ;
|
||
|
__io_putchar ( '\n' );
|
||
|
return len;
|
||
|
}
|
||
|
|