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

📄 ash.c

📁 为samsung2410 ARM移植的busybox工具包
💻 C
📖 第 1 页 / 共 5 页
字号:
};struct ncase {      int type;      union node *expr;      union node *cases;};struct nclist {      int type;      union node *next;      union node *pattern;      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 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 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 ASH_OPTIMIZE_FOR_SIZE#define out2c(c)        putc((c), stderr)#elsestatic void out2c(int c)           { putc(c, stderr); }#endif/* syntax table used when not in quotes */static const char basesyntax[257] = {      CENDFILE,   CSPCL,   CWORD,   CCTL,      CCTL,    CCTL,    CCTL,    CCTL,      CCTL,    CCTL,    CCTL,    CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CSPCL,      CNL,     CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CSPCL,   CWORD,      CDQUOTE, CWORD,   CVAR,    CWORD,      CSPCL,   CSQUOTE, CSPCL,   CSPCL,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CSPCL,   CSPCL,   CWORD,      CSPCL,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CBACK,   CWORD,      CWORD,   CWORD,   CBQUOTE, CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CSPCL,   CENDVAR,      CWORD};/* syntax table used when in double quotes */static const char dqsyntax[257] = {      CENDFILE,   CIGN,    CWORD,   CCTL,      CCTL,    CCTL,    CCTL,    CCTL,      CCTL,    CCTL,    CCTL,    CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CNL,     CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CCTL,      CENDQUOTE,CWORD,  CVAR,    CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CCTL,    CWORD,   CWORD,   CCTL,      CWORD,   CCTL,    CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CCTL,    CWORD,   CWORD,   CCTL,      CWORD,   CCTL,    CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CCTL,    CBACK,   CCTL,      CWORD,   CWORD,   CBQUOTE, CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CENDVAR,      CCTL};/* syntax table used when in single quotes */static const char sqsyntax[257] = {      CENDFILE,   CIGN,    CWORD,   CCTL,      CCTL,    CCTL,    CCTL,    CCTL,      CCTL,    CCTL,    CCTL,    CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CNL,     CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CCTL,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CENDQUOTE,CWORD,  CWORD,      CCTL,    CWORD,   CWORD,   CCTL,      CWORD,   CCTL,    CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CCTL,    CWORD,   CWORD,   CCTL,      CWORD,   CCTL,    CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CCTL,    CCTL,    CCTL,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CCTL};/* syntax table used when in arithmetic */static const char arisyntax[257] = {      CENDFILE,   CIGN,    CWORD,   CCTL,      CCTL,    CCTL,    CCTL,    CCTL,      CCTL,    CCTL,    CCTL,    CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CNL,     CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CDQUOTE, CWORD,   CVAR,    CWORD,      CWORD,   CSQUOTE, CLP,     CRP,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CBACK,   CWORD,      CWORD,   CWORD,   CBQUOTE, CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CWORD,      CWORD,   CWORD,   CWORD,   CENDVAR,      CWORD};/* character classification table */static const char is_type[257] = {      0,       0,       0,       0,      0,       0,       0,       0,      0,       0,       0,       0,      0,       0,       0,       0,      0,       0,       0,       0,      0,       0,       0,       0,      0,       0,       0,       0,      0,       0,       0,       0,      0,       0,       0,       0,      0,       0,       0,       0,      0,       0,       0,       0,      0,       0,       0,       0,      0,       0,       0,       0,      0,       0,       0,       0,      0,       0,       0,       0,      0,       0,       0,       0,      0,       0,       0,       0,      0,       0,       0,       0,      0,       0,       0,       0,      0,       0,       0,       0,      0,       0,       0,       0,      0,       0,       0,       0,      0,       0,       0,       0,      0,       0,       0,       0,      0,       0,       0,       0,      0,       0,       0,       0,      0,       0,       0,       0,      0,       0,       0,       0,      0,       0,       0,       0,      0,       0,       0,       0,      0,       0,       0,       0,      0,       0,       0,       0,      0,       0,       0,       0,

⌨️ 快捷键说明

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