improve portability
add fflush
fix dest fd
fix typo
add fflush
fix test