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
+14 -50

No files matched your search

-1
View File
@@ -1,2 +1 @@
tbr
tbr.alt
+2 -2
View File
@@ -113,8 +113,8 @@ OBJ= ${PROG}.o
DATA=
TARGET= ${PROG}
#
ALT_OBJ= ${PROG}.alt.o
ALT_TARGET= ${PROG}.alt
ALT_OBJ=
ALT_TARGET=
#################
+12 -24
View File
@@ -1,16 +1,16 @@
# Best Utility
Byron Rakitzis
Princeton University
5707 Old Lodge Dr.
Houston, TX 77066
USA
Byron Rakitzis
Princeton University
5707 Old Lodge Dr.
Houston, TX 77066
USA
Sean Dorward
Princeton University
10274 Burleigh Cottage Lane
Ellicott City, MD 21043
USA
Sean Dorward
Princeton University
10274 Burleigh Cottage Lane
Ellicott City, MD 21043
USA
## To build:
@@ -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
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:
@@ -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
`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:
-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 ;}