/*
 * Copyright (c) 2004, Jilles Tjoelker
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with
 * or without modification, are permitted provided that the
 * following conditions are met:
 *
 * 1. Redistributions of source code must retain the above
 *    copyright notice, this list of conditions and the
 *    following disclaimer.
 * 2. Redistributions in binary form must reproduce the
 *    above copyright notice, this list of conditions and
 *    the following disclaimer in the documentation and/or
 *    other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
 * OF SUCH DAMAGE.
 */

#include <errno.h>
#include <stdio.h>

int
main(int argc, char *argv[])
{
    unsigned char buf[12];
    char data[65536];
    int n;
    int r;

    if (argc != 1)
    {
	fprintf(stderr, "Usage: %s\n", argv[0]);
	return 1;
    }

    while ((errno = 0), fread(buf, 1, 12, stdin) == 12)
    {
	n = (((((buf[11] << 8) | buf[10]) << 8) | buf[9]) << 8) | buf[8];
	if ((unsigned int)n > sizeof(data))
	{
	    fprintf(stderr, "h->len too big (%d)\n", n);
	    exit(1);
	}
	r = fread(data, 1, n, stdin);
	if (n != r)
	{
	    perror("read stdin");
	    exit(1);
	}
	r = fwrite(data, 1, n, stdout);
	if (n != r)
	{
	    perror("write stdout");
	    exit(1);
	}
    }

    if (errno != 0)
    {
	perror("read stdin");
	exit(1);
    }

    return 0;
}

/* vim:ts=8:cin:sw=4
 *  */
