// Example 8-1: The basic_networkbuf class template
#include <cstdio>
#include <iostream>
#include "netstream.h"

template<typename charT, typename traits>
void copy(std::basic_ostream<charT, traits>& out, std::basic_istream<charT, traits>& in)
{
  char c;
  while (in.get(c))
    out.put(c);
}

int main(int argc, char** argv)
{
  if (argc != 3) {
    std::cerr << "usage: netstream FROM TO\n";
    return 1;
  }

  inetstream in(argv[1], 1);
  if (! in) {
    std::perror(argv[1]);
    return 1;
  }

  onetstream out(argv[2], 1);
  if (! out) {
    std::perror(argv[2]);
    return 1;
  }

  copy(out, in);

  out.disconnect();
  if (! out) {
    std::perror(argv[2]);
    return 1;
  }
}
