Contiki 2.6

_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 )  /* 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