Contiki 2.6
|
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 ) /* No file => sprintf */ 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 /* file => printf */ 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