/****************************************************************/
/*								*/
/*		( gcc ramdoc.c -o ramdoc )			*/
/*						by S.Takahata	*/
/****************************************************************/
#include	<stdio.h>
#include	<string.h>

#define	MAXMUM	10000
#define	KUGIRI	" \t"
#define	WAKU0	"┏━━━━━┯━━━━━━━━━━┯━━━━━━━━━━━━━━━━━━┓\n"
#define	WAKU1	"┃ アドレス │     名      前     │                                    ┃\n"
#define	WAKU2	"┣━━━━━┿━━━━━━━━━━┿━━━━━━━━━━━━━━━━━━┫\n"
#define	WAKU3	"┃  %-6s  │  %-16s  │                                    ┃\n"
#define	WAKU4	"┠─────┼──────────┼──────────────────┨\n"
#define	WAKU5	"┗━━━━━┷━━━━━━━━━━┷━━━━━━━━━━━━━━━━━━┛\n"
#define	WAKU6	"                                ─ %3d ─\n\f"
#define	WAKU7	"                                ─ %3d ─\n"
#define	PAGE1	30

typedef struct{
    unsigned char	address[7];
    unsigned char	name[20];
}LABEL;

static LABEL	label[MAXMUM];
static FILE	*fpr, *fpw;

void main(int argc, char **argv)
{
    int		i, j, k, n;
    unsigned char	in_file[40], out_file[44];
    
    if(argc < 2){
	printf("Input Error !!\n");
	printf("msgcnv [入力ファイル名] \n");
	exit(1);
    }
    strcpy(in_file, argv[1]);
    if((fpr = fopen(in_file, "r")) == NULL){
	printf("File Open Error !! [%s]\n", in_file);
	exit(1);
    }
    n = bufread();
    fclose(fpr);

    if((fpw = fopen("outfile", "w")) == NULL){
	printf("File Open Error !! [%s]\n", in_file);
	exit(1);
    }


    
    fprintf(fpw, WAKU0);
    fprintf(fpw, WAKU1);
    fprintf(fpw, WAKU2);
    i = 0;
    j = 1;
    while(i < n){
	fprintf(fpw, WAKU3, label[i].address, label[i].name);
	if(i == n-1){
	    fprintf(fpw, WAKU5);
	    for(k = 0; k < (PAGE1-(i % PAGE1)-1)*2; k ++)
		fprintf(fpw, "\n");
	    fprintf(fpw, WAKU7, j);
	}
	else if(i%PAGE1 != PAGE1-1)	fprintf(fpw, WAKU4);
	else{
	    fprintf(fpw, WAKU5);
	    fprintf(fpw, WAKU6, j);
	    fprintf(fpw, WAKU0);
	    fprintf(fpw, WAKU1);
	    fprintf(fpw, WAKU2);
	    j ++;
	}
	i ++;
    }
    
    fclose(fpw);

    system("lpr -Psjlbp outfile");
    /*system("more outfile");*/
    system("rm outfile");
}

int bufread()
{
    int		c, i;
    char	s[256], *s1;

    i = 0;
    while(fgets(s, 256, fpr) != NULL){
	s1 = strtok(s, KUGIRI);
	s1 = strtok(NULL, KUGIRI);
	strcpy(label[i].address, s1);
	s1 = strtok(NULL, KUGIRI);
	strcpy(label[i].name, s1);
	i ++;
    }
    return i;
}
