#include <stdio.h>
#include "hppcl.h"

void checkend(char *dd)
{
	int r;
	for(r=0;r<strlen(dd);r++)
		if(dd[r]=='\n') dd[r]='\0';
}
char *strmid(char *s,int fro,int how)
{
	static char *viss;
	int a;
	viss=(char *)malloc(sizeof(char)*strlen(s));
	for (a=0;a<how;a++)
		viss[a]=s[fro+a];
	viss[a++]='\0';
	return viss;
}
main(int argc, char *argv[])
{
FILE *f,*o;
char buffer[255],ka[100],kb[100];
char c;
char *kazi[2][15];
char *megj;
int oldal=0;
int pos[2];
int cnum=-1;
int t;
int z=0;

if (argc=2)
	{
	f=fopen(argv[1],"r");
	z=1;
	if (f==NULL)
		{
		perror("Can't open file.");
		exit(1);
		}
	}
else f=stdin;
o=stdout;

megj=(char*)malloc(80*sizeof(char));
sprintf(megj,"cassette inlay label printer  (c) Elite");  /* default notation */

while (!feof(f))
	{
	fgets(buffer,80,f);
	if (feof(f))
		sprintf(buffer,"**-1");
	if (buffer[0]=='*')
		switch (buffer[1])
			{
			case '*':
				/* uj kazetta */
				if (cnum!=-1)
					{
					fprintf(o,"\n\n %s\n\n\n%3d. %s\n     %s\n\n\n",megj,cnum,kazi[0][0],kazi[1][0]);
					for (t=0;t<15;t++)
						{
						if (t>=pos[0]) sprintf(ka," ");
							else strncpy(ka,kazi[0][t],30);
						ka[30]='\0';
						kb[30]='\0';
						if (t>=pos[1]) sprintf(kb," ");
							else strncpy(kb,kazi[1][t],30);
						fprintf(o,"%-30s | %-30s\n",ka,kb);
						}
					}
				pos[0]=pos[1]=0;
				oldal=0;
				cnum=atoi(strmid(buffer,2,strlen(buffer)-2));
				break;
			case '_':
				strncpy(megj,strmid(buffer,2,strlen(buffer)-2),61);
				/* Megjegyzes */
				break;
			case 'a':
				oldal=0;
				/* a oldal adat */
				break;
			case 'b':
				oldal=1;
				/* a oldal adat */
				break;
			}	
		else
		if ((buffer[0]!=' ')&&(buffer[0]!='\n'))
			{
			kazi[oldal][pos[oldal]]=(char *)malloc(sizeof(buffer));
			checkend(buffer);
			strcpy(kazi[oldal][pos[oldal]],buffer);
			if (oldal<2) pos[oldal]++;
			}
	}
	if (z==1) fclose(f);
}
