#include <stdio.h>
#include <stdlib.h>
#include "tiff.c"

#define MAGIC 400000

int isgraphicsobject=0,isstream=0;
char graphicsobject[] = "/Subtype /Image";
char stream[] = "stream";
char swidth[] = "/Filter /CCITTFaxDecode /Width";
char slength[] = "/Height";
char name[13];
int width, length;
char line[MAGIC];
int imageptr = 0;
int imagecounter = 0;
char c;

int main () {

	while (fgets(line,MAGIC,stdin)!=NULL) {
		if (isgraphicsobject==0 && !strncmp (line, graphicsobject, 15)) {
			isgraphicsobject = 1;
			printf ("image!\n"); 
		}
		if (isgraphicsobject==1 && !strncmp (line, slength, 7)) {
			sscanf (line, "/Height %d", &length);
			printf ("length %d \n", length); 
		}
		if (isgraphicsobject==1 && !strncmp (line, swidth, 30)) {
			sscanf (line, "/Filter /CCITTFaxDecode /Width %d", &width);
			printf ("width %d\n", width); 
		}
		if (isgraphicsobject==1 && !strncmp (line, stream, 6)) {
			printf ("stream\n"); isstream=1; imageptr=0; 
		}
		while (isstream==1 && imageptr<MAGIC) {
			c = getchar();
			line[imageptr++] = c;
			if (c == 'e') {
			 c = getchar();
		   	 line[imageptr++] = c;
			 if (c == 'n') {
			  c = getchar();
			  line[imageptr++] = c;
			  if (c == 'd') {
			   c = getchar();
			   line[imageptr++] = c;
			   if (c == 's') {
				c = getchar();
				line[imageptr++] = c;
				if (c == 't') {
				 c = getchar();
				 line[imageptr++] = c;
				 if (c == 'r') {
				  c = getchar();
				  line[imageptr++] = c;
				  if (c == 'e') {
				   c = getchar();
				   line[imageptr++] = c;
				   if (c == 'a') {
					c = getchar();
					line[imageptr++] = c;
					if (c == 'm') {
					 c = getchar();
				     line[imageptr++] = c;
					 if (c == '\n') {
					  isstream = 2;
		}}}}}}}}}}}
		if (isstream == 2) {
			isstream = 0; isgraphicsobject = 0;
			sprintf (name, "out-%03d.tif", imagecounter++);
			tiff_write_raw (width, length, name, line, imageptr);
		}
	}
	return 0;
}
