/* DETEX v1.0. Part of DoomTex, by Steve McCrea 26/8/94 */
#include <stdio.h>
#include <stdlib.h>
#include <dos.h>
#include <io.h>
#include <sys\types.h>
#include <sys\stat.h>
#include <malloc.h>
#include <fcntl.h>

int	fh;

void error(char *errstr)
{	printf("Detex: ");
	printf(errstr);
	exit(1);	}

main(argc,argv)
int argc;
char *argv[];
{
	char texname[10], patname[10];
	char *pnames;
	long numtexs, numpats, dummy, i;
	int lnumpats, patnum, j, k, x, y;
	
	if (argc != 3)
		error("Usage: detex <pnames> <textures>\n");

	texname[8]='\0';
	patname[8]='\0';
	
	if (!(fh=open(argv[1], O_BINARY|O_RDONLY)))
		error("Can't open the <pnames> resource.\n");
	read(fh, &numpats, 4);
	if ((pnames=(char *)malloc(8*numpats))==NULL)
		error("Can't allocate space for <pnames> resource.\n");
	if (read(fh, pnames, 8*numpats)!=8*numpats)
		error("The <pnames> resource is short.\n");
	close(fh);

	if (!(fh=open(argv[2], O_BINARY|O_RDONLY)))
		error("Can't open <textures>.\n");

	for (i=0; i<8*numpats; i++)
		if (*(pnames+i)>0x40 && *(pnames+i)<0x5b) *(pnames+i) |= 0x20;

	printf("TEXTURES\n");
	read(fh, &numtexs, 4);
	for (i=0; i<numtexs; i++)
		read(fh, &dummy, 4);
	for (i=0; i<numtexs; i++) {
		for (k=0; k<8; k++)
			read(fh, &texname[k], 1);
		read(fh, &dummy, 4);
		read(fh, &x, 2);
		read(fh, &y, 2);
		read(fh, &dummy, 4);
		read(fh, &lnumpats, 2);
		printf("%s %d %d\n", &texname, x, y);
		for (j=0; j<lnumpats; j++) {
			read(fh, &x, 2);
			read(fh, &y, 2);
			read(fh, &patnum, 2);
			for (k=0; k<8; k++)
				patname[k]=*(pnames+8*patnum+k);
			printf("\t\t%s %d %d\n", &patname, x, y);
			read(fh, &dummy, 4);
			}
		}
	close(fh);
	
	printf("EOF\n");
	free(pnames);

	exit(0);
}