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"); }
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); } }