@ -6,6 +6,16 @@
# include "text.h"
# include "util.h"
static void
uconcat ( FILE * fp1 , const char * s1 , FILE * fp2 , const char * s2 )
{
int c ;
setbuf ( fp2 , NULL ) ;
while ( ( c = getc ( fp1 ) ) ! = EOF )
putc ( c , fp2 ) ;
}
static void
usage ( void )
{
@ -17,17 +27,18 @@ main(int argc, char *argv[])
{
FILE * fp ;
int ret = 0 ;
void ( * cat ) ( FILE * , const char * , FILE * , const char * ) = & concat ;
ARGBEGIN {
case ' u ' :
setbuf ( stdout , NULL ) ;
cat = & uconcat ;
break ;
default :
usage ( ) ;
} ARGEND
if ( ! argc ) {
c onc at( stdin , " <stdin> " , stdout , " <stdout> " ) ;
c at( stdin , " <stdin> " , stdout , " <stdout> " ) ;
} else {
for ( ; * argv ; argc - - , argv + + ) {
if ( ! strcmp ( * argv , " - " ) ) {
@ -38,7 +49,7 @@ main(int argc, char *argv[])
ret = 1 ;
continue ;
}
c onc at( fp , * argv , stdout , " <stdout> " ) ;
c at( fp , * argv , stdout , " <stdout> " ) ;
if ( fp ! = stdin & & fshut ( fp , * argv ) )
ret = 1 ;
}