<Para>
However, I didn't have the luxury of choice when I started my project -
-Linux is a relatively new (and great !) operating system. The extended-2
+Linux is a relatively new (and great!) operating system. The extended-2
filesystem is even newer - Its first release lies somewhere in 1993 - Only
passed two years until I started working on my project.
</Para>
</Para>
<Para>
-The kernel sources are a rare bonus ! You don't get everyday the full
+The kernel sources are a rare bonus! You don't get everyday the full
sources of the operating system. There is so much that can be learned from
them, and it is the ultimate source - The exact answer how the kernel
works is there, with all the fine details. At the first week I started to
</Para>
<Para>
-However, this was exactly the interesting part ! It is frustrating to know
+However, this was exactly the interesting part! It is frustrating to know
it all from advance - I think that the discovery itself, bit by bit, is the
key to a true learning and understanding.
</Para>
<Para>
I didn't know almost anything of the structure of the ext2 filesystem.
Reading the sources was not enough - I needed to experiment. However, a tool
-for experiments in the ext2 filesystem was exactly my project ! - Kind of a
+for experiments in the ext2 filesystem was exactly my project! - Kind of a
paradox.
</Para>
The various commands are reached by the user through the <Literal remap="tt">dispatch</Literal>
function. This is not surprising. The fact that can be surprising, at least in
a first look, is that <Literal remap="tt">you'll find the dispatch call in many of my
-own functions !</Literal>.
+own functions!</Literal>.
</Para>
<Para>
<Para>
<Literal remap="tt">This is one of the best examples of the power of the object oriented
design and of the dispatching mechanism. The operation is complicated, yet the
-implementation is surprisingly short !</Literal>
+implementation is surprisingly short!</Literal>
</Para>
<Para>
</Para>
<Para>
-Note the number of the dispatch calls !
+Note the number of the dispatch calls!
</Para>
<Para>
specific cd command</Literal> to take us from there (The object is <Literal remap="tt">dir</Literal>, so
that <Literal remap="tt">dispatch</Literal> will call the <Literal remap="tt">cd</Literal> command of the <Literal remap="tt">dir</Literal> type).
Note that a symbolic link following could bring us back to the root directory,
-thus the innocent calls above treats nicely such a recursive case !
+thus the innocent calls above treats nicely such a recursive case!
</Para>
<Para>
I feel that the above is <Literal remap="tt">intuitive</Literal> - I was expressing myself "in the
language" of the ext2 filesystem - (Go to the inode, etc), and the code was
-written exactly in this spirit !
+written exactly in this spirit!
</Para>
<Para>
It will just <Literal remap="tt">CONTINUE</Literal> until the last entry. The returned structure
(of type <Literal remap="tt">struct_file_info</Literal>) will have its number in the
-<Literal remap="tt">dir_entry_num</Literal> field, and this is exactly the required number !
+<Literal remap="tt">dir_entry_num</Literal> field, and this is exactly the required number!
</Para>
</Sect2>
</Sect1>
<Sect1>
-<Title>A filesystem - Why do we need it ?</Title>
+<Title>A filesystem - Why do we need it?</Title>
<Para>
I thought that before we dive into the various small details, I'll reserve a
<Para>
Everyone knows the meaning of the word <Literal remap="tt">file</Literal> - A bunch of data put
-somewhere. where ? This is an important question. I, for example, usually
+somewhere. where? This is an important question. I, for example, usually
throw almost everything into a single drawer, and have difficulties finding
something later.
</Para>