static int conio_init_graphics(caca_display_t *dp) { dp->drv.p = malloc(sizeof(struct driver_private)); _wscroll = 0; _setcursortype(_NOCURSOR); clrscr(); gettextinfo(&dp->drv.p->ti); dp->drv.p->screen = malloc(2 * dp->drv.p->ti.screenwidth * dp->drv.p->ti.screenheight * sizeof(char)); if(dp->drv.p->screen == NULL) return -1; # if defined(SCREENUPDATE_IN_PC_H) ScreenRetrieve(dp->drv.p->screen); # else /* FIXME */ # endif dp->resize.allow = 1; caca_set_canvas_size(dp->cv, dp->drv.p->ti.screenwidth, dp->drv.p->ti.screenheight); dp->resize.allow = 0; return 0; }
void TTdump(meBuffer *bp) { meUShort r1, r2, c1, c2 ; meUByte buff[TTdepthDefault*TTdepthDefault*2], *ss ; meUByte line[TTwidthDefault] ; ScreenRetrieve(buff) ; r1 = ScreenRows() ; c1 = ScreenCols() ; ss = buff ; for(r2=0 ; r2<r1 ; r2++) { for(c2=0 ; c2<c1 ; c2++) { line[c2] = *ss++ ; ss++ ; } line[c2] = '\0' ; addLineToEob(bp,line) ; } }
int main(int argc, char *argv[]) { char *function, *file; int lineno; #ifdef __DJGPP__ int r, c; short *sc; char buf[1024]; int i; #endif int diff = 0; unsigned v; FILE *ofile = 0; FILE *ifile = 0; if (argc < 2) { fprintf(stderr, "Usage: gsymify [-o <outfile>] [-i <tracefile>] [-a <adjust>] <program>\n"); fprintf(stderr, "This program adds debug information to DJGPP program call frame tracebacks\n"); return 1; } while (argv[1][0] == '-') { if ((strcmp(argv[1], "-a") == 0) && (argc > 3)) { diff = atoi(argv[2]); argc -= 2; argv += 2; } if ((strcmp(argv[1], "-o") == 0) && (argc > 3)) { ofile = fopen(argv[2], "w"); if (ofile == 0) fprintf(stderr, "Error: unable to open file %s\n", argv[2]); argc -= 2; argv += 2; } if ((strcmp(argv[1], "-i") == 0) && (argc > 3)) { ifile = fopen(argv[2], "r"); if (ifile == 0) fprintf(stderr, "Error: unable to open file %s\n", argv[2]); argc -= 2; argv += 2; } } progname = argv[1]; _GetProgName = GetProgName; InitRHGDB(); if (!isatty(0) && !ifile) ifile = stdin; if (!isatty(1) && !ofile) ofile = stdout; if (ifile) { char line[1000]; if (ofile == 0) ofile = stdout; while (fgets(line, 1000, ifile)) { if (strncmp(line, " 0x", 4) == 0) { sscanf(line + 4, "%x", &v); symify(line + 4, &function, &file, &lineno, diff); fprintf(ofile, " 0x%08x", v); if (function) { fprintf(ofile, " %s", function); free(function); if (file) { fprintf(ofile, ", line %d of %s", lineno, file); free(file); } } fprintf(ofile, "\n"); } else fputs(line, ofile); } fclose(ifile); fclose(ofile); return 0; } #ifdef __DJGPP__ sc = (short *) malloc(ScreenRows() * ScreenCols() * 2); ScreenRetrieve(sc); for (r = 0; r < ScreenRows(); r++) { if (SC(r, 0) == ' ' && SC(r, 1) == ' ' && SC(r, 2) == '0' && SC(r, 3) == 'x') { buf[8] = 0; for (i = 0; i < 8; i++) buf[i] = SC(r, i + 4); sscanf(buf, "%x", &v); symify(buf, &function, &file, &lineno, diff); buf[0] = 0; if (function) { strcpy(buf, function); free(function); } if (file) { if (buf[0]) strcat(buf, ", "); sprintf(buf + strlen(buf), "line %d of %s", lineno, file); free(file); } if (buf[0]) for (i = 0; buf[i]; i++) SW(r, 15 + i) = 0x0f00 + buf[i]; } } if (ofile) { for (r = 0; r < ScreenRows(); r++) { c = 0; for (i = 0; i < ScreenCols(); i++) if (SC(r, i) != ' ') c = i; for (i = 0; i <= c; i++) fputc(SC(r, i), ofile); fputc('\n', ofile); } fclose(ofile); } else ScreenUpdate(sc); #endif return 0; }