#include "internal.h"
#include <stdio.h>
#include <sys/mtio.h>
#include <sys/fcntl.h>

static const char	mt_usage[] = "mt [-f device] opcode value\n";

struct mt_opcodes {
	char *	name;
	short	value;
};

/* missing: eod/seod, stoptions, stwrthreshold, densities */
static const struct mt_opcodes	opcodes[] = {
	{ "bsf",	MTBSF },
	{ "bsfm",	MTBSFM },
	{ "bsr",	MTBSR },
	{ "bss",	MTBSS },
	{ "datacompression",	MTCOMPRESSION },
	{ "eom",	MTEOM },
	{ "erase",	MTERASE },
	{ "fsf",	MTFSF },
	{ "fsfm",	MTFSFM },
	{ "fsr",	MTFSR },
	{ "fss",	MTFSS },
	{ "load",	MTLOAD },
	{ "lock",	MTLOCK },
	{ "mkpart",	MTMKPART },
	{ "nop",	MTNOP },
	{ "offline",MTOFFL },
	{ "rewoffline",MTOFFL },
	{ "ras1",	MTRAS1 },
	{ "ras2",	MTRAS2 },
	{ "ras3",	MTRAS3 },
	{ "reset",	MTRESET },
	{ "retension",	MTRETEN },
	{ "rew",	MTREW },
	{ "seek",	MTSEEK },
	{ "setblk",	MTSETBLK },
	{ "setdensity",	MTSETDENSITY },
	{ "drvbuffer",	MTSETDRVBUFFER },
	{ "setpart",	MTSETPART },
	{ "tell",	MTTELL },
	{ "wset",	MTWSM },
	{ "unload",	MTUNLOAD },
	{ "unlock",	MTUNLOCK },
	{ "eof",	MTWEOF },
	{ "weof",	MTWEOF },
	{ 0,			0 }
};

extern int
mt_main(int argc, char** argv)
{
	const char *				file = "/dev/tape";
	const struct mt_opcodes *	code = opcodes;
	struct mtop					op;
	int							fd;
	
	if ( strcmp(argv[1], "-f") == 0 ) {
		if ( argc < 4 ) {
		    usage (mt_usage);
		}
		file = argv[2];
		argv += 2;
		argc -= 2;
	}

	while ( code->name != 0 ) {
		if ( strcmp(code->name, argv[1]) == 0 )
			break;
		code++;
	}

	if ( code->name == 0 ) {
		fprintf(stderr, "mt: unrecognized opcode %s.\n", argv[1]);
		return( FALSE);
	}

	op.mt_op = code->value;
	if ( argc >= 3 )
		op.mt_count = atoi(argv[2]); 
	else
		op.mt_count = 1; /* One, not zero, right? */

	if ( (fd = open(file, O_RDONLY, 0)) < 0 ) {
		perror(file);
		return( FALSE);
	}

	if ( ioctl(fd, MTIOCTOP, &op) != 0 ) {
		perror(file);
		return( FALSE);
	}

	return( TRUE);
}
