#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv, char **env) 
{
  char buf[1000];
  ssize_t bytes_read;
  ssize_t bytes_written;
  ssize_t bytes_total = 0;
  ssize_t modulo_count = 0;
  u_int dot_ticker = 0;
  ssize_t block_size = 1024;

  if (argc == 2) {
    block_size = atoi(argv[1]);
  }
  if (argc > 2) {
    fprintf(stderr, "Usage: dots [blocksize]\n");
  }

  while (bytes_read = fread(buf, 1, sizeof(buf), stdin)) {
    bytes_written = fwrite(buf, 1, bytes_read, stdout);
    bytes_total += bytes_written;
    modulo_count += bytes_written;
    if (modulo_count > block_size) {
      fprintf(stderr, (dot_ticker++%10)?".":"*");
      if (0==dot_ticker%99) {
	fprintf(stderr, "\n");
      }
      modulo_count -= block_size;
    }
  }
  fprintf(stderr, "\nTotal bytes passed: %d\n", bytes_total);
}

