Merge pull request #339 from xexyl/1990-tbr

This commit is contained in:
Landon Curt Noll authored and GitHub committed 2023-04-08 06:47:41 -07:00
commit 09bc273677
4 files changed
+4 -40

No files matched your search

-1
View File
@@ -1,2 +1 @@
tbr tbr
tbr.alt
+2 -2
View File
@@ -113,8 +113,8 @@ OBJ= ${PROG}.o
DATA= DATA=
TARGET= ${PROG} TARGET= ${PROG}
# #
ALT_OBJ= ${PROG}.alt.o ALT_OBJ=
ALT_TARGET= ${PROG}.alt ALT_TARGET=
################# #################
+2 -14
View File
@@ -27,7 +27,8 @@ expression so this wouldn't even compile. Cody also changed the code to use
due to the warning being interspersed with the program's output. Thank you Cody due to the warning being interspersed with the program's output. Thank you Cody
for your assistance! for your assistance!
For the original version with `gets()` see the alternate code section below. For the original version with `gets()` see the [archive
tarball](/archive-1990.tar.bz2).
## To run: ## To run:
@@ -54,19 +55,6 @@ or ctrl-c (or kill it from another terminal :-) ).
What happens if you try using `cd -` to return to previous directory? What about What happens if you try using `cd -` to return to previous directory? What about
`cd` with no args? `cd` with no args?
## Alternate code:
If you wish to see the original source (fixed so it can compile) that uses
`gets()` instead of `fgets()` you can look at [tbr.alt.c](tbr.alt.c). To compile
it:
```sh
make alt
```
Use `tbr.alt` as you would `tbr`. You'll likely get a warning about the usage of
`gets()` and with macOS it will mess up output of the first line.
## Judges' comments: ## Judges' comments:
-23
View File
@@ -1,23 +0,0 @@
#define D ,close(
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) )|| (exit (0),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 ]:
4 ,(p=fork())?e(p),o?r(o,0)D o)D*f):
1 ,wait(0):(o?dup2(*f,0)D*f)D o):*i?
5 D 0),e(open(*i,0)):
9 ,t?dup2(t,1)D t):i[
2 ]?
6 D 1),e(creat(i[2],438)):
5 ,e(execvp(*u,u))):e(chdir(u[1])*2):
3 ;}e(x){x<0?write(2,"?\n$ "-x/4,2),x+1||(exit(1),0):
5 ;}