⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ash.c

📁 手机嵌入式Linux下可用的busybox源码
💻 C
📖 第 1 页 / 共 5 页
字号:
	union node *body;};struct narg {	int type;	union node *next;	char *text;	struct nodelist *backquote;};struct nfile {	int type;	union node *next;	int fd;	union node *fname;	char *expfname;};struct ndup {	int type;	union node *next;	int fd;	int dupfd;	union node *vname;};struct nhere {	int type;	union node *next;	int fd;	union node *doc;};struct nnot {	int type;	union node *com;};union node {	int type;	struct nbinary nbinary;	struct ncmd ncmd;	struct npipe npipe;	struct nredir nredir;	struct nif nif;	struct nfor nfor;	struct ncase ncase;	struct nclist nclist;	struct narg narg;	struct nfile nfile;	struct ndup ndup;	struct nhere nhere;	struct nnot nnot;};struct nodelist {	struct nodelist *next;	union node *n;};struct backcmd {		/* result of evalbackcmd */	int fd;				/* file descriptor to read from */	char *buf;			/* buffer */	int nleft;			/* number of chars in buffer */	struct job *jp;		/* job structure for command */};struct cmdentry {	int cmdtype;	union param {		int index;		union node *func;		const struct builtincmd *cmd;	} u;};struct strlist {	struct strlist *next;	char *text;};struct arglist {	struct strlist *list;	struct strlist **lastp;};struct strpush {	struct strpush *prev;	/* preceding string on stack */	char *prevstring;	int prevnleft;#ifdef CONFIG_ASH_ALIAS	struct alias *ap;	/* if push was associated with an alias */#endif	char *string;		/* remember the string since it may change */};struct parsefile {	struct parsefile *prev;	/* preceding file on stack */	int linno;			/* current line */	int fd;				/* file descriptor (or -1 if string) */	int nleft;			/* number of chars left in this line */	int lleft;			/* number of chars left in this buffer */	char *nextc;		/* next char in buffer */	char *buf;			/* input buffer */	struct strpush *strpush;	/* for pushing strings at this level */	struct strpush basestrpush;	/* so pushing one is fast */};struct stackmark {	struct stack_block *stackp;	char *stacknxt;	int stacknleft;	struct stackmark *marknext;};struct shparam {	int nparam;			/* # of positional parameters (without $0) */	unsigned char malloc;	/* if parameter list dynamically allocated */	char **p;			/* parameter list */	int optind;			/* next parameter to be processed by getopts */	int optoff;			/* used by getopts */};/* * When commands are first encountered, they are entered in a hash table. * This ensures that a full path search will not have to be done for them * on each invocation. * * We should investigate converting to a linear search, even though that * would make the command name "hash" a misnomer. */#define CMDTABLESIZE 31	/* should be prime */#define ARB 1			/* actual size determined at run time */struct tblentry {	struct tblentry *next;	/* next entry in hash chain */	union param param;	/* definition of builtin function */	short cmdtype;		/* index identifying command */	char rehash;		/* if set, cd done since entry created */	char cmdname[ARB];	/* name of command */};static struct tblentry *cmdtable[CMDTABLESIZE];static int builtinloc = -1;	/* index in path of %builtin, or -1 */static int exerrno = 0;	/* Last exec error */static void tryexec(char *, char **, char **);static void printentry(struct tblentry *, int);static void clearcmdentry(int);static struct tblentry *cmdlookup(const char *, int);static void delete_cmd_entry(void);static int path_change(const char *, int *);static void flushall(void);static void out2fmt(const char *, ...)	__attribute__ ((__format__(__printf__, 1, 2)));static int xwrite(int, const char *, int);static inline void outstr(const char *p, FILE * file){	fputs(p, file);}static void out1str(const char *p){	outstr(p, stdout);}static void out2str(const char *p){	outstr(p, stderr);}#ifndef CONFIG_ASH_OPTIMIZE_FOR_SIZE#define out2c(c)        putc((c), stderr)#elsestatic void out2c(int c){	putc(c, stderr);}#endif#ifdef CONFIG_ASH_OPTIMIZE_FOR_SIZE#define USE_SIT_FUNCTION#endif/* number syntax index */#define  BASESYNTAX  0	/* not in quotes */#define  DQSYNTAX    1	/* in double quotes */#define  SQSYNTAX    2	/* in single quotes */#define  ARISYNTAX   3	/* in arithmetic */static const char S_I_T[][4] = {	{CSPCL, CIGN, CIGN, CIGN},	/* 0, PEOA */	{CSPCL, CWORD, CWORD, CWORD},	/* 1, ' ' */	{CNL, CNL, CNL, CNL},	/* 2, \n */	{CWORD, CCTL, CCTL, CWORD},	/* 3, !*-/:=?[]~ */	{CDQUOTE, CENDQUOTE, CWORD, CDQUOTE},	/* 4, '"' */	{CVAR, CVAR, CWORD, CVAR},	/* 5, $ */	{CSQUOTE, CWORD, CENDQUOTE, CSQUOTE},	/* 6, "'" */	{CSPCL, CWORD, CWORD, CLP},	/* 7, ( */	{CSPCL, CWORD, CWORD, CRP},	/* 8, ) */	{CBACK, CBACK, CCTL, CBACK},	/* 9, \ */	{CBQUOTE, CBQUOTE, CWORD, CBQUOTE},	/* 10, ` */	{CENDVAR, CENDVAR, CWORD, CENDVAR},	/* 11, } */#ifndef USE_SIT_FUNCTION	{CENDFILE, CENDFILE, CENDFILE, CENDFILE},	/* 12, PEOF */	{CWORD, CWORD, CWORD, CWORD},	/* 13, 0-9A-Za-z */	{CCTL, CCTL, CCTL, CCTL}	/* 14, CTLESC ... */#endif};#ifdef USE_SIT_FUNCTION#define U_C(c) ((unsigned char)(c))static int SIT(int c, int syntax){	static const char spec_symbls[] = "\t\n !\"$&'()*-/:;<=>?[\\]`|}~";	static const char syntax_index_table[] = {		1, 2, 1, 3, 4, 5, 1, 6,	/* "\t\n !\"$&'" */		7, 8, 3, 3, 3, 3, 1, 1,	/* "()*-/:;<" */		3, 1, 3, 3, 9, 3, 10, 1,	/* "=>?[\\]`|" */		11, 3	};					/* "}~" */	const char *s;	int indx;	if (c == PEOF)		/* 2^8+2 */		return CENDFILE;	if (c == PEOA)		/* 2^8+1 */		indx = 0;	else if (U_C(c) >= U_C(CTLESC) && U_C(c) <= U_C(CTLQUOTEMARK))		return CCTL;	else {		s = strchr(spec_symbls, c);		if (s == 0)			return CWORD;		indx = syntax_index_table[(s - spec_symbls)];	}	return S_I_T[indx][syntax];}#else							/* USE_SIT_FUNCTION */#define SIT(c, syntax) S_I_T[(int)syntax_index_table[((int)c)+SYNBASE]][syntax]#define CSPCL_CIGN_CIGN_CIGN                           0#define CSPCL_CWORD_CWORD_CWORD                        1#define CNL_CNL_CNL_CNL                                2#define CWORD_CCTL_CCTL_CWORD                          3#define CDQUOTE_CENDQUOTE_CWORD_CDQUOTE                4#define CVAR_CVAR_CWORD_CVAR                           5#define CSQUOTE_CWORD_CENDQUOTE_CSQUOTE                6#define CSPCL_CWORD_CWORD_CLP                          7#define CSPCL_CWORD_CWORD_CRP                          8#define CBACK_CBACK_CCTL_CBACK                         9#define CBQUOTE_CBQUOTE_CWORD_CBQUOTE                 10#define CENDVAR_CENDVAR_CWORD_CENDVAR                 11#define CENDFILE_CENDFILE_CENDFILE_CENDFILE           12#define CWORD_CWORD_CWORD_CWORD                       13#define CCTL_CCTL_CCTL_CCTL                           14static const char syntax_index_table[258] = {	/* BASESYNTAX_DQSYNTAX_SQSYNTAX_ARISYNTAX */	/*   0  -130 PEOF */ CENDFILE_CENDFILE_CENDFILE_CENDFILE,	/*   1  -129 PEOA */ CSPCL_CIGN_CIGN_CIGN,	/*   2  -128 0xff */ CWORD_CWORD_CWORD_CWORD,	/*   3  -127      */ CCTL_CCTL_CCTL_CCTL,	/* CTLQUOTEMARK */	/*   4  -126      */ CCTL_CCTL_CCTL_CCTL,	/*   5  -125      */ CCTL_CCTL_CCTL_CCTL,	/*   6  -124      */ CCTL_CCTL_CCTL_CCTL,	/*   7  -123      */ CCTL_CCTL_CCTL_CCTL,	/*   8  -122      */ CCTL_CCTL_CCTL_CCTL,	/*   9  -121      */ CCTL_CCTL_CCTL_CCTL,	/*  10  -120      */ CCTL_CCTL_CCTL_CCTL,	/* CTLESC */	/*  11  -119      */ CWORD_CWORD_CWORD_CWORD,	/*  12  -118      */ CWORD_CWORD_CWORD_CWORD,	/*  13  -117      */ CWORD_CWORD_CWORD_CWORD,	/*  14  -116      */ CWORD_CWORD_CWORD_CWORD,	/*  15  -115      */ CWORD_CWORD_CWORD_CWORD,	/*  16  -114      */ CWORD_CWORD_CWORD_CWORD,	/*  17  -113      */ CWORD_CWORD_CWORD_CWORD,	/*  18  -112      */ CWORD_CWORD_CWORD_CWORD,	/*  19  -111      */ CWORD_CWORD_CWORD_CWORD,	/*  20  -110      */ CWORD_CWORD_CWORD_CWORD,	/*  21  -109      */ CWORD_CWORD_CWORD_CWORD,	/*  22  -108      */ CWORD_CWORD_CWORD_CWORD,	/*  23  -107      */ CWORD_CWORD_CWORD_CWORD,	/*  24  -106      */ CWORD_CWORD_CWORD_CWORD,	/*  25  -105      */ CWORD_CWORD_CWORD_CWORD,	/*  26  -104      */ CWORD_CWORD_CWORD_CWORD,	/*  27  -103      */ CWORD_CWORD_CWORD_CWORD,	/*  28  -102      */ CWORD_CWORD_CWORD_CWORD,	/*  29  -101      */ CWORD_CWORD_CWORD_CWORD,	/*  30  -100      */ CWORD_CWORD_CWORD_CWORD,	/*  31   -99      */ CWORD_CWORD_CWORD_CWORD,	/*  32   -98      */ CWORD_CWORD_CWORD_CWORD,	/*  33   -97      */ CWORD_CWORD_CWORD_CWORD,	/*  34   -96      */ CWORD_CWORD_CWORD_CWORD,	/*  35   -95      */ CWORD_CWORD_CWORD_CWORD,	/*  36   -94      */ CWORD_CWORD_CWORD_CWORD,	/*  37   -93      */ CWORD_CWORD_CWORD_CWORD,	/*  38   -92      */ CWORD_CWORD_CWORD_CWORD,	/*  39   -91      */ CWORD_CWORD_CWORD_CWORD,	/*  40   -90      */ CWORD_CWORD_CWORD_CWORD,	/*  41   -89      */ CWORD_CWORD_CWORD_CWORD,	/*  42   -88      */ CWORD_CWORD_CWORD_CWORD,	/*  43   -87      */ CWORD_CWORD_CWORD_CWORD,	/*  44   -86      */ CWORD_CWORD_CWORD_CWORD,	/*  45   -85      */ CWORD_CWORD_CWORD_CWORD,	/*  46   -84      */ CWORD_CWORD_CWORD_CWORD,	/*  47   -83      */ CWORD_CWORD_CWORD_CWORD,	/*  48   -82      */ CWORD_CWORD_CWORD_CWORD,	/*  49   -81      */ CWORD_CWORD_CWORD_CWORD,	/*  50   -80      */ CWORD_CWORD_CWORD_CWORD,	/*  51   -79      */ CWORD_CWORD_CWORD_CWORD,	/*  52   -78      */ CWORD_CWORD_CWORD_CWORD,	/*  53   -77      */ CWORD_CWORD_CWORD_CWORD,	/*  54   -76      */ CWORD_CWORD_CWORD_CWORD,	/*  55   -75      */ CWORD_CWORD_CWORD_CWORD,	/*  56   -74      */ CWORD_CWORD_CWORD_CWORD,	/*  57   -73      */ CWORD_CWORD_CWORD_CWORD,	/*  58   -72      */ CWORD_CWORD_CWORD_CWORD,	/*  59   -71      */ CWORD_CWORD_CWORD_CWORD,	/*  60   -70      */ CWORD_CWORD_CWORD_CWORD,	/*  61   -69      */ CWORD_CWORD_CWORD_CWORD,	/*  62   -68      */ CWORD_CWORD_CWORD_CWORD,	/*  63   -67      */ CWORD_CWORD_CWORD_CWORD,	/*  64   -66      */ CWORD_CWORD_CWORD_CWORD,	/*  65   -65      */ CWORD_CWORD_CWORD_CWORD,	/*  66   -64      */ CWORD_CWORD_CWORD_CWORD,	/*  67   -63      */ CWORD_CWORD_CWORD_CWORD,	/*  68   -62      */ CWORD_CWORD_CWORD_CWORD,	/*  69   -61      */ CWORD_CWORD_CWORD_CWORD,	/*  70   -60      */ CWORD_CWORD_CWORD_CWORD,	/*  71   -59      */ CWORD_CWORD_CWORD_CWORD,	/*  72   -58      */ CWORD_CWORD_CWORD_CWORD,	/*  73   -57      */ CWORD_CWORD_CWORD_CWORD,	/*  74   -56      */ CWORD_CWORD_CWORD_CWORD,	/*  75   -55      */ CWORD_CWORD_CWORD_CWORD,	/*  76   -54      */ CWORD_CWORD_CWORD_CWORD,	/*  77   -53      */ CWORD_CWORD_CWORD_CWORD,	/*  78   -52      */ CWORD_CWORD_CWORD_CWORD,	/*  79   -51      */ CWORD_CWORD_CWORD_CWORD,	/*  80   -50      */ CWORD_CWORD_CWORD_CWORD,	/*  81   -49      */ CWORD_CWORD_CWORD_CWORD,	/*  82   -48      */ CWORD_CWORD_CWORD_CWORD,	/*  83   -47      */ CWORD_CWORD_CWORD_CWORD,	/*  84   -46      */ CWORD_CWORD_CWORD_CWORD,	/*  85   -45      */ CWORD_CWORD_CWORD_CWORD,	/*  86   -44      */ CWORD_CWORD_CWORD_CWORD,	/*  87   -43      */ CWORD_CWORD_CWORD_CWORD,	/*  88   -42      */ CWORD_CWORD_CWORD_CWORD,	/*  89   -41      */ CWORD_CWORD_CWORD_CWORD,	/*  90   -40      */ CWORD_CWORD_CWORD_CWORD,	/*  91   -39      */ CWORD_CWORD_CWORD_CWORD,	/*  92   -38      */ CWORD_CWORD_CWORD_CWORD,	/*  93   -37      */ CWORD_CWORD_CWORD_CWORD,	/*  94   -36      */ CWORD_CWORD_CWORD_CWORD,	/*  95   -35      */ CWORD_CWORD_CWORD_CWORD,	/*  96   -34      */ CWORD_CWORD_CWORD_CWORD,	/*  97   -33      */ CWORD_CWORD_CWORD_CWORD,	/*  98   -32      */ CWORD_CWORD_CWORD_CWORD,	/*  99   -31      */ CWORD_CWORD_CWORD_CWORD,	/* 100   -30      */ CWORD_CWORD_CWORD_CWORD,	/* 101   -29      */ CWORD_CWORD_CWORD_CWORD,	/* 102   -28      */ CWORD_CWORD_CWORD_CWORD,	/* 103   -27      */ CWORD_CWORD_CWORD_CWORD,	/* 104   -26      */ CWORD_CWORD_CWORD_CWORD,	/* 105   -25      */ CWORD_CWORD_CWORD_CWORD,	/* 106   -24      */ CWORD_CWORD_CWORD_CWORD,	/* 107   -23      */ CWORD_CWORD_CWORD_CWORD,	/* 108   -22      */ CWORD_CWORD_CWORD_CWORD,	/* 109   -21      */ CWORD_CWORD_CWORD_CWORD,	/* 110   -20      */ CWORD_CWORD_CWORD_CWORD,	/* 111   -19      */ CWORD_CWORD_CWORD_CWORD,	/* 112   -18      */ CWORD_CWORD_CWORD_CWORD,	/* 113   -17      */ CWORD_CWORD_CWORD_CWORD,	/* 114   -16      */ CWORD_CWORD_CWORD_CWORD,	/* 115   -15      */ CWORD_CWORD_CWORD_CWORD,	/* 116   -14      */ CWORD_CWORD_CWORD_CWORD,	/* 117   -13      */ CWORD_CWORD_CWORD_CWORD,	/* 118   -12      */ CWORD_CWORD_CWORD_CWORD,	/* 119   -11      */ CWORD_CWORD_CWORD_CWORD,	/* 120   -10      */ CWORD_CWORD_CWORD_CWORD,	/* 121    -9      */ CWORD_CWORD_CWORD_CWORD,	/* 122    -8      */ CWORD_CWORD_CWORD_CWORD,	/* 123    -7      */ CWORD_CWORD_CWORD_CWORD,	/* 124    -6      */ CWORD_CWORD_CWORD_CWORD,	/* 125    -5      */ CWORD_CWORD_CWORD_CWORD,	/* 126    -4      */ CWORD_CWORD_CWORD_CWORD,	/* 127    -3      */ CWORD_CWORD_CWORD_CWORD,	/* 128    -2      */ CWORD_CWORD_CWORD_CWORD,	/* 129    -1      */ CWORD_CWORD_CWORD_CWORD,	/* 130     0      */ CWORD_CWORD_CWORD_CWORD,	/* 131     1      */ CWORD_CWORD_CWORD_CWORD,	/* 132     2      */ CWORD_CWORD_CWORD_CWORD,	/* 133     3      */ CWORD_CWORD_CWORD_CWORD,	/* 134     4      */ CWORD_CWORD_CWORD_CWORD,	/* 135     5      */ CWORD_CWORD_CWORD_CWORD,	/* 136     6      */ CWORD_CWORD_CWORD_CWORD,	/* 137     7      */ CWORD_CWORD_CWORD_CWORD,	/* 138     8      */ CWORD_CWORD_CWORD_CWORD,	/* 139     9 "\t" */ CSPCL_CWORD_CWORD_CWORD,	/* 140    10 "\n" */ CNL_CNL_CNL_CNL,	/* 141    11      */ CWORD_CWORD_CWORD_CWORD,	/* 142    12      */ CWORD_CWORD_CWORD_CWORD,	/* 143    13      */ CWORD_CWORD_CWORD_CWORD,	/* 144    14      */ CWORD_CWORD_CWORD_CWORD,	/* 145    15      */ CWORD_CWORD_CWORD_CWORD,	/* 146    16      */ CWORD_CWORD_CWORD_CWORD,	/* 147    17      */ CWORD_CWORD_CWORD_CWORD,	/* 148    18      */ CWORD_CWORD_CWORD_CWORD,	/* 149    19      */ CWORD_CWORD_CWORD_CWORD,	/* 150    20      */ CWORD_CWORD_CWORD_CWORD,	/* 151    21      */ CWORD_CWORD_CWORD_CWORD,	/* 152    22      */ CWORD_CWORD_CWORD_CWORD,	/* 153    23      */ CWORD_CWORD_CWORD_CWORD,	/* 154    24      */ CWORD_CWORD_CWORD_CWORD,	/* 155    25      */ CWORD_CWORD_CWORD_CWORD,	/* 156    26      */ CWORD_CWORD_CWORD_CWORD,	/* 157    27      */ CWORD_CWORD_CWORD_CWORD,	/* 158    28      */ CWORD_CWORD_CWORD_CWORD,	/* 159    29      */ CWORD_CWORD_CWORD_CWORD,	/* 160    30      */ CWORD_CWORD_CWORD_CWORD,	/* 161    31      */ CWORD_CWORD_CWORD_CWORD,	/* 162    32  " " */ CSPCL_CWORD_CWORD_CWORD,	/* 163    33  "!" */ CWORD_CCTL_CCTL_CWORD,	/* 164    34  """ */ CDQUOTE_CENDQUOTE_CWORD_CDQUOTE,	/* 165    35  "#" */ CWORD_CWORD_CWORD_CWORD,	/* 166    36  "$" */ CVAR_CVAR_CWORD_CVAR,	/* 167    37  "%" */ CWORD_CWORD_CWORD_CWORD,	/* 168    38  "&" */ CSPCL_CWORD_CWORD_CWORD,	/* 169    39  "'" */ CSQUOTE_CWORD_CENDQUOTE_CSQUOTE,	/* 170    40  "(" */ CSPCL_CWORD_CWORD_CLP,	/* 171    41  ")" */ CSPCL_CWORD_CWORD_CRP,	/* 172    42  "*" */ CWORD_CCTL_CCTL_CWORD,	/* 173    43  "+" */ CWORD_CWORD_CWORD_CWORD,	/* 174    44  "," */ CWORD_CWORD_CWORD_CWORD,	/* 175    45  "-" */ CWORD_CCTL_CCTL_CWORD,	/* 176    46  "." */ CWORD_CWORD_CWORD_CWORD,	/* 177    47  "/" */ CWORD_CCTL_CCTL_CWORD,	/* 178    48  "0" */ CWORD_CWORD_CWORD_CWORD,	/* 179    49  "1" */ CWORD_CWORD_CWORD_CWORD,	/* 180    50  "2" */ CWORD_CWORD_CWORD_CWORD,	/* 181    51  "3" */ CWORD_CWORD_CWORD_CWORD,	/* 182    52  "4" */ CWORD_CWORD_CWORD_CWORD,	/* 183    53  "5" */ CWORD_CWORD_CWORD_CWORD,	/* 184    54  "6" */ CWORD_CWORD_CWORD_CWORD,	/* 185    55  "7" */ CWORD_CWORD_CWORD_CWORD,	/* 186    56  "8" */ CWORD_CWORD_CWORD_CWORD,	/* 187    57  "9" */ CWORD_CWORD_CWORD_CWORD,	/* 188    58  ":" */ CWORD_CCTL_CCTL_CWORD,	/* 189    59  ";" */ CSPCL_CWORD_CWORD_CWORD,	/* 190    60  "<" */ CSPCL_CWORD_CWORD_CWORD,	/* 191    61  "=" */ CWORD_CCTL_CCTL_CWORD,	/* 192    62  ">" */ CSPCL_CWORD_CWORD_CWORD,	/* 193    63  "?" */ CWORD_CCTL_CCTL_CWORD,	/* 194    64  "@" */ CWORD_CWORD_CWORD_CWORD,	/* 195    65  "A" */ CWORD_CWORD_CWORD_CWORD,	/* 196    66  "B" */ CWORD_CWORD_CWORD_CWORD,	/* 197    67  "C" */ CWORD_CWORD_CWORD_CWORD,	/* 198    68  "D" */ CWORD_CWORD_CWORD_CWORD,	/* 199    69  "E" */ CWORD_CWORD_CWORD_CWORD,	/* 200    70  "F" */ CWORD_CWORD_CWORD_CWORD,	/* 201    71  "G" */ CWORD_CWORD_CWORD_CWORD,	/* 202    72  "H" */ CWORD_CWORD_CWORD_CWORD,	/* 203    73  "I" */ CWORD_CWORD_CWORD_CWORD,	/* 204    74  "J" */ CWORD_CWORD_CWORD_CWORD,	/* 205    75  "K" */ CWORD_CWORD_CWORD_CWORD,	/* 206    76  "L" */ CWORD_CWORD_CWORD_CWORD,	/* 207    77  "M" */ CWORD_CWORD_CWORD_CWORD,	/* 208    78  "N" */ CWORD_CWORD_CWORD_CWORD,	/* 209    79  "O" */ CWORD_CWORD_CWORD_CWORD,	/* 210    80  "P" */ CWORD_CWORD_CWORD_CWORD,	/* 211    81  "Q" */ CWORD_CWORD_CWORD_CWORD,	/* 212    82  "R" */ CWORD_CWORD_CWORD_CWORD,	/* 213    83  "S" */ CWORD_CWORD_CWORD_CWORD,	/* 214    84  "T" */ CWORD_CWORD_CWORD_CWORD,	/* 215    85  "U" */ CWORD_CWORD_CWORD_CWORD,	/* 216    86  "V" */ CWORD_CWORD_CWORD_CWORD,	/* 217    87  "W" */ CWORD_CWORD_CWORD_CWORD,	/* 218    88  "X" */ CWORD_CWORD_CWORD_CWORD,	/* 219    89  "Y" */ CWORD_CWORD_CWORD_CWORD,	/* 220    90  "Z" */ CWORD_CWORD_CWORD_CWORD,	/* 221    91  "[" */ CWORD_CCTL_CCTL_CWORD,	/* 222    92  "\" */ CBACK_CBACK_CCTL_CBACK,	/* 223    93  "]" */ CWORD_CCTL_CCTL_CWORD,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -