_SP_puts.c
00001 #include <stdio.h>
00002
00003
00004 void __io_putchar ( char );
00005
00006 void _SMALL_PRINTF_puts(const char *ptr, int len, FILE *fp)
00007 {
00008 if ( fp && ( fp->_file == -1 )
00009 && (fp->_flags & (__SWR | __SSTR) ) )
00010 {
00011 char *str = fp->_p;
00012
00013 for ( ; len ; len-- )
00014 {
00015 *str ++ = *ptr++;
00016 }
00017 fp->_p = str;
00018 }
00019 else
00020 {
00021 for ( ; len ; len-- )
00022 __io_putchar ( *ptr++ );
00023 }
00024
00025 }
00026
00027 int puts(const char *str)
00028 {
00029 #if 1 //VC090825: cleaner and faster version
00030 int len = 0;
00031 while ( str && (*str) )
00032 {
00033 __io_putchar ( *(str++) );
00034 len++;
00035 }
00036 #else //VC090825: cleaner, lighter and faster version
00037 int len = strlen ( str );
00038 _SMALL_PRINTF_puts(str, len, 0) ;
00039 #endif //VC090825: cleaner, lighter and faster version
00040 __io_putchar ( '\n' );
00041 return len;
00042 }
00043