89 lines
3.7 KiB
HTML
89 lines
3.7 KiB
HTML
<html><title>toybox</title>
|
|
<body>
|
|
|
|
<p>Warning: lots of this page is about what I plan to do, not what I've
|
|
already done. See <a href="#status>status</a> or <a href="/notes.html>my
|
|
development blog</a>.</p>
|
|
|
|
<h2><a name="what" />What is ToyBox?</h2>
|
|
|
|
<p>The Toybox project is creating simple implementations of all the Linux
|
|
command line utilities. Other goals are small size (the produced binaries
|
|
should total less than a megabyte, uncompressed), speed of execution, and
|
|
correctness of implementation (which is related to standards compliance, but
|
|
isn't quite the same thing).
|
|
Click for <a href="design.html">more about the design goals</a></p>
|
|
|
|
<p>Toybox has configurable levels of functionality, and should scale from tiny
|
|
embedded systems up to full general purpose desktop and development
|
|
environments. The author plans to run it on his laptop, and the
|
|
<a href=/code/firmware>Firmware Linux</a> project is trying to get a complete
|
|
Linux system to rebuild itself from source code using toybox.</p>
|
|
|
|
<p>Toybox is <a href=license.html>Licensed under GPL version 2</a>.</p>
|
|
|
|
<p>Toybox can be built as a single "swiss army knife" executable (ala BusyBox
|
|
or Red Hat's Nash), or each command can be built as a traditional independent
|
|
executable.</p>
|
|
|
|
<h2><a name="commands" />Which commands are planned?</h2>
|
|
|
|
<b><h3>Relevant Standards</h3></b>
|
|
|
|
<p>Most commands are implemented according to
|
|
<a href=http://www.opengroup.org/onlinepubs/009695399/idx/utilities.html>The
|
|
Single Unix Specification version 3</a>. This does not mean that Toybox is
|
|
implementing every SUSv3 utility: some such as SCCS and ed are obsolete, while
|
|
others such as c99 are outside the scope of the project. Toybox also isn't
|
|
implementing full internationalization support: it should be 8-bit clean and
|
|
handle UTF-8, but otherwise we leave this to X11 and higher layers.</p>
|
|
|
|
<p>The other major sources of commands are the Linux man pages, and testing
|
|
the behavior of existing commands (although not generally looking at their
|
|
source code).</p>
|
|
|
|
<b><h3>Command Shell</h3></b>
|
|
<p>The Toybox Shell aims to be a reasonable bash replacement. It implements
|
|
the "sh" and "toysh" commands, plus the built-in commands "cd" and "exit".
|
|
The following additional commands may be built into the shell (but not as
|
|
separate executables): cd, exit, if, while, for, function, fg, bg, jobs, source,
|
|
<a href="http://www.opengroup.org/onlinepubs/009695399/utilities/alias.html">alias</a>,
|
|
export, set, unset, read, trap, and exec.</p>
|
|
|
|
<b><h3>General Purpose Commands:</h3></b>
|
|
|
|
<p>[TODO]</p>
|
|
|
|
<b><h3>Development tools:</h3></b>
|
|
|
|
<p>Commands: ar, make [TODO]</p>
|
|
|
|
<b><h2><a name="status />What commands are implemented?</h2></b>
|
|
|
|
<p>Toybox is a work in progress, and nowhere near a 1.0 release. The first
|
|
commit was September 27, 2006, and work is ongoing.</p>
|
|
|
|
<p>Partial (in progress): sh/toysh (cd, exit), df, which.</p>
|
|
|
|
<p>Complete: hello, pwd.</p>
|
|
|
|
<p>Infrastructure:</p>
|
|
|
|
<ul>
|
|
<li>main: toy_list[], toy_find(), toy_exec(), main/toybox_main().</li>
|
|
<ul>lib: llist, getmountlist(), error_msg/error_exit, xmalloc(),
|
|
strlcpy(), xexec(), xopen()/xread(), xgetcwd(), xabspath(), find_in_path(),
|
|
itoa().</li>
|
|
|
|
<b><h2><a name="download" />Download</h2></b>
|
|
|
|
<p>This project is maintained as a mercurial archive. To get a copy of the
|
|
current development version, "hg clone static-http://landley.net/code/toybox",
|
|
or check <a href=download>the download directory</a> for release tarballs.
|
|
</p>
|
|
|
|
<p>My <a href=/notes.html>development log</a> is currently the best way to
|
|
track what's going on with this project. When I get this moved to my new
|
|
server, I need to put up a mailing list and repository browser, make this a
|
|
real web page, add toybox.landley.net as a virtual domain...</p>
|