📄 setterm.c
字号:
else if (strcmp(argv[0], "hsync") == 0) *opt_mode = 2; else if (strcmp(argv[0], "powerdown") == 0) *opt_mode = 3; else if (strcmp(argv[0], "off") == 0) *opt_mode = 0; else *bad_arg = TRUE; } else { *opt_mode = 0; }}#if 0static voidparse_standout(int argc, char *argv, int *option, int *opt_all, int *bad_arg) { /* argc: Number of arguments for this option. */ /* argv: Arguments for this option. */ /* option: Clear flag to set. */ /* opt_all: Clear all switch to set or reset. */ /* bad_arg: Set to true if an error is detected. *//* Parse a -standout specification. */ if (argc > 1 || *option) *bad_arg = TRUE; *option = TRUE; if (argc == 1) *opt_all = atoi(argv[0]); else *opt_all = -1;}#endifstatic voidparse_msglevel(int argc, char **argv, int *option, int *opt_all, int *bad_arg) { /* argc: Number of arguments for this option. */ /* argv: Arguments for this option. */ /* option: Clear flag to set. */ /* opt_all: Clear all switch to set or reset. */ /* bad_arg: Set to true if an error is detected. */ if (argc > 1 || *option) *bad_arg = TRUE; *option = TRUE; if (argc == 1) { *opt_all = atoi(argv[0]); if (*opt_all < 0 || *opt_all > 8) *bad_arg = TRUE; } else { *opt_all = -1; }}static voidparse_snap(int argc, char **argv, int *option, int *opt_all, int *bad_arg) { /* argc: Number of arguments for this option. */ /* argv: Arguments for this option. */ /* option: Clear flag to set. */ /* opt_all: Clear all switch to set or reset. */ /* bad_arg: Set to true if an error is detected. *//* Parse a -dump or -append specification. */ if (argc > 1 || *option) *bad_arg = TRUE; *option = TRUE; if (argc == 1) { *opt_all = atoi(argv[0]); if ((*opt_all <= 0)) *bad_arg = TRUE; } else { *opt_all = 0; }}static voidparse_snapfile(int argc, char **argv, int *option, int *opt_all, int *bad_arg) { /* argc: Number of arguments for this option. */ /* argv: Arguments for this option. */ /* option: Clear flag to set. */ /* opt_all: Clear all switch to set or reset. */ /* bad_arg: Set to true if an error is detected. *//* Parse a -file specification. */ if (argc != 1 || *option) *bad_arg = TRUE; *option = TRUE; if (argc == 1) strcpy((char *)opt_all, argv[0]);}static voidparse_tabs(int argc, char **argv, int *option, int *tab_array, int *bad_arg) { /* argc: Number of arguments for this option. */ /* argv: Arguments for this option. */ /* option: Clear flag to set. */ /* tab_array: Array of tabs */ /* bad_arg: Set to true if an error is detected. */ if (*option || argc > 160) *bad_arg = TRUE; *option = TRUE; tab_array[argc] = -1; while(argc--) { tab_array[argc] = atoi(argv[argc]); if(tab_array[argc] < 1 || tab_array[argc] > 160) { *bad_arg = TRUE; return; } }}static voidparse_clrtabs(int argc, char **argv, int *option, int *tab_array, int *bad_arg) { /* argc: Number of arguments for this option. */ /* argv: Arguments for this option. */ /* option: Clear flag to set. */ /* tab_array: Array of tabs */ /* bad_arg: Set to true if an error is detected. */ if (*option || argc > 160) *bad_arg = TRUE; *option = TRUE; if(argc == 0) { tab_array[0] = -1; return; } tab_array[argc] = -1; while(argc--) { tab_array[argc] = atoi(argv[argc]); if(tab_array[argc] < 1 || tab_array[argc] > 160) { *bad_arg = TRUE; return; } }}static voidparse_regtabs(int argc, char **argv, int *option, int *opt_len, int *bad_arg) { /* argc: Number of arguments for this option. */ /* argv: Arguments for this option. */ /* option: Clear flag to set. */ /* opt_len: Regular tab length. */ /* bad_arg: Set to true if an error is detected. */ if (*option || argc > 1) *bad_arg = TRUE; *option = TRUE; if(argc == 0) { *opt_len = 8; return; } *opt_len = atoi(argv[0]); if(*opt_len < 1 || *opt_len > 160) { *bad_arg = TRUE; return; }}static voidparse_blength(int argc, char **argv, int *option, int *opt_all, int *bad_arg) { /* argc: Number of arguments for this option. */ /* argv: Arguments for this option. */ /* option: Clear flag to set. */ /* opt_all */ /* bad_arg: Set to true if an error is detected. *//* Parse -blength specification. */ if (argc > 1 || *option) *bad_arg = TRUE; *option = TRUE; if (argc == 1) { *opt_all = atoi(argv[0]); if (*opt_all > 2000) *bad_arg = TRUE; } else { *opt_all = 0; }}static voidparse_bfreq(int argc, char **argv, int *option, int *opt_all, int *bad_arg) { /* argc: Number of arguments for this option. */ /* argv: Arguments for this option. */ /* option: Clear flag to set. */ /* opt_all */ /* bad_arg: Set to true if an error is detected. *//* Parse -bfreq specification. */ if (argc > 1 || *option) *bad_arg = TRUE; *option = TRUE; if (argc == 1) { *opt_all = atoi(argv[0]); } else { *opt_all = 0; }}static voidshow_tabs(void) { int i, co = tigetnum("cols"); if(co > 0) { printf("\r "); for(i = 10; i < co-2; i+=10) printf("%-10d", i); putchar('\n'); for(i = 1; i <= co; i++) putchar(i%10+'0'); putchar('\n'); for(i = 1; i < co; i++) printf("\tT\b"); putchar('\n'); }}#define STRCMP(str1,str2) strncmp(str1,str2,strlen(str1))static voidparse_option(char *option, int argc, char **argv, int *bad_arg) { /* option: Option with leading '-' removed. */ /* argc: Number of arguments for this option. */ /* argv: Arguments for this option. */ /* bad_arg: Set to true if an error is detected. *//* Parse a single specification. */ if (STRCMP(option, "term") == 0) parse_term(argc, argv, &opt_term, &opt_te_terminal_name, bad_arg); else if (STRCMP(option, "reset") == 0) parse_none(argc, argv, &opt_reset, bad_arg); else if (STRCMP(option, "initialize") == 0) parse_none(argc, argv, &opt_initialize, bad_arg); else if (STRCMP(option, "cursor") == 0) parse_switch(argc, argv, &opt_cursor, &opt_cu_on, bad_arg); else if (STRCMP(option, "repeat") == 0) parse_switch(argc, argv, &opt_repeat, &opt_rep_on, bad_arg); else if (STRCMP(option, "appcursorkeys") == 0) parse_switch(argc, argv, &opt_appcursorkeys, &opt_appck_on, bad_arg); else if (STRCMP(option, "linewrap") == 0) parse_switch(argc, argv, &opt_linewrap, &opt_li_on, bad_arg);#if 0 else if (STRCMP(option, "snow") == 0) parse_switch(argc, argv, &opt_snow, &opt_sn_on, bad_arg); else if (STRCMP(option, "softscroll") == 0) parse_switch(argc, argv, &opt_softscroll, &opt_so_on, bad_arg);#endif else if (STRCMP(option, "default") == 0) parse_none(argc, argv, &opt_default, bad_arg); else if (STRCMP(option, "foreground") == 0) par_color(argc, argv, &opt_foreground, &opt_fo_color, bad_arg); else if (STRCMP(option, "background") == 0) par_color(argc, argv, &opt_background, &opt_ba_color, bad_arg); else if (STRCMP(option, "ulcolor") == 0) par_color2(argc, argv, &opt_ulcolor, &opt_ul_color, bad_arg); else if (STRCMP(option, "hbcolor") == 0) par_color2(argc, argv, &opt_hbcolor, &opt_hb_color, bad_arg); else if (STRCMP(option, "inversescreen") == 0) parse_switch(argc, argv, &opt_inversescreen, &opt_invsc_on, bad_arg); else if (STRCMP(option, "bold") == 0) parse_switch(argc, argv, &opt_bold, &opt_bo_on, bad_arg); else if (STRCMP(option, "half-bright") == 0) parse_switch(argc, argv, &opt_halfbright, &opt_hb_on, bad_arg); else if (STRCMP(option, "blink") == 0) parse_switch(argc, argv, &opt_blink, &opt_bl_on, bad_arg); else if (STRCMP(option, "reverse") == 0) parse_switch(argc, argv, &opt_reverse, &opt_re_on, bad_arg); else if (STRCMP(option, "underline") == 0) parse_switch(argc, argv, &opt_underline, &opt_un_on, bad_arg); else if (STRCMP(option, "store") == 0) parse_none(argc, argv, &opt_store, bad_arg); else if (STRCMP(option, "clear") == 0) parse_clear(argc, argv, &opt_clear, &opt_cl_all, bad_arg); else if (STRCMP(option, "tabs") == 0) parse_tabs(argc, argv, &opt_tabs, opt_tb_array, bad_arg); else if (STRCMP(option, "clrtabs") == 0) parse_clrtabs(argc, argv, &opt_clrtabs, opt_tb_array, bad_arg); else if (STRCMP(option, "regtabs") == 0) parse_regtabs(argc, argv, &opt_regtabs, &opt_rt_len, bad_arg); else if (STRCMP(option, "blank") == 0) parse_blank(argc, argv, &opt_blank, &opt_bl_min, bad_arg); else if (STRCMP(option, "dump") == 0) parse_snap(argc, argv, &opt_snap, &opt_sn_num, bad_arg); else if (STRCMP(option, "append") == 0) parse_snap(argc, argv, &opt_append, &opt_sn_num, bad_arg); else if (STRCMP(option, "file") == 0) parse_snapfile(argc, argv, &opt_snapfile, (int *)opt_sn_name, bad_arg); else if (STRCMP(option, "msg") == 0) parse_switch(argc, argv, &opt_msg, &opt_msg_on, bad_arg); else if (STRCMP(option, "msglevel") == 0) parse_msglevel(argc, argv, &opt_msglevel, &opt_msglevel_num, bad_arg); else if (STRCMP(option, "powersave") == 0) parse_powersave(argc, argv, &opt_powersave, &opt_ps_mode, bad_arg); else if (STRCMP(option, "powerdown") == 0) parse_blank(argc, argv, &opt_powerdown, &opt_pd_min, bad_arg); else if (STRCMP(option, "blength") == 0) parse_blength(argc, argv, &opt_blength, &opt_blength_l, bad_arg); else if (STRCMP(option, "bfreq") == 0) parse_bfreq(argc, argv, &opt_bfreq, &opt_bfreq_f, bad_arg);#if 0 else if (STRCMP(option, "standout") == 0) parse_standout(argc, argv, &opt_standout, &opt_st_attr, bad_arg);#endif else *bad_arg = TRUE;}/* End of command line parsing routines. */static voidusage(char *prog_name) {/* Print error message about arguments, and the command's syntax. */ fprintf(stderr, _("%s: Argument error, usage\n"), prog_name); fprintf(stderr, "\n"); fprintf(stderr, "%s\n", prog_name); fprintf(stderr, _(" [ -term terminal_name ]\n")); fprintf(stderr, _(" [ -reset ]\n")); fprintf(stderr, _(" [ -initialize ]\n")); fprintf(stderr, _(" [ -cursor [on|off] ]\n"));#if 0 fprintf(stderr, _(" [ -snow [on|off] ]\n")); fprintf(stderr, _(" [ -softscroll [on|off] ]\n"));#endif fprintf(stderr, _(" [ -repeat [on|off] ]\n")); fprintf(stderr, _(" [ -appcursorkeys [on|off] ]\n")); fprintf(stderr, _(" [ -linewrap [on|off] ]\n")); fprintf(stderr, _(" [ -default ]\n")); fprintf(stderr, _(" [ -foreground black|blue|green|cyan")); fprintf(stderr, _("|red|magenta|yellow|white|default ]\n")); fprintf(stderr, _(" [ -background black|blue|green|cyan")); fprintf(stderr, _("|red|magenta|yellow|white|default ]\n")); fprintf(stderr, _(" [ -ulcolor black|grey|blue|green|cyan")); fprintf(stderr, _("|red|magenta|yellow|white ]\n")); fprintf(stderr, _(" [ -ulcolor bright blue|green|cyan")); fprintf(stderr, _("|red|magenta|yellow|white ]\n")); fprintf(stderr, _(" [ -hbcolor black|grey|blue|green|cyan")); fprintf(stderr, _("|red|magenta|yellow|white ]\n")); fprintf(stderr, _(" [ -hbcolor bright blue|green|cyan")); fprintf(stderr, _("|red|magenta|yellow|white ]\n"));#if 0 fprintf(stderr, _(" [ -standout [ attr ] ]\n"));#endif fprintf(stderr, _(" [ -inversescreen [on|off] ]\n")); fprintf(stderr, _(" [ -bold [on|off] ]\n")); fprintf(stderr, _(" [ -half-bright [on|off] ]\n")); fprintf(stderr, _(" [ -blink [on|off] ]\n")); fprintf(stderr, _(" [ -reverse [on|off] ]\n")); fprintf(stderr, _(" [ -underline [on|off] ]\n")); fprintf(stderr, _(" [ -store ]\n")); fprintf(stderr, _(" [ -clear [all|rest] ]\n")); fprintf(stderr, _(" [ -tabs [ tab1 tab2 tab3 ... ] ] (tabn = 1-160)\n")); fprintf(stderr, _(" [ -clrtabs [ tab1 tab2 tab3 ... ] ] (tabn = 1-160)\n")); fprintf(stderr, _(" [ -regtabs [1-160] ]\n")); fprintf(stderr, _(" [ -blank [0-60] ]\n")); fprintf(stderr, _(" [ -dump [1-NR_CONSOLES] ]\n")); fprintf(stderr, _(" [ -append [1-NR_CONSOLES] ]\n")); fprintf(stderr, _(" [ -file dumpfilename ]\n")); fprintf(stderr, _(" [ -msg [on|off] ]\n")); fprintf(stderr, _(" [ -msglevel [0-8] ]\n")); fprintf(stderr, _(" [ -powersave [on|vsync|hsync|powerdown|off] ]\n")); fprintf(stderr, _(" [ -powerdown [0-60] ]\n")); fprintf(stderr, _(" [ -blength [0-2000] ]\n")); fprintf(stderr, _(" [ -bfreq freqnumber ]\n"));}static char *ti_entry(const char *name) { /* name: Terminfo capability string to lookup. *//* Return the specified terminfo string, or an empty string if no such terminfo * capability exists. */ char *buf_ptr; if ((buf_ptr = tigetstr((char *)name)) == (char *)-1) buf_ptr = NULL; return buf_ptr;}static voidperform_sequence(int vcterm) { /* vcterm: Set if terminal is a virtual console. */ int result;/* Perform the selected options. */ /* -reset. */ if (opt_reset) { putp(ti_entry("rs1")); } /* -initialize. */ if (opt_initialize) { putp(ti_entry("is2")); } /* -cursor [on|off]. */ if (opt_cursor) { if (opt_cu_on) putp(ti_entry("cnorm")); else putp(ti_entry("civis")); } /* -linewrap [on|off]. Vc only (vt102) */ if (opt_linewrap && vcterm) { if (opt_li_on) printf("\033[?7h"); else printf("\033[?7l"); } /* -repeat [on|off]. Vc only (vt102) */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -