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

main(argc,argv)
	int	argc;
	char *	argv[];
{
char	name[64];
VCONF_DEVTABLE	vdt;
int	res;
int	i;
char *	getenv();
char *	dispname;
char	host[64];

	if( argc > 1 )
		strcpy(name,argv[1]);
	else
		strcpy(name,VCONF_FILENAME);

	if( dispname=getenv("DISPLAY") )
		printf("DISPLAY set to '%s'\n",dispname);
	else
	{
		printf("unable to get environment variable 'DISPLAY'\n");
		exit(1);
	}

	gethostname(host,64);
	if( index(dispname,':') )	/* allow name shortcuts */
	{
		if( !strcmp(dispname,":0") || !strcmp(dispname,"unix:0") )
		{
			sprintf(dispname,"%s:0",host);
		}
		else if( !strcmp(dispname,":1") || !strcmp(dispname,"unix:1") )
		{
			sprintf(dispname,"%s:1",host);
		}
		else if( !strcmp(dispname,":0.0") || !strcmp(dispname,"unix:0.0"))
		{
			sprintf(dispname,"%s:0",host);
		}
		else if( !strcmp(dispname,":1.0") || !strcmp(dispname,"unix:1.0"))
		{
			sprintf(dispname,"%s:1",host);
		}
	}

	vconf_mkupper( dispname );

	res = vconf_get_table( dispname, name, &vdt );
	switch( res )
	{
	case VCONF_AOK:
		printf("all okay\n");
		break;
	case VCONF_NO_FILE_ERR:
		printf("couldn't open file %s\n",name);
		exit(1);
		break;
	case VCONF_FILE_FMT_ERR:
		printf("file format error\n");
		exit(1);
		break;
	default:
		printf("invalid return code from vconf_get_table()\n");
		exit(1);
		break;
	}

	printf("devices controllable by display '%s': \n",dispname);

	for( i=0; i < vdt.ndevs; i++ )
	{
		printf("\n=========================================\n");
		printf("device #%d:\n",i);
		printf("\ttype : %s\n",vconf_nameoftype(vdt.dev[i].type) );
		printf("\tname : %s\n",vdt.dev[i].name);
		printf("\tmodel: %s\n",vdt.dev[i].model);
		printf("\tmon  : %s\n",vdt.dev[i].mon_proc);
		printf("\tport : /dev/%s\n",vdt.dev[i].tty);
		printf("\tbaud : %d\n",vdt.dev[i].baud);
		printf("\tpar  : %s\n",vconf_nameofparity(vdt.dev[i].parity));
		printf("\tchan : %s\n",vdt.dev[i].channel);
	}
	
}


