-
-
Notifications
You must be signed in to change notification settings - Fork 95
Expand file tree
/
Copy pathtbr.alt.c
More file actions
13 lines (12 loc) · 654 Bytes
/
Copy pathtbr.alt.c
File metadata and controls
13 lines (12 loc) · 654 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
#define D ,close(
#define exit(x) exit((x)),0
#define gets(x) fgets((x),512,stdin)
char*c,q[512],m[256],*v[99],**u,*i[3];int f[2],p;main(){for(m[m[60]=m[62]=
32]=m[*m=124[m]=9]=6;e(-8),((gets(1+(c=q)),(c+1)[strlen(c+1)-1]='\0'),1)||
(exit(0));r(0,0))for(;*++c;);}r(t,o){*i=i[2]=0;for(u=v+98;m[*--c]^9;m[*c]&32?i[*c&2]=
*u,u-v^98&&++u:3)if(!m[*c]){for(*++c=0;!m[*--c];);*--u=
++c;}u-v^98?strcmp(*u,"cd")?*c?pipe(f),o=f[1]:1,(p=fork())?e(p),o?
r(o,0)D o)D*f):4,wait(0):(o?dup2(*f,0)D*f)D o):*i?1 D
0),e(open(*i,0)):5,t?dup2(t,1)D t):i[2]?9 D
1),e(creat(i[2],438)):2,e(execvp(*u,u))):e(chdir(u[1])*2):6;}
e(x){x<0?write(2,"?\n$ "-x/4,2),x+1||(exit(1)):5;}