#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>

static char tmp[257];

static int impstring(char *ptr)
{
  int i;
  char *p = tmp;
  if (*ptr >= 6) {
    for (i = 1; i <= *ptr; i++) {
      if (!isascii(*p++ = ptr[i])) return(0!=0);
    }
    *p = '\0';
    return(0==0);
  } else return (0!=0);
}

int main(int argc, char **argv)
{
  char *mem;
  int i, rc;
  FILE *file;
  off_t filesize;
  if (argc != 2) {
    fprintf(stderr, "Won't!\n"); exit(1);
  }
  file = fopen(argv[1], "rb");
  if (file == NULL) {
    fprintf(stderr, "Can't!\n"); exit(2);
  }
  rc = fseek(file, (off_t)0, SEEK_END);
  filesize = ftell(file);
  fprintf(stderr, "%s: %ld bytes\n", argv[1], filesize);
  mem = malloc(filesize+257);
  for (i = 0; i < filesize+257; i++) mem[i] = 0;
  fseek(file, (off_t)0, SEEK_SET);
  rc = fread(mem, 1, filesize, file);
  for (i = 0; i < filesize; i++) {
    if (impstring(mem+i)) {
      fprintf(stdout, "%s\n", tmp);
      i += strlen(tmp);
    }
  }
  exit(0);
}


