📄 restoretextmode.c
字号:
#include <stdlib.h>#include <stdio.h>#include <vga.h>#include "../src/driver.h"#include <errno.h>/* * Note: Observe that when writing the font to a file, the file to write is * opened after vga_init has been called (so that root permissions have been * given up). This means that there is no major security hole lurking here. */unsigned char regs[MAX_REGS];voidmain (int argc, char *argv[]){ vga_init (); if (argc == 1) { printf ("Save/restore textmode registers.\n"); printf ("Syntax: restoretextmode option filename\n"); printf (" -r filename Restore registers from file.\n"); printf (" -w filename Write registers to file.\n"); exit (0); } if (argv[1][0] != '-') { printf ("Must specify -r or -w.\n"); exit (1); } switch (argv[1][1]) { case 'r': case 'w': if (argc != 3) { printf ("Must specify filename.\n"); exit (1); } break; default: printf ("Invalid option. Must specify -r or -w.\n"); exit (1); } if (argv[1][1] == 'r') { FILE *f; f = fopen (argv[2], "rb"); if (f == NULL) { error: perror ("restoretextmode"); exit (1); } if (1 != fread (regs, MAX_REGS, 1, f)) { if (errno) goto error; puts ("restoretextmode: input file corrupted."); exit (1); } fclose (f); } vga_setmode (G640x350x16); switch (argv[1][1]) { case 'r': vga_settextmoderegs (regs); break; case 'w': vga_gettextmoderegs (regs); break; } vga_setmode (TEXT); if (argv[1][1] == 'w') { FILE *f; f = fopen (argv[2], "wb"); if (f == NULL) goto error; if (1 != fwrite (regs, MAX_REGS, 1, f)) goto error; if (fclose (f)) goto error; } exit (0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -