📄 tabs.c
字号:
static char *sccsid = "@(#)tabs.c 4.1 (Berkeley) 10/1/80";#include <stdio.h>#include <sgtty.h>#define SP ' '#define TB '\t'#define NL '\n'# define ESC 033# define RHM 060# define SI 017# define DEL 0177# define SET '1'# define CLR '2'# define MGN '9'# define CR '\r'# define BS '\b'struct sysnod { char *sysnam; int sysval;};#define DASI300 1#define DASI300S 2#define DASI450 3#define TN300 4#define TTY37 5#define HP 6struct sysnod tty[] = { {"dasi300", DASI300}, {"300", DASI300}, {"dasi300s", DASI300S}, {"300s", DASI300S}, {"dasi450", DASI450}, {"450", DASI450}, {"37", TTY37}, {"tty37", TTY37}, {"tn300", TN300}, {"terminet", TN300}, {"tn", TN300}, {"hp", HP}, {0, 0},};int margset = 1;syslook(w)char *w;{ register struct sysnod *sp; for (sp = tty; sp->sysnam!=NULL; sp++) if (strcmp(sp->sysnam, w)==0) return(sp->sysval); return(0);}main(argc,argv)int argc; char **argv;{ struct sgttyb tb; int type; char *getenv(); type=0; if (argc>=2 && strcmp(argv[1],"-n")==0) { margset--; argc--; argv++; } if (argc>=2) { type=syslook(argv[1]); } else { type=syslook(getenv("TERM")); } switch(type) { case DASI300: dasi300(); break; case DASI300S: dasi300(); break; case DASI450: dasi450(); break; case TN300: tn300(); break; case TTY37: tty37(); break; case HP: hp2645(); break; default: gtty (0, &tb); if ( (tb.sg_flags & (LCASE|CRMOD)) == CRMOD) { /* test for CR map on, upper case off, i.e. terminet but not 33 */ if ((tb.sg_ispeed) == B300) /* test for 300 baud */ misc(); } else if ((tb.sg_flags & (CRMOD|LCASE)) == 0 && (tb.sg_ispeed ) == B150) { /* apparent model 37 */ tty37(); } }}clear(n){ escape(CLR); delay(n); putchar(CR); nl();}delay(n){ while (n--) putchar(DEL);}tabs(n){ int i,j; if(margset) n--; for( i=0; i<n; ++i ){ for( j=0; j<8; ++j ) { putchar(SP); } escape(SET); }}margin(n){ int i; if(margset) { for( i=0; i<n; ++i) putchar(SP); }}escape(c){ putchar(ESC); putchar(c);}bs(n){ while (n--) putchar(BS);}nl(){ putchar(NL);}/* ======== terminal types ======== */dasi450(){ struct sgttyb t; gtty(0,&t); t.sg_flags &= ~ALLDELAY; stty(0,&t); clear(8); bs(16); margin(8); escape(MGN); nl(); tabs(16); escape(RHM); nl();}tty37(){ putchar(SI); clear(40); bs(8); tabs(9); nl();}dasi300(){ clear(8); tabs(15); nl();}tn300(){ struct sgttyb t; gtty(0,&t); t.sg_flags &= ~ALLDELAY; t.sg_flags |= CR1|BS1; stty(0,&t); clear(8); margin(8); escape(SET); tabs(14); nl();}hp2645(){ escape('3'); /*clr*/ putchar(CR); tabs(10); nl();}misc(){ tabs(14); nl();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -