예제 #1
0
파일: main.c 프로젝트: Nurb432/plan9front
static void
dump(Vga* vga)
{
	Ctlr *ctlr;
	Attr *attr;
	int i;
	
	if(vga->mode)
		dbdumpmode(vga->mode);

	for(attr = vga->attr; attr; attr = attr->next)
		Bprint(&stdout, "vga->attr: %s=%s\n", attr->attr, attr->val);

	for(ctlr = vga->link; ctlr; ctlr = ctlr->link){
		if(ctlr->dump == 0)
			continue;

		trace("%s->dump\n", ctlr->name);
		if(ctlr->flag && ctlr->flag != Fsnarf){
			printitem(ctlr->name, "flag");
			printflag(ctlr->flag);
			Bprint(&stdout, "\n");
		}
		(*ctlr->dump)(vga, ctlr);
		ctlr->flag |= Fdump;
	}

	for(i=0; i < nelem(vga->edid); i++){
		if(vga->edid[i])
			printedid(vga->edid[i]);
	}

	Bprint(&stdout, "\n");
}
예제 #2
0
void edid_get(int fd)
{
	if (options[OptGetEdid]) {
		FILE *fout = stdout;

		if (file_out) {
			if (!strcmp(file_out, "-"))
				fout = stdout;
			else
				fout = fopen(file_out, "w+");
			if (!fout) {
				fprintf(stderr, "Failed to open %s: %s\n", file_out,
						strerror(errno));
				exit(1);
			}
		}
		gedid.edid = (unsigned char *)malloc(gedid.blocks * 128);
		if (doioctl(fd, VIDIOC_G_EDID, &gedid) == 0)
			printedid(fout, &gedid, gformat);
		if (file_out && fout != stdout)
			fclose(fout);
		free(gedid.edid);
	}
}