Smallest Unix Shell
Article: 8651 of alt.hackers From: wkt@dolphin.cs.adfa.oz.au (Warren Toomey) Newsgroups: alt.hackers Subject: Smallest Unix Shell Date: 21 Sep 1995 00:00:52 GMT Organization: Australian Defence Force Academy Lines: 26 Approved: s.claus@north.pole.com Distribution: world Message-ID: 43q9vk$rso@euryale.cc.adfa.oz.au NNTP-Posting-Host: 131.236.20.5 Status: RO
ObHack: A challenge with a friend to come up with the smallest Unix shell in C.
Here's the results, the smallest being 123 characters (124 with a \n):
char*c,b[99],*v[99],i;main(){while(putchar('>')&&gets(b)){for(c=b,i=0;v[i++]=
strtok(c," ");c=0);(fork()||execvp(*v,v))&&wait(0);}}
char*c,b[99],*v[99],i;main(){while(putchar(62),gets(b)){for(c=b,i=0;v[i++]=
strtok(c," ");c=0);fork()?wait(0):execvp(*v,v);}}
char*c,b[99],*v[99],i;main(){while(putchar(62),gets(b)){for(c=b,i=0;v[i++]=
strsep(&c," "););fork()?wait(0):execvp(*v,v);}}
char*c,b[99],*v[99],**w;main(){while(putchar(62),gets(b)){for(c=b,w=v;*w++=
strsep(&c," "););fork()?wait(0):execvp(*v,v);}}
I've broken them into 2 lines each for easier reading. Fixing the small bug
that all four versions have would increase the size by at least 10 characters.
	Warren
--
Copyright (c) 1995, Warren Toomey. Microsoft Network is prohibited from
redistributing this work in any form, in whole or in part, without a license.
License to distribute this post is available to Microsoft for $1000.
Posting without permission constitutes an agreement to these terms.