Библиотека сайта rus-linux.net
8.2. Design
8.2.1. more
There is a more command that comes with util-linux, but it will not work for this project. The reason is because of library dependencies and space constraints. The util-linux supplied more needs either the libncurses or libtermcap to work and there just is not enough space on the root disk floppy to fit everything in. So, in order to have a more command we will have to get creative.
The more command is used to display a file page by page. It's a little like having a cat command that pauses every twenty-five lines. The basic logic is outlined below.
Read one line of the file.
Display the line on the screen.
If 25 lines have been displayed, pause.
Loop and do it again.
Of course there are some details left out like what to do if the screen dimensions are not what we anticipated, but overall it is a fair representation of what more does. Given this simple program logic, it should not be hard to put together a short shell script that emulates the basic functionality of more. The BASH(1) manpage and Adv-BASH-Scripting-Guide will serve as references.
8.2.2. More device files
The more script will need access to device
files that are not on the root disk yet. Specifically
more needs to have stdin
,
stdout
and stderr
, but while
we are at it we should check for any other missing
/dev
files. The Linux Standard Base requires
null
, zero
and
tty
to be present in the /dev
directory. Files for null
and
tty
already exist from previous phases of the
project, but we still need /dev/zero
. We can refer
to devices.txt
in the Linux source code
Documentation
directory for major and minor
numbers.
8.2.3. ps, sed & ed
These three packages can be found by using the Internet resources we have used before plus one new site. The "sed" and "ed" packages can be found at the same place we found BASH, on the GNU FTP server. The procps package shows up in an Ibiblio LSM search, but it is an old version. In order to find the latest version we can go to the Freshmeat website at http://freshmeat.net and search for "procps" in projects.
Both "sed" and "ed" packages feature GNU's familiar
configure script and are therefore very easy to
build. There is no configure script for "procps" but
this does not make things too difficult. We can just read the package's
README
file to find out about how to set various
configuration options. We can use one of these options to avoid the
complexity of using and installing libproc. Setting
SHARED=0
makes libproc
an
integrated part of ps rather than a separate, shared
library.